schema { query: Query mutation: Mutation } type Query { "Finds Wargaming accounts by nick" players("Search string." accountNick: String! "Wargaming Realm." realmType: RealmType "Language for the output data." language: RequestLanguage): [AccountsSearchResponseItem!] "Finds clans by search string" clans("Search string." searchString: String! "Wargaming Realm." realmType: RealmType "Language for the output data." language: RequestLanguage): [ClanSearchResponseItem!] "Gathers all account information" accountInfo("AccountId" accountId: Long! "Account region" realmType: RealmType "Request language" requestLanguage: RequestLanguage): AccountInfoResponse! "Account statistics history for period since \"startDate\"" accountInfoHistory("AccountId" accountId: Long! "Date from history started" startDate: DateTime! "Account region" realmType: RealmType "Request language" requestLanguage: RequestLanguage): AccountInfoHistoryResponse! "Tank statistics history for period since \"startDate\"" tankInfoHistory("AccountId" accountId: Long! "TankId" tankId: Long! "Date from history started" startDate: DateTime! "Account region" realmType: RealmType "Request language" requestLanguage: RequestLanguage): TankInfoHistoryResponse! "Returns information about player's achievements" accountMedals("AccountId" accountId: Long! "Account region" realmType: RealmType "Request language" requestLanguage: RequestLanguage): AccountAchievementsResponse! "Returns information about player's tank achievements" tankMedals("AccountId" accountId: Long! "Account tank Id" tankId: Long! "Account region" realmType: RealmType "Request language" requestLanguage: RequestLanguage): AccountAchievementsResponse! "Returns authentication URL accourding Realm" loginUrl("Wargaming Realm." realmType: RealmType!): String! "Returns a list of all vehicles of one nation\n\n\n**Returns:**\nA list of vehicles" vehicles("Nation" nationId: String! "Request language" language: RequestLanguage): [VehicleResponse!]! } type Mutation { "Updates the necessary dictionaries in database.\n\n\n**Returns:**\nInformation about what was updated." updateDictionaries("Determines what dictionaries should be updated." updateDictionariesRequest: UpdateDictionariesRequestInput!): [UpdateDictionariesResponseItem!]! "Gathers all account information" gatherAccountInformation("Account region" realmType: RealmType! "AccountId" accountId: Long! "Request language" requestLanguage: RequestLanguage!): DateTime! "This method accepts GitHub oauth code, and returns JWT token with GutHub user as claim" gitHubAuthenticate("OAuth code can be generated by this URL https:\/\/github.com\/login\/oauth\/authorize?client_id={yourClientId}" oauthCode: String!): String! "Prolongates Wargaming authentication token" prolongAuthToken("Wargaming realm" realm: RealmType! "Old token to prolongate" oldToken: String!): WargamingProlongInfo! "Removes player's access token\n\n\n**Returns:**\nOperation result" logout("Wargaming realm" realm: RealmType! "Token to logout" token: String!): String! "Removes player's acoount history from database\n\n\n**Returns:**\nOperation result" removePlayerHistory("Wargaming realm" realm: RealmType! "Player Id" accountId: Long!): String! } "Mastery" enum MarkOfMastery { "No mastery" NONE "Third mark of mastery" RANK3 "Second mark of mastery" RANK2 "First mark of mastery" RANK1 "Master mark" MASTER } "Wargaming API Realm" enum RealmType { "Russian region" RU "European region" EU "North America" NA "Asian region" ASIA } "Wargaming API request language" enum RequestLanguage { "Русский" RU "English" EN "Deutsch" DE } "Information about player" type AccountInfoResponse implements Statistics { "Clan info" clanInfo: ClanInfoResponse "Player account identifier" accountId: Long! "Account creation date" createdAt: DateTime! "Player's nick" nickname: String "Tank id, which kills max frags per battle" maxFragsTankId: Long! "Tank Id which created max experience per battle" maxXpTankId: Long! "Average tier" avgTier: Float! "All player's tanks" tanks: [TankInfoResponse!] "Account Region and request language" regionAndLanguage: RealmAndLanguage! "Last battle time" lastBattleTime: DateTime! "Battles count" battles: Long! "Capture points" capturePoints: Long! "Total damage amount" damageDealt: Long! "Total amount of received damage" damageReceived: Long! "Dropped capture points" droppedCapturePoints: Long! "Total amount of frags" frags: Long! "Total amount of fras grater ten 8 lvl" frags8P: Long! "Total amount of hits" hits: Long! "Total amount of losses" losses: Long! "Max frags per battle" maxFrags: Long! "Max experience per battle" maxXp: Long! "Total shots count" shots: Long! "Total count of spotted vehicles" spotted: Long! "Total count of survived battles" survivedBattles: Long! "Total count of survived and won battles" winAndSurvived: Long! "Total wins count" wins: Long! "Total amount of experience" xp: Long! "Wn7 coefficient" wn7: Float! "Player's win rate" winRate: Decimal! "Player's average damage" avgDamage: Decimal! "Player's average XP" avgXp: Decimal! "Damage coefficient" damageCoefficient: Decimal! "Rate of survival" survivalRate: Decimal! } "Information about player's tank" type TankInfoResponse implements Statistics { "Player account identifier" accountId: Long! "Tank identifier" tankId: Long! "Information is tank in garage or not. Information is not provided without Auth token" inGarage: Boolean "Mark of Mastery" markOfMastery: MarkOfMastery! "Total time in battle until tank killed" battleLifeTimeInSeconds: Int! "Average life time in battle until tank is killed." avgBattleLifeTimeInMinutes: Decimal! "Tank name" name: String "Tank nation dictionary identifier" tankNationId: String "Localized tank nation name" tankNation: String "Tank tier" tier: Int! "Tank type dictionary identifier" tankTypeId: String "Localized tank type name" tankType: String "Is it premium tank or not" isPremium: Boolean! "Vehicle preview image" previewImage: String "Vehicle normal image" normalImage: String "Last battle time" lastBattleTime: DateTime! "Battles count" battles: Long! "Capture points" capturePoints: Long! "Total damage amount" damageDealt: Long! "Total amount of received damage" damageReceived: Long! "Dropped capture points" droppedCapturePoints: Long! "Total amount of frags" frags: Long! "Total amount of fras grater ten 8 lvl" frags8P: Long! "Total amount of hits" hits: Long! "Total amount of losses" losses: Long! "Max frags per battle" maxFrags: Long! "Max experience per battle" maxXp: Long! "Total shots count" shots: Long! "Total count of spotted vehicles" spotted: Long! "Total count of survived battles" survivedBattles: Long! "Total count of survived and won battles" winAndSurvived: Long! "Total wins count" wins: Long! "Total amount of experience" xp: Long! "Wn7 coefficient" wn7: Float! "Player's win rate" winRate: Decimal! "Player's average damage" avgDamage: Decimal! "Player's average XP" avgXp: Decimal! "Damage coefficient" damageCoefficient: Decimal! "Rate of survival" survivalRate: Decimal! } "Account search result item" type AccountsSearchResponseItem { "Player accountId" accountId: Long! "Player nick" nickname: String "Clan tag. Null if player doesn't have clan membership" clanTag: String "Win rate from 0 to 100" winRate: Int! "Player's battles count" battlesCount: Long! "Last battle time" lastBattle: DateTime! } "Represents game's statistics" interface Statistics { "Last battle time" lastBattleTime: DateTime! "Battles count" battles: Long! "Capture points" capturePoints: Long! "Total damage amount" damageDealt: Long! "Total amount of received damage" damageReceived: Long! "Dropped capture points" droppedCapturePoints: Long! "Total amount of frags" frags: Long! "Total amount of frags grater ten 8 lvl" frags8P: Long! "Total amount of hits" hits: Long! "Total amount of losses" losses: Long! "Max frags per battle" maxFrags: Long! "Max experience per battle" maxXp: Long! "Total shots count" shots: Long! "Total count of spotted vehicles" spotted: Long! "Total count of survived battles" survivedBattles: Long! "Total count of survived and won battles" winAndSurvived: Long! "Total wins count" wins: Long! "Total amount of experience" xp: Long! "Wn7 coefficient" wn7: Float! "Player's win rate" winRate: Decimal! "Player's average damage" avgDamage: Decimal! "Player's average XP" avgXp: Decimal! "Damage coefficient" damageCoefficient: Decimal! "Rate of survival" survivalRate: Decimal! } enum ApplyPolicy { BEFORE_RESOLVER AFTER_RESOLVER } "Clan information" type ClanInfoResponse { "Clan ID" clanId: Long! "Date of joining clan" joinedAt: DateTime! "Player clan role ID" role: String "Player clan role" roleLocalized: String! "Clan name" name: String "Date of clan creation" createdAt: DateTime! "Clan creator account id" creatorId: Long "Clan creator nick" creatorName: String "Clan description" description: String "Html Clan description" descriptionHtml: String "Clan commander accountId" leaderId: Long "Clan commander nick" leaderName: String "Clan members count" membersCount: Long "Clan motto" motto: String "Renamed clan name" oldName: String "Renamed clan tag" oldTag: String "Clan tag" tag: String "Clan info updated at" updatedAt: DateTime } "The `Long` scalar type represents non-fractional signed whole 64-bit numeric values. Long can represent values between -(2^63) and 2^63 - 1." scalar Long "The `DateTime` scalar represents an ISO-8601 compliant date time type." scalar DateTime "Represents pair of realm type a nd requested language" type RealmAndLanguage { realm: RealmType! language: RequestLanguage! } "The built-in `Decimal` scalar type." scalar Decimal "Prolong Wargaming Auth token response" type WargamingProlongInfo { "Player Account Id" accountId: Long! "New access token" accessToken: String! "New expiration unix timestamp" expirationTimeStamp: Int! } "Request for update dictionaries mutation" input UpdateDictionariesRequestInput { "Determines what dictionaries should be updated. Usage: StaticDictionaries | Achievements | Vehicles" dictionaryTypes: DictionaryType! } "Represents the response of the Update dictionaries mutation" type UpdateDictionariesResponseItem { "Type of updated dictionary" dictionaryType: DictionaryType! "A bit summary about what have been updated" description: String } "Response for vehicle dictionary query" type VehicleResponse { "VehicleId" tankId: Long! "Vehicle name" name: String! "Vehicle description" description: String! "Is vehicle premium" isPremium: Boolean! "Vehicle type id" typeId: String! "Vehicle nationId" nationId: String! "Vehicle tier" tier: Int! "Vehicle preview image" previewImage: String! "Vehicle normal image" normalImage: String! "Vehicle price in credits" priceCredit: Decimal! "Vehicle price in gold" priceGold: Decimal! "Ids of nex tanks and their cost in XP" nexTanksInTree: [Long!] } "Represents information about player's achievements" type AccountAchievementsResponse { "Player Id" accountId: Long! "Player Achievements by sections" sections: [AchievementSection!] } "Information about tank statistics history" type TankInfoHistoryResponse { "Player account identifier" accountId: Long! "Tank identifier" tankId: Long! "Total time in battle until tank killed" battleLifeTimeInSeconds: Int! "Last battle" lastBattleTime: DateTime! "Mark of Mastery" markOfMastery: MarkOfMastery! "Tank name" name: String "Is vehicle premium" isPremium: Boolean! "Vehicle type id" type: String "Vehicle nationId" nation: String "Vehicle tier" tier: Int! "Vehicle preview image" previewImage: String "Vehicle normal image" normalImage: String "Overall statistics since tank was bought" overallTankStatistics: ShortStatistics "Statistics for period" tankPeriodStatistics: ShortStatistics "Difference between start and end of the period" periodDifference: StatisticsDifference "The detailed history" statisticsHistory: [StatisticsDifference!] } "Information about player statistics history" type AccountInfoHistoryResponse { "Player account identifier" accountId: Long! "Account creation date" createdAt: DateTime! "Player's nick" nickname: String "Overall statistics since account creation" overallAccountStatistics: ShortStatistics "Statistics for period" periodAccountStatistics: ShortStatistics "Difference between start and end of the period" periodDifference: StatisticsDifference "The detailed history" statisticsHistory: [StatisticsDifference!] } "Found clans list item" type ClanSearchResponseItem { "Clan Id" clanId: Long! "Clan Tag" tag: String "Clan Name" name: String "Clan created at. (UNIX Epoch time)" createdAt: Int! "Clan members count" membersCount: Int! } "The difference between current statistics state and previous" type StatisticsDifference { "Last battle time" lastBattleTime: DateTime! "Difference in Battles count" battles: StatisticsDifferenceItemOfInt64 "Difference in Average tier" avgTier: StatisticsDifferenceItemOfDouble "Difference in Wn7 coefficient" wn7: StatisticsDifferenceItemOfDouble "Difference in Player's win rate" winRate: StatisticsDifferenceItemOfDecimal "Difference in Player's average damage" avgDamage: StatisticsDifferenceItemOfDecimal "Difference in Player's average XP" avgXp: StatisticsDifferenceItemOfDecimal } "Short statistics info" type ShortStatistics { "Last battle time" lastBattleTime: DateTime! "Battles count" battles: Long! "Average tier" avgTier: Float! "Wn7 coefficient" wn7: Float! "Player's win rate" winRate: Decimal! "Player's average damage" avgDamage: Decimal! "Player's average XP" avgXp: Decimal! } "Represents achievement section info and it's achievements list" type AchievementSection { "Section Identifier" sectionId: String! "Section order" order: Int! "Section Name" name: String! "Achievements in the section" medals: [Achievement!] } "List of dictionaries" enum DictionaryType { "Static dictionaries - Languages, VehicleNations, VehicleTypes, AchievementSections, ClanRoles" STATIC_DICTIONARIES "Achievements" ACHIEVEMENTS "Vehicles encyclopedia" VEHICLES "Only vehicles and Achievements" ACHIEVEMENTS_AND_VEHICLES "All dictionaries" ALL } "Player's achievement information" type Achievement { "Achievement Id" id: String! "Achievement value" achievementValue: Int! "Achievement max series value" maxSeriesValue: Int "Achievement condition" condition: String "Achievement description" description: String "Achievement normal sized image" image: String "Achievement big image" imageBig: String "Achievement name" name: String "Order" order: Long "Section Id" sectionId: String! "Achievement type" medalType: String } type StatisticsDifferenceItemOfDecimal { currentValue: Decimal! difference: Decimal } type StatisticsDifferenceItemOfDouble { currentValue: Float! difference: Float } type StatisticsDifferenceItemOfInt64 { currentValue: Long! difference: Long } directive @authorize("The name of the authorization policy that determines access to the annotated resource." policy: String "Roles that are allowed to access the annotated resource." roles: [String!] "Defines when when the resolver shall be executed.By default the resolver is executed after the policy has determined that the current user is allowed to access the field." apply: ApplyPolicy! = BEFORE_RESOLVER) repeatable on SCHEMA | OBJECT | FIELD_DEFINITION