2140 lines
57 KiB
YAML
2140 lines
57 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
version: 2.0.0
|
|
title: TWHelp API
|
|
description: REST API to interact with [TWHelp](https://tribalwarshelp.com).
|
|
contact:
|
|
name: Dawid Wysokiński
|
|
url: https://dwysokinski.me
|
|
email: contact@dwysokinski.me
|
|
license:
|
|
name: MIT
|
|
tags:
|
|
- name: versions
|
|
description: Version related endpoints
|
|
- name: servers
|
|
description: Server related endpoints
|
|
- name: tribes
|
|
description: Tribe related endpoints
|
|
- name: players
|
|
description: Player related endpoints
|
|
- name: villages
|
|
description: Village related endpoints
|
|
- name: ennoblements
|
|
description: Ennoblement (conquer) related endpoints
|
|
- name: tribe-changes
|
|
description: Tribe change related endpoints
|
|
- name: snapshots
|
|
description: Snapshot (historical records) related endpoints
|
|
servers:
|
|
- url: "{scheme}://{hostname}/api"
|
|
variables:
|
|
scheme:
|
|
default: http
|
|
enum:
|
|
- http
|
|
- https
|
|
hostname:
|
|
default: localhost:9234
|
|
paths:
|
|
/v2/versions:
|
|
get:
|
|
operationId: listVersions
|
|
tags:
|
|
- versions
|
|
description: List versions
|
|
parameters:
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListVersionsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}:
|
|
get:
|
|
operationId: getVersion
|
|
tags:
|
|
- versions
|
|
description: Get a version
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetVersionResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/players:
|
|
get:
|
|
operationId: listVersionPlayers
|
|
tags:
|
|
- versions
|
|
- players
|
|
description: List players associated with the given version
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/PlayerDeletedQueryParam"
|
|
- $ref: "#/components/parameters/PlayerSortQueryParam"
|
|
- $ref: "#/components/parameters/PlayerNameQueryParam"
|
|
- $ref: "#/components/parameters/PlayerIdQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListPlayersWithServersResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers:
|
|
get:
|
|
operationId: listServers
|
|
tags:
|
|
- versions
|
|
- servers
|
|
description: List servers associated with the given version
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/ServerOpenQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListServersResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}:
|
|
get:
|
|
operationId: getServer
|
|
tags:
|
|
- versions
|
|
- servers
|
|
description: Get a server
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetServerResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/config:
|
|
get:
|
|
operationId: getServerConfig
|
|
tags:
|
|
- versions
|
|
- servers
|
|
description: Get the given server's config
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetServerConfigResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/building-info:
|
|
get:
|
|
operationId: getBuildingInfo
|
|
tags:
|
|
- versions
|
|
- servers
|
|
description: Get the given server's building info
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetBuildingInfoResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/unit-info:
|
|
get:
|
|
operationId: getUnitInfo
|
|
tags:
|
|
- versions
|
|
- servers
|
|
description: Get the given server's unit info
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetUnitInfoResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes:
|
|
get:
|
|
operationId: listTribes
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
description: List tribes associated with the given server
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/TribeDeletedQueryParam"
|
|
- $ref: "#/components/parameters/TribeSortQueryParam"
|
|
- $ref: "#/components/parameters/TribeTagQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListTribesResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes/{tribeId}:
|
|
get:
|
|
operationId: getTribe
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
description: Get a tribe
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/TribeIdPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetTribeResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/players:
|
|
get:
|
|
operationId: listServerPlayers
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- players
|
|
description: List players associated with the given server
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/PlayerDeletedQueryParam"
|
|
- $ref: "#/components/parameters/PlayerSortQueryParam"
|
|
- $ref: "#/components/parameters/PlayerNameQueryParam"
|
|
- $ref: "#/components/parameters/PlayerIdQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListPlayersResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/players/{playerId}:
|
|
get:
|
|
operationId: getPlayer
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- players
|
|
description: Get a player
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/PlayerIdPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetPlayerResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes/{tribeId}/members:
|
|
get:
|
|
operationId: listTribeMembers
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
- players
|
|
description: List the given tribe's members
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/TribeIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/PlayerSortQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListPlayersResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/villages:
|
|
get:
|
|
operationId: listVillages
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- villages
|
|
description: List villages associated with the given server
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/VillageCoordsQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListVillagesResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/villages/{villageId}:
|
|
get:
|
|
operationId: getVillage
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- villages
|
|
description: Get a village
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/VillageIdPathParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/GetVillageResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes/{tribeId}/villages:
|
|
get:
|
|
operationId: listTribeVillages
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
- villages
|
|
description: List the given tribe's villages
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/TribeIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListVillagesResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/players/{playerId}/villages:
|
|
get:
|
|
operationId: listPlayerVillages
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- players
|
|
- villages
|
|
description: List the given player's villages
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/PlayerIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListVillagesResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/ennoblements:
|
|
get:
|
|
operationId: listEnnoblements
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- ennoblements
|
|
description: List ennoblements associated with the given server
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/EnnoblementSortQueryParam"
|
|
- $ref: "#/components/parameters/SinceQueryParam"
|
|
- $ref: "#/components/parameters/BeforeQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListEnnoblementsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/players/{playerId}/ennoblements:
|
|
get:
|
|
operationId: listPlayerEnnoblements
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- players
|
|
- ennoblements
|
|
description: List the given player's ennoblements
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/PlayerIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/EnnoblementSortQueryParam"
|
|
- $ref: "#/components/parameters/SinceQueryParam"
|
|
- $ref: "#/components/parameters/BeforeQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListEnnoblementsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes/{tribeId}/ennoblements:
|
|
get:
|
|
operationId: listTribeEnnoblements
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
- ennoblements
|
|
description: List the given tribe's ennoblements
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/TribeIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/EnnoblementSortQueryParam"
|
|
- $ref: "#/components/parameters/SinceQueryParam"
|
|
- $ref: "#/components/parameters/BeforeQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListEnnoblementsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/villages/{villageId}/ennoblements:
|
|
get:
|
|
operationId: listVillageEnnoblements
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- villages
|
|
- ennoblements
|
|
description: List the given village's ennoblements
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/VillageIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/EnnoblementSortQueryParam"
|
|
- $ref: "#/components/parameters/SinceQueryParam"
|
|
- $ref: "#/components/parameters/BeforeQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListEnnoblementsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/players/{playerId}/tribe-changes:
|
|
get:
|
|
operationId: listPlayerTribeChanges
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- players
|
|
- tribe-changes
|
|
description: List the given player's tribe changes
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/PlayerIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/TribeChangeSortQueryParam"
|
|
- $ref: "#/components/parameters/SinceQueryParam"
|
|
- $ref: "#/components/parameters/BeforeQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListTribeChangesResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes/{tribeId}/member-changes:
|
|
get:
|
|
operationId: listTribeMemberChanges
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
- tribe-changes
|
|
description: List the given tribe's member changes (who joined, who left, etc.)
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/TribeIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/TribeChangeSortQueryParam"
|
|
- $ref: "#/components/parameters/SinceQueryParam"
|
|
- $ref: "#/components/parameters/BeforeQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListTribeChangesResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/tribes/{tribeId}/snapshots:
|
|
get:
|
|
operationId: listTribeTribeSnapshots
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- tribes
|
|
- snapshots
|
|
description: List the given tribe's snapshots
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/TribeIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/TribeSnapshotSortQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListTribeSnapshotsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
/v2/versions/{versionCode}/servers/{serverKey}/players/{playerId}/snapshots:
|
|
get:
|
|
operationId: listPlayerPlayerSnapshots
|
|
tags:
|
|
- versions
|
|
- servers
|
|
- players
|
|
- snapshots
|
|
description: List the given player's snapshots
|
|
parameters:
|
|
- $ref: "#/components/parameters/VersionCodePathParam"
|
|
- $ref: "#/components/parameters/ServerKeyPathParam"
|
|
- $ref: "#/components/parameters/PlayerIdPathParam"
|
|
- $ref: "#/components/parameters/CursorQueryParam"
|
|
- $ref: "#/components/parameters/LimitQueryParam"
|
|
- $ref: "#/components/parameters/PlayerSnapshotSortQueryParam"
|
|
responses:
|
|
200:
|
|
$ref: "#/components/responses/ListPlayerSnapshotsResponse"
|
|
default:
|
|
$ref: "#/components/responses/ErrorResponse"
|
|
components:
|
|
schemas:
|
|
DomainErrorCode:
|
|
$ref: ./domain-error-code.yml
|
|
Error:
|
|
type: object
|
|
required:
|
|
- code
|
|
- message
|
|
additionalProperties: false
|
|
properties:
|
|
code:
|
|
example: invalid-param-format
|
|
allOf:
|
|
- $ref: "#/components/schemas/DomainErrorCode"
|
|
- type: string
|
|
enum:
|
|
- method-not-allowed
|
|
- route-not-found
|
|
- internal-server-error
|
|
- invalid-param-format
|
|
message:
|
|
type: string
|
|
path:
|
|
type: array
|
|
description: References field where an error occurred.
|
|
items:
|
|
type: string
|
|
x-go-type-skip-optional-pointer: true
|
|
params:
|
|
type: object
|
|
description: Additional data related to the error. Can be used for i18n.
|
|
additionalProperties: true
|
|
x-go-type-skip-optional-pointer: true
|
|
VersionCode:
|
|
type: string
|
|
minLength: 2
|
|
maxLength: 2
|
|
example: en
|
|
Version:
|
|
type: object
|
|
required:
|
|
- code
|
|
- host
|
|
- name
|
|
- timezone
|
|
properties:
|
|
code:
|
|
$ref: "#/components/schemas/VersionCode"
|
|
host:
|
|
type: string
|
|
format: hostname
|
|
example: www.tribalwars.net
|
|
name:
|
|
type: string
|
|
example: International
|
|
timezone:
|
|
type: string
|
|
example: Europe/London
|
|
ServerKey:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 10
|
|
example: en138
|
|
Server:
|
|
type: object
|
|
required:
|
|
- key
|
|
- open
|
|
- url
|
|
- numPlayers
|
|
- numTribes
|
|
- numVillages
|
|
- numBarbarianVillages
|
|
- numBonusVillages
|
|
- numPlayerVillages
|
|
- createdAt
|
|
properties:
|
|
key:
|
|
$ref: "#/components/schemas/ServerKey"
|
|
open:
|
|
type: boolean
|
|
url:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net
|
|
numPlayers:
|
|
type: integer
|
|
playerDataSyncedAt:
|
|
type: string
|
|
format: date-time
|
|
numTribes:
|
|
type: integer
|
|
tribeDataSyncedAt:
|
|
type: string
|
|
format: date-time
|
|
numVillages:
|
|
type: integer
|
|
numBarbarianVillages:
|
|
type: integer
|
|
numBonusVillages:
|
|
type: integer
|
|
numPlayerVillages:
|
|
type: integer
|
|
villageDataSyncedAt:
|
|
type: string
|
|
format: date-time
|
|
ennoblementDataSyncedAt:
|
|
type: string
|
|
format: date-time
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
ServerMeta:
|
|
type: object
|
|
required:
|
|
- key
|
|
- open
|
|
- url
|
|
properties:
|
|
key:
|
|
$ref: "#/components/schemas/ServerKey"
|
|
open:
|
|
type: boolean
|
|
url:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net
|
|
ServerConfig:
|
|
type: object
|
|
required:
|
|
- ally
|
|
- build
|
|
- buildings
|
|
- commands
|
|
- coord
|
|
- game
|
|
- misc
|
|
- moral
|
|
- newbie
|
|
- night
|
|
- sitter
|
|
- sleep
|
|
- snob
|
|
- speed
|
|
- unitSpeed
|
|
- win
|
|
properties:
|
|
ally:
|
|
$ref: "#/components/schemas/ServerConfigAlly"
|
|
build:
|
|
$ref: "#/components/schemas/ServerConfigBuild"
|
|
buildings:
|
|
$ref: "#/components/schemas/ServerConfigBuildings"
|
|
commands:
|
|
$ref: "#/components/schemas/ServerConfigCommands"
|
|
coord:
|
|
$ref: "#/components/schemas/ServerConfigCoord"
|
|
game:
|
|
$ref: "#/components/schemas/ServerConfigGame"
|
|
misc:
|
|
$ref: "#/components/schemas/ServerConfigMisc"
|
|
moral:
|
|
type: integer
|
|
newbie:
|
|
$ref: "#/components/schemas/ServerConfigNewbie"
|
|
night:
|
|
$ref: "#/components/schemas/ServerConfigNight"
|
|
sitter:
|
|
$ref: "#/components/schemas/ServerConfigSitter"
|
|
sleep:
|
|
$ref: "#/components/schemas/ServerConfigSleep"
|
|
snob:
|
|
$ref: "#/components/schemas/ServerConfigSnob"
|
|
speed:
|
|
type: number
|
|
format: double
|
|
unitSpeed:
|
|
type: number
|
|
format: double
|
|
win:
|
|
$ref: "#/components/schemas/ServerConfigWin"
|
|
ServerConfigAlly:
|
|
type: object
|
|
required:
|
|
- allytimeSupport
|
|
- fixedAllies
|
|
- levels
|
|
- limit
|
|
- noHarm
|
|
- noJoin
|
|
- noLeave
|
|
- noOtherSupport
|
|
- noOtherSupportType
|
|
- pointsMemberCount
|
|
- warsAutoacceptDays
|
|
- warsMemberRequirement
|
|
- warsPointsRequirement
|
|
- xpRequirements
|
|
properties:
|
|
allytimeSupport:
|
|
type: integer
|
|
fixedAllies:
|
|
type: integer
|
|
levels:
|
|
type: integer
|
|
limit:
|
|
type: integer
|
|
noHarm:
|
|
type: integer
|
|
noJoin:
|
|
type: integer
|
|
noLeave:
|
|
type: integer
|
|
noOtherSupport:
|
|
type: integer
|
|
noOtherSupportType:
|
|
type: integer
|
|
pointsMemberCount:
|
|
type: integer
|
|
warsAutoacceptDays:
|
|
type: integer
|
|
warsMemberRequirement:
|
|
type: integer
|
|
warsPointsRequirement:
|
|
type: integer
|
|
xpRequirements:
|
|
type: string
|
|
ServerConfigBuild:
|
|
type: object
|
|
required:
|
|
- destroy
|
|
properties:
|
|
destroy:
|
|
type: integer
|
|
ServerConfigBuildings:
|
|
type: object
|
|
required:
|
|
- customBarracks
|
|
- customChurch
|
|
- customFarm
|
|
- customGarage
|
|
- customHide
|
|
- customIron
|
|
- customMain
|
|
- customMarket
|
|
- customPlace
|
|
- customSmith
|
|
- customSnob
|
|
- customStable
|
|
- customStatue
|
|
- customStone
|
|
- customStorage
|
|
- customWall
|
|
- customWatchtower
|
|
- customWood
|
|
properties:
|
|
customBarracks:
|
|
type: integer
|
|
customChurch:
|
|
type: integer
|
|
customFarm:
|
|
type: integer
|
|
customGarage:
|
|
type: integer
|
|
customHide:
|
|
type: integer
|
|
customIron:
|
|
type: integer
|
|
customMain:
|
|
type: integer
|
|
customMarket:
|
|
type: integer
|
|
customPlace:
|
|
type: integer
|
|
customSmith:
|
|
type: integer
|
|
customSnob:
|
|
type: integer
|
|
customStable:
|
|
type: integer
|
|
customStatue:
|
|
type: integer
|
|
customStone:
|
|
type: integer
|
|
customStorage:
|
|
type: integer
|
|
customWall:
|
|
type: integer
|
|
customWatchtower:
|
|
type: integer
|
|
customWood:
|
|
type: integer
|
|
ServerConfigCommands:
|
|
type: object
|
|
required:
|
|
- commandCancelTime
|
|
- millisArrival
|
|
properties:
|
|
commandCancelTime:
|
|
type: integer
|
|
millisArrival:
|
|
type: integer
|
|
ServerConfigCoord:
|
|
type: object
|
|
required:
|
|
- bonusNew
|
|
- bonusVillages
|
|
- emptyVillages
|
|
- func
|
|
- inner
|
|
- mapSize
|
|
- nobleRestart
|
|
- selectStart
|
|
- startVillages
|
|
- villageMoveWait
|
|
properties:
|
|
bonusNew:
|
|
type: integer
|
|
bonusVillages:
|
|
type: integer
|
|
emptyVillages:
|
|
type: integer
|
|
func:
|
|
type: integer
|
|
inner:
|
|
type: integer
|
|
mapSize:
|
|
type: integer
|
|
nobleRestart:
|
|
type: integer
|
|
selectStart:
|
|
type: integer
|
|
startVillages:
|
|
type: integer
|
|
villageMoveWait:
|
|
type: integer
|
|
ServerConfigGame:
|
|
type: object
|
|
required:
|
|
- archer
|
|
- barbarianMaxPoints
|
|
- barbarianRise
|
|
- barbarianShrink
|
|
- baseProduction
|
|
- buildtimeFormula
|
|
- church
|
|
- event
|
|
- fakeLimit
|
|
- farmLimit
|
|
- hauls
|
|
- haulsBase
|
|
- haulsMax
|
|
- knight
|
|
- knightNewItems
|
|
- scavenging
|
|
- stronghold
|
|
- suppressEvents
|
|
- tech
|
|
- watchtower
|
|
properties:
|
|
archer:
|
|
type: integer
|
|
barbarianMaxPoints:
|
|
type: integer
|
|
barbarianRise:
|
|
type: number
|
|
format: double
|
|
barbarianShrink:
|
|
type: integer
|
|
baseProduction:
|
|
type: integer
|
|
buildtimeFormula:
|
|
type: integer
|
|
church:
|
|
type: integer
|
|
event:
|
|
type: integer
|
|
fakeLimit:
|
|
type: number
|
|
format: double
|
|
farmLimit:
|
|
type: integer
|
|
hauls:
|
|
type: integer
|
|
haulsBase:
|
|
type: integer
|
|
haulsMax:
|
|
type: integer
|
|
knight:
|
|
type: integer
|
|
knightNewItems:
|
|
type: integer
|
|
scavenging:
|
|
type: integer
|
|
stronghold:
|
|
type: integer
|
|
suppressEvents:
|
|
type: integer
|
|
tech:
|
|
type: integer
|
|
watchtower:
|
|
type: integer
|
|
ServerConfigMisc:
|
|
type: object
|
|
required:
|
|
- killRanking
|
|
- tradeCancelTime
|
|
- tutorial
|
|
properties:
|
|
killRanking:
|
|
type: integer
|
|
tradeCancelTime:
|
|
type: integer
|
|
tutorial:
|
|
type: integer
|
|
ServerConfigNewbie:
|
|
type: object
|
|
required:
|
|
- days
|
|
- ratio
|
|
- ratioDays
|
|
- removeNewbieVillages
|
|
properties:
|
|
days:
|
|
type: integer
|
|
ratio:
|
|
type: integer
|
|
ratioDays:
|
|
type: integer
|
|
removeNewbieVillages:
|
|
type: integer
|
|
ServerConfigNight:
|
|
type: object
|
|
required:
|
|
- active
|
|
- defFactor
|
|
- duration
|
|
- endHour
|
|
- startHour
|
|
properties:
|
|
active:
|
|
type: integer
|
|
defFactor:
|
|
type: number
|
|
format: double
|
|
duration:
|
|
type: integer
|
|
endHour:
|
|
type: integer
|
|
startHour:
|
|
type: integer
|
|
ServerConfigSitter:
|
|
type: object
|
|
required:
|
|
- allow
|
|
properties:
|
|
allow:
|
|
type: integer
|
|
ServerConfigSleep:
|
|
type: object
|
|
required:
|
|
- active
|
|
- delay
|
|
- max
|
|
- maxAwake
|
|
- min
|
|
- minAwake
|
|
- warnTime
|
|
properties:
|
|
active:
|
|
type: integer
|
|
delay:
|
|
type: integer
|
|
max:
|
|
type: integer
|
|
maxAwake:
|
|
type: integer
|
|
min:
|
|
type: integer
|
|
minAwake:
|
|
type: integer
|
|
warnTime:
|
|
type: integer
|
|
ServerConfigSnob:
|
|
type: object
|
|
required:
|
|
- cheapRebuild
|
|
- coinIron
|
|
- coinStone
|
|
- coinWood
|
|
- factor
|
|
- gold
|
|
- maxDist
|
|
- noBarbConquer
|
|
- rise
|
|
properties:
|
|
cheapRebuild:
|
|
type: integer
|
|
coinIron:
|
|
type: integer
|
|
coinStone:
|
|
type: integer
|
|
coinWood:
|
|
type: integer
|
|
factor:
|
|
type: number
|
|
format: double
|
|
gold:
|
|
type: integer
|
|
maxDist:
|
|
type: integer
|
|
noBarbConquer:
|
|
type: integer
|
|
rise:
|
|
type: integer
|
|
ServerConfigWin:
|
|
type: object
|
|
required:
|
|
- check
|
|
properties:
|
|
check:
|
|
type: integer
|
|
Unit:
|
|
type: object
|
|
required:
|
|
- attack
|
|
- buildTime
|
|
- carry
|
|
- defense
|
|
- defenseArcher
|
|
- defenseCavalry
|
|
- pop
|
|
- speed
|
|
properties:
|
|
attack:
|
|
type: integer
|
|
buildTime:
|
|
type: number
|
|
format: double
|
|
carry:
|
|
type: integer
|
|
defense:
|
|
type: integer
|
|
defenseArcher:
|
|
type: integer
|
|
defenseCavalry:
|
|
type: integer
|
|
pop:
|
|
type: integer
|
|
speed:
|
|
type: number
|
|
format: double
|
|
UnitInfo:
|
|
type: object
|
|
required:
|
|
- archer
|
|
- axe
|
|
- catapult
|
|
- heavy
|
|
- knight
|
|
- light
|
|
- marcher
|
|
- militia
|
|
- ram
|
|
- snob
|
|
- spear
|
|
- spy
|
|
- sword
|
|
properties:
|
|
archer:
|
|
$ref: "#/components/schemas/Unit"
|
|
axe:
|
|
$ref: "#/components/schemas/Unit"
|
|
catapult:
|
|
$ref: "#/components/schemas/Unit"
|
|
heavy:
|
|
$ref: "#/components/schemas/Unit"
|
|
knight:
|
|
$ref: "#/components/schemas/Unit"
|
|
light:
|
|
$ref: "#/components/schemas/Unit"
|
|
marcher:
|
|
$ref: "#/components/schemas/Unit"
|
|
militia:
|
|
$ref: "#/components/schemas/Unit"
|
|
ram:
|
|
$ref: "#/components/schemas/Unit"
|
|
snob:
|
|
$ref: "#/components/schemas/Unit"
|
|
spear:
|
|
$ref: "#/components/schemas/Unit"
|
|
spy:
|
|
$ref: "#/components/schemas/Unit"
|
|
sword:
|
|
$ref: "#/components/schemas/Unit"
|
|
Building:
|
|
type: object
|
|
required:
|
|
- buildTime
|
|
- buildTimeFactor
|
|
- iron
|
|
- ironFactor
|
|
- maxLevel
|
|
- minLevel
|
|
- pop
|
|
- popFactor
|
|
- stone
|
|
- stoneFactor
|
|
- wood
|
|
- woodFactor
|
|
properties:
|
|
buildTime:
|
|
type: number
|
|
format: double
|
|
buildTimeFactor:
|
|
type: number
|
|
format: double
|
|
iron:
|
|
type: integer
|
|
ironFactor:
|
|
type: number
|
|
format: double
|
|
maxLevel:
|
|
type: integer
|
|
minLevel:
|
|
type: integer
|
|
pop:
|
|
type: integer
|
|
popFactor:
|
|
type: number
|
|
format: double
|
|
stone:
|
|
type: integer
|
|
stoneFactor:
|
|
type: number
|
|
format: double
|
|
wood:
|
|
type: integer
|
|
woodFactor:
|
|
type: number
|
|
format: double
|
|
BuildingInfo:
|
|
type: object
|
|
required:
|
|
- barracks
|
|
- farm
|
|
- garage
|
|
- hide
|
|
- iron
|
|
- main
|
|
- market
|
|
- place
|
|
- smith
|
|
- snob
|
|
- stable
|
|
- statue
|
|
- stone
|
|
- storage
|
|
- wall
|
|
- watchtower
|
|
- wood
|
|
properties:
|
|
barracks:
|
|
$ref: "#/components/schemas/Building"
|
|
farm:
|
|
$ref: "#/components/schemas/Building"
|
|
garage:
|
|
$ref: "#/components/schemas/Building"
|
|
hide:
|
|
$ref: "#/components/schemas/Building"
|
|
iron:
|
|
$ref: "#/components/schemas/Building"
|
|
main:
|
|
$ref: "#/components/schemas/Building"
|
|
market:
|
|
$ref: "#/components/schemas/Building"
|
|
place:
|
|
$ref: "#/components/schemas/Building"
|
|
smith:
|
|
$ref: "#/components/schemas/Building"
|
|
snob:
|
|
$ref: "#/components/schemas/Building"
|
|
stable:
|
|
$ref: "#/components/schemas/Building"
|
|
statue:
|
|
$ref: "#/components/schemas/Building"
|
|
stone:
|
|
$ref: "#/components/schemas/Building"
|
|
storage:
|
|
$ref: "#/components/schemas/Building"
|
|
wall:
|
|
$ref: "#/components/schemas/Building"
|
|
watchtower:
|
|
$ref: "#/components/schemas/Building"
|
|
wood:
|
|
$ref: "#/components/schemas/Building"
|
|
IntId:
|
|
type: integer
|
|
minimum: 1
|
|
TribeOpponentsDefeated:
|
|
type: object
|
|
required:
|
|
- rankAtt
|
|
- scoreAtt
|
|
- rankDef
|
|
- scoreDef
|
|
- rankTotal
|
|
- scoreTotal
|
|
properties:
|
|
rankAtt:
|
|
type: integer
|
|
scoreAtt:
|
|
type: integer
|
|
rankDef:
|
|
type: integer
|
|
scoreDef:
|
|
type: integer
|
|
rankTotal:
|
|
type: integer
|
|
scoreTotal:
|
|
type: integer
|
|
Tribe:
|
|
type: object
|
|
required:
|
|
- id
|
|
- name
|
|
- tag
|
|
- profileUrl
|
|
- points
|
|
- allPoints
|
|
- numMembers
|
|
- numVillages
|
|
- rank
|
|
- dominance
|
|
- opponentsDefeated
|
|
- bestRank
|
|
- bestRankAt
|
|
- mostVillages
|
|
- mostVillagesAt
|
|
- mostPoints
|
|
- mostPointsAt
|
|
- createdAt
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
name:
|
|
type: string
|
|
tag:
|
|
type: string
|
|
profileUrl:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net/game.php?screen=info_ally&id=13
|
|
points:
|
|
type: integer
|
|
allPoints:
|
|
type: integer
|
|
numMembers:
|
|
type: integer
|
|
numVillages:
|
|
type: integer
|
|
rank:
|
|
type: integer
|
|
dominance:
|
|
type: number
|
|
format: double
|
|
opponentsDefeated:
|
|
$ref: "#/components/schemas/TribeOpponentsDefeated"
|
|
bestRank:
|
|
type: integer
|
|
bestRankAt:
|
|
type: string
|
|
format: date-time
|
|
mostVillages:
|
|
type: integer
|
|
mostVillagesAt:
|
|
type: string
|
|
format: date-time
|
|
mostPoints:
|
|
type: integer
|
|
mostPointsAt:
|
|
type: string
|
|
format: date-time
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
deletedAt:
|
|
type: string
|
|
format: date-time
|
|
TribeMeta:
|
|
type: object
|
|
required:
|
|
- id
|
|
- name
|
|
- tag
|
|
- profileUrl
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
name:
|
|
type: string
|
|
tag:
|
|
type: string
|
|
profileUrl:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net/game.php?screen=info_ally&id=13
|
|
NullTribeMeta:
|
|
nullable: true
|
|
# swagger ui has problems with displaying examples for schemas with allOf
|
|
example:
|
|
id: 1
|
|
name: string
|
|
tag: string
|
|
profileUrl: https://en138.tribalwars.net/game.php?screen=info_ally&id=13
|
|
allOf:
|
|
- $ref: "#/components/schemas/TribeMeta"
|
|
PlayerOpponentsDefeated:
|
|
# swagger ui has problems with displaying examples for schemas with allOf
|
|
example:
|
|
rankAtt: 0,
|
|
rankDef: 0,
|
|
rankTotal: 0,
|
|
scoreAtt: 0,
|
|
scoreDef: 0,
|
|
scoreTotal: 0
|
|
rankSup: 0
|
|
scoreSup: 0
|
|
allOf:
|
|
- $ref: "#/components/schemas/TribeOpponentsDefeated"
|
|
- type: object
|
|
required:
|
|
- rankSup
|
|
- scoreSup
|
|
properties:
|
|
rankSup:
|
|
type: integer
|
|
scoreSup:
|
|
type: integer
|
|
Player:
|
|
type: object
|
|
required:
|
|
- id
|
|
- name
|
|
- rank
|
|
- points
|
|
- numVillages
|
|
- profileUrl
|
|
- tribe
|
|
- lastActivityAt
|
|
- bestRank
|
|
- bestRankAt
|
|
- mostPoints
|
|
- mostPointsAt
|
|
- mostVillages
|
|
- mostVillagesAt
|
|
- opponentsDefeated
|
|
- createdAt
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
name:
|
|
type: string
|
|
rank:
|
|
type: integer
|
|
points:
|
|
type: integer
|
|
numVillages:
|
|
type: integer
|
|
profileUrl:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net/game.php?screen=info_player&id=11518097
|
|
tribe:
|
|
$ref: "#/components/schemas/NullTribeMeta"
|
|
lastActivityAt:
|
|
type: string
|
|
format: date-time
|
|
bestRank:
|
|
type: integer
|
|
bestRankAt:
|
|
type: string
|
|
format: date-time
|
|
mostPoints:
|
|
type: integer
|
|
mostPointsAt:
|
|
type: string
|
|
format: date-time
|
|
mostVillages:
|
|
type: integer
|
|
mostVillagesAt:
|
|
type: string
|
|
format: date-time
|
|
opponentsDefeated:
|
|
$ref: "#/components/schemas/PlayerOpponentsDefeated"
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
deletedAt:
|
|
type: string
|
|
format: date-time
|
|
PlayerWithServer:
|
|
allOf:
|
|
- $ref: "#/components/schemas/Player"
|
|
- type: object
|
|
required:
|
|
- server
|
|
properties:
|
|
server:
|
|
$ref: "#/components/schemas/ServerMeta"
|
|
PlayerMeta:
|
|
type: object
|
|
required:
|
|
- id
|
|
- name
|
|
- profileUrl
|
|
- tribe
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
name:
|
|
type: string
|
|
profileUrl:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net/game.php?screen=info_player&id=11518097
|
|
tribe:
|
|
$ref: "#/components/schemas/NullTribeMeta"
|
|
NullPlayerMeta:
|
|
nullable: true
|
|
# swagger ui has problems with displaying examples for schemas with allOf
|
|
example:
|
|
id: 1,
|
|
name: string,
|
|
profileUrl: https://en138.tribalwars.net/game.php?screen=info_player&id=11518097,
|
|
tribe:
|
|
id: 1,
|
|
name: string,
|
|
profileUrl: https://en138.tribalwars.net/game.php?screen=info_ally&id=13,
|
|
tag: string
|
|
allOf:
|
|
- $ref: "#/components/schemas/PlayerMeta"
|
|
Village:
|
|
type: object
|
|
required:
|
|
- id
|
|
- name
|
|
- fullName
|
|
- x
|
|
- y
|
|
- points
|
|
- profileUrl
|
|
- continent
|
|
- bonus
|
|
- createdAt
|
|
- player
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
name:
|
|
type: string
|
|
example: Village
|
|
fullName:
|
|
type: string
|
|
example: Village (450|450) K44
|
|
x:
|
|
type: integer
|
|
example: 450
|
|
y:
|
|
type: integer
|
|
example: 450
|
|
points:
|
|
type: integer
|
|
profileUrl:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net/game.php?screen=info_village&id=57198
|
|
continent:
|
|
type: string
|
|
example: K44
|
|
bonus:
|
|
type: integer
|
|
description: |
|
|
Some of the bonuses:
|
|
1 - 100% higher wood production
|
|
2 - 100% higher clay production
|
|
3 - 100% higher iron production
|
|
4 - 10% more population
|
|
5 - 33% faster recruitment in the Barracks
|
|
6 - 33% faster recruitment in the Stable
|
|
7 - 50% faster recruitment in the Workshop
|
|
8 - 30% more resources are produced (all resource types)
|
|
9 - 50% more storage capacity and merchants
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
player:
|
|
$ref: "#/components/schemas/NullPlayerMeta"
|
|
VillageMeta:
|
|
type: object
|
|
required:
|
|
- id
|
|
- fullName
|
|
- x
|
|
- y
|
|
- profileUrl
|
|
- continent
|
|
- player
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
fullName:
|
|
type: string
|
|
example: Village (450|450) K44
|
|
x:
|
|
type: integer
|
|
example: 450
|
|
y:
|
|
type: integer
|
|
example: 450
|
|
profileUrl:
|
|
type: string
|
|
format: uri
|
|
example: https://en138.tribalwars.net/game.php?screen=info_village&id=57198
|
|
continent:
|
|
type: string
|
|
example: K44
|
|
player:
|
|
$ref: "#/components/schemas/NullPlayerMeta"
|
|
Ennoblement:
|
|
type: object
|
|
required:
|
|
- id
|
|
- points
|
|
- newOwner
|
|
- village
|
|
- createdAt
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
points:
|
|
type: integer
|
|
newOwner:
|
|
$ref: "#/components/schemas/PlayerMeta"
|
|
village:
|
|
$ref: "#/components/schemas/VillageMeta"
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
TribeChange:
|
|
type: object
|
|
required:
|
|
- id
|
|
- player
|
|
- newTribe
|
|
- createdAt
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
player:
|
|
$ref: "#/components/schemas/PlayerMeta"
|
|
newTribe:
|
|
$ref: "#/components/schemas/NullTribeMeta"
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
TribeSnapshot:
|
|
type: object
|
|
required:
|
|
- id
|
|
- tribe
|
|
- allPoints
|
|
- date
|
|
- dominance
|
|
- numMembers
|
|
- numVillages
|
|
- points
|
|
- rank
|
|
- opponentsDefeated
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
tribe:
|
|
$ref: "#/components/schemas/TribeMeta"
|
|
allPoints:
|
|
type: integer
|
|
date:
|
|
type: string
|
|
format: date
|
|
dominance:
|
|
type: number
|
|
format: double
|
|
numMembers:
|
|
type: integer
|
|
numVillages:
|
|
type: integer
|
|
points:
|
|
type: integer
|
|
rank:
|
|
type: integer
|
|
opponentsDefeated:
|
|
$ref: "#/components/schemas/TribeOpponentsDefeated"
|
|
PlayerSnapshot:
|
|
type: object
|
|
required:
|
|
- id
|
|
- numVillages
|
|
- points
|
|
- rank
|
|
- date
|
|
- opponentsDefeated
|
|
- player
|
|
properties:
|
|
id:
|
|
$ref: "#/components/schemas/IntId"
|
|
numVillages:
|
|
type: integer
|
|
points:
|
|
type: integer
|
|
rank:
|
|
type: integer
|
|
date:
|
|
type: string
|
|
format: date
|
|
opponentsDefeated:
|
|
$ref: "#/components/schemas/PlayerOpponentsDefeated"
|
|
player:
|
|
$ref: "#/components/schemas/PlayerMeta"
|
|
CursorString:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 1000
|
|
example: aWQ9NTU3LHNlcnZlcktleT1wbDE5Mw==
|
|
Cursor:
|
|
type: object
|
|
x-go-type-skip-optional-pointer: true
|
|
properties:
|
|
self:
|
|
description: Cursor pointing to the current page.
|
|
x-go-type-skip-optional-pointer: true
|
|
allOf:
|
|
- $ref: "#/components/schemas/CursorString"
|
|
next:
|
|
description: Cursor pointing to the next page.
|
|
x-go-type-skip-optional-pointer: true
|
|
allOf:
|
|
- $ref: "#/components/schemas/CursorString"
|
|
PaginationResponse:
|
|
type: object
|
|
properties:
|
|
cursor:
|
|
$ref: "#/components/schemas/Cursor"
|
|
parameters:
|
|
CursorQueryParam:
|
|
in: query
|
|
name: cursor
|
|
schema:
|
|
$ref: "#/components/schemas/CursorString"
|
|
required: false
|
|
LimitQueryParam:
|
|
in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
default: 500
|
|
maximum: 500
|
|
required: false
|
|
ServerOpenQueryParam:
|
|
name: open
|
|
in: query
|
|
description: true=only open servers, false=only closed servers,
|
|
by default both open and closed servers are returned
|
|
schema:
|
|
type: boolean
|
|
required: false
|
|
TribeDeletedQueryParam:
|
|
name: deleted
|
|
in: query
|
|
description: true=only deleted tribes, false=only existing tribes,
|
|
by default both existing and deleted tribes are returned
|
|
schema:
|
|
type: boolean
|
|
required: false
|
|
TribeSortQueryParam:
|
|
name: sort
|
|
in: query
|
|
description: Order matters!
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum:
|
|
- odScoreAtt:ASC
|
|
- odScoreAtt:DESC
|
|
- odScoreDef:ASC
|
|
- odScoreDef:DESC
|
|
- odScoreTotal:ASC
|
|
- odScoreTotal:DESC
|
|
- points:ASC
|
|
- points:DESC
|
|
- dominance:ASC
|
|
- dominance:DESC
|
|
- deletedAt:ASC
|
|
- deletedAt:DESC
|
|
maxItems: 2
|
|
TribeTagQueryParam:
|
|
name: tag
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
maxItems: 100
|
|
PlayerDeletedQueryParam:
|
|
name: deleted
|
|
in: query
|
|
description: true=only deleted players, false=only existing players,
|
|
by default both existing and deleted players are returned
|
|
schema:
|
|
type: boolean
|
|
required: false
|
|
PlayerSortQueryParam:
|
|
name: sort
|
|
in: query
|
|
description: Order matters!
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum:
|
|
- odScoreAtt:ASC
|
|
- odScoreAtt:DESC
|
|
- odScoreDef:ASC
|
|
- odScoreDef:DESC
|
|
- odScoreSup:ASC
|
|
- odScoreSup:DESC
|
|
- odScoreTotal:ASC
|
|
- odScoreTotal:DESC
|
|
- points:ASC
|
|
- points:DESC
|
|
- deletedAt:ASC
|
|
- deletedAt:DESC
|
|
maxItems: 2
|
|
PlayerNameQueryParam:
|
|
name: name
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 150
|
|
maxItems: 100
|
|
PlayerIdQueryParam:
|
|
in: query
|
|
name: id
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/IntId"
|
|
VillageCoordsQueryParam:
|
|
name: coords
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: 500|500
|
|
maxItems: 200
|
|
EnnoblementSortQueryParam:
|
|
name: sort
|
|
in: query
|
|
description: Order matters!
|
|
schema:
|
|
type: array
|
|
default:
|
|
- createdAt:ASC
|
|
items:
|
|
type: string
|
|
enum:
|
|
- createdAt:ASC
|
|
- createdAt:DESC
|
|
maxItems: 1
|
|
TribeChangeSortQueryParam:
|
|
name: sort
|
|
in: query
|
|
description: Order matters!
|
|
schema:
|
|
type: array
|
|
default:
|
|
- createdAt:ASC
|
|
items:
|
|
type: string
|
|
enum:
|
|
- createdAt:ASC
|
|
- createdAt:DESC
|
|
maxItems: 1
|
|
TribeSnapshotSortQueryParam:
|
|
name: sort
|
|
in: query
|
|
description: Order matters!
|
|
schema:
|
|
type: array
|
|
default:
|
|
- date:ASC
|
|
items:
|
|
type: string
|
|
enum:
|
|
- date:ASC
|
|
- date:DESC
|
|
maxItems: 1
|
|
PlayerSnapshotSortQueryParam:
|
|
name: sort
|
|
in: query
|
|
description: Order matters!
|
|
schema:
|
|
type: array
|
|
default:
|
|
- date:ASC
|
|
items:
|
|
type: string
|
|
enum:
|
|
- date:ASC
|
|
- date:DESC
|
|
maxItems: 1
|
|
SinceQueryParam:
|
|
name: since
|
|
in: query
|
|
description: only items created since the provided time are returned, this is a timestamp in RFC 3339 format
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
BeforeQueryParam:
|
|
name: before
|
|
in: query
|
|
description: only items created before the provided time are returned, this is a timestamp in RFC 3339 format
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
VersionCodePathParam:
|
|
in: path
|
|
name: versionCode
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/VersionCode"
|
|
ServerKeyPathParam:
|
|
in: path
|
|
name: serverKey
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/ServerKey"
|
|
TribeIdPathParam:
|
|
in: path
|
|
name: tribeId
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/IntId"
|
|
PlayerIdPathParam:
|
|
in: path
|
|
name: playerId
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/IntId"
|
|
VillageIdPathParam:
|
|
in: path
|
|
name: villageId
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/IntId"
|
|
responses:
|
|
ListVersionsResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Version"
|
|
GetVersionResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/Version"
|
|
ListServersResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Server"
|
|
GetServerResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/Server"
|
|
GetServerConfigResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/ServerConfig"
|
|
GetUnitInfoResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/UnitInfo"
|
|
GetBuildingInfoResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/BuildingInfo"
|
|
ListTribesResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Tribe"
|
|
GetTribeResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/Tribe"
|
|
ListPlayersWithServersResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/PlayerWithServer"
|
|
ListPlayersResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Player"
|
|
GetPlayerResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/Player"
|
|
ListVillagesResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Village"
|
|
GetVillageResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
$ref: "#/components/schemas/Village"
|
|
ListEnnoblementsResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Ennoblement"
|
|
ListTribeChangesResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/TribeChange"
|
|
ListTribeSnapshotsResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/TribeSnapshot"
|
|
ListPlayerSnapshotsResponse:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: "#/components/schemas/PaginationResponse"
|
|
- type: object
|
|
required:
|
|
- data
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/PlayerSnapshot"
|
|
ErrorResponse:
|
|
description: Default error response.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- errors
|
|
additionalProperties: false
|
|
properties:
|
|
errors:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Error"
|