{"openapi":"3.1.0","info":{"title":"OverFast API","description":"OverFast API provides comprehensive data on Overwatch heroes,\ngame modes, maps, and player statistics by scraping Blizzard pages. Built with\n**FastAPI** and **Selectolax**, it uses **PostgreSQL** for\npersistent storage, **Stale-While-Revalidate caching** via **Valkey** and **nginx\n(OpenResty)**, **taskiq** background workers, and **TCP Slow Start + AIMD throttling**\nfor Blizzard requests.\n\nThis live instance is configured with the following restrictions:\n- Rate Limit per IP: **30 requests/second** (burst capacity :\n**5**)\n- Maximum connections/simultaneous requests per IP: **10**\n- Adaptive Blizzard throttle: **2.0s** initial delay\n  (TCP Slow Start + AIMD; 503 returned when rate-limited)\n\nThis limit may be adjusted as needed. If you require higher throughput, consider\nhosting your own instance on a server 👍\n\nSwagger UI (useful for trying API calls) : https://overfast-api.tekrop.fr/docs\n\nStatus page : https://uptime-overfast-api.tekrop.fr/\n","contact":{"name":"Valentin \"TeKrop\" PORCHET","url":"https://github.com/TeKrop/overfast-api","email":"valentin.porchet@proton.me"},"license":{"name":"MIT","url":"https://github.com/TeKrop/overfast-api/blob/main/LICENSE"},"version":"4.7.1","x-logo":{"url":"/static/logo_light.png","altText":"OverFast API Logo"}},"servers":[{"url":"https://overfast-api.tekrop.fr","description":"Production server"}],"paths":{"/heroes":{"get":{"tags":["🦸 Heroes"],"summary":"Get a list of heroes","description":"Get a list of Overwatch heroes, which can be filtered using roles, subroles or gamemodes. <br />**Cache TTL : 1 day.**","operationId":"list_heroes","parameters":[{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Role"},{"$ref":"#/components/schemas/SubRole"},{"type":"null"}],"title":"Role filter"}},{"name":"locale","in":"query","required":false,"schema":{"$ref":"#/components/schemas/Locale","title":"Locale to be displayed","default":"en-us"}},{"name":"gamemode","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/HeroGamemode"},{"type":"null"}],"title":"Gamemode filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroShort"},"title":"Response List Heroes"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/heroes/stats":{"get":{"tags":["🦸 Heroes"],"summary":"Get hero stats","description":"Get hero statistics usage, filtered by platform, region, role, etc.Only Role Queue gamemodes are concerned.<br />**Cache TTL : 1 hour.**","operationId":"get_hero_stats","parameters":[{"name":"platform","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PlayerPlatform","title":"Player platform filter","examples":["pc"]}},{"name":"gamemode","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PlayerGamemode","title":"Gamemode","description":"Filter on a specific gamemode.","examples":["competitive"]},"description":"Filter on a specific gamemode."},{"name":"region","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PlayerRegion","title":"Region","description":"Filter on a specific player region.","examples":["europe"]},"description":"Filter on a specific player region."},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Role"},{"type":"null"}],"title":"Role filter","examples":["support"]}},{"name":"map","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MapKey"},{"type":"null"}],"title":"Map key filter","examples":["hanaoka"]}},{"name":"competitive_division","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/CompetitiveDivisionFilter"},{"type":"null"}],"title":"Competitive division filter","examples":["diamond"]}},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(hero|winrate|pickrate):(asc|desc)$","title":"Ordering field and the way it's arranged (asc[ending]/desc[ending])","default":"hero:asc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroStatsSummary"},"title":"Response Get Hero Stats"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"400":{"description":"Bad Request Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-badges":[{"name":"NEW","color":"#ff9c00"}]}},"/heroes/{hero_key}":{"get":{"tags":["🦸 Heroes"],"summary":"Get hero data","description":"Get data about an Overwatch hero : description, abilities, stadium powers, story, etc. <br />**Cache TTL : 1 day.**","operationId":"get_hero","parameters":[{"name":"hero_key","in":"path","required":true,"schema":{"$ref":"#/components/schemas/HeroKey","title":"Key name of the hero"}},{"name":"locale","in":"query","required":false,"schema":{"$ref":"#/components/schemas/Locale","title":"Locale to be displayed","default":"en-us"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hero"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"404":{"description":"Hero Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeroParserErrorMessage"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/roles":{"get":{"tags":["🦸 Heroes"],"summary":"Get a list of roles","description":"Get a list of available Overwatch roles.<br />**Cache TTL : 1 day.**","operationId":"list_roles","parameters":[{"name":"locale","in":"query","required":false,"schema":{"$ref":"#/components/schemas/Locale","title":"Locale to be displayed","default":"en-us"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoleDetail"},"title":"Response List Roles"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gamemodes":{"get":{"tags":["🎲 Gamemodes"],"summary":"Get a list of gamemodes","description":"Get a list of Overwatch gamemodes : Assault, Escort, Flashpoint, Hybrid, etc.<br />**Cache TTL : 1 day.**","operationId":"list_map_gamemodes","responses":{"200":{"description":"Successful Response","headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}},"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GamemodeDetails"},"type":"array","title":"Response List Map Gamemodes"}}}}}}},"/maps":{"get":{"tags":["🗺️ Maps"],"summary":"Get a list of maps","description":"Get a list of Overwatch maps : Hanamura, King's Row, Dorado, etc.<br />**Cache TTL : 1 day.**","operationId":"list_maps","parameters":[{"name":"gamemode","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MapGamemode"},{"type":"null"}],"title":"Gamemode filter","description":"Filter maps available for a specific gamemode"},"description":"Filter maps available for a specific gamemode"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Map"},"title":"Response List Maps"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players":{"get":{"tags":["🎮 Players"],"summary":"Search for a specific player","description":"Search for a given player by using its username or BattleTag (with # replaced by -). <br />You should be able to find the associated player_id to use in order to request career data.<br />**Cache TTL : 10 minutes.**","operationId":"search_players","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","title":"Player nickname or BattleTag to search","examples":["TeKrop","TeKrop-2217"]}},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(player_id|name|last_updated_at):(asc|desc)$","title":"Ordering field and the way it's arranged (asc[ending]/desc[ending])","default":"name:asc"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"title":"Offset of the results","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"title":"Limit of results per page","default":20}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerSearchResult"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/{player_id}/summary":{"get":{"tags":["🎮 Players"],"summary":"Get player summary","description":"Get player summary : name, avatar, competitive ranks, etc. <br />**Cache TTL : 10 minutes.**","operationId":"get_player_summary","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player unique name","description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !","examples":["TeKrop-2217","TeKrop"]},"description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerSummary"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"404":{"description":"Player Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerNotFoundError"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/{player_id}/stats/summary":{"get":{"tags":["🎮 Players"],"summary":"Get player stats summary","description":"Get player statistics summary, with stats usually used for tracking progress : winrate, kda, damage, healing, etc. <br /> Data is regrouped in 3 sections : general (sum of all stats), roles (sum of stats for each role) and heroes (stats for each hero).<br /> Depending on filters, data from both competitive and quickplay, and/or pc and console will be merged.<br />Default behaviour : all gamemodes and platforms are taken in account.<br />**Cache TTL : 10 minutes.**","operationId":"get_player_stats_summary","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player unique name","description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !","examples":["TeKrop-2217","TeKrop"]},"description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !"},{"name":"gamemode","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlayerGamemode"},{"type":"null"}],"title":"Gamemode","description":"Filter on a specific gamemode. If not specified, the data of every gamemode will be combined.","examples":["competitive"]},"description":"Filter on a specific gamemode. If not specified, the data of every gamemode will be combined."},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlayerPlatform"},{"type":"null"}],"title":"Platform","description":"Filter on a specific platform. If not specified, the data of every platform will be combined.","examples":["pc"]},"description":"Filter on a specific platform. If not specified, the data of every platform will be combined."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerStatsSummary"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"404":{"description":"Player Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerNotFoundError"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/{player_id}/stats/career":{"get":{"tags":["🎮 Players"],"summary":"Get player career stats","description":"Career contains numerous statistics grouped by heroes and categories (combat, game, best, hero specific, average, etc.). Filter them on specific platform and gamemode (mandatory). You can even retrieve data about a specific hero of your choice.<br />**Cache TTL : 10 minutes.**","operationId":"get_player_career_stats","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player unique name","description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !","examples":["TeKrop-2217","TeKrop"]},"description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !"},{"name":"gamemode","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PlayerGamemode","title":"Gamemode","description":"Filter on a specific gamemode.","examples":["competitive"]},"description":"Filter on a specific gamemode."},{"name":"platform","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PlayerPlatform","title":"Platform","description":"Filter on a specific platform. If not specified, the only platform the player played on will be selected. If the player has already played on both PC and console, the PC stats will be displayed by default.","examples":["pc"]},"description":"Filter on a specific platform. If not specified, the only platform the player played on will be selected. If the player has already played on both PC and console, the PC stats will be displayed by default."},{"name":"hero","in":"query","required":false,"schema":{"$ref":"#/components/schemas/HeroKeyCareerFilter","title":"Hero key","description":"Filter on a specific hero in order to only get his statistics. You also can specify 'all-heroes' for general stats."},"description":"Filter on a specific hero in order to only get his statistics. You also can specify 'all-heroes' for general stats."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerCareerStats"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"404":{"description":"Player Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerNotFoundError"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/{player_id}/stats":{"get":{"tags":["🎮 Players"],"summary":"Get player stats with labels","description":"This endpoint exposes the same data as the previous one, except it also exposes labels of the categories and statistics.<br />**Cache TTL : 10 minutes.**","operationId":"get_player_stats","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player unique name","description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !","examples":["TeKrop-2217","TeKrop"]},"description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !"},{"name":"gamemode","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PlayerGamemode","title":"Gamemode","description":"Filter on a specific gamemode.","examples":["competitive"]},"description":"Filter on a specific gamemode."},{"name":"platform","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PlayerPlatform","title":"Platform","description":"Filter on a specific platform. If not specified, the only platform the player played on will be selected. If the player has already played on both PC and console, the PC stats will be displayed by default.","examples":["pc"]},"description":"Filter on a specific platform. If not specified, the only platform the player played on will be selected. If the player has already played on both PC and console, the PC stats will be displayed by default."},{"name":"hero","in":"query","required":false,"schema":{"$ref":"#/components/schemas/HeroKeyCareerFilter","title":"Hero key","description":"Filter on a specific hero in order to only get his statistics. You also can specify 'all-heroes' for general stats."},"description":"Filter on a specific hero in order to only get his statistics. You also can specify 'all-heroes' for general stats."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CareerStats"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"404":{"description":"Player Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerNotFoundError"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/{player_id}":{"get":{"tags":["🎮 Players"],"summary":"Get all player data","description":"Get all player data : summary and statistics with labels.<br />**Cache TTL : 10 minutes.**","operationId":"get_player_career","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player unique name","description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !","examples":["TeKrop-2217","TeKrop"]},"description":"Identifier of the player : BattleTag (with \"#\" replaced by \"-\"). You can also put your username if you're the only one using it on Blizzard. Be careful, letter case (capital/non-capital letters) is important !"},{"name":"gamemode","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlayerGamemode"},{"type":"null"}],"title":"Gamemode","description":"Filter on a specific gamemode. All gamemodes are displayed by default.","examples":["competitive"]},"description":"Filter on a specific gamemode. All gamemodes are displayed by default."},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlayerPlatform"},{"type":"null"}],"title":"Platform","description":"Filter on a specific platform. All platforms are displayed by default.","examples":["pc"]},"description":"Filter on a specific platform. All platforms are displayed by default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Player"}}},"headers":{"X-Cache-TTL":{"description":"The TTL value for the cached response, in seconds","schema":{"type":"string","example":"600"}},"Age":{"description":"Number of seconds since the response payload was generated (RFC 7234 §5.1). Present on FastAPI-served responses; also set by nginx for Valkey cache hits.","schema":{"type":"string","example":"42"}},"Cache-Control":{"description":"Standard caching directives (RFC 7234 + RFC 5861). ``max-age`` reflects the staleness threshold in seconds. ``stale-while-revalidate`` is present when a background refresh is in-flight, indicating how long stale data may still be served.","schema":{"type":"string","example":"public, max-age=86400, stale-while-revalidate=60"}},"X-Cache-Status":{"description":"Indicates whether the response was served from a fresh cache entry (``hit``) or a stale one while a background refresh is in-flight (``stale``).","schema":{"type":"string","enum":["hit","stale"],"example":"hit"}}}},"404":{"description":"Player Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerNotFoundError"}}}},"429":{"description":"API Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitErrorMessage"}}}},"503":{"description":"Blizzard Rate Limit Error","headers":{"Retry-After":{"description":"Indicates how long to wait before making a new request","schema":{"type":"string","example":"5"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardRateLimitErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerErrorMessage"}}}},"504":{"description":"Blizzard Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlizzardErrorMessage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Ability":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the ability","examples":["Combat Roll"]},"description":{"type":"string","title":"Description","description":"Description of the ability","examples":["Roll in the direction you're moving and reload."]},"icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Icon","description":"Icon URL of the ability","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/24a3f2f619859812bba6b6374513fa971b6b19ccb34950c02118b41cc4f93142.png"]},"video":{"$ref":"#/components/schemas/AbilityVideo","description":"Video of the ability"}},"type":"object","required":["name","description","icon","video"],"title":"Ability"},"AbilityVideo":{"properties":{"thumbnail":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Thumbnail","description":"Thumbnail of the ability video","examples":["https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt08db01a1d84b0c3b/6333c97e3922a2677fc88c3c/CASSIDY_COMBAT_ROLL.jpg"]},"link":{"$ref":"#/components/schemas/AbilityVideoLink","description":"Link to the ability video"}},"type":"object","required":["thumbnail","link"],"title":"AbilityVideo"},"AbilityVideoLink":{"properties":{"mp4":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Mp4","description":"MP4 version","examples":["https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt71688da0f7834fed/6333c9882dc7636608cc7078/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_CassidyPeacekeeper_WEB_16x9_1920x1080p30_H264.mp4"]},"webm":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webm","description":"WebM version","examples":["https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltcff86b9875852be9/6333c9873917977bfd986103/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_CassidyPeacekeeper_WEB_16x9_1920x1080p30_H264.webm"]}},"type":"object","required":["mp4","webm"],"title":"AbilityVideoLink"},"AverageStatsSummary":{"properties":{"eliminations":{"type":"number","minimum":0.0,"title":"Eliminations","description":"Average eliminations per 10 minutes"},"assists":{"type":"number","minimum":0.0,"title":"Assists","description":"Average assists per 10 minutes"},"deaths":{"type":"number","minimum":0.0,"title":"Deaths","description":"Average deaths per 10 minutes"},"damage":{"type":"number","minimum":0.0,"title":"Damage","description":"Average damage done per 10 minutes"},"healing":{"type":"number","minimum":0.0,"title":"Healing","description":"Average healing done per 10 minutes"}},"type":"object","required":["eliminations","assists","deaths","damage","healing"],"title":"AverageStatsSummary"},"BackgroundImageSize":{"type":"string","enum":["min","xs","sm","md","lg","xl+"],"title":"BackgroundImageSize","description":"Responsive breakpoint sizes for hero background images"},"BadRequestErrorMessage":{"properties":{"error":{"type":"string","title":"Error","description":"Message describing the error","examples":["Selected map 'hanaoka' is not compatible with 'competitive' gamemode."]}},"type":"object","required":["error"],"title":"BadRequestErrorMessage"},"BlizzardErrorMessage":{"properties":{"error":{"type":"string","title":"Error","description":"Message describing the error","examples":["Couldn't get Blizzard page (HTTP 503 error) : Service Unavailable"]}},"type":"object","required":["error"],"title":"BlizzardErrorMessage"},"BlizzardRateLimitErrorMessage":{"properties":{"error":{"type":"string","title":"Error","description":"Message describing the Blizzard rate limit error and number of seconds before retrying","examples":["Blizzard is temporarily rate limiting this API. Please retry after 5 seconds."]}},"type":"object","required":["error"],"title":"BlizzardRateLimitErrorMessage"},"CareerStatCategory":{"type":"string","enum":["assists","average","best","combat","game","hero_specific","match_awards","miscellaneous"],"title":"CareerStatCategory","description":"Categories of general statistics displayed in the players API"},"CareerStats":{"properties":{"all-heroes":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"All-Heroes","description":"Total of statistics for all heroes"},"ana":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Ana","description":"Career statistics for Ana"},"anran":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Anran","description":"Career statistics for Anran"},"ashe":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Ashe","description":"Career statistics for Ashe"},"baptiste":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Baptiste","description":"Career statistics for Baptiste"},"bastion":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Bastion","description":"Career statistics for Bastion"},"brigitte":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Brigitte","description":"Career statistics for Brigitte"},"cassidy":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Cassidy","description":"Career statistics for Cassidy"},"dva":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Dva","description":"Career statistics for D.Va"},"domina":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Domina","description":"Career statistics for Domina"},"doomfist":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Doomfist","description":"Career statistics for Doomfist"},"echo":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Echo","description":"Career statistics for Echo"},"emre":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Emre","description":"Career statistics for Emre"},"freja":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Freja","description":"Career statistics for Freja"},"genji":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Genji","description":"Career statistics for Genji"},"hazard":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Hazard","description":"Career statistics for Hazard"},"hanzo":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Hanzo","description":"Career statistics for Hanzo"},"illari":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Illari","description":"Career statistics for Illari"},"jetpack-cat":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Jetpack-Cat","description":"Career statistics for Jetpack Cat"},"junker-queen":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Junker-Queen","description":"Career statistics for Junker Queen"},"junkrat":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Junkrat","description":"Career statistics for Junkrat"},"juno":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Juno","description":"Career statistics for Juno"},"kiriko":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Kiriko","description":"Career statistics for Kiriko"},"lifeweaver":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Lifeweaver","description":"Career statistics for Lifeweaver"},"lucio":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Lucio","description":"Career statistics for Lúcio"},"mauga":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Mauga","description":"Career statistics for Mauga"},"mei":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Mei","description":"Career statistics for Mei"},"mercy":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Mercy","description":"Career statistics for Mercy"},"mizuki":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Mizuki","description":"Career statistics for Mizuki"},"moira":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Moira","description":"Career statistics for Moira"},"orisa":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Orisa","description":"Career statistics for Orisa"},"pharah":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Pharah","description":"Career statistics for Pharah"},"ramattra":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Ramattra","description":"Career statistics for Ramattra"},"reaper":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Reaper","description":"Career statistics for Reaper"},"reinhardt":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Reinhardt","description":"Career statistics for Reinhardt"},"roadhog":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Roadhog","description":"Career statistics for Roadhog"},"shion":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Shion","description":"Career statistics for Shion"},"sigma":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Sigma","description":"Career statistics for Sigma"},"sierra":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Sierra","description":"Career statistics for Sierra"},"sojourn":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Sojourn","description":"Career statistics for Sojourn"},"soldier-76":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Soldier-76","description":"Career statistics for Soldier: 76"},"sombra":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Sombra","description":"Career statistics for Sombra"},"symmetra":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Symmetra","description":"Career statistics for Symmetra"},"torbjorn":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Torbjorn","description":"Career statistics for Torbjörn"},"tracer":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Tracer","description":"Career statistics for Tracer"},"vendetta":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Vendetta","description":"Career statistics for Vendetta"},"venture":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Venture","description":"Career statistics for Venture"},"widowmaker":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Widowmaker","description":"Career statistics for Widowmaker"},"winston":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Winston","description":"Career statistics for Winston"},"wrecking-ball":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Wrecking-Ball","description":"Career statistics for Wrecking Ball"},"wuyang":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Wuyang","description":"Career statistics for Wuyang"},"zarya":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Zarya","description":"Career statistics for Zarya"},"zenyatta":{"anyOf":[{"items":{"$ref":"#/components/schemas/HeroCareerStats"},"type":"array","minItems":1},{"type":"null"}],"title":"Zenyatta","description":"Career statistics for Zenyatta"}},"type":"object","title":"CareerStats","example":{"all-heroes":[{"category":"best","label":"Best","stats":[{"key":"eliminations_most_in_game","label":"Eliminations - Most in Game","value":22},{"key":"final_blows_most_in_game","label":"Final Blows - Most in Game","value":10},{"key":"all_damage_done_most_in_game","label":"All Damage Done - Most in Game","value":25326},{"key":"healing_done_most_in_game","label":"Healing Done - Most in Game","value":8196},{"key":"defensive_assists_most_in_game","label":"Defensive Assists - Most in Game","value":15},{"key":"offensive_assists_most_in_game","label":"Offensive Assists - Most in Game","value":11},{"key":"objective_kills_most_in_game","label":"Objective Kills - Most in Game","value":7},{"key":"objective_time_most_in_game","label":"Objective Time - Most in Game","value":281},{"key":"multikill_best","label":"Multikill - Best","value":3},{"key":"solo_kills_most_in_game","label":"Solo Kills - Most in Game","value":10},{"key":"time_spent_on_fire_most_in_game","label":"Time Spent on Fire - Most in Game","value":88},{"key":"environmental_kills_most_in_game","label":"Environmental Kill - Most in Game","value":1},{"key":"kill_streak_best","label":"Kill Streak - Best","value":7},{"key":"hero_damage_done_most_in_game","label":"Hero Damage Done - Most in Game","value":17735},{"key":"barrier_damage_done_most_in_game","label":"Barrier Damage Done - Most in Game","value":7544},{"key":"assists_most_in_game","label":"Assists - Most in Game","value":16},{"key":"objective_contest_time_most_in_game","label":"Objective Contest Time - Most in Game","value":155}]},{"category":"average","label":"Average","stats":[{"key":"hero_damage_done_avg_per_10_min","label":"Hero Damage Done - Avg per 10 Min","value":7289},{"key":"deaths_avg_per_10_min","label":"Deaths - Avg per 10 Min","value":6.41},{"key":"eliminations_avg_per_10_min","label":"Eliminations - Avg per 10 Min","value":10.9},{"key":"assists_avg_per_10_min","label":"Assists - Avg per 10 min","value":7.48},{"key":"healing_done_avg_per_10_min","label":"Healing Done - Avg per 10 Min","value":2715},{"key":"objective_kills_avg_per_10_min","label":"Objective Kills - Avg per 10 Min","value":4.7},{"key":"objective_time_avg_per_10_min","label":"Objective Time - Avg per 10 Min","value":89},{"key":"final_blows_avg_per_10_min","label":"Final Blows - Avg per 10 Min","value":3.85},{"key":"objective_contest_time_avg_per_10_min","label":"Objective Contest Time - Avg per 10 Min","value":50}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":2807},{"key":"games_played","label":"Games Played","value":5},{"key":"games_won","label":"Game Won","value":1},{"key":"games_lost","label":"Games Lost","value":4},{"key":"hero_wins","label":"Hero Win","value":1}]},{"category":"combat","label":"Combat","stats":[{"key":"damage_done","label":"Damage Done","value":34098},{"key":"hero_damage_done","label":"Hero Damage Done","value":34098},{"key":"deaths","label":"Deaths","value":30},{"key":"eliminations","label":"Eliminations","value":51},{"key":"objective_kills","label":"Objective Kills","value":22},{"key":"final_blows","label":"Final Blows","value":18},{"key":"objective_time","label":"Objective Time","value":418},{"key":"multikills","label":"Multikill","value":1},{"key":"environmental_kills","label":"Environmental Kill","value":1},{"key":"objective_contest_time","label":"Objective Contest Time","value":233}]},{"category":"assists","label":"Assists","stats":[{"key":"assists","label":"Assists","value":35},{"key":"healing_done","label":"Healing Done","value":12703},{"key":"defensive_assists","label":"Defensive Assists","value":29},{"key":"offensive_assists","label":"Offensive Assists","value":21}]}],"ana":[{"category":"hero_specific","label":"Hero Specific","stats":[{"key":"scoped_accuracy_best_in_game","label":"Scoped Accuracy - Best in Game","value":45},{"key":"self_healing","label":"Self Healing","value":577},{"key":"self_healing_most_in_game","label":"Self Healing - Most in Game","value":300},{"key":"enemies_slept","label":"Enemies Slept","value":4},{"key":"nano_boost_assists","label":"Nano Boost Assists","value":8},{"key":"unscoped_accuracy_best_in_game","label":"Unscoped Accuracy - Best in Game","value":55},{"key":"enemies_slept_most_in_game","label":"Enemies Slept - Most in Game","value":3},{"key":"nano_boost_assists_most_in_game","label":"Nano Boost Assists - Most in Game","value":7},{"key":"biotic_grenade_kills","label":"Biotic Grenade Kills","value":9},{"key":"damage_amplified","label":"Damage Amplified","value":862},{"key":"damage_amplified_most_in_game","label":"Damage Amplified - Most in Game","value":741},{"key":"healing_amplified","label":"Healing Amplified","value":647},{"key":"healing_amplified_most_in_game","label":"Healing Amplified - Most in Game","value":411},{"key":"nano_boost_assists_avg_per_10_min","label":"Nano Boost Assists - Avg per 10 Min","value":5.61},{"key":"healing_amplified_avg_per_10_min","label":"Healing Amplified - Avg per 10 Min","value":453},{"key":"biotic_grenade_kills_avg_per_10_min","label":"Biotic Grenade Kills - Avg per 10 Min","value":6.31},{"key":"enemies_slept_avg_per_10_min","label":"Enemies Slept - Avg per 10 Min","value":2.8},{"key":"unscoped_accuracy","label":"Unscoped Accuracy","value":52},{"key":"scoped_accuracy","label":"Scoped Accuracy","value":44},{"key":"self_healing_avg_per_10_min","label":"Self Healing - Avg per 10 Min","value":404},{"key":"damage_amplified_avg_per_10_min","label":"Damage Amplified - Avg per 10 Min","value":604}]},{"category":"best","label":"Best","stats":[{"key":"eliminations_most_in_life","label":"Eliminations - Most in Life","value":4},{"key":"all_damage_done_most_in_life","label":"All Damage Done - Most in Life","value":1349},{"key":"weapon_accuracy_best_in_game","label":"Weapon Accuracy - Best in Game","value":19},{"key":"kill_streak_best","label":"Kill Streak - Best","value":4},{"key":"all_damage_done_most_in_game","label":"All Damage Done - Most in Game","value":2978},{"key":"eliminations_most_in_game","label":"Eliminations - Most in Game","value":7},{"key":"final_blows_most_in_game","label":"Final Blows - Most in Game","value":3},{"key":"objective_kills_most_in_game","label":"Objective Kills - Most in Game","value":4},{"key":"objective_time_most_in_game","label":"Objective Time - Most in Game","value":51},{"key":"hero_damage_done_most_in_game","label":"Hero Damage Done - Most in Game","value":2291},{"key":"hero_damage_done_most_in_life","label":"Hero Damage Done - Most in Life","value":1194},{"key":"assists_most_in_game","label":"Assists - Most in Game","value":16},{"key":"obj_contest_time_most_in_game","label":"Obj Contest Time - Most in Game","value":46}]},{"category":"average","label":"Average","stats":[{"key":"healing_done_avg_per_10_min","label":"Healing Done - Avg per 10 Min","value":8560},{"key":"deaths_avg_per_10_min","label":"Deaths - Avg per 10 Min","value":5.61},{"key":"eliminations_avg_per_10_min","label":"Eliminations - Avg per 10 Min","value":9.11},{"key":"hero_damage_done_avg_per_10_min","label":"Hero Damage Done - Avg per 10 Min","value":2645},{"key":"assists_avg_per_10_min","label":"Assists - Avg per 10 min","value":22.42},{"key":"objective_time_avg_per_10_min","label":"Objective Time - Avg per 10 Min","value":64},{"key":"all_damage_done_avg_per_10_min","label":"All Damage Done - Avg per 10 Min","value":3235},{"key":"eliminations_per_life","label":"Eliminations per Life","value":1.63},{"key":"objective_kills_avg_per_10_min","label":"Objective Kills - Avg per 10 Min","value":4.91},{"key":"obj_contest_time_avg_per_10_min","label":"Obj Contest Time - Avg per 10 Min","value":36},{"key":"final_blows_avg_per_10_min","label":"Final Blows - Avg per 10 Min","value":2.1}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":856},{"key":"games_played","label":"Games Played","value":2},{"key":"games_won","label":"Game Won","value":1},{"key":"games_won","label":"Game Won","value":1},{"key":"games_won","label":"Game Won","value":1},{"key":"hero_wins","label":"Hero Win","value":1},{"key":"win_percentage","label":"Win Percentage","value":50},{"key":"games_lost","label":"Game Lost","value":1}]},{"category":"combat","label":"Combat","stats":[{"key":"eliminations","label":"Eliminations","value":13},{"key":"deaths","label":"Deaths","value":8},{"key":"final_blows","label":"Final Blows","value":3},{"key":"all_damage_done","label":"All Damage Done","value":4616},{"key":"objective_kills","label":"Objective Kills","value":7},{"key":"objective_time","label":"Objective Time","value":91},{"key":"hero_damage_done","label":"Hero Damage Done","value":3774},{"key":"obj_contest_time","label":"Obj Contest Time","value":51},{"key":"weapon_accuracy","label":"Weapon Accuracy","value":18}]},{"category":"assists","label":"Assists","stats":[{"key":"offensive_assists","label":"Offensive Assists","value":18},{"key":"offensive_assists_most_in_game","label":"Offensive Assists - Most in Game","value":11},{"key":"defensive_assists","label":"Defensive Assists","value":29},{"key":"defensive_assists_most_in_game","label":"Defensive Assists - Most in Game","value":15},{"key":"healing_done","label":"Healing Done","value":12216},{"key":"healing_done_most_in_game","label":"Healing Done - Most in Game","value":8196},{"key":"assists","label":"Assists","value":32},{"key":"defensive_assists_avg_per_10_min","label":"Defensive Assists - Avg per 10 Min","value":20.32},{"key":"offensive_assists_avg_per_10_min","label":"Offensive Assists - Avg per 10 Min","value":12.61}]}],"cassidy":[{"category":"hero_specific","label":"Hero Specific","stats":[{"key":"deadeye_kills","label":"Deadeye Kill","value":1},{"key":"deadeye_kills_most_in_game","label":"Deadeye Kill - Most in Game","value":1},{"key":"fan_the_hammer_kills","label":"Fan the Hammer Kill","value":1},{"key":"fan_the_hammer_kills_most_in_game","label":"Fan the Hammer Kill - Most in Game","value":1},{"key":"magnetic_grenade_kills","label":"Magnetic Grenade Kills","value":4},{"key":"magnetic_grenade_kills_most_in_game","label":"Magnetic Grenade Kills - Most in Game","value":3},{"key":"long_range_final_blows","label":"Long Range Final Blows","value":2},{"key":"magnetic_grenade_kills_avg_per_10_min","label":"Magnetic Grenade Kills - Avg per 10 Min","value":3.02},{"key":"deadeye_kills_avg_per_10_min","label":"Deadeye Kills - Avg per 10 Min","value":0.75},{"key":"magnetic_grenade_attach_rate","label":"Magnetic Grenade Attach Rate","value":27},{"key":"fan_the_hammer_kills_avg_per_10_min","label":"Fan the Hammer Kills - Avg per 10 Min","value":0.75},{"key":"long_range_final_blows_avg_per_10_min","label":"Long Range Final Blows - Avg per 10 Min","value":1.51}]},{"category":"best","label":"Best","stats":[{"key":"eliminations_most_in_life","label":"Eliminations - Most in Life","value":5},{"key":"all_damage_done_most_in_life","label":"All Damage Done - Most in Life","value":3275},{"key":"weapon_accuracy_best_in_game","label":"Weapon Accuracy - Best in Game","value":53},{"key":"kill_streak_best","label":"Kill Streak - Best","value":5},{"key":"all_damage_done_most_in_game","label":"All Damage Done - Most in Game","value":10195},{"key":"eliminations_most_in_game","label":"Eliminations - Most in Game","value":13},{"key":"final_blows_most_in_game","label":"Final Blows - Most in Game","value":8},{"key":"objective_kills_most_in_game","label":"Objective Kills - Most in Game","value":3},{"key":"objective_time_most_in_game","label":"Objective Time - Most in Game","value":15},{"key":"critical_hits_most_in_game","label":"Critical Hits - Most in Game","value":10},{"key":"critical_hits_most_in_life","label":"Critical Hits - Most in Life","value":5},{"key":"hero_damage_done_most_in_game","label":"Hero Damage Done - Most in Game","value":6319},{"key":"hero_damage_done_most_in_life","label":"Hero Damage Done - Most in Life","value":1930},{"key":"critical_hit_kills_most_in_game","label":"Critical Hit Kill - Most in Game","value":1},{"key":"obj_contest_time_most_in_game","label":"Obj Contest Time - Most in Game","value":15}]},{"category":"average","label":"Average","stats":[{"key":"deaths_avg_per_10_min","label":"Deaths - Avg per 10 Min","value":8.3},{"key":"eliminations_avg_per_10_min","label":"Eliminations - Avg per 10 Min","value":12.07},{"key":"hero_damage_done_avg_per_10_min","label":"Hero Damage Done - Avg per 10 Min","value":6937},{"key":"critical_hit_kills_avg_per_10_min","label":"Critical Hit Kills - Avg per 10 Min","value":0.75},{"key":"objective_time_avg_per_10_min","label":"Objective Time - Avg per 10 Min","value":18},{"key":"all_damage_done_avg_per_10_min","label":"All Damage Done - Avg per 10 Min","value":11813},{"key":"critical_hits_avg_per_10_min","label":"Critical Hits - Avg per 10 Min","value":10.56},{"key":"eliminations_per_life","label":"Eliminations per Life","value":1.45},{"key":"objective_kills_avg_per_10_min","label":"Objective Kills - Avg per 10 Min","value":3.77},{"key":"obj_contest_time_avg_per_10_min","label":"Obj Contest Time - Avg per 10 Min","value":18},{"key":"final_blows_avg_per_10_min","label":"Final Blows - Avg per 10 Min","value":6.79}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":795},{"key":"games_played","label":"Games Played","value":2},{"key":"games_lost","label":"Games Lost","value":2}]},{"category":"combat","label":"Combat","stats":[{"key":"eliminations","label":"Eliminations","value":16},{"key":"deaths","label":"Deaths","value":11},{"key":"final_blows","label":"Final Blows","value":9},{"key":"all_damage_done","label":"All Damage Done","value":15654},{"key":"objective_kills","label":"Objective Kills","value":5},{"key":"objective_time","label":"Objective Time","value":24},{"key":"critical_hits","label":"Critical Hits","value":14},{"key":"hero_damage_done","label":"Hero Damage Done","value":9193},{"key":"critical_hit_kills","label":"Critical Hit Kill","value":1},{"key":"obj_contest_time","label":"Obj Contest Time","value":24},{"key":"critical_hit_accuracy","label":"Critical Hit Accuracy","value":10},{"key":"weapon_accuracy","label":"Weapon Accuracy","value":38}]}],"orisa":[{"category":"hero_specific","label":"Hero Specific","stats":[{"key":"terra_surge_kills","label":"Terra Surge Kill","value":1},{"key":"terra_surge_kills_most_in_game","label":"Terra Surge Kill - Most in Game","value":1},{"key":"energy_javelin_kills","label":"Energy Javelin Kills","value":2},{"key":"javelin_spin_kills","label":"Javelin Spin Kills","value":2},{"key":"energy_javelin_kills_nyi","label":"Energy Javelin Kills NYI","value":2},{"key":"javelin_spin_kills_nyi","label":"Javelin Spin Kills NYI","value":2},{"key":"terra_surge_kills_avg_per_10_min","label":"Terra Surge Kills - Avg per 10 Min","value":1.35},{"key":"javelin_spin_kills_avg_per_10_min","label":"Javelin Spin Kills - Avg per 10 Min","value":0},{"key":"energy_javelin_kills_avg_per_10_min","label":"Energy Javelin Kills - Avg per 10 Min","value":2.69}]},{"category":"best","label":"Best","stats":[{"key":"eliminations_most_in_life","label":"Eliminations - Most in Life","value":4},{"key":"all_damage_done_most_in_life","label":"All Damage Done - Most in Life","value":5409},{"key":"weapon_accuracy_best_in_game","label":"Weapon Accuracy - Best in Game","value":40},{"key":"kill_streak_best","label":"Kill Streak - Best","value":4},{"key":"all_damage_done_most_in_game","label":"All Damage Done - Most in Game","value":14969},{"key":"eliminations_most_in_game","label":"Eliminations - Most in Game","value":5},{"key":"final_blows_most_in_game","label":"Final Blow - Most in Game","value":1},{"key":"objective_kills_most_in_game","label":"Objective Kills - Most in Game","value":4},{"key":"objective_time_most_in_game","label":"Objective Time - Most in Game","value":114},{"key":"hero_damage_done_most_in_game","label":"Hero Damage Done - Most in Game","value":9078},{"key":"hero_damage_done_most_in_life","label":"Hero Damage Done - Most in Life","value":3181},{"key":"assists_most_in_game","label":"Assists - Most in Game","value":2},{"key":"obj_contest_time_most_in_game","label":"Obj Contest Time - Most in Game","value":114}]},{"category":"average","label":"Average","stats":[{"key":"deaths_avg_per_10_min","label":"Deaths - Avg per 10 Min","value":5.39},{"key":"eliminations_avg_per_10_min","label":"Eliminations - Avg per 10 Min","value":6.73},{"key":"hero_damage_done_avg_per_10_min","label":"Hero Damage Done - Avg per 10 Min","value":12226},{"key":"assists_avg_per_10_min","label":"Assists - Avg per 10 min","value":2.69},{"key":"objective_time_avg_per_10_min","label":"Objective Time - Avg per 10 Min","value":154},{"key":"all_damage_done_avg_per_10_min","label":"All Damage Done - Avg per 10 Min","value":20159},{"key":"eliminations_per_life","label":"Eliminations per Life","value":1.25},{"key":"objective_kills_avg_per_10_min","label":"Objective Kills - Avg per 10 Min","value":5.39},{"key":"obj_contest_time_avg_per_10_min","label":"Obj Contest Time - Avg per 10 Min","value":154},{"key":"final_blows_avg_per_10_min","label":"Final Blows - Avg per 10 Min","value":1.35}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":446},{"key":"games_played","label":"Games Played","value":1},{"key":"games_lost","label":"Games Lost","value":1}]},{"category":"combat","label":"Combat","stats":[{"key":"eliminations","label":"Eliminations","value":5},{"key":"deaths","label":"Deaths","value":4},{"key":"final_blows","label":"Final Blow","value":1},{"key":"all_damage_done","label":"All Damage Done","value":14969},{"key":"objective_kills","label":"Objective Kills","value":4},{"key":"objective_time","label":"Objective Time","value":114},{"key":"hero_damage_done","label":"Hero Damage Done","value":9078},{"key":"obj_contest_time","label":"Obj Contest Time","value":114},{"key":"weapon_accuracy","label":"Weapon Accuracy","value":40}]},{"category":"assists","label":"Assists","stats":[{"key":"offensive_assists","label":"Offensive Assists","value":2},{"key":"offensive_assists_most_in_game","label":"Offensive Assists - Most in Game","value":2},{"key":"assists","label":"Assists","value":2},{"key":"offensive_assists_avg_per_10_min","label":"Offensive Assists - Avg per 10 Min","value":2.69}]}],"reaper":[{"category":"hero_specific","label":"Hero Specific","stats":[{"key":"self_healing","label":"Self Healing","value":487},{"key":"self_healing_most_in_game","label":"Self Healing - Most in Game","value":487},{"key":"self_healing_avg_per_10_min","label":"Self Healing - Avg per 10 Min","value":954}]},{"category":"best","label":"Best","stats":[{"key":"eliminations_most_in_life","label":"Eliminations - Most in Life","value":7},{"key":"all_damage_done_most_in_life","label":"All Damage Done - Most in Life","value":3235},{"key":"weapon_accuracy_best_in_game","label":"Weapon Accuracy - Best in Game","value":26},{"key":"kill_streak_best","label":"Kill Streak - Best","value":7},{"key":"all_damage_done_most_in_game","label":"All Damage Done - Most in Game","value":4978},{"key":"eliminations_most_in_game","label":"Eliminations - Most in Game","value":9},{"key":"final_blows_most_in_game","label":"Final Blows - Most in Game","value":2},{"key":"objective_kills_most_in_game","label":"Objective Kills - Most in Game","value":3},{"key":"objective_time_most_in_game","label":"Objective Time - Most in Game","value":22},{"key":"multikill_best","label":"Multikill - Best","value":3},{"key":"critical_hits_most_in_game","label":"Critical Hits - Most in Game","value":45},{"key":"critical_hits_most_in_life","label":"Critical Hits - Most in Life","value":28},{"key":"hero_damage_done_most_in_game","label":"Hero Damage Done - Most in Game","value":3397},{"key":"hero_damage_done_most_in_life","label":"Hero Damage Done - Most in Life","value":2277},{"key":"obj_contest_time_most_in_game","label":"Obj Contest Time - Most in Game","value":3}]},{"category":"average","label":"Average","stats":[{"key":"healing_done_avg_per_10_min","label":"Healing Done - Avg per 10 Min","value":954},{"key":"deaths_avg_per_10_min","label":"Deaths - Avg per 10 Min","value":7.84},{"key":"eliminations_avg_per_10_min","label":"Eliminations - Avg per 10 Min","value":17.63},{"key":"hero_damage_done_avg_per_10_min","label":"Hero Damage Done - Avg per 10 Min","value":6655},{"key":"objective_time_avg_per_10_min","label":"Objective Time - Avg per 10 Min","value":43},{"key":"all_damage_done_avg_per_10_min","label":"All Damage Done - Avg per 10 Min","value":9753},{"key":"critical_hits_avg_per_10_min","label":"Critical Hits - Avg per 10 Min","value":88.16},{"key":"eliminations_per_life","label":"Eliminations per Life","value":2.25},{"key":"objective_kills_avg_per_10_min","label":"Objective Kills - Avg per 10 Min","value":5.88},{"key":"obj_contest_time_avg_per_10_min","label":"Obj Contest Time - Avg per 10 Min","value":6},{"key":"final_blows_avg_per_10_min","label":"Final Blows - Avg per 10 Min","value":3.92}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":306},{"key":"games_played","label":"Games Played","value":0},{"key":"games_lost","label":"Games Lost","value":0}]},{"category":"combat","label":"Combat","stats":[{"key":"eliminations","label":"Eliminations","value":9},{"key":"deaths","label":"Deaths","value":4},{"key":"final_blows","label":"Final Blows","value":2},{"key":"all_damage_done","label":"All Damage Done","value":4978},{"key":"objective_kills","label":"Objective Kills","value":3},{"key":"objective_time","label":"Objective Time","value":22},{"key":"multikills","label":"Multikill","value":1},{"key":"critical_hits","label":"Critical Hits","value":45},{"key":"hero_damage_done","label":"Hero Damage Done","value":3397},{"key":"obj_contest_time","label":"Obj Contest Time","value":3},{"key":"critical_hit_accuracy","label":"Critical Hit Accuracy","value":7},{"key":"weapon_accuracy","label":"Weapon Accuracy","value":26}]}],"reinhardt":[{"category":"hero_specific","label":"Hero Specific","stats":[{"key":"charge_kills","label":"Charge Kills","value":2},{"key":"charge_kills_most_in_game","label":"Charge Kills - Most in Game","value":2},{"key":"fire_strike_kills","label":"Fire Strike Kills","value":4},{"key":"fire_strike_kills_most_in_game","label":"Fire Strike Kills - Most in Game","value":4},{"key":"earthshatter_kills","label":"Earthshatter Kills","value":2},{"key":"earthshatter_kills_most_in_game","label":"Earthshatter Kills - Most in Game","value":2},{"key":"fire_strike_kills_avg_per_10_min","label":"Fire Strike Kills - Avg per 10 Min","value":6.13},{"key":"charge_kills_avg_per_10_min","label":"Charge Kills - Avg per 10 Min","value":3.06},{"key":"earthshatter_kills_avg_per_10_min","label":"Earthshatter Kills - Avg per 10 Min","value":3.06}]},{"category":"best","label":"Best","stats":[{"key":"eliminations_most_in_life","label":"Eliminations - Most in Life","value":6},{"key":"all_damage_done_most_in_life","label":"All Damage Done - Most in Life","value":4727},{"key":"kill_streak_best","label":"Kill Streak - Best","value":6},{"key":"all_damage_done_most_in_game","label":"All Damage Done - Most in Game","value":10357},{"key":"eliminations_most_in_game","label":"Eliminations - Most in Game","value":8},{"key":"final_blows_most_in_game","label":"Final Blows - Most in Game","value":3},{"key":"objective_kills_most_in_game","label":"Objective Kills - Most in Game","value":3},{"key":"objective_time_most_in_game","label":"Objective Time - Most in Game","value":167},{"key":"hero_damage_done_most_in_game","label":"Hero Damage Done - Most in Game","value":8657},{"key":"hero_damage_done_most_in_life","label":"Hero Damage Done - Most in Life","value":3462},{"key":"assists_most_in_game","label":"Assist - Most in Game","value":1},{"key":"environmental_kills_most_in_game","label":"Environmental Kill - Most in Game","value":1},{"key":"obj_contest_time_most_in_game","label":"Obj Contest Time - Most in Game","value":41}]},{"category":"average","label":"Average","stats":[{"key":"deaths_avg_per_10_min","label":"Deaths - Avg per 10 Min","value":4.6},{"key":"eliminations_avg_per_10_min","label":"Eliminations - Avg per 10 Min","value":12.26},{"key":"hero_damage_done_avg_per_10_min","label":"Hero Damage Done - Avg per 10 Min","value":13263},{"key":"assists_avg_per_10_min","label":"Assists - Avg per 10 min","value":1.53},{"key":"objective_time_avg_per_10_min","label":"Objective Time - Avg per 10 Min","value":256},{"key":"all_damage_done_avg_per_10_min","label":"All Damage Done - Avg per 10 Min","value":15868},{"key":"eliminations_per_life","label":"Eliminations per Life","value":2.67},{"key":"objective_kills_avg_per_10_min","label":"Objective Kills - Avg per 10 Min","value":4.6},{"key":"obj_contest_time_avg_per_10_min","label":"Obj Contest Time - Avg per 10 Min","value":63},{"key":"final_blows_avg_per_10_min","label":"Final Blows - Avg per 10 Min","value":4.6}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":392},{"key":"games_played","label":"Games Played","value":0},{"key":"games_lost","label":"Games Lost","value":0}]},{"category":"combat","label":"Combat","stats":[{"key":"eliminations","label":"Eliminations","value":8},{"key":"deaths","label":"Deaths","value":3},{"key":"final_blows","label":"Final Blows","value":3},{"key":"all_damage_done","label":"All Damage Done","value":10357},{"key":"objective_kills","label":"Objective Kills","value":3},{"key":"objective_time","label":"Objective Time","value":167},{"key":"environmental_kills","label":"Environmental Kill","value":1},{"key":"hero_damage_done","label":"Hero Damage Done","value":8657},{"key":"obj_contest_time","label":"Obj Contest Time","value":41},{"key":"environmental_kills_avg_per_10_min","label":"Environmental Kills - Avg per 10 Min","value":1.53}]},{"category":"assists","label":"Assists","stats":[{"key":"offensive_assists","label":"Offensive Assist","value":1},{"key":"offensive_assists_most_in_game","label":"Offensive Assist - Most in Game","value":1},{"key":"assists","label":"Assist","value":1},{"key":"offensive_assists_avg_per_10_min","label":"Offensive Assists - Avg per 10 Min","value":1.53}]}],"tracer":[{"category":"hero_specific","label":"Hero Specific","stats":[{"key":"self_healing","label":"Self Healing","value":130},{"key":"self_healing_most_in_game","label":"Self Healing - Most in Game","value":130},{"key":"low_health_recalls","label":"Low Health Recall","value":1},{"key":"low_health_recalls_most_in_game","label":"Low Health Recall - Most in Game","value":1},{"key":"low_health_recalls_avg_per_10_min","label":"Low Health Recalls - Avg per 10 Min","value":48.98},{"key":"self_healing_avg_per_10_min","label":"Self Healing - Avg per 10 Min","value":6367}]},{"category":"game","label":"Game","stats":[{"key":"time_played","label":"Time Played","value":12},{"key":"games_played","label":"Games Played","value":0},{"key":"games_lost","label":"Games Lost","value":0}]}]}},"CompetitiveDivision":{"type":"string","enum":["bronze","silver","gold","platinum","diamond","master","grandmaster","ultimate"],"title":"CompetitiveDivision","description":"Competitive division of a rank"},"CompetitiveDivisionFilter":{"type":"string","enum":["bronze","silver","gold","platinum","diamond","master","grandmaster"],"title":"CompetitiveDivisionFilter","description":"Competitive divisions ('grandmaster' includes 'champion')"},"GamemodeDetails":{"properties":{"key":{"$ref":"#/components/schemas/MapGamemode","description":"Key corresponding to the gamemode. Can be used as filter on the maps endpoint.","examples":["push"]},"name":{"type":"string","title":"Name","description":"Name of the gamemode","examples":["Push"]},"icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Icon","description":"Icon URL of the gamemode","examples":["https://overfast-api.tekrop.fr/static/gamemodes/push-icon.svg"]},"description":{"type":"string","title":"Description","description":"Description of the gamemode","examples":["Teams battle to take control of a robot and push it toward the enemy base."]},"screenshot":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Screenshot","description":"URL of an example screenshot of a map for the gamemode","examples":["https://overfast-api.tekrop.fr/static/gamemodes/push.avif"]}},"type":"object","required":["key","name","icon","description","screenshot"],"title":"GamemodeDetails"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Hero":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the hero","examples":["Cassidy"]},"description":{"type":"string","title":"Description","description":"Short description of the hero","examples":["Armed with his Peacekeeper revolver, Cassidy takes out targets with deadeye precision and dives out of danger with eagle-like speed."]},"portrait":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Portrait","description":"Portrait picture URL of the hero. On a hero release, can be null for a few days.","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/6cfb48b5597b657c2eafb1277dc5eef4a07eae90c265fcd37ed798189619f0a5.png"]},"backgrounds":{"items":{"$ref":"#/components/schemas/HeroBackground"},"type":"array","title":"Backgrounds","description":"List of background images for the hero, one per responsive breakpoint group.","examples":[[{"sizes":["min","xs","sm"],"url":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/bltadb0bb2e726bee08/631a8b79be2fcf0db5eea4c8/960_Cassidy.jpg"},{"sizes":["md","lg"],"url":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/blt242e79efb1e27251/631a8b791566e20e82f30288/1600_Cassidy.jpg"},{"sizes":["xl+"],"url":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/blt4bb4c31f6849c25b/631a8b781613910e6926bfd4/2600_Cassidy.jpg"}]]},"role":{"$ref":"#/components/schemas/Role","description":"Role of the hero","examples":["damage"]},"subrole":{"$ref":"#/components/schemas/SubRole","description":"Sub-Role of the hero","examples":["sharpshooter"]},"location":{"type":"string","title":"Location","description":"Location of the hero","examples":["Santa Fe, New Mexico, USA"]},"age":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Age","description":"Age of the hero. Can be null if unknown.","examples":[39]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birthday","description":"Birthday of the hero. Can be null if unknown.","examples":["31 Jul"]},"hitpoints":{"anyOf":[{"$ref":"#/components/schemas/HitPoints"},{"type":"null"}],"description":"Hitpoints of the hero. Can be null if hero data isn't in the CSV."},"abilities":{"items":{"$ref":"#/components/schemas/Ability"},"type":"array","minItems":1,"title":"Abilities","description":"List of hero abilities"},"perks":{"$ref":"#/components/schemas/PerksContainer","description":"Hero perks (minor and major)"},"stadium_powers":{"anyOf":[{"items":{"$ref":"#/components/schemas/StadiumPower"},"type":"array","maxItems":12,"minItems":12},{"type":"null"}],"title":"Stadium Powers","description":"List of Stadium powers. Can be null if hero isn't available on Stadium gamemode."},"story":{"$ref":"#/components/schemas/Story","description":"Story of the hero"}},"type":"object","required":["name","description","backgrounds","role","subrole","location","age","birthday","abilities","perks","story"],"title":"Hero"},"HeroBackground":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url","description":"URL of the background image","examples":["https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/blt242e79efb1e27251/631a8b791566e20e82f30288/1600_Cassidy.jpg"]},"sizes":{"items":{"$ref":"#/components/schemas/BackgroundImageSize"},"type":"array","title":"Sizes","description":"Responsive breakpoint sizes for which this image is used","examples":[["md","lg"]]}},"type":"object","required":["url","sizes"],"title":"HeroBackground"},"HeroCareerStats":{"properties":{"category":{"$ref":"#/components/schemas/CareerStatCategory","description":"Stat category key"},"label":{"type":"string","title":"Label","description":"Label of the stat category"},"stats":{"items":{"$ref":"#/components/schemas/SingleCareerStat"},"type":"array","minItems":1,"title":"Stats","description":"List of statistics associated with the category"}},"type":"object","required":["category","label","stats"],"title":"HeroCareerStats"},"HeroGamemode":{"type":"string","enum":["quickplay","stadium"],"title":"HeroGamemode","description":"Available gamemodes for heroes"},"HeroKey":{"type":"string","enum":["ana","anran","ashe","baptiste","bastion","brigitte","cassidy","dva","domina","doomfist","echo","emre","freja","genji","hazard","hanzo","illari","jetpack-cat","junker-queen","junkrat","juno","kiriko","lifeweaver","lucio","mauga","mei","mercy","mizuki","moira","orisa","pharah","ramattra","reaper","reinhardt","roadhog","shion","sigma","sierra","sojourn","soldier-76","sombra","symmetra","torbjorn","tracer","vendetta","venture","widowmaker","winston","wrecking-ball","wuyang","zarya","zenyatta"],"title":"HeroKey","description":"Hero keys used to identify Overwatch heroes in general"},"HeroKeyCareerFilter":{"type":"string","enum":["all-heroes","ana","anran","ashe","baptiste","bastion","brigitte","cassidy","dva","domina","doomfist","echo","emre","freja","genji","hazard","hanzo","illari","jetpack-cat","junker-queen","junkrat","juno","kiriko","lifeweaver","lucio","mauga","mei","mercy","mizuki","moira","orisa","pharah","ramattra","reaper","reinhardt","roadhog","shion","sigma","sierra","sojourn","soldier-76","sombra","symmetra","torbjorn","tracer","vendetta","venture","widowmaker","winston","wrecking-ball","wuyang","zarya","zenyatta"],"title":"HeroKeyCareerFilter","description":"Hero keys filter for career statistics endpoint"},"HeroParserErrorMessage":{"properties":{"error":{"type":"string","title":"Error","description":"Message describing the hero parser error","examples":["Hero not found or not released yet"]}},"type":"object","required":["error"],"title":"HeroParserErrorMessage"},"HeroPlayerCareerStats":{"properties":{"assists":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Assists","description":"Statistics for \"Assists\" category"},"average":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Average","description":"Statistics for \"Average\" category"},"best":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Best","description":"Statistics for \"Best\" category"},"combat":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Combat","description":"Statistics for \"Combat\" category"},"game":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Game","description":"Statistics for \"Game\" category"},"hero_specific":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Hero Specific","description":"Statistics for \"Hero Specific\" category"},"match_awards":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Match Awards","description":"Statistics for \"Match Awards\" category"},"miscellaneous":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"}]},"type":"object"},{"type":"null"}],"title":"Miscellaneous","description":"Statistics for \"Miscellaneous\" category"}},"type":"object","title":"HeroPlayerCareerStats"},"HeroShort":{"properties":{"key":{"$ref":"#/components/schemas/HeroKey","description":"Key name of the hero","examples":["ana"]},"name":{"type":"string","title":"Name","description":"Name of the hero","examples":["Ana"]},"portrait":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Portrait","description":"Portrait picture URL of the hero","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/3429c394716364bbef802180e9763d04812757c205e1b4568bc321772096ed86.png"]},"role":{"$ref":"#/components/schemas/Role","description":"Role of the hero","examples":["support"]},"subrole":{"$ref":"#/components/schemas/SubRole","description":"Sub-Role of the hero","examples":["tactician"]},"gamemodes":{"items":{"$ref":"#/components/schemas/HeroGamemode"},"type":"array","minItems":1,"title":"Gamemodes","description":"List of gamemodes in which the hero is available","examples":[["stadium"]]}},"type":"object","required":["key","name","portrait","role","subrole","gamemodes"],"title":"HeroShort"},"HeroStat":{"properties":{"hero":{"$ref":"#/components/schemas/HeroKey"},"value":{"anyOf":[{"type":"integer"},{"type":"number"}],"title":"Value","description":"Value of the statistic for the given hero. Duration values are in seconds."}},"type":"object","required":["hero","value"],"title":"HeroStat"},"HeroStatsSummary":{"properties":{"hero":{"$ref":"#/components/schemas/HeroKey","description":"Hero key used to identify Overwatch heroes in general"},"pickrate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Pickrate","description":"Pickrate (in percent)"},"winrate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Winrate","description":"Winrate (in percent)"}},"type":"object","required":["hero","pickrate","winrate"],"title":"HeroStatsSummary"},"HeroesComparisons":{"properties":{"time_played":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Total time played for each hero (integer in seconds)"},"games_won":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Number of games won for each hero (integer)"},"win_percentage":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Winrate percentage for each hero (integer between 0 and 100)"},"weapon_accuracy_best_in_game":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Best weapon accuracy in game for each hero (integer percent between 0 and 100)"},"eliminations_per_life":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Eliminations per life for each hero (float)"},"kill_streak_best":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Best kill streak in game for each hero (integer)"},"multikill_best":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Best multikills statistic for each hero (integer)"},"eliminations_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average eliminations per 10 minutes for each hero (float)"},"deaths_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average deaths per 10 minutes for each hero (float)"},"final_blows_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average final blows per 10 minutes for each hero (float)"},"solo_kills_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average solo kills per 10 minutes for each hero (float)"},"objective_kills_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average objective kills per 10 minutes for each hero (float)"},"objective_time_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average objective time per 10 minutes for each hero in seconds (integer)"},"hero_damage_done_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average damage done per 10 minutes for each hero (integer)"},"healing_done_avg_per_10_min":{"anyOf":[{"$ref":"#/components/schemas/HeroesStats"},{"type":"null"}],"description":"Average healing done per 10 minutes for each hero (integer)"}},"type":"object","required":["time_played","games_won","win_percentage","weapon_accuracy_best_in_game","eliminations_per_life","kill_streak_best","multikill_best","eliminations_avg_per_10_min","deaths_avg_per_10_min","final_blows_avg_per_10_min","solo_kills_avg_per_10_min","objective_kills_avg_per_10_min","objective_time_avg_per_10_min","hero_damage_done_avg_per_10_min","healing_done_avg_per_10_min"],"title":"HeroesComparisons","example":{"deaths_avg_per_10_min":{"label":"Deaths - Avg per 10 Min","values":[{"hero":"doomfist","value":10.13},{"hero":"winston","value":10.02},{"hero":"sojourn","value":9.26},{"hero":"wrecking-ball","value":9.14},{"hero":"genji","value":9.06},{"hero":"tracer","value":9.01},{"hero":"echo","value":8.9},{"hero":"cassidy","value":8.81},{"hero":"pharah","value":8.78},{"hero":"reaper","value":8.64},{"hero":"lucio","value":8.57},{"hero":"soldier-76","value":8.42},{"hero":"bastion","value":8.36},{"hero":"mei","value":8.05},{"hero":"brigitte","value":7.95},{"hero":"reinhardt","value":7.9},{"hero":"mercy","value":7.84},{"hero":"kiriko","value":7.77},{"hero":"zarya","value":7.74},{"hero":"junkrat","value":7.57},{"hero":"ramattra","value":7.46},{"hero":"ana","value":7.33},{"hero":"dva","value":7.24},{"hero":"symmetra","value":7.22},{"hero":"torbjorn","value":7.18},{"hero":"junker-queen","value":7.12},{"hero":"hanzo","value":7.02},{"hero":"zenyatta","value":6.97},{"hero":"ashe","value":6.63},{"hero":"roadhog","value":6.63},{"hero":"baptiste","value":6.53},{"hero":"orisa","value":6.52},{"hero":"moira","value":6.1},{"hero":"widowmaker","value":6.03},{"hero":"sombra","value":6.0},{"hero":"sigma","value":5.82},{"hero":"lifeweaver","value":4.77}]},"eliminations_avg_per_10_min":{"label":"Eliminations - Avg per 10 Min","values":[{"hero":"reaper","value":23.54},{"hero":"moira","value":23.06},{"hero":"roadhog","value":23.04},{"hero":"sigma","value":22.44},{"hero":"dva","value":22.4},{"hero":"junker-queen","value":22.12},{"hero":"torbjorn","value":21.71},{"hero":"soldier-76","value":21.68},{"hero":"tracer","value":21.14},{"hero":"winston","value":20.57},{"hero":"junkrat","value":20.27},{"hero":"symmetra","value":20.11},{"hero":"hanzo","value":19.9},{"hero":"mei","value":19.79},{"hero":"genji","value":19.39},{"hero":"wrecking-ball","value":19.3},{"hero":"widowmaker","value":19.14},{"hero":"bastion","value":19.08},{"hero":"orisa","value":18.69},{"hero":"zarya","value":18.22},{"hero":"pharah","value":18.08},{"hero":"zenyatta","value":17.7},{"hero":"cassidy","value":17.36},{"hero":"doomfist","value":17.35},{"hero":"echo","value":16.77},{"hero":"ashe","value":15.94},{"hero":"brigitte","value":15.77},{"hero":"sombra","value":15.64},{"hero":"lifeweaver","value":15.49},{"hero":"sojourn","value":15.28},{"hero":"reinhardt","value":14.59},{"hero":"lucio","value":12.87},{"hero":"ramattra","value":12.43},{"hero":"baptiste","value":11.48},{"hero":"ana","value":9.92},{"hero":"kiriko","value":6.06},{"hero":"mercy","value":1.89}]},"eliminations_per_life":{"label":"Eliminations per Life","values":[{"hero":"sigma","value":3.86},{"hero":"moira","value":3.78},{"hero":"roadhog","value":3.48},{"hero":"lifeweaver","value":3.25},{"hero":"widowmaker","value":3.17},{"hero":"junker-queen","value":3.11},{"hero":"dva","value":3.09},{"hero":"torbjorn","value":3.02},{"hero":"orisa","value":2.87},{"hero":"hanzo","value":2.83},{"hero":"symmetra","value":2.79},{"hero":"reaper","value":2.73},{"hero":"junkrat","value":2.68},{"hero":"sombra","value":2.61},{"hero":"soldier-76","value":2.57},{"hero":"zenyatta","value":2.54},{"hero":"mei","value":2.46},{"hero":"ashe","value":2.4},{"hero":"zarya","value":2.35},{"hero":"tracer","value":2.35},{"hero":"bastion","value":2.28},{"hero":"genji","value":2.14},{"hero":"wrecking-ball","value":2.11},{"hero":"pharah","value":2.06},{"hero":"winston","value":2.05},{"hero":"brigitte","value":1.98},{"hero":"cassidy","value":1.97},{"hero":"echo","value":1.88},{"hero":"reinhardt","value":1.85},{"hero":"baptiste","value":1.76},{"hero":"doomfist","value":1.71},{"hero":"ramattra","value":1.67},{"hero":"sojourn","value":1.65},{"hero":"lucio","value":1.5},{"hero":"ana","value":1.35},{"hero":"kiriko","value":0.78},{"hero":"mercy","value":0.24}]},"final_blows_avg_per_10_min":{"label":"Final Blows - Avg per 10 Min","values":[{"hero":"reaper","value":14.31},{"hero":"roadhog","value":14.2},{"hero":"widowmaker","value":13.52},{"hero":"junkrat","value":13.06},{"hero":"hanzo","value":12.84},{"hero":"junker-queen","value":11.88},{"hero":"genji","value":11.75},{"hero":"torbjorn","value":11.42},{"hero":"soldier-76","value":11.42},{"hero":"tracer","value":11.26},{"hero":"dva","value":11.16},{"hero":"pharah","value":10.86},{"hero":"winston","value":10.77},{"hero":"sigma","value":10.65},{"hero":"bastion","value":10.48},{"hero":"symmetra","value":9.97},{"hero":"cassidy","value":9.79},{"hero":"doomfist","value":9.79},{"hero":"echo","value":9.52},{"hero":"ramattra","value":9.12},{"hero":"mei","value":8.59},{"hero":"wrecking-ball","value":8.56},{"hero":"ashe","value":8.35},{"hero":"reinhardt","value":7.96},{"hero":"moira","value":7.86},{"hero":"zenyatta","value":7.72},{"hero":"sojourn","value":7.5},{"hero":"brigitte","value":7.07},{"hero":"orisa","value":6.97},{"hero":"zarya","value":6.5},{"hero":"sombra","value":6.24},{"hero":"lifeweaver","value":4.77},{"hero":"baptiste","value":3.8},{"hero":"lucio","value":3.62},{"hero":"ana","value":3.18},{"hero":"kiriko","value":1.84},{"hero":"mercy","value":0.72}]},"games_won":{"label":"Games Won","values":[{"hero":"hanzo","value":5128},{"hero":"roadhog","value":1934},{"hero":"zenyatta","value":1387},{"hero":"widowmaker","value":584},{"hero":"genji","value":564},{"hero":"moira","value":323},{"hero":"sigma","value":259},{"hero":"reinhardt","value":252},{"hero":"junkrat","value":188},{"hero":"orisa","value":154},{"hero":"tracer","value":147},{"hero":"reaper","value":143},{"hero":"cassidy","value":122},{"hero":"soldier-76","value":119},{"hero":"dva","value":105},{"hero":"symmetra","value":87},{"hero":"mei","value":84},{"hero":"bastion","value":80},{"hero":"lucio","value":61},{"hero":"ana","value":60},{"hero":"winston","value":54},{"hero":"baptiste","value":49},{"hero":"junker-queen","value":46},{"hero":"zarya","value":37},{"hero":"sombra","value":30},{"hero":"ashe","value":23},{"hero":"torbjorn","value":15},{"hero":"pharah","value":15},{"hero":"mercy","value":14},{"hero":"echo","value":9},{"hero":"brigitte","value":9},{"hero":"doomfist","value":8},{"hero":"sojourn","value":5},{"hero":"kiriko","value":3},{"hero":"wrecking-ball","value":3},{"hero":"ramattra","value":2},{"hero":"lifeweaver","value":0}]},"healing_done_avg_per_10_min":{"label":"Healing Done - Avg per 10 Min","values":[{"hero":"baptiste","value":7936},{"hero":"lucio","value":7724},{"hero":"moira","value":7474},{"hero":"mercy","value":7260},{"hero":"ana","value":6834},{"hero":"kiriko","value":6555},{"hero":"brigitte","value":5489},{"hero":"zenyatta","value":4676},{"hero":"lifeweaver","value":4423},{"hero":"roadhog","value":4058},{"hero":"soldier-76","value":1219},{"hero":"reaper","value":1036},{"hero":"junker-queen","value":1017},{"hero":"mei","value":956},{"hero":"sombra","value":383},{"hero":"echo","value":66.03},{"hero":"symmetra","value":12.13},{"hero":"genji","value":1.58},{"hero":"bastion","value":1.05},{"hero":"dva","value":0.61},{"hero":"hanzo","value":0.44},{"hero":"orisa","value":0.14},{"hero":"widowmaker","value":0.05},{"hero":"sigma","value":0.04},{"hero":"junkrat","value":0.02},{"hero":"tracer","value":0},{"hero":"torbjorn","value":0},{"hero":"reinhardt","value":0},{"hero":"pharah","value":0},{"hero":"winston","value":0},{"hero":"cassidy","value":0},{"hero":"zarya","value":0},{"hero":"doomfist","value":0},{"hero":"wrecking-ball","value":0},{"hero":"sojourn","value":0},{"hero":"ashe","value":0},{"hero":"ramattra","value":0}]},"hero_damage_done_avg_per_10_min":{"label":"Hero Damage Done - Avg per 10 Min","values":[{"hero":"bastion","value":10336},{"hero":"junkrat","value":9669},{"hero":"torbjorn","value":9566},{"hero":"soldier-76","value":9442},{"hero":"reaper","value":9056},{"hero":"sigma","value":8965},{"hero":"junker-queen","value":8571},{"hero":"hanzo","value":8543},{"hero":"symmetra","value":8285},{"hero":"sojourn","value":7484},{"hero":"echo","value":7422},{"hero":"ashe","value":7420},{"hero":"pharah","value":7379},{"hero":"roadhog","value":7375},{"hero":"cassidy","value":7147},{"hero":"ramattra","value":6985},{"hero":"zarya","value":6867},{"hero":"orisa","value":6799},{"hero":"tracer","value":6708},{"hero":"genji","value":6616},{"hero":"doomfist","value":6495},{"hero":"dva","value":6417},{"hero":"widowmaker","value":6080},{"hero":"moira","value":5940},{"hero":"reinhardt","value":5773},{"hero":"mei","value":5767},{"hero":"wrecking-ball","value":5746},{"hero":"zenyatta","value":5317},{"hero":"winston","value":5182},{"hero":"brigitte","value":4712},{"hero":"sombra","value":4492},{"hero":"baptiste","value":3672},{"hero":"lucio","value":3597},{"hero":"kiriko","value":2546},{"hero":"lifeweaver","value":2524},{"hero":"ana","value":1874},{"hero":"mercy","value":336}]},"kill_streak_best":{"label":"Kill Streak - Best","values":[{"hero":"moira","value":39},{"hero":"widowmaker","value":35},{"hero":"roadhog","value":33},{"hero":"hanzo","value":30},{"hero":"genji","value":29},{"hero":"zenyatta","value":26},{"hero":"sigma","value":25},{"hero":"reaper","value":23},{"hero":"winston","value":23},{"hero":"orisa","value":23},{"hero":"torbjorn","value":22},{"hero":"reinhardt","value":21},{"hero":"cassidy","value":20},{"hero":"junkrat","value":20},{"hero":"soldier-76","value":20},{"hero":"mei","value":20},{"hero":"tracer","value":19},{"hero":"dva","value":19},{"hero":"symmetra","value":18},{"hero":"junker-queen","value":18},{"hero":"bastion","value":17},{"hero":"ashe","value":16},{"hero":"pharah","value":15},{"hero":"zarya","value":15},{"hero":"lucio","value":15},{"hero":"sombra","value":15},{"hero":"echo","value":13},{"hero":"baptiste","value":13},{"hero":"doomfist","value":12},{"hero":"wrecking-ball","value":11},{"hero":"ana","value":10},{"hero":"brigitte","value":10},{"hero":"sojourn","value":10},{"hero":"lifeweaver","value":6},{"hero":"ramattra","value":5},{"hero":"mercy","value":4},{"hero":"kiriko","value":4}]},"multikill_best":{"label":"Multikill - Best","values":[{"hero":"reaper","value":6},{"hero":"tracer","value":5},{"hero":"hanzo","value":5},{"hero":"reinhardt","value":5},{"hero":"symmetra","value":5},{"hero":"zenyatta","value":5},{"hero":"genji","value":5},{"hero":"roadhog","value":5},{"hero":"zarya","value":5},{"hero":"mei","value":5},{"hero":"moira","value":5},{"hero":"junker-queen","value":5},{"hero":"sigma","value":5},{"hero":"pharah","value":4},{"hero":"bastion","value":4},{"hero":"cassidy","value":4},{"hero":"junkrat","value":4},{"hero":"soldier-76","value":4},{"hero":"lucio","value":4},{"hero":"dva","value":4},{"hero":"sombra","value":4},{"hero":"orisa","value":4},{"hero":"ashe","value":4},{"hero":"torbjorn","value":3},{"hero":"winston","value":3},{"hero":"widowmaker","value":3},{"hero":"doomfist","value":3},{"hero":"ana","value":3},{"hero":"brigitte","value":3},{"hero":"wrecking-ball","value":3},{"hero":"baptiste","value":3},{"hero":"lifeweaver","value":3},{"hero":"mercy","value":0},{"hero":"sojourn","value":0},{"hero":"echo","value":0},{"hero":"kiriko","value":0},{"hero":"ramattra","value":0}]},"objective_kills_avg_per_10_min":{"label":"Objective Kills - Avg per 10 Min","values":[{"hero":"moira","value":9.33},{"hero":"mei","value":9.04},{"hero":"sigma","value":9.0},{"hero":"orisa","value":8.6},{"hero":"lifeweaver","value":8.34},{"hero":"reaper","value":8.23},{"hero":"junkrat","value":7.65},{"hero":"roadhog","value":7.63},{"hero":"soldier-76","value":7.57},{"hero":"dva","value":7.13},{"hero":"bastion","value":6.97},{"hero":"symmetra","value":6.88},{"hero":"tracer","value":6.73},{"hero":"zarya","value":6.73},{"hero":"pharah","value":6.63},{"hero":"winston","value":6.59},{"hero":"hanzo","value":6.57},{"hero":"zenyatta","value":6.57},{"hero":"lucio","value":6.43},{"hero":"wrecking-ball","value":6.39},{"hero":"junker-queen","value":6.31},{"hero":"cassidy","value":6.22},{"hero":"torbjorn","value":5.86},{"hero":"sombra","value":5.42},{"hero":"echo","value":5.28},{"hero":"reinhardt","value":5.27},{"hero":"genji","value":5.22},{"hero":"sojourn","value":5.0},{"hero":"ashe","value":4.86},{"hero":"doomfist","value":4.72},{"hero":"brigitte","value":4.61},{"hero":"baptiste","value":4.57},{"hero":"widowmaker","value":4.28},{"hero":"ramattra","value":4.14},{"hero":"ana","value":3.72},{"hero":"kiriko","value":2.77},{"hero":"mercy","value":0.55}]},"objective_time_avg_per_10_min":{"label":"Objective Time - Avg per 10 Min","values":[{"hero":"junker-queen","value":123},{"hero":"wrecking-ball","value":115},{"hero":"kiriko","value":101},{"hero":"sigma","value":96},{"hero":"reinhardt","value":93},{"hero":"lucio","value":89},{"hero":"dva","value":81},{"hero":"roadhog","value":71},{"hero":"zarya","value":69},{"hero":"mei","value":67},{"hero":"brigitte","value":67},{"hero":"moira","value":66},{"hero":"winston","value":63},{"hero":"orisa","value":61},{"hero":"zenyatta","value":57},{"hero":"doomfist","value":56},{"hero":"reaper","value":54},{"hero":"baptiste","value":54},{"hero":"bastion","value":52},{"hero":"echo","value":50},{"hero":"genji","value":49},{"hero":"lifeweaver","value":48},{"hero":"hanzo","value":47},{"hero":"tracer","value":47},{"hero":"ashe","value":46},{"hero":"junkrat","value":46},{"hero":"cassidy","value":44},{"hero":"ana","value":43},{"hero":"soldier-76","value":39},{"hero":"ramattra","value":38},{"hero":"sombra","value":37},{"hero":"sojourn","value":37},{"hero":"torbjorn","value":33},{"hero":"symmetra","value":31},{"hero":"pharah","value":28},{"hero":"mercy","value":23},{"hero":"widowmaker","value":6}]},"solo_kills_avg_per_10_min":{"label":"Solo Kills - Avg per 10 Min","values":[{"hero":"widowmaker","value":6.22},{"hero":"tracer","value":4.43},{"hero":"genji","value":4.09},{"hero":"reaper","value":3.62},{"hero":"winston","value":3.59},{"hero":"pharah","value":3.56},{"hero":"junkrat","value":3.44},{"hero":"dva","value":3.25},{"hero":"hanzo","value":3.21},{"hero":"roadhog","value":3.19},{"hero":"symmetra","value":3.14},{"hero":"torbjorn","value":2.84},{"hero":"doomfist","value":2.75},{"hero":"mei","value":2.7},{"hero":"echo","value":2.43},{"hero":"soldier-76","value":2.28},{"hero":"ashe","value":2.0},{"hero":"cassidy","value":1.95},{"hero":"zenyatta","value":1.77},{"hero":"ramattra","value":1.66},{"hero":"moira","value":1.6},{"hero":"sojourn","value":1.54},{"hero":"sigma","value":1.46},{"hero":"junker-queen","value":1.4},{"hero":"sombra","value":1.26},{"hero":"bastion","value":1.19},{"hero":"wrecking-ball","value":1.02},{"hero":"zarya","value":0.94},{"hero":"reinhardt","value":0.87},{"hero":"ana","value":0.71},{"hero":"lucio","value":0.7},{"hero":"brigitte","value":0.69},{"hero":"orisa","value":0.66},{"hero":"baptiste","value":0.44},{"hero":"kiriko","value":0.26},{"hero":"mercy","value":0.13},{"hero":"lifeweaver","value":0}]},"time_played":{"label":"Time Played","values":[{"hero":"hanzo","value":4786482},{"hero":"roadhog","value":1642459},{"hero":"zenyatta","value":1159566},{"hero":"widowmaker","value":545145},{"hero":"genji","value":488796},{"hero":"moira","value":265457},{"hero":"reinhardt","value":232625},{"hero":"sigma","value":208877},{"hero":"junkrat","value":184539},{"hero":"cassidy","value":154742},{"hero":"reaper","value":141515},{"hero":"orisa","value":139901},{"hero":"tracer","value":139289},{"hero":"soldier-76","value":129354},{"hero":"dva","value":96070},{"hero":"bastion","value":94395},{"hero":"mei","value":80862},{"hero":"ana","value":68307},{"hero":"symmetra","value":62198},{"hero":"lucio","value":52498},{"hero":"sombra","value":52274},{"hero":"baptiste","value":49358},{"hero":"winston","value":45732},{"hero":"junker-queen","value":42969},{"hero":"zarya","value":37110},{"hero":"ashe","value":26163},{"hero":"mercy","value":18450},{"hero":"pharah","value":16195},{"hero":"torbjorn","value":13710},{"hero":"echo","value":11595},{"hero":"sojourn","value":11273},{"hero":"brigitte","value":9511},{"hero":"doomfist","value":6987},{"hero":"kiriko","value":4555},{"hero":"wrecking-ball","value":4135},{"hero":"ramattra","value":724},{"hero":"lifeweaver","value":504}]},"weapon_accuracy_best_in_game":{"label":"Weapon Accuracy - Best in Game","values":[{"hero":"tracer","value":100},{"hero":"hanzo","value":100},{"hero":"widowmaker","value":100},{"hero":"soldier-76","value":100},{"hero":"dva","value":100},{"hero":"roadhog","value":94},{"hero":"cassidy","value":83},{"hero":"genji","value":82},{"hero":"zarya","value":80},{"hero":"pharah","value":79},{"hero":"mei","value":75},{"hero":"doomfist","value":74},{"hero":"bastion","value":73},{"hero":"junkrat","value":71},{"hero":"lucio","value":67},{"hero":"ashe","value":67},{"hero":"junker-queen","value":65},{"hero":"reaper","value":63},{"hero":"symmetra","value":62},{"hero":"wrecking-ball","value":59},{"hero":"sombra","value":57},{"hero":"mercy","value":56},{"hero":"orisa","value":56},{"hero":"baptiste","value":54},{"hero":"zenyatta","value":51},{"hero":"torbjorn","value":51},{"hero":"sigma","value":50},{"hero":"sojourn","value":44},{"hero":"ramattra","value":41},{"hero":"echo","value":35},{"hero":"kiriko","value":34},{"hero":"ana","value":27},{"hero":"lifeweaver","value":19},{"hero":"reinhardt","value":0},{"hero":"winston","value":0},{"hero":"brigitte","value":0},{"hero":"moira","value":0}]},"win_percentage":{"label":"Win Percentage","values":[{"hero":"ramattra","value":80},{"hero":"symmetra","value":62},{"hero":"moira","value":57},{"hero":"sigma","value":57},{"hero":"roadhog","value":57},{"hero":"lucio","value":57},{"hero":"winston","value":55},{"hero":"zenyatta","value":54},{"hero":"genji","value":54},{"hero":"doomfist","value":52},{"hero":"tracer","value":52},{"hero":"junkrat","value":52},{"hero":"reaper","value":52},{"hero":"mei","value":51},{"hero":"hanzo","value":51},{"hero":"torbjorn","value":51},{"hero":"dva","value":51},{"hero":"junker-queen","value":51},{"hero":"orisa","value":50},{"hero":"widowmaker","value":50},{"hero":"zarya","value":49},{"hero":"reinhardt","value":48},{"hero":"bastion","value":46},{"hero":"soldier-76","value":46},{"hero":"pharah","value":45},{"hero":"brigitte","value":45},{"hero":"wrecking-ball","value":42},{"hero":"ashe","value":42},{"hero":"ana","value":41},{"hero":"baptiste","value":41},{"hero":"cassidy","value":39},{"hero":"echo","value":38},{"hero":"kiriko","value":38},{"hero":"mercy","value":36},{"hero":"sombra","value":30},{"hero":"sojourn","value":22},{"hero":"lifeweaver","value":0}]}}},"HeroesStats":{"properties":{"label":{"type":"string","title":"Label","description":"Label of the hero statistic"},"values":{"items":{"$ref":"#/components/schemas/HeroStat"},"type":"array","minItems":1,"title":"Values","description":"List of values of this statistic for each heroes. All heroes may not be included in the list."}},"type":"object","required":["label","values"],"title":"HeroesStats"},"HitPoints":{"properties":{"health":{"type":"integer","minimum":1.0,"title":"Health","description":"Health of the hero","examples":[250]},"armor":{"type":"integer","minimum":0.0,"title":"Armor","description":"Armor of the hero","examples":[0]},"shields":{"type":"integer","minimum":0.0,"title":"Shields","description":"Shields of the hero","examples":[0]},"total":{"type":"integer","minimum":1.0,"title":"Total","description":"Total HP of the hero","examples":[250]}},"type":"object","required":["health","armor","shields","total"],"title":"HitPoints"},"InternalServerErrorMessage":{"properties":{"error":{"type":"string","title":"Error","description":"Message describing the internal server error","examples":["An internal server error occurred during the process. The developer received a notification, but don't hesitate to create a GitHub issue if you want any news concerning the bug resolution : https://github.com/TeKrop/overfast-api/issues"]}},"type":"object","required":["error"],"title":"InternalServerErrorMessage"},"Locale":{"type":"string","enum":["de-de","en-gb","en-us","es-es","es-mx","fr-fr","it-it","ja-jp","ko-kr","pl-pl","pt-br","ru-ru","zh-tw"],"title":"Locale","description":"Locales supported by Blizzard"},"Map":{"properties":{"key":{"$ref":"#/components/schemas/MapKey","description":"Key name of the map","examples":["aatlis"]},"name":{"type":"string","title":"Name","description":"Name of the map","examples":["Aatlis"]},"screenshot":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Screenshot","description":"Screenshot of the map","examples":["https://overfast-api.tekrop.fr/static/maps/aatlis.jpg"]},"gamemodes":{"items":{"$ref":"#/components/schemas/MapGamemode"},"type":"array","title":"Gamemodes","description":"Main gamemodes on which the map is playable"},"location":{"type":"string","title":"Location","description":"Location of the map","examples":["Morocco"]},"country_code":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Country Code","description":"Country Code of the location of the map. If not defined, it's null.","examples":["MA"]}},"type":"object","required":["key","name","screenshot","gamemodes","location","country_code"],"title":"Map"},"MapGamemode":{"type":"string","enum":["assault","capture-the-flag","clash","control","deathmatch","elimination","escort","flashpoint","hybrid","payload-race","practice-range","push","team-deathmatch","workshop"],"title":"MapGamemode","description":"Maps gamemodes keys"},"MapKey":{"type":"string","enum":["aatlis","antarctic-peninsula","anubis","arena-victoriae","ayutthaya","black-forest","blizzard-world","busan","castillo","chateau-guillard","circuit-royal","colosseo","dorado","ecopoint-antarctica","eichenwalde","esperanca","gogadoro","hanamura","hanaoka","havana","hollywood","horizon","ilios","junkertown","lijiang-tower","kanezaka","kings-row","malevento","midtown","necropolis","nepal","new-junk-city","new-queen-street","numbani","oasis","paraiso","paris","petra","place-lacroix","powder-keg-mine","practice-range","redwood-dam","rialto","route-66","runasapi","samoa","shambali-monastery","suravasa","thames-district","throne-of-anubis","volskaya","watchpoint-gibraltar","workshop-chamber","workshop-expanse","workshop-green-screen","workshop-island","wuxing-university"],"title":"MapKey","description":"Map keys used to identify Overwatch maps in general"},"Media":{"properties":{"type":{"$ref":"#/components/schemas/MediaType","description":"Type of the media","examples":["video"]},"link":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Link","description":"Link to the media","examples":["https://youtu.be/PKYVvPNhRR0"]}},"type":"object","required":["type","link"],"title":"Media"},"MediaType":{"type":"string","enum":["comic","short-story","video"],"title":"MediaType","description":"Media types for heroes pages"},"Perk":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the perk","examples":["Bang Bang"]},"description":{"type":"string","title":"Description","description":"Description of the perk","examples":["Cassidy throws a second Flashbang that travels farther, but both Flashbangs deal 40% reduced damage."]},"icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Icon","description":"Icon URL of the perk","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/4cf99ebedab5eb72e47c1388000cb29ad521fb2faf7e7b31f526bbbe3f212632.png"]}},"type":"object","required":["name","description","icon"],"title":"Perk"},"PerksContainer":{"properties":{"minor":{"items":{"$ref":"#/components/schemas/Perk"},"type":"array","maxItems":2,"minItems":2,"title":"Minor","description":"List of minor perks."},"major":{"items":{"$ref":"#/components/schemas/Perk"},"type":"array","maxItems":2,"minItems":2,"title":"Major","description":"List of major perks."}},"type":"object","required":["minor","major"],"title":"PerksContainer"},"PlatformCompetitiveRanksContainer":{"properties":{"season":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Season","description":"Last competitive season played by the player. Can be 0 on Blizzard data for some reason, but can't explain what it means.","examples":[3]},"tank":{"anyOf":[{"$ref":"#/components/schemas/PlayerCompetitiveRank"},{"type":"null"}],"description":"Tank role details"},"damage":{"anyOf":[{"$ref":"#/components/schemas/PlayerCompetitiveRank"},{"type":"null"}],"description":"Damage role details"},"support":{"anyOf":[{"$ref":"#/components/schemas/PlayerCompetitiveRank"},{"type":"null"}],"description":"Support role details"},"open":{"anyOf":[{"$ref":"#/components/schemas/PlayerCompetitiveRank"},{"type":"null"}],"description":"Open Queue role details"}},"type":"object","required":["season","tank","damage","support","open"],"title":"PlatformCompetitiveRanksContainer"},"Player":{"properties":{"summary":{"$ref":"#/components/schemas/PlayerSummary","description":"Player summary (avatar, endorsement, competitive ranks, etc.)"},"stats":{"anyOf":[{"$ref":"#/components/schemas/PlayerStats"},{"type":"null"}],"description":"Player statistics (heroes comparisons, career stats, etc.). If the player career is private or has no stat at all, it's null."}},"type":"object","required":["summary","stats"],"title":"Player"},"PlayerCareerStats":{"properties":{"all-heroes":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Total of statistics for all heroes"},"ana":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Ana"},"anran":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Anran"},"ashe":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Ashe"},"baptiste":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Baptiste"},"bastion":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Bastion"},"brigitte":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Brigitte"},"cassidy":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Cassidy"},"dva":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for D.Va"},"domina":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Domina"},"doomfist":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Doomfist"},"echo":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Echo"},"emre":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Emre"},"freja":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Freja"},"genji":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Genji"},"hazard":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Hazard"},"hanzo":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Hanzo"},"illari":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Illari"},"jetpack-cat":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Jetpack Cat"},"junker-queen":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Junker Queen"},"junkrat":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Junkrat"},"juno":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Juno"},"kiriko":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Kiriko"},"lifeweaver":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Lifeweaver"},"lucio":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Lúcio"},"mauga":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Mauga"},"mei":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Mei"},"mercy":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Mercy"},"mizuki":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Mizuki"},"moira":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Moira"},"orisa":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Orisa"},"pharah":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Pharah"},"ramattra":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Ramattra"},"reaper":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Reaper"},"reinhardt":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Reinhardt"},"roadhog":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Roadhog"},"shion":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Shion"},"sigma":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Sigma"},"sierra":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Sierra"},"sojourn":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Sojourn"},"soldier-76":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Soldier: 76"},"sombra":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Sombra"},"symmetra":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Symmetra"},"torbjorn":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Torbjörn"},"tracer":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Tracer"},"vendetta":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Vendetta"},"venture":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Venture"},"widowmaker":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Widowmaker"},"winston":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Winston"},"wrecking-ball":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Wrecking Ball"},"wuyang":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Wuyang"},"zarya":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Zarya"},"zenyatta":{"anyOf":[{"$ref":"#/components/schemas/HeroPlayerCareerStats"},{"type":"null"}],"description":"Career statistics for Zenyatta"}},"type":"object","title":"PlayerCareerStats","example":{"all-heroes":{"assists":{"assists":35,"defensive_assists":29,"healing_done":12703,"offensive_assists":21},"average":{"assists_avg_per_10_min":7.48,"deaths_avg_per_10_min":6.41,"eliminations_avg_per_10_min":10.9,"final_blows_avg_per_10_min":3.85,"healing_done_avg_per_10_min":2715,"hero_damage_done_avg_per_10_min":7289,"objective_contest_time_avg_per_10_min":50,"objective_kills_avg_per_10_min":4.7,"objective_time_avg_per_10_min":89},"best":{"all_damage_done_most_in_game":25326,"assists_most_in_game":16,"barrier_damage_done_most_in_game":7544,"defensive_assists_most_in_game":15,"eliminations_most_in_game":22,"environmental_kills_most_in_game":1,"final_blows_most_in_game":10,"healing_done_most_in_game":8196,"hero_damage_done_most_in_game":17735,"kill_streak_best":7,"multikill_best":3,"objective_contest_time_most_in_game":155,"objective_kills_most_in_game":7,"objective_time_most_in_game":281,"offensive_assists_most_in_game":11,"solo_kills_most_in_game":10,"time_spent_on_fire_most_in_game":88},"combat":{"damage_done":34098,"deaths":30,"eliminations":51,"environmental_kills":1,"final_blows":18,"hero_damage_done":34098,"multikills":1,"objective_contest_time":233,"objective_kills":22,"objective_time":418},"game":{"games_lost":4,"games_played":5,"games_won":1,"hero_wins":1,"time_played":2807}},"ana":{"assists":{"assists":32,"defensive_assists":29,"defensive_assists_avg_per_10_min":20.32,"defensive_assists_most_in_game":15,"healing_done":12216,"healing_done_most_in_game":8196,"offensive_assists":18,"offensive_assists_avg_per_10_min":12.61,"offensive_assists_most_in_game":11},"average":{"all_damage_done_avg_per_10_min":3235,"assists_avg_per_10_min":22.42,"deaths_avg_per_10_min":5.61,"eliminations_avg_per_10_min":9.11,"eliminations_per_life":1.63,"final_blows_avg_per_10_min":2.1,"healing_done_avg_per_10_min":8560,"hero_damage_done_avg_per_10_min":2645,"obj_contest_time_avg_per_10_min":36,"objective_kills_avg_per_10_min":4.91,"objective_time_avg_per_10_min":64},"best":{"all_damage_done_most_in_game":2978,"all_damage_done_most_in_life":1349,"assists_most_in_game":16,"eliminations_most_in_game":7,"eliminations_most_in_life":4,"final_blows_most_in_game":3,"hero_damage_done_most_in_game":2291,"hero_damage_done_most_in_life":1194,"kill_streak_best":4,"obj_contest_time_most_in_game":46,"objective_kills_most_in_game":4,"objective_time_most_in_game":51,"weapon_accuracy_best_in_game":19},"combat":{"all_damage_done":4616,"deaths":8,"eliminations":13,"final_blows":3,"hero_damage_done":3774,"obj_contest_time":51,"objective_kills":7,"objective_time":91,"weapon_accuracy":18},"game":{"games_lost":1,"games_played":2,"games_won":1,"hero_wins":1,"time_played":856,"win_percentage":50},"hero_specific":{"biotic_grenade_kills":9,"biotic_grenade_kills_avg_per_10_min":6.31,"damage_amplified":862,"damage_amplified_avg_per_10_min":604,"damage_amplified_most_in_game":741,"enemies_slept":4,"enemies_slept_avg_per_10_min":2.8,"enemies_slept_most_in_game":3,"healing_amplified":647,"healing_amplified_avg_per_10_min":453,"healing_amplified_most_in_game":411,"nano_boost_assists":8,"nano_boost_assists_avg_per_10_min":5.61,"nano_boost_assists_most_in_game":7,"scoped_accuracy":44,"scoped_accuracy_best_in_game":45,"self_healing":577,"self_healing_avg_per_10_min":404,"self_healing_most_in_game":300,"unscoped_accuracy":52,"unscoped_accuracy_best_in_game":55}},"cassidy":{"average":{"all_damage_done_avg_per_10_min":11813,"critical_hit_kills_avg_per_10_min":0.75,"critical_hits_avg_per_10_min":10.56,"deaths_avg_per_10_min":8.3,"eliminations_avg_per_10_min":12.07,"eliminations_per_life":1.45,"final_blows_avg_per_10_min":6.79,"hero_damage_done_avg_per_10_min":6937,"obj_contest_time_avg_per_10_min":18,"objective_kills_avg_per_10_min":3.77,"objective_time_avg_per_10_min":18},"best":{"all_damage_done_most_in_game":10195,"all_damage_done_most_in_life":3275,"critical_hit_kills_most_in_game":1,"critical_hits_most_in_game":10,"critical_hits_most_in_life":5,"eliminations_most_in_game":13,"eliminations_most_in_life":5,"final_blows_most_in_game":8,"hero_damage_done_most_in_game":6319,"hero_damage_done_most_in_life":1930,"kill_streak_best":5,"obj_contest_time_most_in_game":15,"objective_kills_most_in_game":3,"objective_time_most_in_game":15,"weapon_accuracy_best_in_game":53},"combat":{"all_damage_done":15654,"critical_hit_accuracy":10,"critical_hit_kills":1,"critical_hits":14,"deaths":11,"eliminations":16,"final_blows":9,"hero_damage_done":9193,"obj_contest_time":24,"objective_kills":5,"objective_time":24,"weapon_accuracy":38},"game":{"games_lost":2,"games_played":2,"time_played":795},"hero_specific":{"deadeye_kills":1,"deadeye_kills_avg_per_10_min":0.75,"deadeye_kills_most_in_game":1,"fan_the_hammer_kills":1,"fan_the_hammer_kills_avg_per_10_min":0.75,"fan_the_hammer_kills_most_in_game":1,"long_range_final_blows":2,"long_range_final_blows_avg_per_10_min":1.51,"magnetic_grenade_attach_rate":27,"magnetic_grenade_kills":4,"magnetic_grenade_kills_avg_per_10_min":3.02,"magnetic_grenade_kills_most_in_game":3}},"orisa":{"assists":{"assists":2,"offensive_assists":2,"offensive_assists_avg_per_10_min":2.69,"offensive_assists_most_in_game":2},"average":{"all_damage_done_avg_per_10_min":20159,"assists_avg_per_10_min":2.69,"deaths_avg_per_10_min":5.39,"eliminations_avg_per_10_min":6.73,"eliminations_per_life":1.25,"final_blows_avg_per_10_min":1.35,"hero_damage_done_avg_per_10_min":12226,"obj_contest_time_avg_per_10_min":154,"objective_kills_avg_per_10_min":5.39,"objective_time_avg_per_10_min":154},"best":{"all_damage_done_most_in_game":14969,"all_damage_done_most_in_life":5409,"assists_most_in_game":2,"eliminations_most_in_game":5,"eliminations_most_in_life":4,"final_blows_most_in_game":1,"hero_damage_done_most_in_game":9078,"hero_damage_done_most_in_life":3181,"kill_streak_best":4,"obj_contest_time_most_in_game":114,"objective_kills_most_in_game":4,"objective_time_most_in_game":114,"weapon_accuracy_best_in_game":40},"combat":{"all_damage_done":14969,"deaths":4,"eliminations":5,"final_blows":1,"hero_damage_done":9078,"obj_contest_time":114,"objective_kills":4,"objective_time":114,"weapon_accuracy":40},"game":{"games_lost":1,"games_played":1,"time_played":446},"hero_specific":{"energy_javelin_kills":2,"energy_javelin_kills_avg_per_10_min":2.69,"energy_javelin_kills_nyi":2,"javelin_spin_kills":2,"javelin_spin_kills_avg_per_10_min":0,"javelin_spin_kills_nyi":2,"terra_surge_kills":1,"terra_surge_kills_avg_per_10_min":1.35,"terra_surge_kills_most_in_game":1}},"reaper":{"average":{"all_damage_done_avg_per_10_min":9753,"critical_hits_avg_per_10_min":88.16,"deaths_avg_per_10_min":7.84,"eliminations_avg_per_10_min":17.63,"eliminations_per_life":2.25,"final_blows_avg_per_10_min":3.92,"healing_done_avg_per_10_min":954,"hero_damage_done_avg_per_10_min":6655,"obj_contest_time_avg_per_10_min":6,"objective_kills_avg_per_10_min":5.88,"objective_time_avg_per_10_min":43},"best":{"all_damage_done_most_in_game":4978,"all_damage_done_most_in_life":3235,"critical_hits_most_in_game":45,"critical_hits_most_in_life":28,"eliminations_most_in_game":9,"eliminations_most_in_life":7,"final_blows_most_in_game":2,"hero_damage_done_most_in_game":3397,"hero_damage_done_most_in_life":2277,"kill_streak_best":7,"multikill_best":3,"obj_contest_time_most_in_game":3,"objective_kills_most_in_game":3,"objective_time_most_in_game":22,"weapon_accuracy_best_in_game":26},"combat":{"all_damage_done":4978,"critical_hit_accuracy":7,"critical_hits":45,"deaths":4,"eliminations":9,"final_blows":2,"hero_damage_done":3397,"multikills":1,"obj_contest_time":3,"objective_kills":3,"objective_time":22,"weapon_accuracy":26},"game":{"games_lost":0,"games_played":0,"time_played":306},"hero_specific":{"self_healing":487,"self_healing_avg_per_10_min":954,"self_healing_most_in_game":487}},"reinhardt":{"assists":{"assists":1,"offensive_assists":1,"offensive_assists_avg_per_10_min":1.53,"offensive_assists_most_in_game":1},"average":{"all_damage_done_avg_per_10_min":15868,"assists_avg_per_10_min":1.53,"deaths_avg_per_10_min":4.6,"eliminations_avg_per_10_min":12.26,"eliminations_per_life":2.67,"final_blows_avg_per_10_min":4.6,"hero_damage_done_avg_per_10_min":13263,"obj_contest_time_avg_per_10_min":63,"objective_kills_avg_per_10_min":4.6,"objective_time_avg_per_10_min":256},"best":{"all_damage_done_most_in_game":10357,"all_damage_done_most_in_life":4727,"assists_most_in_game":1,"eliminations_most_in_game":8,"eliminations_most_in_life":6,"environmental_kills_most_in_game":1,"final_blows_most_in_game":3,"hero_damage_done_most_in_game":8657,"hero_damage_done_most_in_life":3462,"kill_streak_best":6,"obj_contest_time_most_in_game":41,"objective_kills_most_in_game":3,"objective_time_most_in_game":167},"combat":{"all_damage_done":10357,"deaths":3,"eliminations":8,"environmental_kills":1,"environmental_kills_avg_per_10_min":1.53,"final_blows":3,"hero_damage_done":8657,"obj_contest_time":41,"objective_kills":3,"objective_time":167},"game":{"games_lost":0,"games_played":0,"time_played":392},"hero_specific":{"charge_kills":2,"charge_kills_avg_per_10_min":3.06,"charge_kills_most_in_game":2,"earthshatter_kills":2,"earthshatter_kills_avg_per_10_min":3.06,"earthshatter_kills_most_in_game":2,"fire_strike_kills":4,"fire_strike_kills_avg_per_10_min":6.13,"fire_strike_kills_most_in_game":4}},"tracer":{"game":{"games_lost":0,"games_played":0,"time_played":12},"hero_specific":{"low_health_recalls":1,"low_health_recalls_avg_per_10_min":48.98,"low_health_recalls_most_in_game":1,"self_healing":130,"self_healing_avg_per_10_min":6367,"self_healing_most_in_game":130}}}},"PlayerCompetitiveRank":{"properties":{"division":{"$ref":"#/components/schemas/CompetitiveDivision","description":"Division of the rank","examples":["diamond"]},"tier":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Tier","description":"Tier inside the division, lower is better","examples":[3]},"role_icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Role Icon","description":"URL the role icon","examples":["https://static.playoverwatch.com/img/pages/career/icons/role/tank-f64702b684.svg#icon"]},"rank_icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Rank Icon","description":"URL of the division icon associated with the player rank","examples":["https://static.playoverwatch.com/img/pages/career/icons/rank/Rank_MasterTier-7d3b85ba0d.png"]},"tier_icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Tier Icon","description":"URL of the tier icon associated with the player rank","examples":["https://static.playoverwatch.com/img/pages/career/icons/rank/TierDivision_3-1de89374e2.png"]}},"type":"object","required":["division","tier","role_icon","rank_icon","tier_icon"],"title":"PlayerCompetitiveRank"},"PlayerCompetitiveRanksContainer":{"properties":{"pc":{"anyOf":[{"$ref":"#/components/schemas/PlatformCompetitiveRanksContainer"},{"type":"null"}],"description":"Competitive ranks for PC and last season played on it. If the player doesn't play on this platform, it's null."},"console":{"anyOf":[{"$ref":"#/components/schemas/PlatformCompetitiveRanksContainer"},{"type":"null"}],"description":"Competitive ranks for console and last season played on it. If the player doesn't play on this platform, it's null."}},"type":"object","required":["pc","console"],"title":"PlayerCompetitiveRanksContainer"},"PlayerEndorsement":{"properties":{"level":{"type":"integer","maximum":5.0,"minimum":0.0,"title":"Level","description":"Player Endorsement level. 0 if no information found.","examples":[3]},"frame":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Frame","description":"URL of the endorsement frame corresponding to the level","examples":["https://static.playoverwatch.com/img/pages/career/icons/endorsement/3-8ccb5f0aef.svg#icon"]}},"type":"object","required":["level","frame"],"title":"PlayerEndorsement"},"PlayerGamemode":{"type":"string","enum":["quickplay","competitive"],"title":"PlayerGamemode","description":"Gamemodes associated with players statistics"},"PlayerGamemodeStats":{"properties":{"heroes_comparisons":{"$ref":"#/components/schemas/HeroesComparisons","description":"List of general statistics on which heroes are compared for the player : total time played, number of games won, weapon accuracy, number of eliminations per life, etc.). Note that all heroes may not be included in every statistic objects."},"career_stats":{"$ref":"#/components/schemas/CareerStats","description":"List of career statistics for every hero the player played : best statistics (most in game), combat (damage, kills, etc.), average (per 10 minutes), match awards (cards), hero specific, etc.)"}},"type":"object","required":["heroes_comparisons","career_stats"],"title":"PlayerGamemodeStats"},"PlayerHeroesStats":{"properties":{"ana":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Ana. Not defined if he never played the hero."},"anran":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Anran. Not defined if he never played the hero."},"ashe":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Ashe. Not defined if he never played the hero."},"baptiste":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Baptiste. Not defined if he never played the hero."},"bastion":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Bastion. Not defined if he never played the hero."},"brigitte":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Brigitte. Not defined if he never played the hero."},"cassidy":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Cassidy. Not defined if he never played the hero."},"dva":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for D.Va. Not defined if he never played the hero."},"domina":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Domina. Not defined if he never played the hero."},"doomfist":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Doomfist. Not defined if he never played the hero."},"echo":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Echo. Not defined if he never played the hero."},"emre":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Emre. Not defined if he never played the hero."},"freja":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Freja. Not defined if he never played the hero."},"genji":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Genji. Not defined if he never played the hero."},"hazard":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Hazard. Not defined if he never played the hero."},"hanzo":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Hanzo. Not defined if he never played the hero."},"illari":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Illari. Not defined if he never played the hero."},"jetpack-cat":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Jetpack Cat. Not defined if he never played the hero."},"junker-queen":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Junker Queen. Not defined if he never played the hero."},"junkrat":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Junkrat. Not defined if he never played the hero."},"juno":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Juno. Not defined if he never played the hero."},"kiriko":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Kiriko. Not defined if he never played the hero."},"lifeweaver":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Lifeweaver. Not defined if he never played the hero."},"lucio":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Lúcio. Not defined if he never played the hero."},"mauga":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Mauga. Not defined if he never played the hero."},"mei":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Mei. Not defined if he never played the hero."},"mercy":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Mercy. Not defined if he never played the hero."},"mizuki":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Mizuki. Not defined if he never played the hero."},"moira":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Moira. Not defined if he never played the hero."},"orisa":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Orisa. Not defined if he never played the hero."},"pharah":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Pharah. Not defined if he never played the hero."},"ramattra":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Ramattra. Not defined if he never played the hero."},"reaper":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Reaper. Not defined if he never played the hero."},"reinhardt":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Reinhardt. Not defined if he never played the hero."},"roadhog":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Roadhog. Not defined if he never played the hero."},"shion":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Shion. Not defined if he never played the hero."},"sigma":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Sigma. Not defined if he never played the hero."},"sierra":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Sierra. Not defined if he never played the hero."},"sojourn":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Sojourn. Not defined if he never played the hero."},"soldier-76":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Soldier: 76. Not defined if he never played the hero."},"sombra":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Sombra. Not defined if he never played the hero."},"symmetra":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Symmetra. Not defined if he never played the hero."},"torbjorn":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Torbjörn. Not defined if he never played the hero."},"tracer":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Tracer. Not defined if he never played the hero."},"vendetta":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Vendetta. Not defined if he never played the hero."},"venture":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Venture. Not defined if he never played the hero."},"widowmaker":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Widowmaker. Not defined if he never played the hero."},"winston":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Winston. Not defined if he never played the hero."},"wrecking-ball":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Wrecking Ball. Not defined if he never played the hero."},"wuyang":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Wuyang. Not defined if he never played the hero."},"zarya":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Zarya. Not defined if he never played the hero."},"zenyatta":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary for Zenyatta. Not defined if he never played the hero."}},"type":"object","title":"PlayerHeroesStats"},"PlayerNotFoundError":{"properties":{"error":{"type":"string","title":"Error","description":"Error message","examples":["Player not found"]},"retry_after":{"type":"integer","exclusiveMinimum":0.0,"title":"Retry After","description":"Seconds to wait before retrying this request. Follows exponential backoff with settings: base=600s (10min), multiplier=3, max=21600s (6h). Progression: 600s → 1800s → 5400s → 21600s (capped)","examples":[600,1800,5400,21600]},"next_check_at":{"type":"integer","exclusiveMinimum":0.0,"title":"Next Check At","description":"Unix timestamp indicating when retries will be accepted. The API does NOT automatically check the player after this time. Instead, when a user retries after this timestamp, the API will attempt to fetch fresh data from Blizzard.","examples":[1708098000]},"check_count":{"type":"integer","minimum":1.0,"title":"Check Count","description":"Number of times the API has attempted to fetch this player from Blizzard. Used to calculate exponential backoff delay.","examples":[1,2,3,4]}},"type":"object","required":["error","retry_after","next_check_at","check_count"],"title":"PlayerNotFoundError","description":"Enhanced 404 error response for unknown players with retry information.\n\nWhen a player is not found, the API implements exponential backoff to avoid\nrepeatedly checking Blizzard for non-existent players. This response includes\ntiming information to help clients implement intelligent retry logic.","example":{"check_count":2,"error":"Player not found","next_check_at":1739634000,"retry_after":1800}},"PlayerPlatform":{"type":"string","enum":["console","pc"],"title":"PlayerPlatform","description":"Players platforms"},"PlayerPlatformStats":{"properties":{"quickplay":{"anyOf":[{"$ref":"#/components/schemas/PlayerGamemodeStats"},{"type":"null"}],"description":"Quickplay statistics about heroes. If the player doesn't have stats for this gamemode, it's null."},"competitive":{"anyOf":[{"$ref":"#/components/schemas/PlayerGamemodeStats"},{"type":"null"}],"description":"Competitive statistics about heroes in the last season played by the player. If the player doesn't have stats for this gamemode, it's null."}},"type":"object","required":["quickplay","competitive"],"title":"PlayerPlatformStats"},"PlayerRegion":{"type":"string","enum":["europe","americas","asia"],"title":"PlayerRegion"},"PlayerRolesStats":{"properties":{"tank":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary of all tank heroes played by the player. Not defined if he never played this role."},"damage":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary of all damage heroes played by the player. Not defined if he never played this role."},"support":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Stats summary of all support heroes played by the player. Not defined if he never played this role."}},"type":"object","title":"PlayerRolesStats"},"PlayerSearchResult":{"properties":{"total":{"type":"integer","minimum":0.0,"title":"Total","description":"Total number of results","examples":[42]},"results":{"items":{"$ref":"#/components/schemas/PlayerShort"},"type":"array","title":"Results","description":"List of players found"}},"type":"object","required":["total","results"],"title":"PlayerSearchResult"},"PlayerShort":{"properties":{"player_id":{"type":"string","title":"Player unique identifier","description":"Identifier of the player, BattleTag if found, else Blizzard hexadecimal ID","examples":["TeKrop-2217","e651af82ba3ccafcbfa120%7C41daffa5861594b6cd5a6c27dc961232"]},"name":{"type":"string","title":"Name","description":"Player nickname displayed in the game","examples":["TeKrop"]},"avatar":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Avatar","description":"URL of the player's avatar. Can be null if couldn't retrieve any","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/daeddd96e58a2150afa6ffc3c5503ae7f96afc2e22899210d444f45dee508c6c.png"]},"namecard":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Namecard","description":"URL of the player's namecard (or banner) if any","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/55d8c21e9d8b14942c26c4028059b6cd3b4e2fea40a139821ecee73a0005126f.png"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Title of the player if any","examples":["Bytefixer"]},"career_url":{"type":"string","minLength":1,"format":"uri","title":"Career URL","description":"Player's career OverFast API URL (Get player career data)","examples":["https://overfast-api.tekrop.fr/players/TeKrop-2217","https://overfast-api.tekrop.fr/players/e651af82ba3ccafcbfa120%7C41daffa5861594b6cd5a6c27dc961232"]},"blizzard_id":{"type":"string","title":"Blizzard ID","description":"Blizzard unique identifier of the player (hexadecimal)","examples":["c65b8798bc61d6ffbba120%7Ccfe9dd77a4382165e2b920bdcc035949"]},"last_updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timestamp","description":"Last time the player profile was updated on Blizzard (timestamp). Can be null if couldn't retrieve any","examples":[1704209332]},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is public","description":"Whether or not the player profile is public","examples":[true]}},"type":"object","required":["player_id","name","title","career_url","blizzard_id"],"title":"PlayerShort"},"PlayerStats":{"properties":{"pc":{"anyOf":[{"$ref":"#/components/schemas/PlayerPlatformStats"},{"type":"null"}],"description":"Player statistics on PC. If the player doesn't play on this platform, it's null."},"console":{"anyOf":[{"$ref":"#/components/schemas/PlayerPlatformStats"},{"type":"null"}],"description":"Player statistics on console. If the player doesn't play on this platform, it's null."}},"type":"object","required":["pc","console"],"title":"PlayerStats"},"PlayerStatsSummary":{"properties":{"general":{"anyOf":[{"$ref":"#/components/schemas/StatsSummary"},{"type":"null"}],"description":"Sum of the stats of all the heroes played by the player"},"roles":{"anyOf":[{"$ref":"#/components/schemas/PlayerRolesStats"},{"type":"null"}],"description":"Sum of the stats of all the heroes played by the player, regrouped by roles"},"heroes":{"anyOf":[{"$ref":"#/components/schemas/PlayerHeroesStats"},{"type":"null"}],"description":"Stats of all the heroes played by the player"}},"type":"object","title":"PlayerStatsSummary","example":{"general":{"average":{"assists":4.39,"damage":7814.06,"deaths":7.19,"eliminations":17.36,"healing":2398.0},"games_lost":6154,"games_played":12702,"games_won":6548,"kda":3.03,"time_played":5868683,"total":{"assists":42909,"damage":76430370,"deaths":70289,"eliminations":169772,"healing":23455121},"winrate":51.55},"heroes":{"ana":{"average":{"assists":7.65,"damage":3513.5,"deaths":7.35,"eliminations":10.14,"healing":6799.24},"games_lost":646,"games_played":1211,"games_won":565,"kda":2.42,"time_played":567415,"total":{"assists":7238,"damage":3322683,"deaths":6949,"eliminations":9585,"healing":6429989},"winrate":46.66},"ashe":{"average":{"assists":0.0,"damage":8761.89,"deaths":8.84,"eliminations":20.21,"healing":0.0},"games_lost":1,"games_played":2,"games_won":1,"kda":2.29,"time_played":950,"total":{"assists":0,"damage":13873,"deaths":14,"eliminations":32,"healing":0},"winrate":50.0},"baptiste":{"average":{"assists":1.84,"damage":6558.17,"deaths":6.89,"eliminations":13.8,"healing":8572.81},"games_lost":326,"games_played":601,"games_won":275,"kda":2.27,"time_played":283646,"total":{"assists":869,"damage":3100329,"deaths":3259,"eliminations":6522,"healing":4052741},"winrate":45.76},"bastion":{"average":{"assists":0.0,"damage":6910.02,"deaths":8.35,"eliminations":14.47,"healing":0.0},"games_lost":1,"games_played":4,"games_won":3,"kda":1.73,"time_played":2156,"total":{"assists":0,"damage":24830,"deaths":30,"eliminations":52,"healing":0},"winrate":75.0},"brigitte":{"average":{"assists":5.6,"damage":4856.43,"deaths":6.67,"eliminations":15.76,"healing":6864.74},"games_lost":24,"games_played":51,"games_won":27,"kda":3.2,"time_played":25923,"total":{"assists":242,"damage":209822,"deaths":288,"eliminations":681,"healing":296591},"winrate":52.94},"cassidy":{"average":{"assists":0.0,"damage":12104.43,"deaths":7.71,"eliminations":22.42,"healing":0.0},"games_lost":435,"games_played":954,"games_won":519,"kda":2.91,"time_played":443365,"total":{"assists":0,"damage":8944470,"deaths":5700,"eliminations":16569,"healing":0},"winrate":54.4},"doomfist":{"average":{"assists":0.0,"damage":7816.41,"deaths":10.01,"eliminations":15.68,"healing":0.0},"games_lost":8,"games_played":16,"games_won":8,"kda":1.57,"time_played":8152,"total":{"assists":0,"damage":106199,"deaths":136,"eliminations":213,"healing":0},"winrate":50.0},"dva":{"average":{"assists":0.0,"damage":9170.43,"deaths":6.16,"eliminations":21.48,"healing":0.0},"games_lost":119,"games_played":249,"games_won":130,"kda":3.49,"time_played":117080,"total":{"assists":0,"damage":1789457,"deaths":1202,"eliminations":4192,"healing":0},"winrate":52.21},"genji":{"average":{"assists":0.0,"damage":7012.0,"deaths":10.13,"eliminations":14.97,"healing":0.0},"games_lost":12,"games_played":21,"games_won":9,"kda":1.48,"time_played":10902,"total":{"assists":0,"damage":127408,"deaths":184,"eliminations":272,"healing":0},"winrate":42.86},"hanzo":{"average":{"assists":0.0,"damage":10600.36,"deaths":7.48,"eliminations":17.69,"healing":0.0},"games_lost":46,"games_played":100,"games_won":54,"kda":2.36,"time_played":46337,"total":{"assists":0,"damage":818648,"deaths":578,"eliminations":1366,"healing":0},"winrate":54.0},"junker-queen":{"average":{"assists":0.0,"damage":9453.41,"deaths":6.54,"eliminations":15.69,"healing":0.0},"games_lost":4,"games_played":7,"games_won":3,"kda":2.4,"time_played":3213,"total":{"assists":0,"damage":50623,"deaths":35,"eliminations":84,"healing":0},"winrate":42.86},"junkrat":{"average":{"assists":0.92,"damage":12173.17,"deaths":8.61,"eliminations":16.58,"healing":0.0},"games_lost":23,"games_played":45,"games_won":22,"kda":2.03,"time_played":21599,"total":{"assists":33,"damage":438214,"deaths":310,"eliminations":597,"healing":0},"winrate":48.89},"kiriko":{"average":{"assists":3.77,"damage":2974.32,"deaths":5.89,"eliminations":8.63,"healing":8428.13},"games_lost":68,"games_played":136,"games_won":68,"kda":2.1,"time_played":70150,"total":{"assists":441,"damage":347748,"deaths":689,"eliminations":1009,"healing":985389},"winrate":50.0},"lucio":{"average":{"assists":2.09,"damage":4382.32,"deaths":8.8,"eliminations":13.28,"healing":7118.49},"games_lost":98,"games_played":194,"games_won":96,"kda":1.75,"time_played":96551,"total":{"assists":337,"damage":705196,"deaths":1416,"eliminations":2137,"healing":1145495},"winrate":49.48},"mei":{"average":{"assists":1.15,"damage":5369.24,"deaths":7.73,"eliminations":14.95,"healing":0.0},"games_lost":11,"games_played":20,"games_won":9,"kda":2.08,"time_played":10474,"total":{"assists":20,"damage":93729,"deaths":135,"eliminations":261,"healing":0},"winrate":45.0},"mercy":{"average":{"assists":5.85,"damage":161.79,"deaths":8.14,"eliminations":0.69,"healing":8050.04},"games_lost":116,"games_played":175,"games_won":59,"kda":0.8,"time_played":81706,"total":{"assists":797,"damage":22032,"deaths":1109,"eliminations":94,"healing":1096227},"winrate":33.71},"moira":{"average":{"assists":0.0,"damage":5879.94,"deaths":6.01,"eliminations":21.77,"healing":9407.35},"games_lost":272,"games_played":542,"games_won":270,"kda":3.62,"time_played":251225,"total":{"assists":0,"damage":2461978,"deaths":2515,"eliminations":9114,"healing":3938937},"winrate":49.82},"orisa":{"average":{"assists":10.0,"damage":11150.58,"deaths":6.64,"eliminations":20.09,"healing":0.0},"games_lost":252,"games_played":516,"games_won":264,"kda":4.53,"time_played":228596,"total":{"assists":3810,"damage":4248298,"deaths":2528,"eliminations":7654,"healing":0},"winrate":51.16},"pharah":{"average":{"assists":0.0,"damage":8456.88,"deaths":8.77,"eliminations":15.04,"healing":0.0},"games_lost":25,"games_played":46,"games_won":21,"kda":1.71,"time_played":18944,"total":{"assists":0,"damage":267012,"deaths":277,"eliminations":475,"healing":0},"winrate":45.65},"ramattra":{"average":{"assists":1.66,"damage":8063.69,"deaths":8.31,"eliminations":17.09,"healing":0.0},"games_lost":4,"games_played":4,"games_won":0,"kda":2.26,"time_played":2528,"total":{"assists":7,"damage":33975,"deaths":35,"eliminations":72,"healing":0},"winrate":0.0},"reaper":{"average":{"assists":0.0,"damage":11872.13,"deaths":7.76,"eliminations":22.01,"healing":0.0},"games_lost":29,"games_played":49,"games_won":20,"kda":2.84,"time_played":25348,"total":{"assists":0,"damage":501558,"deaths":328,"eliminations":930,"healing":0},"winrate":40.82},"reinhardt":{"average":{"assists":2.0,"damage":7363.24,"deaths":7.39,"eliminations":15.32,"healing":0.0},"games_lost":1396,"games_played":3010,"games_won":1614,"kda":2.34,"time_played":1333815,"total":{"assists":4436,"damage":16368661,"deaths":16435,"eliminations":34056,"healing":0},"winrate":53.62},"roadhog":{"average":{"assists":5.07,"damage":10450.13,"deaths":6.61,"eliminations":19.73,"healing":0.0},"games_lost":353,"games_played":671,"games_won":318,"kda":3.75,"time_played":329058,"total":{"assists":2780,"damage":5731165,"deaths":3624,"eliminations":10823,"healing":0},"winrate":47.39},"sigma":{"average":{"assists":0.3,"damage":12681.71,"deaths":5.17,"eliminations":21.91,"healing":0.0},"games_lost":20,"games_played":47,"games_won":27,"kda":4.29,"time_played":22265,"total":{"assists":11,"damage":470597,"deaths":192,"eliminations":813,"healing":0},"winrate":57.45},"sojourn":{"average":{"assists":0.0,"damage":6509.8,"deaths":12.42,"eliminations":10.46,"healing":0.0},"games_lost":2,"games_played":2,"games_won":0,"kda":0.84,"time_played":918,"total":{"assists":0,"damage":9960,"deaths":19,"eliminations":16,"healing":0},"winrate":0.0},"soldier-76":{"average":{"assists":0.0,"damage":12316.39,"deaths":7.88,"eliminations":24.09,"healing":1503.2},"games_lost":128,"games_played":275,"games_won":147,"kda":3.06,"time_played":128243,"total":{"assists":0,"damage":2632484,"deaths":1684,"eliminations":5148,"healing":321291},"winrate":53.45},"sombra":{"average":{"assists":6.06,"damage":5858.74,"deaths":7.79,"eliminations":13.5,"healing":0.0},"games_lost":5,"games_played":7,"games_won":2,"kda":2.51,"time_played":3466,"total":{"assists":35,"damage":33844,"deaths":45,"eliminations":78,"healing":0},"winrate":28.57},"symmetra":{"average":{"assists":0.0,"damage":9108.41,"deaths":9.23,"eliminations":17.03,"healing":0.0},"games_lost":6,"games_played":10,"games_won":4,"kda":1.84,"time_played":3769,"total":{"assists":0,"damage":57216,"deaths":58,"eliminations":107,"healing":0},"winrate":40.0},"torbjorn":{"average":{"assists":0.0,"damage":8593.46,"deaths":5.79,"eliminations":17.36,"healing":0.0},"games_lost":1,"games_played":5,"games_won":4,"kda":3.0,"time_played":2385,"total":{"assists":0,"damage":34159,"deaths":23,"eliminations":69,"healing":0},"winrate":80.0},"tracer":{"average":{"assists":0.0,"damage":8318.17,"deaths":9.3,"eliminations":21.3,"healing":0.0},"games_lost":88,"games_played":150,"games_won":62,"kda":2.29,"time_played":76010,"total":{"assists":0,"damage":1053773,"deaths":1178,"eliminations":2698,"healing":0},"winrate":41.33},"widowmaker":{"average":{"assists":0.0,"damage":6921.52,"deaths":8.19,"eliminations":16.09,"healing":0.0},"games_lost":14,"games_played":23,"games_won":9,"kda":1.96,"time_played":10331,"total":{"assists":0,"damage":119177,"deaths":141,"eliminations":277,"healing":0},"winrate":39.13},"winston":{"average":{"assists":0.0,"damage":6062.69,"deaths":8.44,"eliminations":19.15,"healing":0.0},"games_lost":243,"games_played":444,"games_won":201,"kda":2.27,"time_played":217064,"total":{"assists":0,"damage":2193318,"deaths":3055,"eliminations":6929,"healing":0},"winrate":45.27},"zarya":{"average":{"assists":2.59,"damage":8885.44,"deaths":6.27,"eliminations":20.8,"healing":0.0},"games_lost":811,"games_played":1747,"games_won":936,"kda":3.73,"time_played":811799,"total":{"assists":3506,"damage":12021985,"deaths":8483,"eliminations":28143,"healing":0},"winrate":53.58},"zenyatta":{"average":{"assists":17.95,"damage":7900.81,"deaths":7.47,"eliminations":18.3,"healing":5075.94},"games_lost":567,"games_played":1368,"games_won":801,"kda":4.85,"time_played":613300,"total":{"assists":18347,"damage":8075949,"deaths":7635,"eliminations":18704,"healing":5188461},"winrate":58.55}},"roles":{"damage":{"average":{"assists":0.07,"damage":11304.33,"deaths":7.98,"eliminations":21.57,"healing":239.41},"games_lost":827,"games_played":1713,"games_won":886,"kda":2.71,"time_played":805197,"total":{"assists":88,"damage":15170355,"deaths":10704,"eliminations":28947,"healing":321291},"winrate":51.72},"support":{"average":{"assists":8.52,"damage":5501.46,"deaths":7.19,"eliminations":14.43,"healing":6975.32},"games_lost":2117,"games_played":4278,"games_won":2161,"kda":3.19,"time_played":1989916,"total":{"assists":28271,"damage":18245737,"deaths":23860,"eliminations":47846,"healing":23133830},"winrate":50.51},"tank":{"average":{"assists":2.84,"damage":8396.93,"deaths":6.97,"eliminations":18.15,"healing":0.0},"games_lost":3210,"games_played":6711,"games_won":3501,"kda":3.01,"time_played":3073570,"total":{"assists":14550,"damage":43014278,"deaths":35725,"eliminations":92979,"healing":0},"winrate":52.17}}}},"PlayerSummary":{"properties":{"username":{"type":"string","title":"Username","description":"Username of the player","examples":["TeKrop"]},"avatar":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Avatar","description":"URL of the player's avatar. Can be null if couldn't retrieve any","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/daeddd96e58a2150afa6ffc3c5503ae7f96afc2e22899210d444f45dee508c6c.png"]},"namecard":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Namecard","description":"URL of the player's namecard (or banner) if any","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/55d8c21e9d8b14942c26c4028059b6cd3b4e2fea40a139821ecee73a0005126f.png"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Title of the player if any","examples":["Bytefixer"]},"endorsement":{"anyOf":[{"$ref":"#/components/schemas/PlayerEndorsement"},{"type":"null"}],"description":"Player endorsement details"},"competitive":{"anyOf":[{"$ref":"#/components/schemas/PlayerCompetitiveRanksContainer"},{"type":"null"}],"description":"Competitive ranking in the last season played by the player in different roles depending on the platform. If the career is private or if the player doesn't play competitive at all, it's null."},"last_updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timestamp","description":"Last time the player profile was updated on Blizzard (timestamp). Can be null if couldn't retrieve any","examples":[1704209332]}},"type":"object","required":["username","title","endorsement","competitive"],"title":"PlayerSummary"},"RateLimitErrorMessage":{"properties":{"error":{"type":"string","title":"Error","description":"Message describing the nginx rate limit error","examples":["API rate limit reached, please wait for 1 second before retrying"]}},"type":"object","required":["error"],"title":"RateLimitErrorMessage"},"Role":{"type":"string","enum":["damage","support","tank"],"title":"Role","description":"Overwatch heroes roles"},"RoleDetail":{"properties":{"key":{"$ref":"#/components/schemas/Role","description":"Key name of the role","examples":["damage"]},"name":{"type":"string","title":"Name","description":"Name of the role","examples":["Damage"]},"icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Icon","description":"Icon URL of the role","examples":["https://blz-contentstack-images.akamaized.net/v3/assets/blt9c12f249ac15c7ec/bltc1d840ba007f88a8/62ea89572fdd1011027e605d/Damage.svg"]},"description":{"type":"string","title":"Description","description":"Description of the role","examples":["Damage heroes seek out, engage, and obliterate the enemy with wide-ranging tools, abilities, and play styles. Fearsome but fragile, these heroes require backup to survive."]}},"type":"object","required":["key","name","icon","description"],"title":"RoleDetail"},"SingleCareerStat":{"properties":{"key":{"type":"string","title":"Key","description":"Statistic key"},"label":{"type":"string","title":"Label","description":"Statistic label"},"value":{"anyOf":[{"type":"integer"},{"type":"number"}],"title":"Value","description":"Statistic value"}},"type":"object","required":["key","label","value"],"title":"SingleCareerStat"},"StadiumPower":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the power","examples":["Quick Draw"]},"description":{"type":"string","title":"Description","description":"Description of the power","examples":["After using Combat Roll, Peacekeeper's next primary fire can auto-aim within 15m while under cooldown."]},"icon":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Icon","description":"Icon URL of the power","examples":["https://d15f34w2p8l1cc.cloudfront.net/overwatch/4ccb06c8fa111bf0cbe6d0c7812917df89a44f949601e24844b1fae0c3b89d4e.png"]}},"type":"object","required":["name","description","icon"],"title":"StadiumPower"},"StatsSummary":{"properties":{"games_played":{"type":"integer","minimum":0.0,"title":"Games Played","description":"Number of games played"},"games_won":{"type":"integer","minimum":0.0,"title":"Games Won","description":"Number of games won"},"games_lost":{"type":"integer","minimum":0.0,"title":"Games Lost","description":"Number of games lost"},"time_played":{"type":"integer","minimum":0.0,"title":"Time Played","description":"Time played (in seconds)"},"winrate":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Winrate","description":"Winrate (in percent)"},"kda":{"type":"number","minimum":0.0,"title":"Kda","description":"Kill / Death / Assist ratio"},"total":{"$ref":"#/components/schemas/TotalStatsSummary","description":"Total values for generic stats : eliminations, assists, deaths, damage, healing"},"average":{"$ref":"#/components/schemas/AverageStatsSummary","description":"Average values per 10 minutes for generic stats : eliminations, assists, deaths, damage, healing"}},"type":"object","required":["games_played","games_won","games_lost","time_played","winrate","kda","total","average"],"title":"StatsSummary"},"Story":{"properties":{"summary":{"type":"string","title":"Summary","description":"Brief summary of the origin story of the hero","examples":["A founding member of the notorious Deadlock Gang, Cassidy was eventually coerced into joining Blackwatch, Overwatch's covert-ops division. He came to believe he could make amends for his past by righting the world's injustices. But when Overwatch fell, Cassidy went underground, resurfacing later as a gunslinger for hire, fighting only for causes he believes are just."]},"media":{"anyOf":[{"$ref":"#/components/schemas/Media"},{"type":"null"}],"description":"Media concerning the hero (YouTube video, pdf story, etc.)"},"chapters":{"items":{"$ref":"#/components/schemas/StoryChapter"},"type":"array","title":"Chapters of the story","description":"List of chapters concerning the story of the hero"}},"type":"object","required":["summary","media","chapters"],"title":"Story"},"StoryChapter":{"properties":{"title":{"type":"string","title":"Title","description":"Title of the chapter","examples":["Blackwatch"]},"content":{"type":"string","title":"Content","description":"Content of the chapter","examples":["Cassidy had already made a name for himself as a member of the notorious Deadlock Rebels Gang, when he and his associates were busted in an Overwatch sting operation. With his expert marksmanship and resourcefulness, he was given the choice between rotting in a maximum-security lockup and joining Blackwatch, Overwatch's covert ops division. He chose the latter. Although he was initially cynical, he came to believe that he could make amends for his past sins by righting the injustices of the world. Cassidy appreciated the flexibility afforded to the clandestine Blackwatch, unhindered by bureaucracy and red tape. But as Overwatch's influence waned, rogue elements within Blackwatch sought to bring down the organization and turn it to their own ends. After the destruction of Overwatch's Swiss HQ, Cassidy wanted no part of the infighting. He set off alone and went underground."]},"picture":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Picture","description":"URL of the picture illustrating the chapter","examples":["https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt1683656b69bedff7/638808d0273de01068bb2806/cassidy-01.jpg"]}},"type":"object","required":["title","content","picture"],"title":"StoryChapter"},"SubRole":{"type":"string","enum":["flanker","recon","sharpshooter","specialist","medic","survivor","tactician","bruiser","initiator","stalwart"],"title":"SubRole","description":"Overwatch heroes Sub-Roles"},"TotalStatsSummary":{"properties":{"eliminations":{"type":"integer","minimum":0.0,"title":"Eliminations","description":"Total number of eliminations"},"assists":{"type":"integer","minimum":0.0,"title":"Assists","description":"Total number of assists"},"deaths":{"type":"integer","minimum":0.0,"title":"Deaths","description":"Total number of deaths"},"damage":{"type":"integer","minimum":0.0,"title":"Damage","description":"Total damage done"},"healing":{"type":"integer","minimum":0.0,"title":"Healing","description":"Total healing done"}},"type":"object","required":["eliminations","assists","deaths","damage","healing"],"title":"TotalStatsSummary"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"🦸 Heroes","description":"Overwatch heroes details : lore, abilities, etc.","externalDocs":{"description":"Blizzard heroes page, source of the information","url":"https://overwatch.blizzard.com/en-us/heroes/"}},{"name":"🎲 Gamemodes","description":"Overwatch gamemodes details","externalDocs":{"description":"Overwatch home page, source of the information","url":"https://overwatch.blizzard.com/en-us/"}},{"name":"🗺️ Maps","description":"Overwatch maps details"},{"name":"🎮 Players","description":"Overwatch players data : summary, statistics, etc.\n\nIn player career statistics, various conversions are applied for ease of use:\n- **Duration values** are converted to **seconds** (integer)\n- **Percent values** are represented as **integers**, omitting the percent symbol\n- Integer and float string representations are converted to their respective types\n","externalDocs":{"description":"Blizzard profile pages, source of the information","url":"https://overwatch.blizzard.com/en-us/search/"}}]}