-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathopenapi.json
More file actions
1 lines (1 loc) · 317 KB
/
Copy pathopenapi.json
File metadata and controls
1 lines (1 loc) · 317 KB
1
{"openapi":"3.1.0","info":{"title":"Deadlock API","description":"\n## API Clients\n\nWe have auto generated and updated clients for many languages. You can find them here: [https://github.com/deadlock-api/openapi-clients](https://github.com/deadlock-api/openapi-clients)\n\n## Support the Deadlock API\n\nWhether you're building your own database, developing data science projects, or enhancing your website with game and player analytics, the Deadlock API has the data you need.\n\nYour sponsorship helps keep this resource open, free and future-proof for everyone. By supporting the Deadlock API, you will enable continued development, new features and reliable access for developers, analysts and streamers worldwide.\n\nHelp us continue to provide the data you need - sponsor the Deadlock API today!\n\n**-> You can Sponsor the Deadlock API on [Patreon](https://www.patreon.com/c/user?u=68961896) or [GitHub](https://github.com/sponsors/raimannma)**\n\n## Disclaimer\n_deadlock-api.com is not endorsed by Valve and does not reflect the views or opinions of Valve or anyone officially involved in producing or managing Valve properties. Valve and all associated properties are trademarks or registered trademarks of Valve Corporation_\n ","contact":{"name":"Deadlock API - Discord","url":"https://discord.gg/XMF9Xrgfqu"},"license":{"name":"MIT","url":"https://github.com/deadlock-api/deadlock-api/blob/master/LICENSE"},"version":"0.1.0"},"servers":[{"url":"https://api.deadlock-api.com"}],"paths":{"/v1/analytics/ability-order-stats":{"get":{"tags":["Analytics"],"summary":"Ability Order Stats","description":"\nRetrieves statistics for the ability order of a hero.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"ability_order_stats","parameters":[{"name":"hero_id","in":"query","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_ability_upgrades","in":"query","description":"Filter players based on their minimum number of ability upgrades over the whole match.","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":16,"minimum":0}},{"name":"max_ability_upgrades","in":"query","description":"Filter players based on their maximum number of ability upgrades over the whole match.","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":16,"minimum":1}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for an ability order to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":20,"minimum":1}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include (only players who have purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude (only players who have not purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}}],"responses":{"200":{"description":"Ability Order Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsAbilityOrderStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch ability order stats"}}}},"/v1/analytics/badge-distribution":{"get":{"tags":["Analytics"],"summary":"Badge Distribution","description":"\nThis endpoint returns the player badge distribution.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"badge_distribution","parameters":[{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"is_high_skill_range_parties","in":"query","description":"Filter matches based on whether they are in the high skill range.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_low_pri_pool","in":"query","description":"Filter matches based on whether they are in the low priority pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_new_player_pool","in":"query","description":"Filter matches based on whether they are in the new player pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"Badge Distribution","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BadgeDistribution"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch badge distribution"}}}},"/v1/analytics/build-item-stats":{"get":{"tags":["Analytics"],"summary":"Build Item Stats","description":"\nRetrieves item statistics from hero builds.\n\nResults are cached for **1 hour** based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"build_item_stats","parameters":[{"name":"hero_id","in":"query","description":"Filter builds based on the hero ID. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"min_last_updated_unix_timestamp","in":"query","description":"Filter builds based on their last updated time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_last_updated_unix_timestamp","in":"query","description":"Filter builds based on their last updated time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}}],"responses":{"200":{"description":"Build Item Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BuildItemStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch build item stats"}}}},"/v1/analytics/game-stats":{"get":{"tags":["Analytics"],"summary":"Game Stats","description":"\nRetrieves aggregate game-level statistics.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"game_stats","parameters":[{"name":"bucket","in":"query","description":"Bucket allows you to group the stats by a specific field.","required":false,"schema":{"type":"string","enum":["no_bucket","avg_badge","start_time_hour","start_time_day","start_time_week","start_time_month"]}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>\nOnly works for `game_modes` with badge data (e.g. `normal`, not `street_brawl`).","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>\nOnly works for `game_modes` with badge data (e.g. `normal`, not `street_brawl`).","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"hero_ids","in":"query","description":"Comma separated list of hero ids to include. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include (only players who have purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude (only players who have not purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Game Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsGameStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch game stats"}}}},"/v1/analytics/hero-ban-stats":{"get":{"tags":["Analytics"],"summary":"Hero Ban Stats","description":"\nRetrieves ban statistics for each hero based on historical match data from demo analysis.\n\nOnly matches with successfully extracted ban data are included. Matches where ban extraction failed (empty `banned_hero_ids`) are excluded entirely.\n\nResults are cached for **1 hour** based on the combination of query parameters provided.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_ban_stats","parameters":[{"name":"bucket","in":"query","description":"Bucket allows you to group the stats by a specific field.","required":false,"schema":{"type":"string","enum":["no_bucket","avg_badge","start_time_hour","start_time_day","start_time_week","start_time_month"]}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago. **Minimum:** March 1, 2026.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"Hero Ban Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroBanStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero ban stats"}}}},"/v1/analytics/hero-build-stats/{hero_id}":{"get":{"tags":["Analytics"],"summary":"Hero Build Stats","description":"\nRetrieves performance statistics for hero builds based on historical match data from demo analysis.\n\nOnly includes builds that exist in the hero builds database.\n\nThe `hero_build_id` is the first build the player had selected when the game started. It does not reflect any build changes made during the match.\n\nResults are cached for **1 hour** based on the combination of query parameters provided.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_build_stats","parameters":[{"name":"hero_id","in":"path","description":"The hero ID to fetch build stats for. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago. **Minimum:** March 1, 2026.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"hero_build_id","in":"query","description":"Filter results for a specific hero build.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for a build to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":20,"minimum":1}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Build Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroBuildStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero build stats"}}}},"/v1/analytics/hero-comb-stats":{"get":{"tags":["Analytics"],"summary":"Hero Comb Stats","description":"\nRetrieves overall statistics for each hero combination.\n\nResults are cached for **1 hour**. The cache key is determined by the specific combination of filter parameters used in the query. Subsequent requests using the exact same filters within this timeframe will receive the cached response.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_comb_stats","parameters":[{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"include_hero_ids","in":"query","description":"Comma separated list of hero ids to include. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_hero_ids","in":"query","description":"Comma separated list of hero ids to exclude. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"include_enemy_hero_ids","in":"query","description":"Comma separated list of enemy hero ids to include. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_enemy_hero_ids","in":"query","description":"Comma separated list of enemy hero ids to exclude. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":20,"minimum":1}},{"name":"max_matches","in":"query","description":"The maximum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"comb_size","in":"query","description":"The combination size to return.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":6,"maximum":6,"minimum":2}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Comb Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroCombStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero comb stats"}}}},"/v1/analytics/hero-counter-stats":{"get":{"tags":["Analytics"],"summary":"Hero Counter Stats","description":"\nRetrieves hero-versus-hero matchup statistics based on historical match data.\n\nThis endpoint analyzes completed matches to calculate how often a specific hero (`hero_id`) wins against an enemy hero (`enemy_hero_id`) and the total number of times they have faced each other under the specified filter conditions.\n\nResults are cached for **1 hour** based on the combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_counters_stats","parameters":[{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_enemy_networth","in":"query","description":"Filter enemy players based on their net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_enemy_networth","in":"query","description":"Filter enemy players based on their net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"same_lane_filter","in":"query","description":"When `true`, only considers matchups where both `hero_id` and `enemy_hero_id` were assigned to the same lane (e.g., both Mid Lane). When `false`, considers all matchups regardless of assigned lane.","required":false,"schema":{"type":["boolean","null"],"default":true}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":20,"minimum":1}},{"name":"max_matches","in":"query","description":"The maximum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Counter Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroCounterStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero counter stats"}}}},"/v1/analytics/hero-stats":{"get":{"tags":["Analytics"],"summary":"Hero Stats","description":"\nRetrieves performance statistics for each hero based on historical match data.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_stats","parameters":[{"name":"bucket","in":"query","description":"Bucket allows you to group the stats by a specific field.","required":false,"schema":{"type":"string","enum":["no_bucket","avg_badge","start_time_hour","start_time_day","start_time_week","start_time_month"]}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_hero_matches","in":"query","description":"Filter players based on the number of matches they have played with a specific hero within the filtered time range.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_hero_matches","in":"query","description":"Filter players based on the number of matches they have played with a specific hero within the filtered time range.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_hero_matches_total","in":"query","description":"Filter players based on the number of matches they have played with a specific hero in their entire history.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_hero_matches_total","in":"query","description":"Filter players based on the number of matches they have played with a specific hero in their entire history.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include (only players who have purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude (only players who have not purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsHeroStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero stats"}}}},"/v1/analytics/hero-synergy-stats":{"get":{"tags":["Analytics"],"summary":"Hero Synergy Stats","description":"\nRetrieves hero pair synergy statistics based on historical match data.\n\nThis endpoint analyzes completed matches to calculate how often a specific pair of heroes (`hero_id1` and `hero_id2`) won when playing *together on the same team*, and the total number of times they have played together under the specified filter conditions.\n\nResults are cached for **1 hour** based on the combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_synergies_stats","parameters":[{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"same_lane_filter","in":"query","description":"When `true`, only considers matchups where both `hero_id1` and `hero_id2` were assigned to the same lane (e.g., both Mid Lane). When `false`, considers all matchups regardless of assigned lane.","required":false,"schema":{"type":["boolean","null"],"default":true}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":20,"minimum":1}},{"name":"max_matches","in":"query","description":"The maximum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Synergy Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroSynergyStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero synergy stats"}}}},"/v1/analytics/item-flow-stats":{"get":{"tags":["Analytics"],"summary":"Item Flow Stats","description":"\nRetrieves item build-flow statistics: per-phase item win/pick rates and the transitions between them.\n\nItems are grouped into columns by the in-match phase they were bought in (controlled by\n`phase_interval_s` and `phase_count`). The response contains `nodes` (items aggregated within a phase)\nand `edges` (transitions between an item and items in the next phase). A locked build path can be\nsupplied via `locked_item_ids` / `locked_columns` to restrict the population to players who bought\nthose items in the given stage columns.\n\nEach node also carries `adjusted_win_rate`: the item's win rate standardized to the stage's\nnet-worth-at-buy distribution. Because players who are already ahead have more souls and buy items\nsooner, raw win rate is heavily confounded by wealth; the adjusted figure re-weights each item's win\nrate across net-worth buckets to the stage-wide distribution, isolating the item's contribution from\nthe buyer's lead. It is still observational, not a controlled/causal estimate. `reached_per_column`\ngives the distinct baseline games that bought any upgrade in each column, so consumers can show how\nsurvivorship-selected (e.g. long-game-only) a late stage is.\n\nResults are cached for **1 hour** based on the unique combination of query parameters provided.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"item_flow_stats","parameters":[{"name":"phase_interval_s","in":"query","description":"Deprecated/unused. `normal` mode uses fixed phase boundaries (0-9m, 9-20m, 20-30m, 30m+)\naligned to the stats time-series; `street_brawl` columns are rounds.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":600,"minimum":1}},{"name":"phase_count","in":"query","description":"Number of columns for `street_brawl` (rounds). Ignored for `normal`, which has fixed time\nphases. **Default:** 4.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":4,"maximum":12,"minimum":2}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_matches","in":"query","description":"The minimum number of matches for a node or edge to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":20,"minimum":1}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include (only players who have purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude (only players who have not purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"locked_item_ids","in":"query","description":"Comma separated list of item ids forming a \"locked\" build path. Pairs positionally with\n`locked_columns`: the i-th item must have been bought in the i-th `locked_columns` stage.\nSee more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"locked_columns","in":"query","description":"Comma separated 0-based stage column indices for each `locked_item_ids` entry (time phase for\n`normal`, round for `street_brawl`). Must have the same length as `locked_item_ids`.","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}}],"responses":{"200":{"description":"Item Flow Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemFlowStats"}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch item flow stats"}}}},"/v1/analytics/item-permutation-stats":{"get":{"tags":["Analytics"],"summary":"Item Permutation Stats","description":"\nRetrieves item permutation statistics based on historical match data.\n\nResults are cached for **1 hour** based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"item_permutation_stats","parameters":[{"name":"item_ids","in":"query","description":"Comma separated list of item ids. See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"comb_size","in":"query","description":"The combination size to return.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":2,"maximum":12,"minimum":2}},{"name":"min_matches","in":"query","description":"The minimum number of matches for an item combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":20,"minimum":1}},{"name":"max_matches","in":"query","description":"The maximum number of matches for an item combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"hero_id","in":"query","description":"Filter matches based on the hero ID. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Item Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItemPermutationStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch item stats"}}}},"/v1/analytics/item-stats":{"get":{"tags":["Analytics"],"summary":"Item Stats","description":"\nRetrieves item statistics based on historical match data.\n\nResults are cached for **6 hours** based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"item_stats","parameters":[{"name":"bucket","in":"query","description":"Bucket allows you to group the stats by a specific field.","required":false,"schema":{"type":"string","enum":["no_bucket","hero","team","start_time_hour","start_time_day","start_time_week","start_time_month","game_time_min","game_time_normalized_percentage","net_worth_by_1000","net_worth_by_2000","net_worth_by_3000","net_worth_by_5000","net_worth_by_10000"]}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"hero_id","in":"query","description":"Filter matches based on the hero ID. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"enemy_hero_ids","in":"query","description":"Filter to matches where one or more of these heroes were on the opposing team. Comma separated. When set, returns \"what items beat hero(es) X?\" stats. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"enemy_hero_ids_all_match","in":"query","description":"When `true`, requires *all* of the specified `enemy_hero_ids` to be on the same enemy team. When `false` (default), matches if *any* of the specified hero(es) are on the enemy team. Ignored when `enemy_hero_ids` is unset.","required":false,"schema":{"type":["boolean","null"]}},{"name":"min_enemy_networth","in":"query","description":"Filter the specified enemy hero(es) by their final net worth. Ignored when `enemy_hero_ids` is unset.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_enemy_networth","in":"query","description":"Filter the specified enemy hero(es) by their final net worth. Ignored when `enemy_hero_ids` is unset.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"same_lane_filter","in":"query","description":"When `true`, only counts buyers in the same `assigned_lane` as one of the specified enemy heroes. Ignored when `enemy_hero_ids` is unset. **Default:** `false`.","required":false,"schema":{"type":["boolean","null"]}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include. See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude. See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for an item to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":20,"minimum":1}},{"name":"max_matches","in":"query","description":"The maximum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}},{"name":"min_bought_at_s","in":"query","description":"Filter items bought after this game time (seconds).","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"max_bought_at_s","in":"query","description":"Filter items bought before this game time (seconds).","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"item_order","in":"query","description":"Filter by purchase order. Each value is a comma-separated, ordered list of item\nids (e.g. `1396247347,3977876567`). This is a *constraint*, not an inclusion\nfilter: for each adjacent pair in the list, a match is excluded only when the\nplayer bought **both** items but bought the later one first. Builds missing\neither item are unaffected. Repeat the parameter for multiple independent\norderings. See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}}],"responses":{"200":{"description":"Item Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItemStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch item stats"}}}},"/v1/analytics/kill-death-stats":{"get":{"tags":["Analytics"],"summary":"Kill Death Stats","description":"\nThis endpoint returns the kill-death statistics across a 128x128 pixel raster.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"kill_death_stats","parameters":[{"name":"team","in":"query","description":"Filter by team number.","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":1,"minimum":0}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"account_ids","in":"query","description":"Filter matches by account IDs of players that participated in the match.","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"is_high_skill_range_parties","in":"query","description":"Filter matches based on whether they are in the high skill range.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_low_pri_pool","in":"query","description":"Filter matches based on whether they are in the low priority pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_new_player_pool","in":"query","description":"Filter matches based on whether they are in the new player pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_kills_per_raster","in":"query","description":"Filter Raster cells based on minimum kills.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"max_kills_per_raster","in":"query","description":"Filter Raster cells based on maximum kills.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"min_deaths_per_raster","in":"query","description":"Filter Raster cells based on minimum deaths.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"max_deaths_per_raster","in":"query","description":"Filter Raster cells based on maximum deaths.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"min_game_time_s","in":"query","description":"Filter kills based on their game time.","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":7000,"minimum":0}},{"name":"max_game_time_s","in":"query","description":"Filter kills based on their game time.","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":7000,"minimum":0}}],"responses":{"200":{"description":"Kill Death Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KillDeathStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch kill death stats"}}}},"/v1/analytics/player-performance-curve":{"get":{"tags":["Analytics"],"summary":"Player Performance Curve","description":"\nRetrieves player performance statistics (net worth, kills, deaths, assists) over time throughout matches.\n\nResults are cached for **1 hour** based on the unique combination of query parameters provided.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"player_performance_curve","parameters":[{"name":"resolution","in":"query","description":"Resolution for relative game times in percent (0-100).\n**Default:** 10 (buckets of 10%).\nSet to **0** to use absolute game time (seconds).","required":false,"schema":{"type":["integer","null"],"format":"int32","default":10,"maximum":100,"minimum":0}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include (only players who have purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude (only players who have not purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Player Performance Curve","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerPerformanceCurvePoint"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch player performance curve"}}}},"/v1/analytics/player-stats/metrics":{"get":{"tags":["Analytics"],"summary":"Player Stats Metrics","description":"\nReturns comprehensive statistical analysis of player performance.\n\nResults are cached for **1 hour** based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.\n\n> Note: Quantiles are calculated using the [DDSketch](https://www.vldb.org/pvldb/vol12/p2195-masson.pdf) algorithm, so they are not exact but have a maximum relative error of 0.01.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"player_stats_metrics","parameters":[{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_matches","in":"query","description":"The maximum number of matches to analyze.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include (only players who have purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude (only players who have not purchased these items). See more: <https://api.deadlock-api.com/v1/assets/items>","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HashMap"}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch player stats metrics"}}}},"/v1/analytics/scoreboards/heroes":{"get":{"tags":["Analytics"],"summary":"Hero Scoreboard","description":"\nThis endpoint returns the hero scoreboard.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"hero_scoreboard","parameters":[{"name":"sort_by","in":"query","description":"The field to sort by.","required":true,"schema":{"type":"string","enum":["matches","wins","losses","winrate","max_kills_per_match","avg_kills_per_match","kills","max_deaths_per_match","avg_deaths_per_match","deaths","max_damage_taken_per_match","avg_damage_taken_per_match","damage_taken","max_assists_per_match","avg_assists_per_match","assists","max_net_worth_per_match","avg_net_worth_per_match","net_worth","max_last_hits_per_match","avg_last_hits_per_match","last_hits","max_denies_per_match","avg_denies_per_match","denies","max_player_level_per_match","avg_player_level_per_match","player_level","max_creep_kills_per_match","avg_creep_kills_per_match","creep_kills","max_neutral_kills_per_match","avg_neutral_kills_per_match","neutral_kills","max_creep_damage_per_match","avg_creep_damage_per_match","creep_damage","max_player_damage_per_match","avg_player_damage_per_match","player_damage","max_neutral_damage_per_match","avg_neutral_damage_per_match","neutral_damage","max_boss_damage_per_match","avg_boss_damage_per_match","boss_damage","max_max_health_per_match","avg_max_health_per_match","max_health","max_shots_hit_per_match","avg_shots_hit_per_match","shots_hit","max_shots_missed_per_match","avg_shots_missed_per_match","shots_missed","max_hero_bullets_hit_per_match","avg_hero_bullets_hit_per_match","hero_bullets_hit","max_hero_bullets_hit_crit_per_match","avg_hero_bullets_hit_crit_per_match","hero_bullets_hit_crit"]}},{"name":"sort_direction","in":"query","description":"The direction to sort heroes in.","required":false,"schema":{"type":"string","enum":["desc","asc"]}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_matches","in":"query","description":"Filter by min number of matches played.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"account_id","in":"query","description":"Filter for matches with a specific player account ID.","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Hero Scoreboard","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroEntry"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero scoreboard"}}}},"/v1/analytics/scoreboards/players":{"get":{"tags":["Analytics"],"summary":"Player Scoreboard","description":"\nThis endpoint returns the player scoreboard.\n\n### Rate Limits:\n> The rate limits below are **shared across all analytics endpoints**.\n\n| Type | Limit |\n| ---- | ----- |\n| IP | 200req/min |\n| Key | 400req/min |\n| Global | 2000req/min |\n ","operationId":"player_scoreboard","parameters":[{"name":"sort_by","in":"query","description":"The field to sort by.","required":true,"schema":{"type":"string","enum":["matches","wins","losses","winrate","max_kills_per_match","avg_kills_per_match","kills","max_deaths_per_match","avg_deaths_per_match","deaths","max_damage_taken_per_match","avg_damage_taken_per_match","damage_taken","max_assists_per_match","avg_assists_per_match","assists","max_net_worth_per_match","avg_net_worth_per_match","net_worth","max_last_hits_per_match","avg_last_hits_per_match","last_hits","max_denies_per_match","avg_denies_per_match","denies","max_player_level_per_match","avg_player_level_per_match","player_level","max_creep_kills_per_match","avg_creep_kills_per_match","creep_kills","max_neutral_kills_per_match","avg_neutral_kills_per_match","neutral_kills","max_creep_damage_per_match","avg_creep_damage_per_match","creep_damage","max_player_damage_per_match","avg_player_damage_per_match","player_damage","max_neutral_damage_per_match","avg_neutral_damage_per_match","neutral_damage","max_boss_damage_per_match","avg_boss_damage_per_match","boss_damage","max_max_health_per_match","avg_max_health_per_match","max_health","max_shots_hit_per_match","avg_shots_hit_per_match","shots_hit","max_shots_missed_per_match","avg_shots_missed_per_match","shots_missed","max_hero_bullets_hit_per_match","avg_hero_bullets_hit_per_match","hero_bullets_hit","max_hero_bullets_hit_crit_per_match","avg_hero_bullets_hit_crit_per_match","hero_bullets_hit_crit"]}},{"name":"sort_direction","in":"query","description":"The direction to sort players in.","required":false,"schema":{"type":"string","enum":["desc","asc"]}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"hero_id","in":"query","description":"Filter matches based on the hero ID. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"min_matches","in":"query","description":"The minimum number of matches played for a player to be included in the scoreboard.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":20,"minimum":1}},{"name":"max_matches","in":"query","description":"The maximum number of matches played for a hero combination to be included in the response.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":1}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"start","in":"query","description":"The offset to start fetching players from.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"limit","in":"query","description":"The maximum number of players to fetch.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":"100","maximum":10000,"minimum":1}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"Player Scoreboard","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerEntry"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch player scoreboard"}}}},"/v1/assets/accolades":{"get":{"tags":["Accolades"],"summary":"List Accolades","description":"Returns the per-accolade metadata used by the game client, parsed from the patch's KV3 source files.","operationId":"list_accolades","parameters":[{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Accolade"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/accolades/by-name/{name}":{"get":{"tags":["Accolades"],"summary":"Get Accolade By Name","description":"Returns a single accolade by `class_name` or `tracked_stat_name` (case-insensitive).","operationId":"get_accolade_by_name","parameters":[{"name":"name","in":"path","description":"Accolade `class_name` (e.g. `kills`) or `tracked_stat_name`","required":true,"schema":{"type":"string"}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Accolade"}}}},"404":{"description":"Unknown accolade name or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/accolades/{accolade_id}":{"get":{"tags":["Accolades"],"summary":"Get Accolade","description":"Returns a single accolade by id.","operationId":"get_accolade","parameters":[{"name":"accolade_id","in":"path","description":"Accolade id (`m_unAccoladeID`)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Accolade"}}}},"404":{"description":"Unknown accolade id or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/build-tags":{"get":{"tags":["Build Tags"],"summary":"List Build Tags","description":"Returns the build tag taxonomy used by the game client, derived from per-version localization keys.","operationId":"list_build_tags","parameters":[{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BuildTag"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/build-tags/by-name/{name}":{"get":{"tags":["Build Tags"],"summary":"Get Build Tag By Name","description":"Returns a single build tag by `class_name` (case-insensitive).","operationId":"get_build_tag_by_name","parameters":[{"name":"name","in":"path","description":"Build tag `class_name` (e.g. `citadel_build_tag_weapon`)","required":true,"schema":{"type":"string"}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildTag"}}}},"404":{"description":"Unknown build tag name or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/build-tags/{build_tag_id}":{"get":{"tags":["Build Tags"],"summary":"Get Build Tag","description":"Returns a single build tag by id.","operationId":"get_build_tag","parameters":[{"name":"build_tag_id","in":"path","description":"Build tag id (murmurhash2 of `class_name`)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildTag"}}}},"404":{"description":"Unknown build tag id or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/client-versions":{"get":{"tags":["Client Versions"],"summary":"List Client Versions","description":"Returns all known Deadlock client/game versions for which versioned assets are available, sorted ascending (oldest first).","operationId":"list_client_versions","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/colors":{"get":{"tags":["Colors"],"summary":"List Colors","description":"Panorama color palette (`@define <name>: #RRGGBB[AA];` declarations from `citadel_base_styles.css`), keyed by `snake_case` name.","operationId":"list_colors","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Color"},"propertyNames":{"type":"string"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/fonts":{"get":{"tags":["Assets Bucket"],"summary":"Fonts Index","description":"Nested file-tree of all hosted fonts, mapping each name to its public CDN URL.","operationId":"fonts","responses":{"200":{"description":"","content":{"application/json":{"schema":{}}}},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/generic-data":{"get":{"tags":["Generic Data"],"summary":"Get Generic Data","description":"Returns the game-wide generic configuration (street brawl, lane info, glitch settings, damage flash, item draft, etc.) parsed from the patch's `generic_data.vdata` KV3 source file.","operationId":"get_generic_data","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericData"}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/heroes":{"get":{"tags":["Heroes"],"summary":"List Heroes","description":"Returns the per-hero metadata used by the game client, parsed from the patch's KV3 source files.","operationId":"list_heroes","parameters":[{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"only_active","in":"query","description":"When true, hides heroes that aren't player-selectable or are disabled / in-development.","required":false,"schema":{"type":["boolean","null"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hero"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/heroes/by-name/{name}":{"get":{"tags":["Heroes"],"summary":"Get Hero By Name","description":"Returns a single hero by `class_name` or display `name`. Matches the bare value as well as the `hero_`-prefixed form.","operationId":"get_hero_by_name","parameters":[{"name":"name","in":"path","description":"Hero class name (e.g. `hero_atlas`) or short name (e.g. `atlas`)","required":true,"schema":{"type":"string"}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hero"}}}},"404":{"description":"Unknown hero name or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/heroes/{hero_id}":{"get":{"tags":["Heroes"],"summary":"Get Hero","description":"Returns a single hero by id.","operationId":"get_hero","parameters":[{"name":"hero_id","in":"path","description":"Hero id (`m_HeroID`)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hero"}}}},"404":{"description":"Unknown hero id or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/icons":{"get":{"tags":["Assets Bucket"],"summary":"Icons Index","description":"Nested file-tree of all hosted icons, mapping each name to its public CDN URL.","operationId":"icons","responses":{"200":{"description":"","content":{"application/json":{"schema":{}}}},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/images":{"get":{"tags":["Assets Bucket"],"summary":"Images Index","description":"Nested file-tree of all hosted images, mapping each name to its public CDN URL.","operationId":"images","responses":{"200":{"description":"","content":{"application/json":{"schema":{}}}},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/items":{"get":{"tags":["Items"],"summary":"List Items","description":"Returns the full per-patch item list — abilities, weapons, and upgrades.","operationId":"list_items","parameters":[{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Item"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/items/by-hero-id/{id}":{"get":{"tags":["Items"],"summary":"List Items By Hero","description":"Hero-bound abilities, excluding the generic movement abilities.","operationId":"get_items_by_hero_id","parameters":[{"name":"id","in":"path","description":"Hero id (`m_HeroID`).","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Item"}}}}}}}},"/v1/assets/items/by-slot-type/{slot_type}":{"get":{"tags":["Items"],"summary":"List Items By Slot Type","operationId":"get_items_by_slot_type","parameters":[{"name":"slot_type","in":"path","description":"Slot type: `weapon`, `spirit`, or `vitality`.","required":true,"schema":{"$ref":"#/components/schemas/ItemSlotType"}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Item"}}}}}}}},"/v1/assets/items/by-type/{type}":{"get":{"tags":["Items"],"summary":"List Items By Type","operationId":"get_items_by_type","parameters":[{"name":"type","in":"path","description":"Item type: `ability`, `weapon`, or `upgrade`.","required":true,"schema":{"$ref":"#/components/schemas/ItemType"}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Item"}}}}}}}},"/v1/assets/items/{id_or_class_name}":{"get":{"tags":["Items"],"summary":"Get Item","operationId":"get_item","parameters":[{"name":"id_or_class_name","in":"path","description":"Numeric `id` or string `class_name`.","required":true,"schema":{"type":"string"}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"404":{"description":"Unknown item id/class_name or client_version"}}}},"/v1/assets/loot-tables":{"get":{"tags":["Loot Tables"],"summary":"List Loot Tables","description":"Returns the per-table loot definitions used by the game client, parsed from the patch's KV3 source files. Keyed by table `class_name`.","operationId":"list_loot_tables","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LootTable"},"propertyNames":{"type":"string"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/map":{"get":{"tags":["Map"],"summary":"Map","description":"Map metadata for a client version: the minimap radius, image-layer CDN URLs, the relative positions of every objective/tower marker, and the three zip-line lane cubic splines. Defaults to the latest known client version.","operationId":"get_map","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapData"}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/misc-entities":{"get":{"tags":["Misc Entities"],"summary":"List Misc Entities","description":"Returns the per-misc-entity metadata used by the game client, parsed from the patch's KV3 source files.","operationId":"list_misc_entities","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MiscEntity"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/misc-entities/{id_or_classname}":{"get":{"tags":["Misc Entities"],"summary":"Get Misc Entity","description":"Returns a single misc entity by numeric id or by `class_name` (case-insensitive).","operationId":"get_misc_entity","parameters":[{"name":"id_or_classname","in":"path","description":"Misc entity id (`murmurhash2(class_name)`) or `class_name`","required":true,"schema":{"type":"string"}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MiscEntity"}}}},"404":{"description":"Unknown misc entity id/class_name or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/npc-units":{"get":{"tags":["NPC Units"],"summary":"List NPC Units","description":"Returns the per-NPC-unit metadata used by the game client, parsed from the patch's KV3 source files.","operationId":"list_npc_units","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NpcUnit"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/npc-units/{id_or_classname}":{"get":{"tags":["NPC Units"],"summary":"Get NPC Unit","description":"Returns a single NPC unit by numeric id or by `class_name` (case-insensitive).","operationId":"get_npc_unit","parameters":[{"name":"id_or_classname","in":"path","description":"NPC unit id (`murmurhash2(class_name)`) or `class_name`","required":true,"schema":{"type":"string"}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NpcUnit"}}}},"404":{"description":"Unknown NPC unit id/class_name or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/ranks":{"get":{"tags":["Ranks"],"summary":"List Ranks","description":"Returns the 12 player ranks (tier, localized name, badge image URLs, hex color).","operationId":"list_ranks","parameters":[{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Rank"}}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/ranks/{tier}":{"get":{"tags":["Ranks"],"summary":"Get Rank","description":"Returns a single rank by tier index.","operationId":"get_rank","parameters":[{"name":"tier","in":"path","description":"Rank tier (0-11)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"language","in":"query","description":"Language code. Defaults to `english`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","description":"Set of languages the upstream `localization/<lang>.json` files are keyed by.","enum":["brazilian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indonesian","italian","japanese","koreana","latam","norwegian","polish","portuguese","romanian","russian","schinese","spanish","swedish","tchinese","thai","turkish","ukrainian","vietnamese"]}]}},{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rank"}}}},"404":{"description":"Unknown tier or client_version"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/sounds":{"get":{"tags":["Assets Bucket"],"summary":"Sounds Index","description":"Nested file-tree of all hosted sounds, mapping each name to its public CDN URL.","operationId":"sounds","responses":{"200":{"description":"","content":{"application/json":{"schema":{}}}},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/steam-info":{"get":{"tags":["Steam Info"],"summary":"Get Steam Info","description":"Returns the `steam.inf` manifest published with the patch (client/server version, app IDs, source revision, build timestamp).","operationId":"get_steam_info","parameters":[{"name":"client_version","in":"query","description":"Client/game version (e.g. `6518`). Defaults to the latest known version.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SteamInfo"}}}},"404":{"description":"Requested client_version is not available"},"500":{"description":"Failed to load source assets"}}}},"/v1/assets/steam-info/all":{"get":{"tags":["Steam Info"],"summary":"Get All Steam Infos","description":"Returns the `steam.inf` manifest for every known patch as a single array, newest version first. Replaces the legacy `/v1/steam-info/all` endpoint.","operationId":"get_all_steam_info","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SteamInfo"}}}}},"500":{"description":"Failed to load source assets"}}}},"/v1/builds":{"get":{"tags":["Builds"],"summary":"Search","description":"\nSearch for builds based on various criteria.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"search_builds","parameters":[{"name":"min_unix_timestamp","in":"query","description":"Filter builds based on their `last_updated` time (Unix timestamp).","required":false,"schema":{"type":"integer","format":"int64"},"style":"form"},{"name":"max_unix_timestamp","in":"query","description":"Filter builds based on their `last_updated` time (Unix timestamp).","required":false,"schema":{"type":"integer","format":"int64"},"style":"form"},{"name":"min_published_unix_timestamp","in":"query","description":"Filter builds based on their published time (Unix timestamp).","required":false,"schema":{"type":"integer","format":"int64"},"style":"form"},{"name":"max_published_unix_timestamp","in":"query","description":"Filter builds based on their published time (Unix timestamp).","required":false,"schema":{"type":"integer","format":"int64"},"style":"form"},{"name":"sort_by","in":"query","description":"The field to sort the builds by.","required":false,"schema":{"type":"string","enum":["weekly_favorites","favorites","ignores","reports","updated_at","published_at","version"]},"style":"form"},{"name":"start","in":"query","description":"The index of the first build to return.","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"limit","in":"query","description":"The maximum number of builds to return.","required":false,"schema":{"type":"integer","format":"int32","default":"100","minimum":0},"style":"form"},{"name":"sort_direction","in":"query","description":"The direction to sort the builds in.","required":false,"schema":{"type":"string","enum":["desc","asc"]},"style":"form"},{"name":"search_name","in":"query","description":"Search for builds with a name containing this string.","required":false,"schema":{"type":"string"},"style":"form"},{"name":"search_description","in":"query","description":"Search for builds with a description containing this string.","required":false,"schema":{"type":"string"},"style":"form"},{"name":"only_latest","in":"query","description":"Only return the latest version of each build.","required":false,"schema":{"type":"boolean"},"style":"form"},{"name":"language","in":"query","description":"Filter builds by language.","required":false,"deprecated":true,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"build_language","in":"query","description":"Filter builds by language.","required":false,"schema":{"type":"string","enum":["English","German","French","Italian","Korean","SpanishSpain","ChineseSimplified","Russian","Thai","Japanese","PortuguesePortugal","Polish","Czech","Turkish","PortugueseBrazil","Ukrainian","SpanishLatinAmerica","Vietnamese"]},"style":"form"},{"name":"build_id","in":"query","description":"Filter builds by ID.","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"version","in":"query","description":"Filter builds by version.","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"hero_id","in":"query","description":"Filter builds by hero ID. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"tag","in":"query","description":"Filter builds by tag.","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"rollup_category","in":"query","description":"Filter builds by rollup category.","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"},{"name":"author_id","in":"query","description":"The author's `SteamID3`","required":false,"schema":{"type":"integer","format":"int32","minimum":0},"style":"form"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Build"}}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Internal server error"}}}},"/v1/commands/resolve":{"get":{"tags":["Commands"],"summary":"Resolve Command","description":"\n Resolves a command and returns the resolved command.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 60req/60s |\n| Key | - |\n| Global | 300req/60s |\n ","operationId":"command_resolve","parameters":[{"name":"region","in":"query","description":"The players region","required":false,"schema":{"type":"string","enum":["Europe","Asia","NAmerica","SAmerica","Oceania"]}},{"name":"account_id","in":"query","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"template","in":"query","description":"The command template to resolve","required":false,"schema":{"type":"string"}},{"name":"hero_name","in":"query","description":"Hero name to check for hero specific stats","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Provided parameters are invalid."}}}},"/v1/commands/variables/available":{"get":{"tags":["Commands"],"summary":"Available Variables","description":"\nReturns a list of available variables that can be used in the command endpoint.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"available_variables","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VariableDescription"}}}}},"400":{"description":"Provided parameters are invalid."}}}},"/v1/commands/variables/resolve":{"get":{"tags":["Commands"],"summary":"Resolve Variables","description":"\nResolves variables and returns a map of variable name to resolved value.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 60req/min |\n| Key | - |\n| Global | 300req/min |\n ","operationId":"variables_resolve","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string","enum":["Europe","Asia","NAmerica","SAmerica","Oceania"]}},{"name":"account_id","in":"query","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"variables","in":"query","description":"Variables to resolve, separated by commas.","required":false,"schema":{"type":"string"}},{"name":"hero_name","in":"query","description":"Hero name to check for hero specific stats","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}}}}},"400":{"description":"Provided parameters are invalid."}}}},"/v1/commands/widgets/versions":{"get":{"tags":["Commands"],"summary":"Widget Versions","description":"\nReturns a map of str->int of widget versions.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n","operationId":"widget_versions","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"},"propertyNames":{"type":"string"}}}}},"400":{"description":"Provided parameters are invalid."}}}},"/v1/graphql":{"get":{"tags":["GraphQL"],"summary":"GraphQL Playground","description":"\nInteractive GraphiQL playground for exploring the GraphQL API.\n\nOpen this endpoint in a browser to access the playground. Send GraphQL queries via `POST /v1/graphql` with a JSON body of the form `{ \"query\": \"...\", \"variables\": {...} }`.\n\n### Rate Limits (POST):\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/min |\n| Key | 10req/10s |\n| Global | 100req/min |\n ","operationId":"playground","responses":{"200":{"description":"GraphiQL playground UI","content":{"text/html":{}}}}}},"/v1/info":{"get":{"tags":["Info"],"summary":"API Info","description":"\nReturns information about the API.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"info","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIInfo"}}}},"500":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/info/health":{"get":{"tags":["Info"],"summary":"Health Check","description":"\nChecks the health of the services.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"health_check","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"500":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/leaderboard/{region}":{"get":{"tags":["Leaderboard"],"summary":"Leaderboard","description":"\nReturns the leaderboard.\n\n### Note:\n\nValve updates the leaderboard once per hour.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"leaderboard","parameters":[{"name":"region","in":"path","description":"The region to fetch the leaderboard for.","required":true,"schema":{"type":"string","enum":["Europe","Asia","NAmerica","SAmerica","Oceania"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Leaderboard"}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Fetching or parsing the leaderboard failed"}}}},"/v1/leaderboard/{region}/raw":{"get":{"tags":["Leaderboard"],"summary":"Leaderboard as Protobuf","description":"\nReturns the leaderboard, serialized as protobuf message.\n\nYou have to decode the protobuf message.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Message:\n- CMsgClientToGcGetLeaderboardResponse\n\n### Note:\n\nValve updates the leaderboard once per hour.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"leaderboard_raw","parameters":[{"name":"region","in":"path","description":"The region to fetch the leaderboard for.","required":true,"schema":{"type":"string","enum":["Europe","Asia","NAmerica","SAmerica","Oceania"]}}],"responses":{"200":{"description":"","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Fetching the leaderboard failed"}}}},"/v1/leaderboard/{region}/{hero_id}":{"get":{"tags":["Leaderboard"],"summary":"Hero Leaderboard","description":"\nReturns the leaderboard for a specific hero.\n\n### Note:\n\nValve updates the leaderboard once per hour.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"leaderboard_hero","parameters":[{"name":"region","in":"path","description":"The region to fetch the leaderboard for.","required":true,"schema":{"type":"string","enum":["Europe","Asia","NAmerica","SAmerica","Oceania"]}},{"name":"hero_id","in":"path","description":"The hero ID to fetch the leaderboard for. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Leaderboard"}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Fetching or parsing the hero leaderboard failed"}}}},"/v1/leaderboard/{region}/{hero_id}/raw":{"get":{"tags":["Leaderboard"],"summary":"Hero Leaderboard as Protobuf","description":"\nReturns the leaderboard for a specific hero, serialized as protobuf message.\n\nYou have to decode the protobuf message.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Message:\n- CMsgClientToGcGetLeaderboardResponse\n\n### Note:\n\nValve updates the leaderboard once per hour.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"leaderboard_hero_raw","parameters":[{"name":"region","in":"path","description":"The region to fetch the leaderboard for.","required":true,"schema":{"type":"string","enum":["Europe","Asia","NAmerica","SAmerica","Oceania"]}},{"name":"hero_id","in":"path","description":"The hero ID to fetch the leaderboard for. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Fetching the hero leaderboard failed"}}}},"/v1/matches/active":{"get":{"tags":["Matches"],"summary":"Active","description":"\nReturns active matches that are currently being played.\n\nFetched from the watch tab in game, which is limited to the **top 200 matches**.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"active_matches","parameters":[{"name":"account_id","in":"query","description":"The account ID to filter active matches by (`SteamID3`)","required":false,"deprecated":true,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"account_ids","in":"query","description":"Comma separated list of account ids to include","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveMatch"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Fetching or parsing active matches failed"}}}},"/v1/matches/active/raw":{"get":{"tags":["Matches"],"summary":"Active as Protobuf","description":"\nReturns active matches that are currently being played, serialized as protobuf message.\n\nFetched from the watch tab in game, which is limited to the **top 200 matches**.\n\nYou have to decode the protobuf message.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Message:\n- CMsgClientToGcGetActiveMatchesResponse\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"active_matches_raw","responses":{"200":{"description":"","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"500":{"description":"Fetching active matches failed"}}}},"/v1/matches/custom/create":{"post":{"tags":["Custom Matches"],"summary":"Create Match","description":"\nThis endpoint creates a custom match using a bot account.\n\n**Process:**\n1. A party is created with your provided settings.\n2. The system waits for the party code to be generated.\n3. The party code is returned in the response.\n4. The bot switches to spectator mode.\n5. The bot marks itself as ready.\n6. You and other players join, ready up, and start the match.\n\n**Callbacks:**\nIf a callback URL is provided, POST requests will be sent to it:\n- **settings:** When lobby settings change, a POST is sent to `{callback_url}/settings` with the `CsoCitadelParty` protobuf message as JSON.\n- **match start:** When the match starts, a POST is sent to `{callback_url}` with the match ID.\n\n_Protobuf definitions: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)_\n\n**Note:**\nThe bot will leave the match 15 minutes after creation, regardless of match state.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/h |\n| Key | 100req/30min |\n| Global | 1000req/h |\n","operationId":"create_custom","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomRequest"}}},"required":true},"responses":{"200":{"description":"Successfully fetched custom match id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomResponse"}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Creating custom match failed"}}}},"/v1/matches/custom/{lobby_id}/leave":{"post":{"tags":["Custom Matches"],"summary":"Leave Lobby","description":"\nThis endpoint makes the bot leave the custom match lobby early.\nBy default the bot leaves automatically after 15 minutes, but this endpoint allows you to trigger it sooner.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/h |\n| Key | 100req/30min |\n| Global | 1000req/h |\n","operationId":"leave","parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully left the lobby."},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Leaving lobby failed"}}}},"/v1/matches/custom/{lobby_id}/ready":{"post":{"tags":["Custom Matches"],"summary":"Ready Up","description":"\nThis endpoint allows you to ready up for a custom match.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/h |\n| Key | 100req/30min |\n| Global | 1000req/h |\n","operationId":"ready_up","parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully ready up."},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Ready up failed"}}}},"/v1/matches/custom/{lobby_id}/start":{"post":{"tags":["Custom Matches"],"summary":"Start Match","description":"\nThis endpoint starts a custom match.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/h |\n| Key | 100req/30min |\n| Global | 1000req/h |\n","operationId":"start","parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully started the match."},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Starting match failed"}}}},"/v1/matches/custom/{lobby_id}/unready":{"post":{"tags":["Custom Matches"],"summary":"Unready","description":"\nThis endpoint allows you to unready for a custom match.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/h |\n| Key | 100req/30min |\n| Global | 1000req/h |\n","operationId":"unready","parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully unready."},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Unready failed"}}}},"/v1/matches/custom/{party_id}/match-id":{"get":{"tags":["Custom Matches"],"summary":"Get Match ID","description":"\nThis endpoint allows you to get the match id of a custom match.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n","operationId":"get_custom","parameters":[{"name":"party_id","in":"path","required":true,"schema":{"type":"integer","format":"int64","minimum":0}}],"responses":{"200":{"description":"Successfully fetched custom match id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomMatchIdResponse"}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Fetch Custom Match ID failed"}}}},"/v1/matches/demo/live/query":{"get":{"tags":["Demo"],"summary":"Live Demo Query (SSE)","description":"\nRun a SQL query over a match's **live** broadcast and stream result rows over Server-Sent Events as\nthe match plays, instead of waiting for the demo to finish (see the async `/demo/query`).\n\nProvide either `match_id` (the server spectates the lobby to obtain the broadcast URL) or an explicit\n`broadcast_url` from `/live/urls`.\n\nProjection/filter queries emit rows continuously as they are decoded. A whole-match aggregation\n(`GROUP BY` / `ORDER BY`) can only produce its final rows once the broadcast ends.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 20req/m |\n| Global | 100req/m |\n","operationId":"live_query","parameters":[{"name":"query","in":"query","description":"SQL query to run over the broadcast's entity/event tables (see `/demo/schema`).","required":true,"schema":{"type":"string"}},{"name":"match_id","in":"query","description":"Match to spectate and stream. Provide this or `broadcast_url`; `broadcast_url` wins if both\nare given. Resolving a match spectates its lobby and is rate-limited.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"broadcast_url","in":"query","description":"Explicit broadcast base URL (from `/live/urls`). Provide this or `match_id`.","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"SSE stream of result rows. Each `message` event's `data` is one result row as a JSON object; a terminal `end` event marks the end of the broadcast, and an `error` event carries any mid-stream failure.","content":{"text/event-stream":{}}},"400":{"description":"Neither match_id nor broadcast_url given, or the query is invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Failed to start the live query"},"502":{"description":"The live broadcast could not be fetched"}}}},"/v1/matches/demo/query":{"post":{"tags":["Demo"],"summary":"Demo Query","description":"\nSubmit a SQL query against a match's demo file. The work (download + decompress + parse +\nquery) takes ~55s, so this is asynchronous: the endpoint returns a `job_id` you poll via\n`/demo/query/{job_id}`. Once done, the status response carries a public URL to the result\nartifact (Parquet or NDJSON).\n\nIdentical `(match_id, query, format)` submissions are deduplicated and reuse a cached result.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 20req/h |\n| Key | 200req/h |\n| Global | 400req/h |\n","operationId":"submit","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoQueryRequest"}}},"required":true},"responses":{"200":{"description":"Job already exists (deduplicated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoQueryJobResponse"}}}},"202":{"description":"Job queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoQueryJobResponse"}}}},"400":{"description":"Provided parameters are invalid."},"404":{"description":"No demo / salts available for the match"},"429":{"description":"Rate limit exceeded or queue full"},"500":{"description":"Failed to queue the job"}}}},"/v1/matches/demo/query/{job_id}":{"get":{"tags":["Demo"],"summary":"Demo Query Status","description":"\nReturns the status of a demo query job. While `queued`/`running` it includes a rough\n`estimated_wait_seconds`; when `done` it includes `result_url` (a public link to the\nParquet/NDJSON artifact); when `failed` it includes `error`.\n","operationId":"status","parameters":[{"name":"job_id","in":"path","description":"Job id returned by POST /demo/query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoQueryStatusResponse"}}}},"404":{"description":"Job not found or expired"}}}},"/v1/matches/demo/schema":{"get":{"tags":["Demo"],"summary":"Demo Schema","description":"\nReturns the queryable schema of a match's demo file: every entity and event table with its\ncolumns and Arrow types.\n\nBy default this returns the schema of the most recent match we have a demo for. Optionally\npass `match_id` to read the schema for a specific match; if we don't already have its salts,\nthey are fetched from Steam (rate limited, see `/{match_id}/salts`).\n ","operationId":"schema","parameters":[{"name":"match_id","in":"query","description":"Match to read the schema for. If omitted, the schema of the most recent match we\nhave a demo for is returned. When set, the demo's salts are fetched (rate limited)\nif they are not already stored.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSchemaResponse"}}}},"400":{"description":"Provided parameters are invalid."},"404":{"description":"No demo / salts available for the match"},"429":{"description":"Rate limit exceeded"},"500":{"description":"Reading the demo schema failed"}}}},"/v1/matches/live/urls":{"get":{"tags":["Matches"],"summary":"Live Broadcast URLs","description":"\nReturns a list of all currently available live broadcast URLs.\n\nThese can be used in any demofile broadcast parser:\n- [Demofile-Net](https://github.com/saul/demofile-net)\n- [Haste](https://github.com/blukai/haste/)\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"urls","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiveUrl"}}}}},"500":{"description":"Fetching live URLs failed"}}},"post":{"tags":["Matches"],"summary":"Ingest Live Broadcast URLs","description":"\nSubmit one or more live broadcast URLs so they show up in the `GET /live/urls` listing.\n\nEach submitted URL is stored for 15 minutes; re-submit periodically to keep a match listed\nwhile it is still live. Existing entries for the same `match_id` are overwritten.\n\nThese URLs can be used in any demofile broadcast parser:\n- [Demofile-Net](https://github.com/saul/demofile-net)\n- [Haste](https://github.com/blukai/haste/)\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"ingest_urls","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IngestLiveUrl"}}}},"required":true},"responses":{"200":{"description":""},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Ingesting live URLs failed"}}}},"/v1/matches/metadata":{"get":{"tags":["Matches"],"summary":"Bulk Metadata","description":"\nThis endpoints lets you fetch multiple match metadata at once. The response is a JSON array of match metadata.\n\nWhen player info is included, each player object contains a `hero_build_id` field (if available) from demo analysis.\n\n> **Note:** The `hero_build_id` represents the first build the player had selected when the game started. It does not reflect any build changes made during the match.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/min |\n| Key | 10req/10s |\n| Global | 100req/min |\n ","operationId":"bulk_metadata","parameters":[{"name":"include_info","in":"query","description":"Include match info in the response.","required":false,"schema":{"type":"boolean","default":"true"}},{"name":"include_more_info","in":"query","description":"Include more match info in the response.","required":false,"schema":{"type":"boolean"}},{"name":"include_objectives","in":"query","description":"Include objectives in the response.","required":false,"schema":{"type":"boolean"}},{"name":"include_mid_boss","in":"query","description":"Include midboss in the response.","required":false,"schema":{"type":"boolean"}},{"name":"include_player_info","in":"query","description":"Include player info in the response.","required":false,"schema":{"type":"boolean"}},{"name":"include_player_kda","in":"query","description":"Include only K/D/A fields (`kills`, `deaths`, `assists`) for players.","required":false,"schema":{"type":"boolean"}},{"name":"include_player_items","in":"query","description":"Include player items in the response.","required":false,"schema":{"type":"boolean"}},{"name":"include_player_stats","in":"query","description":"Include player stats in the response.","required":false,"schema":{"type":"boolean"}},{"name":"include_player_final_stats","in":"query","description":"Include only the final per-player stats (last sample of every `stats.*`\ntime-series) as a single `final_stats` object. Far cheaper than\n`include_player_stats`, which returns the whole array per field.","required":false,"schema":{"type":"boolean"}},{"name":"include_player_death_details","in":"query","description":"Include player death details in the response.","required":false,"schema":{"type":"boolean"}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. Omit or pass empty string for no filter.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}]}},{"name":"match_mode","in":"query","description":"Filter matches based on the match mode. Valid values: `unranked`, `private_lobby`, `coop_bot`, `ranked`, `server_test`, `tutorial`, `hero_labs`. **Default:** `ranked,unranked`.","required":false,"schema":{"type":["string","null"]}},{"name":"match_ids","in":"query","description":"Comma separated list of match ids, limited by `limit`","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int64","minimum":0},"maxItems":1000,"minItems":1}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"is_high_skill_range_parties","in":"query","description":"Filter matches based on whether they are in the high skill range.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_low_pri_pool","in":"query","description":"Filter matches based on whether they are in the low priority pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_new_player_pool","in":"query","description":"Filter matches based on whether they are in the new player pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"account_ids","in":"query","description":"Filter matches by account IDs of players that participated in the match.","required":false,"schema":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"item_filter_hero_id","in":"query","description":"Hero ID to scope item filters to. Required when using `include_item_ids` or `exclude_item_ids`.","required":false,"schema":{"type":["integer","null"],"format":"int32","minimum":0}},{"name":"include_item_ids","in":"query","description":"Comma separated list of item ids to include.\nRequires `item_filter_hero_id`. Returns matches where a player on the specified hero has ALL of these items.","required":false,"schema":{"type":["string","null"]}},{"name":"exclude_item_ids","in":"query","description":"Comma separated list of item ids to exclude.\nRequires `item_filter_hero_id`. Returns matches where a player on the specified hero has NONE of these items.","required":false,"schema":{"type":["string","null"]}},{"name":"extra_match_columns","in":"query","description":"Comma separated list of extra match-level columns to include in the response.\nEach column is aggregated with `any(...)`. Only alphanumeric characters, underscores, and\ndots (for nested field access) are allowed.\nExample: `objectives_mask_team0,team_score`.","required":false,"schema":{"type":["string","null"]}},{"name":"extra_player_columns","in":"query","description":"Comma separated list of extra player-level columns to include in the response.\nEach column is added inside the player tuple. Only alphanumeric characters, underscores,\nand dots (for nested field access) are allowed.\nExample: `stats.player_damage,stats.player_healing`. Implicitly enables player fields.","required":false,"schema":{"type":["string","null"]}},{"name":"order_by","in":"query","description":"The field to order the results by.","required":false,"schema":{"type":"string","enum":["match_id","start_time","average_badge"]}},{"name":"order_direction","in":"query","description":"The direction to order the results by.","required":false,"schema":{"type":"string","enum":["desc","asc"]}},{"name":"limit","in":"query","description":"The maximum number of matches to return.","required":false,"schema":{"type":"integer","format":"int32","default":1000,"maximum":10000,"minimum":1}},{"name":"format","in":"query","description":"The response format. Valid values: `json` (a JSON array), `ndjson` (newline-delimited JSON objects).","required":false,"schema":{"oneOf":[{"type":"string","enum":["json","ndjson"]}],"default":"json"}}],"responses":{"200":{"description":"","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"}}}},"/v1/matches/recently-fetched":{"get":{"tags":["Matches"],"summary":"Recently Fetched","description":"\nThis endpoint returns a list of match ids that have been fetched within the last 10 minutes.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"recently_fetched","responses":{"200":{"description":"Recently fetched match info","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClickhouseMatchInfo"}}}}},"500":{"description":"Failed to fetch recently fetched matches"}}}},"/v1/matches/salts":{"post":{"tags":["Internal"],"summary":"Match Salts Ingest","description":"\nYou can use this endpoint to help us collecting data.\n\nThe endpoint accepts a list of MatchSalts objects, which contain the following fields:\n\n- `match_id`: The match ID\n- `cluster_id`: The cluster ID\n- `metadata_salt`: The metadata salt\n- `replay_salt`: The replay salt\n- `username`: The username of the person who submitted the match\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"ingest_salts","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClickhouseSalts"}}}},"required":true},"responses":{"200":{"description":""},"400":{"description":"Provided parameters are invalid or the salt check failed."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Ingest failed"}}}},"/v1/matches/{match_id}/live/url":{"get":{"tags":["Matches"],"summary":"Live Broadcast URL","description":"\nThis endpoints spectates a match and returns the live URL to be used in any demofile broadcast parser.\n\nExample Parsers:\n- [Demofile-Net](https://github.com/saul/demofile-net)\n- [Haste](https://github.com/blukai/haste/)\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 2req/h |\n| Key | 5req/m, 100req/h |\n| Global | 5req/10s, 500req/h |\n ","operationId":"url","parameters":[{"name":"match_id","in":"path","description":"The match ID","required":true,"schema":{"type":"integer","format":"int64","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchSpectateResponse"}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Spectating match failed"}}}},"/v1/matches/{match_id}/metadata":{"get":{"tags":["Matches"],"summary":"Metadata","description":"\nThis endpoint returns the match metadata for the given `match_id` parsed into JSON.\n\nEach player object is enriched with a `hero_build_id` field (if available) from demo analysis.\n\n> **Note:** The `hero_build_id` represents the first build the player had selected when the game started. It does not reflect any build changes made during the match.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Messages:\n- CMsgMatchMetaData\n- CMsgMatchMetaDataContents\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | From Cache: 100req/s<br>From S3: 100req/10s<br>From Steam: 3req/h |\n| Key | From Cache: 100req/s<br>From S3: 100req/s<br>From Steam: 300req/h |\n| Global | From Cache: 100req/s<br>From S3: 700req/s<br>From Steam: 1500req/h |\n ","operationId":"metadata","parameters":[{"name":"match_id","in":"path","description":"The match ID","required":true,"schema":{"type":"integer","format":"int64","minimum":0}},{"name":"is_custom","in":"query","required":false,"schema":{"type":["boolean","null"]}},{"name":"disable_steam","in":"query","description":"If `true`, skip the Steam fallback when the metadata is not available in S3\nand return an error instead.","required":false,"schema":{"type":["boolean","null"]}}],"responses":{"200":{"description":"Match metadata, see protobuf type: CMsgMatchMetaDataContents"},"400":{"description":"Provided parameters are invalid."},"404":{"description":"Match metadata not found"},"429":{"description":"Rate limit exceeded"},"500":{"description":"Fetching or parsing match metadata failed"}}}},"/v1/matches/{match_id}/metadata/raw":{"get":{"tags":["Matches"],"summary":"Metadata as Protobuf","description":"\nThis endpoints returns the raw .meta.bz2 file for the given `match_id`.\n\nYou have to decompress it and decode the protobuf message.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Messages:\n- CMsgMatchMetaData\n- CMsgMatchMetaDataContents\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | From Cache: 100req/s<br>From S3: 100req/10s<br>From Steam: 3req/h |\n| Key | From Cache: 100req/s<br>From S3: 100req/s<br>From Steam: 300req/h |\n| Global | From Cache: 100req/s<br>From S3: 700req/s<br>From Steam: 1500req/h |\n ","operationId":"metadata_raw","parameters":[{"name":"match_id","in":"path","description":"The match ID","required":true,"schema":{"type":"integer","format":"int64","minimum":0}},{"name":"is_custom","in":"query","required":false,"schema":{"type":["boolean","null"]}},{"name":"disable_steam","in":"query","description":"If `true`, skip the Steam fallback when the metadata is not available in S3\nand return an error instead.","required":false,"schema":{"type":["boolean","null"]}}],"responses":{"200":{"description":"","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"400":{"description":"Provided parameters are invalid."},"404":{"description":"Match metadata not found"},"429":{"description":"Rate limit exceeded"},"500":{"description":"Fetching match metadata failed"}}}},"/v1/matches/{match_id}/salts":{"get":{"tags":["Matches"],"summary":"Salts","description":"\nThis endpoints returns salts that can be used to fetch metadata and demofile for a match.\n\n**Note:** We currently fetch many matches without salts, so for these matches we do not have salts stored.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | From DB: 100req/s<br>From Steam: 10req/30mins |\n| Key | From DB: -<br>From Steam: 10req/min |\n| Global | From DB: -<br>From Steam: 10req/10s |\n ","operationId":"salts","parameters":[{"name":"match_id","in":"path","description":"The match ID","required":true,"schema":{"type":"integer","format":"int64","minimum":0}},{"name":"disable_steam","in":"query","description":"If `true`, skip the Steam fallback when the salts are not available in Clickhouse\nand return an error instead.","required":false,"schema":{"type":["boolean","null"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchSaltsResponse"}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Fetching match salts failed"}}}},"/v1/patches":{"get":{"tags":["Patches"],"summary":"Notes","description":"\n**Deprecated:** Use `/v2/patches` instead, which returns a unified feed combining the Forum changelog and the Steam news feed.\n\nReturns the parsed result of the RSS Feed from the official Forum.\n\nRSS-Feed: https://forums.playdeadlock.com/forums/changelog.10/index.rss\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"feed","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Patch"}}}}},"500":{"description":"Fetching or parsing the RSS-Feed failed"}},"deprecated":true}},"/v1/patches/big-days":{"get":{"tags":["Patches"],"summary":"Big Days","description":"\nReturns a list of dates where Deadlock's \"big\" patch days were, usually bi-weekly.\nThe exact date is the time when the announcement forum post was published.\n\nThis list is manually maintained, and so new patch dates may be delayed by a few hours.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"big_patch_days","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/v1/players/hero-stats":{"get":{"tags":["Players"],"summary":"Hero Stats","description":"\nThis endpoint returns statistics for each hero played by a given player account.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"player_hero_stats","parameters":[{"name":"account_ids","in":"query","description":"Comma separated list of account ids, Account IDs are in `SteamID3` format.","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"hero_ids","in":"query","description":"Filter matches based on the hero IDs. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":false,"schema":{"type":["string","null"]}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_networth","in":"query","description":"Filter players based on their final net worth.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"max_average_badge","in":"query","description":"Filter matches based on the average badge level (tier = first digits, subtier = last digit) of *both* teams involved. See more: <https://api.deadlock-api.com/v1/assets/ranks>","required":false,"schema":{"type":["integer","null"],"format":"int32","maximum":116,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"Hero Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HeroStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero stats"}}}},"/v1/players/mmr":{"get":{"tags":["MMR"],"summary":"Batch MMR","description":"\nBatch Player MMR\n","operationId":"mmr","parameters":[{"name":"account_ids","in":"query","description":"Comma separated list of account ids, Account IDs are in `SteamID3` format.","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"MMR","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MMRHistory"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch mmr"}}}},"/v1/players/mmr/distribution":{"get":{"tags":["MMR"],"summary":"MMR Distribution","description":"\nPlayer MMR Distribution\n","operationId":"mmr_distribution","parameters":[{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"is_high_skill_range_parties","in":"query","description":"Filter matches based on whether they are in the high skill range.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_low_pri_pool","in":"query","description":"Filter matches based on whether they are in the low priority pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_new_player_pool","in":"query","description":"Filter matches based on whether they are in the new player pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"MMR","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DistributionEntry"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch mmr"}}}},"/v1/players/mmr/distribution/{hero_id}":{"get":{"tags":["MMR"],"summary":"Hero MMR Distribution","description":"\nPlayer Hero MMR Distribution\n","operationId":"hero_mmr_distribution","parameters":[{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp). **Default:** 30 days ago.","required":false,"schema":{"type":["integer","null"],"format":"int64","default":1780876800}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"is_high_skill_range_parties","in":"query","description":"Filter matches based on whether they are in the high skill range.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_low_pri_pool","in":"query","description":"Filter matches based on whether they are in the low priority pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"is_new_player_pool","in":"query","description":"Filter matches based on whether they are in the new player pool.","required":false,"schema":{"type":["boolean","null"]}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"hero_id","in":"path","description":"The hero ID to fetch the MMR history for. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"Hero MMR","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DistributionEntry"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero mmr"}}}},"/v1/players/mmr/{hero_id}":{"get":{"tags":["MMR"],"summary":"Batch Hero MMR","description":"\nBatch Player Hero MMR\n","operationId":"hero_mmr","parameters":[{"name":"account_ids","in":"query","description":"Comma separated list of account ids, Account IDs are in `SteamID3` format.","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"maxItems":1000,"minItems":1}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"hero_id","in":"path","description":"The hero ID to fetch the MMR history for. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"Hero MMR","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MMRHistory"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero mmr"}}}},"/v1/players/rank-predict/image":{"get":{"tags":["Players"],"summary":"Rank Predict Avg Image","description":"Returns the average predicted rank badge image (binary) for a comma-separated list of account IDs. Use `?format=webp` for WebP and `?size=small` for the small badge (defaults to large).","operationId":"rank_predict_avg_image","parameters":[{"name":"account_ids","in":"query","description":"Comma-separated list of account IDs (max 12).","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}},{"name":"format","in":"query","description":"Image format. Defaults to `png`. Supported: `png`, `webp`.","required":false,"schema":{"type":"string","enum":["png","webp"]}},{"name":"size","in":"query","description":"Image size. Defaults to `large`. Supported: `large`, `small`.","required":false,"schema":{"type":"string","enum":["large","small"]}}],"responses":{"200":{"description":"Average predicted rank badge image","content":{"image/png":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}},"image/webp":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"400":{"description":"Invalid or missing account IDs"},"403":{"description":"One of the users is protected"},"404":{"description":"No image available for the predicted rank"},"422":{"description":"Not enough recent ranked matches for one or more accounts"},"429":{"description":"Rate limit exceeded"},"500":{"description":"Prediction failed"},"503":{"description":"Rank prediction model not loaded"}}}},"/v1/players/steam":{"get":{"tags":["Steam"],"summary":"Batch Steam Profile","description":"\nThis endpoint returns Steam profiles of players.\n\nPass `refresh=true` to force a live refresh of the listed accounts from the\nSteam Web API (`GetPlayerSummaries` + `GetFriendList`) before returning. The\nrefreshed rows are persisted to the `steam_profiles` table and returned in the\nresponse with `last_updated` set to the current time. Refresh requests are\nrate limited and capped at 100 account ids per call to stay inside the\nshared Steam Web API key budget.\n\nSee: https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_(v0002)\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s (read path), 3req/min + 15req/h (refresh) |\n| Key | - (read path), 10req/min + 60req/h (refresh) |\n| Global | - (read path), 30req/min + 200req/h (refresh) |\n ","operationId":"steam","parameters":[{"name":"account_ids","in":"query","description":"Comma separated list of account ids, Account IDs are in `SteamID3` format.","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64","minimum":0},"maxItems":1000,"minItems":1}},{"name":"refresh","in":"query","description":"Refresh the listed profiles from the Steam Web API before returning.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Steam Profiles","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SteamProfile"}}}}},"400":{"description":"Provided parameters are invalid."},"404":{"description":"No Steam profile found."},"429":{"description":"Rate limit exceeded (only enforced when refresh=true)."},"500":{"description":"Failed to fetch steam profiles."},"502":{"description":"Steam Web API call failed (only when refresh=true)."}}}},"/v1/players/steam-search":{"get":{"tags":["Steam"],"summary":"Steam Profile Search","description":"\nThis endpoint lets you search for Steam profiles by account_id or personaname.\n\nSee: https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_(v0002)\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"steam_search","parameters":[{"name":"search_query","in":"query","description":"Search query for Steam profiles.","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of profiles to return.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":"100","maximum":1000,"minimum":1}},{"name":"min_matches_played_last_30d","in":"query","description":"Only return profiles that have played at least this many matches in the\nlast 30 days. Defaults to 5 to filter out inactive/empty profiles and\nkeep search responsive.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":"5","minimum":0}},{"name":"min_last_team_avg_badge","in":"query","description":"Only return profiles whose `last_team_avg_badge` is at least this\nvalue. Defaults to 0 (no filter). Profiles with no recorded badge are\nstored as 0 and are excluded when this is set above 0.","required":false,"schema":{"type":["integer","null"],"format":"int32","default":"0","minimum":0}},{"name":"matches_played_weight","in":"query","description":"Weight applied to `log1p(matches_played_last_30d)` when reranking\ncandidates. The final score per profile is\n`jaro_winkler(personaname_lc, query) + weight * log1p(matches_played)`.\nSet to 0 to rank purely by string similarity; raise it to bias toward\nactive/popular players.","required":false,"schema":{"type":["number","null"],"format":"double","default":"0.02","minimum":0}}],"responses":{"200":{"description":"Steam Profile Search","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SteamProfile"}}}}},"400":{"description":"Provided parameters are invalid."},"404":{"description":"No Steam profiles found."},"500":{"description":"Failed to fetch steam profiles."}}}},"/v1/players/{account_id}/account-stats":{"get":{"tags":["Players"],"summary":"Account Stats","description":"\nThis endpoint returns the player account stats for the given `account_id`.\n\n!THIS IS A PATREON ONLY ENDPOINT!\n\nYou have to be friend with one of the bots to use this endpoint.\nOn first use this endpoint will return an error with a list of invite links to add the bot as friend.\nFrom then on you can use this endpoint.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Messages:\n- CMsgClientToGcGetAccountStats\n- CMsgAccountStats\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 5req/min |\n| Key | 20req/min & 800req/h |\n| Global | 200req/min |\n ","operationId":"account_stats","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerAccountStats"}}}},"400":{"description":"Provided parameters are invalid."},"403":{"description":"Account is not a Patreon subscriber or not prioritized."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Fetching account stats failed"}}}},"/v1/players/{account_id}/card":{"get":{"tags":["Players"],"summary":"Card","description":"\nThis endpoint returns the player card for the given `account_id`.\n\n!THIS IS A PATREON ONLY ENDPOINT!\n\nYou have to be friend with one of the bots to use this endpoint.\nOn first use this endpoint will return an error with a list of invite links to add the bot as friend.\nFrom then on you can use this endpoint.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Messages:\n- CMsgClientToGcGetProfileCard\n- CMsgCitadelProfileCard\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 5req/min |\n| Key | 20req/min & 800req/h |\n| Global | 200req/min |\n ","operationId":"card","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerCard"}}}},"400":{"description":"Provided parameters are invalid."},"403":{"description":"Account is not a Patreon subscriber or not prioritized."},"429":{"description":"Rate limit exceeded"},"500":{"description":"Fetching card failed"}}}},"/v1/players/{account_id}/enemy-stats":{"get":{"tags":["Players"],"summary":"Enemy Stats","description":"\nThis endpoint returns the enemy stats.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"enemy_stats","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_matches_played","in":"query","description":"Filter based on the number of matches played.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_matches_played","in":"query","description":"Filter based on the number of matches played.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}}],"responses":{"200":{"description":"Enemy Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EnemyStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch enemy stats"}}}},"/v1/players/{account_id}/match-history":{"get":{"tags":["Players"],"summary":"Match History","description":"\nThis endpoint returns the player match history for the given `account_id`.\n\nIf the account is friends with one of our bots, the match history is a combination of the data from **Steam** and **ClickHouse**, so you always get the most up-to-date data and full history.\nIf the account is not friends with a bot, only the stored match history from **ClickHouse** is returned.\n\nProtobuf definitions can be found here: [https://github.com/SteamDatabase/Protobufs](https://github.com/SteamDatabase/Protobufs)\n\nRelevant Protobuf Messages:\n- CMsgClientToGcGetMatchHistory\n- CMsgClientToGcGetMatchHistoryResponse\n\n### Rate Limits (only applies to bot friends):\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s<br>Bot-Friend: 10req/h<br>With `force_refetch=true`: 1req/h |\n| Key | -<br>Bot-Friend: 300req/h<br>With `force_refetch=true`: 5req/h |\n| Global | -<br>Bot-Friend: 1500req/h<br>With `force_refetch=true`: 10req/h |\n ","operationId":"match_history","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"force_refetch","in":"query","description":"Refetch the match history from Steam, even if it is already cached in `ClickHouse`.\nOnly use this if you are sure that the data in `ClickHouse` is outdated.\nEnabling this flag results in a strict rate limit.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerMatchHistoryEntry"}}}}},"400":{"description":"Provided parameters are invalid."},"429":{"description":"Rate limit exceeded. Returns stored match history from ClickHouse as a fallback. When `force_refetch=true`, returns an error instead.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerMatchHistoryEntry"}}}}},"500":{"description":"Fetching player match history failed"}}}},"/v1/players/{account_id}/mate-stats":{"get":{"tags":["Players"],"summary":"Mate Stats","description":"\nThis endpoint returns the mate stats.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"mate_stats","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"game_mode","in":"query","description":"Filter matches based on their game mode. Valid values: `normal`, `street_brawl`. **Default:** `normal`.","required":false,"schema":{"oneOf":[{"type":"null"},{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]}],"default":"normal"}},{"name":"min_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"max_unix_timestamp","in":"query","description":"Filter matches based on their start time (Unix timestamp).","required":false,"schema":{"type":["integer","null"],"format":"int64"}},{"name":"min_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"max_duration_s","in":"query","description":"Filter matches based on their duration in seconds (up to 7000s).","required":false,"schema":{"type":["integer","null"],"format":"int64","maximum":7000,"minimum":0}},{"name":"min_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_match_id","in":"query","description":"Filter matches based on their ID.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"min_matches_played","in":"query","description":"Filter based on the number of matches played.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"max_matches_played","in":"query","description":"Filter based on the number of matches played.","required":false,"schema":{"type":["integer","null"],"format":"int64","minimum":0}},{"name":"same_party","in":"query","description":"Filter based on whether the mates were on the same party.\nTwo players are considered to be in the same party if they were on the same team and are\nSteam friends as of the match start time (per the `steam_profiles` friends list).","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Mate Stats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MateStats"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch mate stats"}}}},"/v1/players/{account_id}/mmr-history":{"get":{"tags":["MMR"],"summary":"MMR History","description":"Player MMR History","operationId":"mmr_history","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"MMR History","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MMRHistory"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch mmr history"}}}},"/v1/players/{account_id}/mmr-history/{hero_id}":{"get":{"tags":["MMR"],"summary":"Hero MMR History","description":"Player Hero MMR History","operationId":"hero_mmr_history","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"hero_id","in":"path","description":"The hero ID to fetch the MMR history for. See more: <https://api.deadlock-api.com/v1/assets/heroes>","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"Hero MMR History","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MMRHistory"}}}}},"400":{"description":"Provided parameters are invalid."},"500":{"description":"Failed to fetch hero mmr history"}}}},"/v1/players/{account_id}/rank-predict":{"get":{"tags":["Players"],"summary":"Rank Predict","description":"\nPredicts a player's current rank badge from their last 30 ranked/unranked matches.\nRequires at least 30 eligible matches (Ranked or Unranked, Normal game mode) with valid badge data.\n\n> **This is an ML prediction and may be inaccurate.** The model has no access to the player's\n> actual hidden MMR — it infers rank from match context signals only.\n\n### Model Accuracy (5-fold cross-validation)\n\n| Metric | Value |\n|--------|-------|\n| R² | 0.949 |\n| MAE | 1.08 sub-ranks |\n| RMSE | 1.89 sub-ranks |\n| Within ±1 sub-rank | 77.6% |\n| Within ±3 sub-rank | 93.9% |\n| Within ±5 sub-rank | 97.7% |\n| Within ±6 sub-rank | 98.6% |\n| Within ±10 sub-rank | 99.6% |\n\nAccuracy by tier:\n\n| Tier range | n | MAE |\n|------------|---|-----|\n| Low (1-4) | 404 | 3.68 sub-ranks |\n| Mid (5-7) | 777 | 2.91 sub-ranks |\n| High (8-11)| 25,556 | 0.98 sub-ranks |\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n","operationId":"rank_predict","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankPredictResponse"}}}},"400":{"description":"Invalid account ID"},"403":{"description":"User is protected or endpoint unavailable"},"422":{"description":"Not enough recent ranked matches (need 30)"},"429":{"description":"Rate limit exceeded"},"500":{"description":"Prediction failed"},"503":{"description":"Rank prediction model not loaded"}}}},"/v1/players/{account_id}/rank-predict/image":{"get":{"tags":["Players"],"summary":"Rank Predict Image","description":"Returns the predicted rank badge image directly (binary), not a URL. Use `?format=webp` for WebP and `?size=small` for the small badge (defaults to large).","operationId":"rank_predict_image","parameters":[{"name":"account_id","in":"path","description":"The players `SteamID3`","required":true,"schema":{"type":"integer","format":"int32","minimum":0}},{"name":"format","in":"query","description":"Image format. Defaults to `png`. Supported: `png`, `webp`.","required":false,"schema":{"type":"string","enum":["png","webp"]}},{"name":"size","in":"query","description":"Image size. Defaults to `large`. Supported: `large`, `small`.","required":false,"schema":{"type":"string","enum":["large","small"]}}],"responses":{"200":{"description":"Predicted rank badge image","content":{"image/png":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}},"image/webp":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}},"400":{"description":"Invalid account ID"},"403":{"description":"User is protected or endpoint unavailable"},"404":{"description":"No image available for the predicted rank"},"422":{"description":"Not enough recent ranked matches (need 30)"},"429":{"description":"Rate limit exceeded"},"500":{"description":"Prediction failed"},"503":{"description":"Rank prediction model not loaded"}}}},"/v1/servers":{"get":{"tags":["Servers"],"summary":"List Game Servers","description":"Returns all currently active game servers.","operationId":"list","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServersResponse"}}}}}}},"/v1/servers/metrics":{"post":{"tags":["Servers"],"summary":"Game Server Metric Ingest","description":"\nIngests a single metric event reported by a game server. The schema is intentionally\nflexible: `metric_value` carries the primary numeric measurement and `metadata` holds\narbitrary key/value context that varies per game mode or metric. Optional `map` and\n`game_mode_version` let callers segment leaderboards per map or per ruleset revision.\nRequires a valid game server secret as a Bearer token.\n ","operationId":"ingest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricIngestRequest"}}},"required":true},"responses":{"202":{"description":"Metric accepted for ingestion."},"400":{"description":"Invalid request body."},"401":{"description":"Invalid or missing game server secret."}}}},"/v1/servers/status":{"post":{"tags":["Servers"],"summary":"Game Server Status","description":"\nReports the current status of a game server.\nGame servers must call this endpoint at least once every 30 seconds to remain active.\nRequires a valid game server secret as a Bearer token.\n ","operationId":"status","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerStatusRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerStatusResponse"}}}},"400":{"description":"Invalid request body."},"401":{"description":"Invalid or missing game server secret."}}}},"/v1/servers/steam":{"get":{"tags":["Servers"],"summary":"List Steam Game Servers","description":"\nReturns the list of Deadlock game servers registered with the Steam master server\n(`IGameServersService/GetServerList`), filtered to Deadlock's appid.\n ","operationId":"steam_list","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SteamServer"}}}}},"500":{"description":"Fetching the Steam server list failed."}}}},"/v1/sql":{"get":{"tags":["SQL"],"summary":"Query","description":"\nExecutes a SQL query on the database.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 2req/min, 20req/hr |\n| Key | 10req/min |\n| Global | 30req/min |\n ","operationId":"sql","parameters":[{"name":"query","in":"query","description":"The SQL query to execute. It must follow the Clickhouse SQL syntax.","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","description":"The response format. Valid values: `json` (a JSON array), `ndjson` (newline-delimited JSON objects).","required":false,"schema":{"oneOf":[{"type":"string","enum":["json","ndjson"]}],"default":"json"}}],"responses":{"200":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/sql/tables":{"get":{"tags":["SQL"],"summary":"List Tables","description":"\nLists all tables in the database.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/min |\n| Key | - |\n| Global | 60req/min |\n ","operationId":"list_tables","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"500":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/sql/tables/{table}/schema":{"get":{"tags":["SQL"],"summary":"Table Schema","description":"\nReturns the schema of a table.\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 10req/min |\n| Key | - |\n| Global | 60req/min |\n ","operationId":"table_schema","parameters":[{"name":"table","in":"path","description":"The name of the table to fetch the schema for.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}}}}},"500":{"description":"","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/patches":{"get":{"tags":["Patches"],"summary":"Notes","description":"\nReturns a unified feed combining patch notes from the official Forum changelog and the Steam news feed.\n\nEach entry is tagged with a `source` field (`forum` or `steam`).\n\n- Forum RSS: https://forums.playdeadlock.com/forums/changelog.10/index.rss\n- Steam News RSS: https://store.steampowered.com/feeds/news/app/1422450/\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 100req/s |\n| Key | - |\n| Global | - |\n ","operationId":"feed","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FeedItem"}}}}},"500":{"description":"Fetching or parsing one of the RSS feeds failed"}}}}},"components":{"schemas":{"APIInfo":{"type":"object","properties":{"fetched_matches_per_day":{"type":["integer","null"],"format":"int64","description":"The number of matches fetched in the last 24 hours.","minimum":0},"table_sizes":{"type":["object","null"],"description":"The sizes of all tables in the database.","additionalProperties":{"$ref":"#/components/schemas/TableSize"},"propertyNames":{"type":"string"}},"user_ingested_matches_last24h":{"type":["integer","null"],"format":"int64","description":"The number of matches ingested in the last 24 hours.","deprecated":true,"minimum":0}}},"Ability":{"type":"object","required":["id","class_name","name","type","description"],"properties":{"ability_type":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AbilityType"}]},"behaviours":{"type":["array","null"],"items":{"type":"string"}},"boss_damage_scale":{"type":["number","null"],"format":"double"},"class_name":{"type":"string"},"dependant_abilities":{"type":["array","null"],"items":{"type":"string"}},"dependent_abilities":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/DependantAbilities"},"propertyNames":{"type":"string"}},"description":{"$ref":"#/components/schemas/AbilityDescription"},"grant_ammo_on_cast":{"type":["boolean","null"]},"hero":{"type":["integer","null"],"format":"int32","minimum":0},"heroes":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}},"id":{"type":"integer","format":"int32","minimum":0},"image":{"type":["string","null"]},"image_webp":{"type":["string","null"]},"name":{"type":"string"},"properties":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/ItemProperty"},"propertyNames":{"type":"string"}},"start_trained":{"type":["boolean","null"]},"tooltip_details":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AbilityTooltipDetails"}]},"type":{"$ref":"#/components/schemas/ItemType"},"update_time":{"type":["integer","null"],"format":"int64"},"upgrades":{"type":["array","null"],"items":{"$ref":"#/components/schemas/RawAbilityUpgrade"}},"videos":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AbilityVideos"}]},"weapon_info":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawItemWeaponInfoInner"}]}}},"AbilityActivation":{"type":"string","enum":["hold_toggle","instant_cast","on_button_is_down","passive","press","press_toggle","instant_cast_toggle"]},"AbilityDescription":{"type":"object","properties":{"active":{"type":["string","null"]},"desc":{"type":["string","null"]},"passive":{"type":["string","null"]},"quip":{"type":["string","null"]},"t1_desc":{"type":["string","null"]},"t2_desc":{"type":["string","null"]},"t3_desc":{"type":["string","null"]}}},"AbilityImbue":{"type":"string","enum":["imbue_active","imbue_active_non_ult","imbue_modifier_value"]},"AbilitySectionType":{"type":"string","enum":["innate","active","passive"]},"AbilityTooltipDetails":{"type":"object","properties":{"additional_header_properties":{"type":["array","null"],"items":{"type":"string"}},"info_sections":{"type":["array","null"],"items":{"$ref":"#/components/schemas/TooltipDetailsInfoSection"}}}},"AbilityType":{"type":"string","enum":["innate","item","signature","ultimate","weapon","melee","cosmetic"]},"AbilityVideos":{"type":"object","properties":{"mp4":{"type":["string","null"]},"webm":{"type":["string","null"]}}},"Accolade":{"type":"object","required":["class_name","id","tracked_stat_name","flavor_name","description","threshold_type"],"properties":{"class_name":{"type":"string"},"description":{"type":"string"},"enabled_game_modes":{"type":["array","null"],"items":{"type":"string"}},"flavor_name":{"type":"string"},"id":{"type":"integer","format":"int32","minimum":0},"threshold_type":{"type":"string"},"tracked_stat_name":{"type":"string"}}},"ActiveMatch":{"type":"object","required":["players"],"properties":{"compat_version":{"type":["integer","null"],"format":"int32","minimum":0},"duration_s":{"type":["integer","null"],"format":"int32","minimum":0},"game_mode":{"type":["integer","null"],"format":"int32"},"game_mode_parsed":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ActiveMatchGameMode"}]},"game_mode_version":{"type":["integer","null"],"format":"int32","minimum":0},"lobby_id":{"type":["integer","null"],"format":"int64","minimum":0},"match_id":{"type":["integer","null"],"format":"int64","minimum":0},"match_mode":{"type":["integer","null"],"format":"int32"},"match_mode_parsed":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ActiveMatchMode"}]},"match_score":{"type":["integer","null"],"format":"int32","minimum":0},"net_worth_team_0":{"type":["integer","null"],"format":"int32","minimum":0},"net_worth_team_1":{"type":["integer","null"],"format":"int32","minimum":0},"objectives_mask_team0":{"type":["integer","null"],"format":"int64","minimum":0},"objectives_mask_team1":{"type":["integer","null"],"format":"int64","minimum":0},"open_spectator_slots":{"type":["integer","null"],"format":"int32","minimum":0},"players":{"type":"array","items":{"$ref":"#/components/schemas/ActiveMatchPlayer"}},"region_mode":{"type":["integer","null"],"format":"int32"},"region_mode_parsed":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RegionMode"}]},"spectators":{"type":["integer","null"],"format":"int32","minimum":0},"start_time":{"type":["integer","null"],"format":"int32","minimum":0},"winning_team":{"type":["integer","null"],"format":"int32"},"winning_team_parsed":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ActiveMatchTeam"}]}}},"ActiveMatchGameMode":{"type":"string","enum":["KECitadelGameModeInvalid","KECitadelGameModeNormal","KECitadelGameMode1v1Test","KECitadelGameModeSandbox","KECitadelGameModeStreetBrawl"]},"ActiveMatchMode":{"type":"string","enum":["Invalid","Unranked","PrivateLobby","CoopBot","Ranked","ServerTest","Tutorial","HeroLabs","Calibration"]},"ActiveMatchPlayer":{"type":"object","properties":{"abandoned":{"type":["boolean","null"]},"account_id":{"type":["integer","null"],"format":"int32","minimum":0},"hero_id":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"team":{"type":["integer","null"],"format":"int32"},"team_parsed":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ActiveMatchTeam"}]}}},"ActiveMatchTeam":{"type":"string","enum":["Team0","Team1","Spectator"]},"AnalyticsAbilityOrderStats":{"type":"object","required":["abilities","wins","losses","matches","players","total_kills","total_deaths","total_assists"],"properties":{"abilities":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>"},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"players":{"type":"integer","format":"int64","minimum":0},"total_assists":{"type":"integer","format":"int64","minimum":0},"total_deaths":{"type":"integer","format":"int64","minimum":0},"total_kills":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"AnalyticsGameStats":{"type":"object","required":["bucket","total_matches","total_players","avg_duration_s","avg_kills","avg_deaths","avg_assists","avg_kd_ratio","avg_net_worth","avg_last_hits","avg_denies","avg_player_damage","avg_player_damage_taken","avg_boss_damage","avg_player_healing","avg_accuracy","avg_crit_rate","avg_ending_level","avg_gold_player","avg_gold_player_orbs","avg_gold_lane_creep","avg_gold_lane_creep_orbs","avg_gold_neutral_creep","avg_gold_neutral_creep_orbs","avg_gold_boss","avg_gold_boss_orb","avg_gold_treasure","avg_gold_denied","avg_gold_death_loss","avg_creep_damage","avg_neutral_damage","avg_self_healing","avg_damage_mitigated","avg_damage_absorbed","avg_heal_prevented","avg_creep_kills","avg_neutral_kills","avg_possible_creeps","avg_max_health","avg_weapon_power","avg_tech_power","avg_first_mid_boss_time_s","avg_first_objective_destroyed_time_s","mid_boss_kill_rate","abandon_rate","team0_wins","team1_wins"],"properties":{"abandon_rate":{"type":"number","format":"double"},"avg_accuracy":{"type":"number","format":"double"},"avg_assists":{"type":"number","format":"double"},"avg_boss_damage":{"type":"number","format":"double"},"avg_creep_damage":{"type":"number","format":"double"},"avg_creep_kills":{"type":"number","format":"double"},"avg_crit_rate":{"type":"number","format":"double"},"avg_damage_absorbed":{"type":"number","format":"double"},"avg_damage_mitigated":{"type":"number","format":"double"},"avg_deaths":{"type":"number","format":"double"},"avg_denies":{"type":"number","format":"double"},"avg_duration_s":{"type":"number","format":"double"},"avg_ending_level":{"type":"number","format":"double"},"avg_first_mid_boss_time_s":{"type":"number","format":"double"},"avg_first_objective_destroyed_time_s":{"type":"number","format":"double"},"avg_gold_boss":{"type":"number","format":"double"},"avg_gold_boss_orb":{"type":"number","format":"double"},"avg_gold_death_loss":{"type":"number","format":"double"},"avg_gold_denied":{"type":"number","format":"double"},"avg_gold_lane_creep":{"type":"number","format":"double"},"avg_gold_lane_creep_orbs":{"type":"number","format":"double"},"avg_gold_neutral_creep":{"type":"number","format":"double"},"avg_gold_neutral_creep_orbs":{"type":"number","format":"double"},"avg_gold_player":{"type":"number","format":"double"},"avg_gold_player_orbs":{"type":"number","format":"double"},"avg_gold_treasure":{"type":"number","format":"double"},"avg_heal_prevented":{"type":"number","format":"double"},"avg_kd_ratio":{"type":"number","format":"double"},"avg_kills":{"type":"number","format":"double"},"avg_last_hits":{"type":"number","format":"double"},"avg_max_health":{"type":"number","format":"double"},"avg_net_worth":{"type":"number","format":"double"},"avg_neutral_damage":{"type":"number","format":"double"},"avg_neutral_kills":{"type":"number","format":"double"},"avg_player_damage":{"type":"number","format":"double"},"avg_player_damage_taken":{"type":"number","format":"double"},"avg_player_healing":{"type":"number","format":"double"},"avg_possible_creeps":{"type":"number","format":"double"},"avg_self_healing":{"type":"number","format":"double"},"avg_tech_power":{"type":"number","format":"double"},"avg_weapon_power":{"type":"number","format":"double"},"bucket":{"type":"integer","format":"int32","minimum":0},"mid_boss_kill_rate":{"type":"number","format":"double"},"team0_wins":{"type":"integer","format":"int64","minimum":0},"team1_wins":{"type":"integer","format":"int64","minimum":0},"total_matches":{"type":"integer","format":"int64","minimum":0},"total_players":{"type":"integer","format":"int64","minimum":0}}},"AnalyticsHeroStats":{"type":"object","required":["hero_id","bucket","wins","losses","matches","matches_per_bucket","total_kills","total_deaths","total_assists","total_net_worth","total_last_hits","total_denies","total_player_damage","total_player_damage_taken","total_boss_damage","total_creep_damage","total_neutral_damage","total_max_health","total_shots_hit","total_shots_missed"],"properties":{"bucket":{"type":"integer","format":"int32","minimum":0},"hero_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"matches_per_bucket":{"type":"integer","format":"int64","minimum":0},"total_assists":{"type":"integer","format":"int64","minimum":0},"total_boss_damage":{"type":"integer","format":"int64","minimum":0},"total_creep_damage":{"type":"integer","format":"int64","minimum":0},"total_deaths":{"type":"integer","format":"int64","minimum":0},"total_denies":{"type":"integer","format":"int64","minimum":0},"total_kills":{"type":"integer","format":"int64","minimum":0},"total_last_hits":{"type":"integer","format":"int64","minimum":0},"total_max_health":{"type":"integer","format":"int64","minimum":0},"total_net_worth":{"type":"integer","format":"int64","minimum":0},"total_neutral_damage":{"type":"integer","format":"int64","minimum":0},"total_player_damage":{"type":"integer","format":"int64","minimum":0},"total_player_damage_taken":{"type":"integer","format":"int64","minimum":0},"total_shots_hit":{"type":"integer","format":"int64","minimum":0},"total_shots_missed":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"BadgeDistribution":{"type":"object","required":["badge_level","total_matches"],"properties":{"badge_level":{"type":"integer","format":"int32","description":"The badge level (tier = first digits, subtier = last digit). See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"total_matches":{"type":"integer","format":"int64","description":"The total number of matches.","minimum":0}}},"Build":{"type":"object","required":["hero_build"],"properties":{"hero_build":{"$ref":"#/components/schemas/BuildHero"},"num_favorites":{"type":["integer","null"],"format":"int32","minimum":0},"num_ignores":{"type":["integer","null"],"format":"int32","minimum":0},"num_reports":{"type":["integer","null"],"format":"int32","minimum":0},"num_weekly_favorites":{"type":["integer","null"],"format":"int32","minimum":0},"rollup_category":{"type":["integer","null"],"format":"int32","minimum":0}}},"BuildHero":{"type":"object","required":["hero_id","hero_build_id","author_account_id","name","language","version","origin_build_id","details"],"properties":{"author_account_id":{"type":"integer","format":"int32","minimum":0},"description":{"type":["string","null"]},"details":{"$ref":"#/components/schemas/BuildHeroDetails"},"development_build":{"type":["boolean","null"]},"hero_build_id":{"type":"integer","format":"int32","minimum":0},"hero_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"language":{"type":"integer","format":"int32","minimum":0},"last_updated_timestamp":{"type":["integer","null"],"format":"int64"},"name":{"type":"string"},"origin_build_id":{"type":"integer","format":"int32","minimum":0},"publish_timestamp":{"type":["integer","null"],"format":"int64"},"tags":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}},"version":{"type":"integer","format":"int32","minimum":0}}},"BuildHeroDetails":{"type":"object","required":["mod_categories"],"properties":{"ability_order":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/BuildHeroDetailsAbilityOrder"}]},"mod_categories":{"type":"array","items":{"$ref":"#/components/schemas/BuildHeroDetailsCategory"}}}},"BuildHeroDetailsAbilityOrder":{"type":"object","properties":{"currency_changes":{"type":["array","null"],"items":{"$ref":"#/components/schemas/BuildHeroDetailsAbilityOrderCurrencyChange"}}}},"BuildHeroDetailsAbilityOrderCurrencyChange":{"type":"object","required":["ability_id","currency_type","delta"],"properties":{"ability_id":{"type":"integer","format":"int32","minimum":0},"annotation":{"type":["string","null"]},"currency_type":{"type":"integer","format":"int32"},"delta":{"type":"integer","format":"int32"}}},"BuildHeroDetailsCategory":{"type":"object","required":["name"],"properties":{"description":{"type":["string","null"]},"height":{"type":["number","null"],"format":"float"},"mods":{"type":["array","null"],"items":{"$ref":"#/components/schemas/BuildHeroDetailsCategoryAbility"}},"name":{"type":"string"},"optional":{"type":["boolean","null"]},"width":{"type":["number","null"],"format":"float"}}},"BuildHeroDetailsCategoryAbility":{"type":"object","required":["ability_id"],"properties":{"ability_id":{"type":"integer","format":"int32","minimum":0},"annotation":{"type":["string","null"]},"imbue_target_ability_id":{"type":["integer","null"],"format":"int32","minimum":0},"required_flex_slots":{"type":["integer","null"],"format":"int32","minimum":0},"sell_priority":{"type":["integer","null"],"format":"int32","minimum":0}}},"BuildItemStats":{"type":"object","required":["item_id","builds"],"properties":{"builds":{"type":"integer","format":"int64"},"item_id":{"type":"integer","format":"int64","description":"See more: <https://api.deadlock-api.com/v1/assets/items>"}}},"BuildTag":{"type":"object","required":["class_name","label","id","icon"],"properties":{"class_name":{"type":"string"},"icon":{"type":"string"},"id":{"type":"integer","format":"int32","minimum":0},"label":{"type":"string"}}},"ClickhouseMatchInfo":{"type":"object","required":["match_id","start_time","duration_s","match_mode","game_mode","players"],"properties":{"average_badge_team0":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"average_badge_team1":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"duration_s":{"type":"integer","format":"int32","minimum":0},"game_mode":{"type":"integer","format":"int32"},"match_id":{"type":"integer","format":"int64","minimum":0},"match_mode":{"type":"integer","format":"int32"},"players":{"type":"array","items":{"$ref":"#/components/schemas/MatchPlayer"}},"start_time":{"type":"integer","format":"int32","minimum":0}}},"ClickhouseSalts":{"type":"object","required":["match_id"],"properties":{"cluster_id":{"type":["integer","null"],"format":"int32","minimum":0},"match_id":{"type":"integer","format":"int64","minimum":0},"metadata_salt":{"type":["integer","null"],"format":"int32","minimum":0},"replay_salt":{"type":["integer","null"],"format":"int32","minimum":0},"username":{"type":["string","null"]}}},"Color":{"type":"object","description":"RGBA color emitted by KV3 as a 3- or 4-element integer array. Alpha\ndefaults to 255 when omitted.","required":["red","green","blue","alpha"],"properties":{"alpha":{"type":"integer","format":"int32","minimum":0},"blue":{"type":"integer","format":"int32","minimum":0},"green":{"type":"integer","format":"int32","minimum":0},"red":{"type":"integer","format":"int32","minimum":0}}},"ColumnSchema":{"type":"object","required":["name","data_type","nullable"],"properties":{"data_type":{"type":"string","description":"Arrow data type, rendered as its canonical textual form (e.g. `Int32`, `Utf8`)."},"name":{"type":"string"},"nullable":{"type":"boolean"}}},"CreateCustomRequest":{"type":"object","properties":{"callback_url":{"type":["string","null"],"description":"If a callback url is provided, we will send a POST request to this url when the match starts."},"cheats_enabled":{"type":["boolean","null"]},"disable_auto_ready":{"type":["boolean","null"],"description":"If auto-ready is disabled, the bot will not automatically ready up.\nYou need to call the `ready` endpoint to ready up."},"duplicate_heroes_enabled":{"type":["boolean","null"]},"game_mode":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/GameMode"}]},"is_publicly_visible":{"type":["boolean","null"]},"min_roster_size":{"type":["integer","null"],"format":"int32","minimum":0},"randomize_lanes":{"type":["boolean","null"]},"server_region":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ServerRegion"}]}}},"CreateCustomResponse":{"type":"object","required":["party_id","party_code"],"properties":{"callback_secret":{"type":["string","null"],"description":"If a callback url is provided, this is the secret that should be used to verify the callback.\nThe secret is a base64 encoded random string. To verify it you should compare it with the X-Callback-Secret header.\nIf no callback url is provided, this will be None."},"party_code":{"type":"string"},"party_id":{"type":"string"}}},"Curve":{"type":"object","properties":{"base":{"type":["number","null"],"format":"double"},"per_minute_after_start":{"type":["number","null"],"format":"double"}}},"CurveOrFloat":{"oneOf":[{"$ref":"#/components/schemas/Curve"},{"type":"number","format":"double"}]},"DamageFlash":{"type":"object","required":["bullet_damage","tech_damage","healing_damage","crit_damage","melee_damage"],"properties":{"bullet_damage":{"$ref":"#/components/schemas/FlashData"},"crit_damage":{"$ref":"#/components/schemas/FlashData"},"healing_damage":{"$ref":"#/components/schemas/FlashData"},"melee_damage":{"$ref":"#/components/schemas/FlashData"},"tech_damage":{"$ref":"#/components/schemas/FlashData"}}},"DemoQueryJobResponse":{"type":"object","required":["job_id","status"],"properties":{"job_id":{"type":"string","description":"Stable id of the job; poll `/demo/query/{job_id}` for status and the result URL."},"status":{"$ref":"#/components/schemas/JobStatus"}}},"DemoQueryRequest":{"type":"object","required":["match_id","query"],"properties":{"format":{"$ref":"#/components/schemas/OutputFormat","description":"Output format of the result artifact."},"match_id":{"type":"integer","format":"int64","description":"Match whose demo to query.","minimum":0},"query":{"type":"string","description":"SQL query to run over the demo's entity/event tables (see `/demo/schema`)."}}},"DemoQueryStatusResponse":{"type":"object","required":["job_id","status","match_id","format"],"properties":{"error":{"type":["string","null"],"description":"Failure reason, once `failed`."},"estimated_wait_seconds":{"type":["integer","null"],"format":"int64","description":"Rough seconds until the result is ready, while `queued` or `running`.","minimum":0},"format":{"$ref":"#/components/schemas/OutputFormat"},"job_id":{"type":"string"},"match_id":{"type":"integer","format":"int64","minimum":0},"result_url":{"type":["string","null"],"description":"Public URL of the result artifact, once `done`."},"status":{"$ref":"#/components/schemas/JobStatus"}}},"DemoSchemaResponse":{"type":"object","required":["match_id","demo_url","tables"],"properties":{"demo_url":{"type":"string"},"match_id":{"type":"integer","format":"int64","minimum":0},"tables":{"type":"array","items":{"$ref":"#/components/schemas/TableSchemaResponse"}}}},"DependantAbilities":{"type":"object","properties":{"flags":{"type":["array","null"],"items":{"type":"string"}}}},"DistributionEntry":{"type":"object","required":["rank","players"],"properties":{"players":{"type":"integer","format":"int64","minimum":0},"rank":{"type":"integer","format":"int32","minimum":0}}},"DraftBucket":{"type":"object","properties":{"good":{"type":["number","null"],"format":"double"},"normal":{"type":["number","null"],"format":"double"}}},"DraftBuckets":{"type":"object","properties":{"bucket":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/DraftBucket"}]},"name":{"type":["string","null"]}}},"EnemyStats":{"type":"object","required":["enemy_id","wins","matches_played","matches"],"properties":{"enemy_id":{"type":"integer","format":"int32","minimum":0},"matches":{"type":"array","items":{"type":"integer","format":"int64","minimum":0}},"matches_played":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","description":"The amount of matches won against the enemy.","minimum":0}}},"FeedItem":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/ForumPatch"},{"type":"object","required":["source"],"properties":{"source":{"type":"string","enum":["forum"]}}}]},{"allOf":[{"$ref":"#/components/schemas/SteamNews"},{"type":"object","required":["source"],"properties":{"source":{"type":"string","enum":["steam"]}}}]}]},"FlashData":{"type":"object","required":["duration","coverage","hardness","brightness","color"],"properties":{"brightness":{"type":"number","format":"double"},"brightness_in_light_sensitivity_mode":{"type":["number","null"],"format":"double"},"color":{"$ref":"#/components/schemas/Color"},"coverage":{"type":"number","format":"double"},"duration":{"type":"number","format":"double"},"hardness":{"type":"number","format":"double"}}},"ForumPatch":{"type":"object","required":["title","pub_date","link","guid","category","content"],"properties":{"category":{"$ref":"#/components/schemas/PatchCategory"},"content":{"type":"string"},"guid":{"$ref":"#/components/schemas/PatchGuid"},"link":{"type":"string"},"pub_date":{"type":"string","format":"date-time"},"title":{"type":"string"}}},"GameMode":{"type":"string","enum":["normal","street_brawl","explore_n_y_c","internal"]},"GameServerInfo":{"type":"object","required":["server_id","game_mode","region","ip","port","current_player_count","last_updated"],"properties":{"current_player_count":{"type":"integer","format":"int32","minimum":0},"game_mode":{"type":"string"},"hostname":{"type":["string","null"]},"ip":{"type":"string"},"last_updated":{"type":"string"},"port":{"type":"integer","format":"int32","minimum":0},"region":{"type":"string"},"server_id":{"type":"string"}}},"GenericData":{"type":"object","required":["damage_flash","glitch_settings","lane_info","new_player_metrics","item_price_per_tier","trooper_kill_gold_share_frac","hero_kill_gold_share_frac","aim_spring_strength","targeting_spring_strength","objective_params","rejuv_params","mini_map_offsets","weapon_groups","armor_groups","spirit_groups"],"properties":{"aim_spring_strength":{"type":"array","items":{"type":"number","format":"double"}},"armor_groups":{"type":"array","items":{"$ref":"#/components/schemas/ItemGroup"}},"damage_flash":{"$ref":"#/components/schemas/DamageFlash"},"enemy_objectives_and_zipline_color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"enemy_objectives_color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"enemy_zipline_color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"glitch_settings":{"$ref":"#/components/schemas/GlitchSettings"},"hero_kill_gold_share_frac":{"type":"array","items":{"type":"number","format":"double"}},"item_price_per_tier":{"type":"array","items":{"type":"integer","format":"int64"}},"lane_info":{"type":"array","items":{"$ref":"#/components/schemas/LaneInfo"}},"mini_map_offsets":{"type":"array","items":{"$ref":"#/components/schemas/MiniMapOffsets"}},"minimap_team_combine_color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"minimap_team_rebels_color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"new_player_metrics":{"type":"array","items":{"$ref":"#/components/schemas/NewPlayerMetrics"}},"objective_params":{"$ref":"#/components/schemas/ObjectiveParams"},"rejuv_params":{"$ref":"#/components/schemas/RejuvParams"},"spirit_groups":{"type":"array","items":{"$ref":"#/components/schemas/ItemGroup"}},"street_brawl":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StreetBrawl"}]},"targeting_spring_strength":{"type":"array","items":{"type":"number","format":"double"}},"trooper_kill_gold_share_frac":{"type":"array","items":{"type":"number","format":"double"}},"weapon_groups":{"type":"array","items":{"$ref":"#/components/schemas/ItemGroup"}}}},"GetCustomMatchIdResponse":{"type":"object","required":["match_id"],"properties":{"match_id":{"type":"integer","format":"int64","minimum":0}}},"GlitchSettings":{"type":"object","required":["strength","uantize_type","quantize_scale","quantize_strength","frame_rate","speed","jump_strength","distort_strength","white_noise_strength","scanline_strength","breakup_strength"],"properties":{"breakup_strength":{"type":"number","format":"double"},"distort_strength":{"type":"number","format":"double"},"frame_rate":{"type":"number","format":"double"},"jump_strength":{"type":"number","format":"double"},"quantize_scale":{"type":"number","format":"double"},"quantize_strength":{"type":"number","format":"double"},"scanline_strength":{"type":"number","format":"double"},"speed":{"type":"number","format":"double"},"strength":{"type":"number","format":"double"},"uantize_type":{"type":"number","format":"double","description":"Field name preserved as-is for `/v2/generic-data` compatibility."},"white_noise_strength":{"type":"number","format":"double"}}},"HashMap":{"type":"object","additionalProperties":{"type":"object","required":["avg","std","percentile1","percentile5","percentile10","percentile25","percentile50","percentile75","percentile90","percentile95","percentile99"],"properties":{"avg":{"type":"number","format":"double"},"percentile1":{"type":"number","format":"double"},"percentile10":{"type":"number","format":"double"},"percentile25":{"type":"number","format":"double"},"percentile5":{"type":"number","format":"double"},"percentile50":{"type":"number","format":"double"},"percentile75":{"type":"number","format":"double"},"percentile90":{"type":"number","format":"double"},"percentile95":{"type":"number","format":"double"},"percentile99":{"type":"number","format":"double"},"std":{"type":"number","format":"double"}}},"propertyNames":{"type":"string","enum":["kills","deaths","assists","net_worth","net_worth_per_min","denies","last_hits","crit_shot_rate","accuracy","kd","kda","kills_plus_assists","player_damage","player_damage_per_health","player_damage_per_min","player_damage_taken_per_min","neutral_damage","neutral_damage_per_min","boss_damage","boss_damage_per_min","self_healing","player_healing","healing","self_healing_per_min","player_healing_per_min","healing_per_min","teammate_healing","teammate_barriering","heal_prevented"]}},"HashMap_HeroItemType_String":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string","description":"Slot used by `m_mapBoundAbilities` on heroes and NPC units. Parses from\n`Source`'s `ESlot_*` identifiers and serializes as a `snake_case` string,\nincluding when used as a JSON map key.","enum":["WeaponPrimary","WeaponSecondary","WeaponMelee","AbilityMantle","AbilityJump","AbilitySlide","AbilityZipLine","AbilityZipLineBoost","AbilityClimbRope","AbilityInnate1","AbilityInnate2","AbilityInnate3","Signature1","Signature2","Signature3","Signature4","EslotCosmetic1"]}},"HashMap_ItemSlotType_ItemSlotInfo":{"type":"object","additionalProperties":{"type":"object","required":["max_purchases_for_tier"],"properties":{"max_purchases_for_tier":{"type":"array","items":{"type":"integer","format":"int64"}}}},"propertyNames":{"type":"string","enum":["weapon","spirit","vitality"]}},"HashMap_ItemSlotType_Vec_MapModCostBonus":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","required":["gold_threshold","bonus","percent_on_graph"],"properties":{"bonus":{"type":"number","format":"double"},"gold_threshold":{"type":"integer","format":"int64"},"percent_on_graph":{"type":"number","format":"double"}}}},"propertyNames":{"type":"string","enum":["weapon","spirit","vitality"]}},"HashMap_ItemSlotType_Vec_PurchaseBonus":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","required":["value_type","tier","value"],"properties":{"tier":{"type":"integer","format":"int64"},"value":{"type":"string"},"value_type":{"type":"string"}}}},"propertyNames":{"type":"string","enum":["weapon","spirit","vitality"]}},"HashMap_String_LevelInfo":{"type":"object","additionalProperties":{"type":"object","required":["required_gold"],"properties":{"bonus_currencies":{"type":["array","null"],"items":{"type":"string"}},"required_gold":{"type":"integer","format":"int64"},"use_standard_upgrade":{"type":["boolean","null"]}}},"propertyNames":{"type":"string"}},"HashMap_String_Option_DraftBucketing":{"type":"object","additionalProperties":{"oneOf":[{"type":"null"},{"type":"object","properties":{"bucket":{"type":["string","null"]},"weight":{"type":["number","null"],"format":"double"}}}]},"propertyNames":{"type":"string"}},"HashMap_String_ScalingStat":{"type":"object","additionalProperties":{"type":"object","required":["scaling_stat","scale"],"properties":{"scale":{"type":"number","format":"double"},"scaling_stat":{"type":"string"}}},"propertyNames":{"type":"string"}},"HashMap_String_f64":{"type":"object","additionalProperties":{"type":"number","format":"double"},"propertyNames":{"type":"string"}},"Hero":{"type":"object","required":["id","class_name","name","description","player_selectable","disabled","in_development","needs_testing","assigned_players_only","tags","limited_testing","complexity","skin","images","items","starting_stats","item_slot_info","physics","colors","shop_stat_display","stats_display","hero_stats_ui","level_info","scaling_stats","purchase_bonuses","standard_level_up_upgrades"],"properties":{"assigned_players_only":{"type":"boolean"},"class_name":{"type":"string"},"colors":{"$ref":"#/components/schemas/HeroColors"},"complexity":{"type":"integer","format":"int64"},"cost_bonuses":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/HashMap_ItemSlotType_Vec_MapModCostBonus"}]},"description":{"$ref":"#/components/schemas/HeroDescription"},"disabled":{"type":"boolean"},"gun_tag":{"type":["string","null"]},"hero_stats_ui":{"$ref":"#/components/schemas/HeroStatsUI"},"hero_type":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/HeroType"}]},"hideout_rich_presence":{"type":["string","null"]},"id":{"type":"integer","format":"int32","minimum":0},"images":{"$ref":"#/components/schemas/HeroImages"},"in_development":{"type":"boolean"},"item_draft_bucketing":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/HashMap_String_Option_DraftBucketing"}]},"item_draft_weights":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/HashMap_String_f64"}]},"item_slot_info":{"$ref":"#/components/schemas/HashMap_ItemSlotType_ItemSlotInfo"},"items":{"$ref":"#/components/schemas/HashMap_HeroItemType_String"},"level_info":{"$ref":"#/components/schemas/HashMap_String_LevelInfo"},"limited_testing":{"type":"boolean"},"name":{"type":"string"},"needs_testing":{"type":"boolean"},"physics":{"$ref":"#/components/schemas/HeroPhysics"},"player_selectable":{"type":"boolean"},"prerelease_only":{"type":["boolean","null"]},"purchase_bonuses":{"$ref":"#/components/schemas/HashMap_ItemSlotType_Vec_PurchaseBonus"},"scaling_stats":{"$ref":"#/components/schemas/HashMap_String_ScalingStat"},"shop_stat_display":{"$ref":"#/components/schemas/ShopStatDisplay"},"skin":{"type":"integer","format":"int64"},"standard_level_up_upgrades":{"$ref":"#/components/schemas/HashMap_String_f64"},"starting_stats":{"$ref":"#/components/schemas/StartingStats"},"stats_display":{"$ref":"#/components/schemas/StatsDisplay"},"tags":{"type":"array","items":{"type":"string"},"description":"Always emitted (empty if the hero declares no `m_vecHeroTags`)."}}},"HeroBanStats":{"type":"object","required":["hero_id","bucket","bans"],"properties":{"bans":{"type":"integer","format":"int64","description":"The number of matches in which this hero was banned.","minimum":0},"bucket":{"type":"integer","format":"int32","description":"The bucket value (depends on the bucket query parameter).","minimum":0},"hero_id":{"type":"integer","format":"int32","description":"The ID of the banned hero. See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0}}},"HeroBuildStats":{"type":"object","required":["hero_id","hero_build_id","wins","losses","matches","players"],"properties":{"hero_build_id":{"type":"integer","format":"int64","description":"The ID of the hero build. The `hero_build_id` is the first build the player had selected when the game started.","minimum":0},"hero_id":{"type":"integer","format":"int32","description":"The ID of the hero. See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"losses":{"type":"integer","format":"int64","description":"The number of losses with this build.","minimum":0},"matches":{"type":"integer","format":"int64","description":"The total number of matches played with this build (`wins + losses`).","minimum":0},"players":{"type":"integer","format":"int64","description":"The number of unique players who used this build.","minimum":0},"wins":{"type":"integer","format":"int64","description":"The number of wins with this build.","minimum":0}}},"HeroColors":{"type":"object","required":["ui"],"properties":{"style":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}},"style_hex":{"type":["string","null"]},"ui":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}},"HeroCombStats":{"type":"object","required":["hero_ids","wins","losses","matches"],"properties":{"hero_ids":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>"},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"HeroCounterStats":{"type":"object","required":["hero_id","enemy_hero_id","wins","matches_played","kills","enemy_kills","deaths","enemy_deaths","assists","enemy_assists","denies","enemy_denies","last_hits","enemy_last_hits","networth","enemy_networth","obj_damage","enemy_obj_damage","creeps","enemy_creeps"],"properties":{"assists":{"type":"integer","format":"int64","description":"The number of assists by `hero_id` when facing `enemy_hero_id`.","minimum":0},"creeps":{"type":"integer","format":"int64","description":"The number of creeps killed by `hero_id` when facing `enemy_hero_id`.","minimum":0},"deaths":{"type":"integer","format":"int64","description":"The number of deaths by `hero_id` when facing `enemy_hero_id`.","minimum":0},"denies":{"type":"integer","format":"int64","description":"The number of denies by `hero_id` when facing `enemy_hero_id`.","minimum":0},"enemy_assists":{"type":"integer","format":"int64","description":"The number of assists by `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_creeps":{"type":"integer","format":"int64","description":"The number of creeps killed by `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_deaths":{"type":"integer","format":"int64","description":"The number of deaths by `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_denies":{"type":"integer","format":"int64","description":"The number of denies by `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_hero_id":{"type":"integer","format":"int32","description":"The ID of the opposing hero. See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"enemy_kills":{"type":"integer","format":"int64","description":"The number of kills by `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_last_hits":{"type":"integer","format":"int64","description":"The number of last hits by `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_networth":{"type":"integer","format":"int64","description":"The net worth of `enemy_hero_id` when facing `hero_id`.","minimum":0},"enemy_obj_damage":{"type":"integer","format":"int64","description":"The amount of objective damage dealt by `enemy_hero_id` when facing `hero_id`.","minimum":0},"hero_id":{"type":"integer","format":"int32","description":"The ID of the hero. See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"kills":{"type":"integer","format":"int64","description":"The number of kills by `hero_id` when facing `enemy_hero_id`.","minimum":0},"last_hits":{"type":"integer","format":"int64","description":"The number of last hits by `hero_id` when facing `enemy_hero_id`.","minimum":0},"matches_played":{"type":"integer","format":"int64","description":"The total number of matches played between `hero_id` and `enemy_hero_id` that meet the filter criteria.","minimum":0},"networth":{"type":"integer","format":"int64","description":"The net worth of `hero_id` when facing `enemy_hero_id`.","minimum":0},"obj_damage":{"type":"integer","format":"int64","description":"The amount of objective damage dealt by `hero_id` when facing `enemy_hero_id`.","minimum":0},"wins":{"type":"integer","format":"int64","description":"The number of times `hero_id` won the match when facing `enemy_hero_id`.","minimum":0}}},"HeroDescription":{"type":"object","properties":{"lore":{"type":["string","null"]},"playstyle":{"type":["string","null"]},"role":{"type":["string","null"]}}},"HeroEntry":{"type":"object","required":["rank","hero_id","value","matches"],"properties":{"hero_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"rank":{"type":"integer","format":"int64","minimum":0},"value":{"type":"number","format":"double"}}},"HeroImages":{"type":"object","properties":{"background_image":{"type":["string","null"]},"background_image_webp":{"type":["string","null"]},"hero_card_critical":{"type":["string","null"]},"hero_card_critical_webp":{"type":["string","null"]},"hero_card_gloat":{"type":["string","null"]},"hero_card_gloat_webp":{"type":["string","null"]},"icon_hero_card":{"type":["string","null"]},"icon_hero_card_webp":{"type":["string","null"]},"icon_image_small":{"type":["string","null"]},"icon_image_small_webp":{"type":["string","null"]},"minimap_image":{"type":["string","null"]},"minimap_image_webp":{"type":["string","null"]},"name_image":{"type":["string","null"]},"top_bar_vertical_image":{"type":["string","null"]},"top_bar_vertical_image_webp":{"type":["string","null"]},"weapon_image":{"type":["string","null"]},"weapon_image_webp":{"type":["string","null"]}}},"HeroPhysics":{"type":"object","required":["stealth_speed_meters_per_second"],"properties":{"collision_height":{"type":["number","null"],"format":"double"},"collision_radius":{"type":["number","null"],"format":"double"},"footstep_sound_travel_distance_meters":{"type":["number","null"],"format":"double"},"stealth_speed_meters_per_second":{"type":"number","format":"double"},"step_height":{"type":["number","null"],"format":"double"},"step_sound_time":{"type":["number","null"],"format":"double"},"step_sound_time_sprinting":{"type":["number","null"],"format":"double"}}},"HeroStats":{"type":"object","required":["account_id","hero_id","matches_played","last_played","time_played","wins","ending_level","kills","deaths","assists","total_player_damage","total_player_damage_taken","total_boss_damage","total_creep_damage","total_neutral_damage","denies_per_match","kills_per_min","deaths_per_min","assists_per_min","denies_per_min","networth_per_min","last_hits_per_min","damage_per_min","damage_per_soul","damage_mitigated_per_min","damage_taken_per_min","damage_taken_per_soul","creeps_per_min","obj_damage_per_min","obj_damage_per_soul","accuracy","crit_shot_rate","matches"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"accuracy":{"type":"number","format":"double"},"assists":{"type":"integer","format":"int64","minimum":0},"assists_per_min":{"type":"number","format":"double"},"creeps_per_min":{"type":"number","format":"double"},"crit_shot_rate":{"type":"number","format":"double"},"damage_mitigated_per_min":{"type":"number","format":"double"},"damage_per_min":{"type":"number","format":"double"},"damage_per_soul":{"type":"number","format":"double"},"damage_taken_per_min":{"type":"number","format":"double"},"damage_taken_per_soul":{"type":"number","format":"double"},"deaths":{"type":"integer","format":"int64","minimum":0},"deaths_per_min":{"type":"number","format":"double"},"denies_per_match":{"type":"number","format":"double"},"denies_per_min":{"type":"number","format":"double"},"ending_level":{"type":"number","format":"double"},"hero_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"kills":{"type":"integer","format":"int64","minimum":0},"kills_per_min":{"type":"number","format":"double"},"last_hits_per_min":{"type":"number","format":"double"},"last_played":{"type":"integer","format":"int32","minimum":0},"matches":{"type":"array","items":{"type":"integer","format":"int64","minimum":0}},"matches_played":{"type":"integer","format":"int64","minimum":0},"networth_per_min":{"type":"number","format":"double"},"obj_damage_per_min":{"type":"number","format":"double"},"obj_damage_per_soul":{"type":"number","format":"double"},"time_played":{"type":"integer","format":"int64","minimum":0},"total_boss_damage":{"type":"integer","format":"int64","minimum":0},"total_creep_damage":{"type":"integer","format":"int64","minimum":0},"total_neutral_damage":{"type":"integer","format":"int64","minimum":0},"total_player_damage":{"type":"integer","format":"int64","minimum":0},"total_player_damage_taken":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"HeroStatsUI":{"type":"object","required":["weapon_stat_display","display_stats"],"properties":{"display_stats":{"type":"array","items":{"$ref":"#/components/schemas/HeroStatsUIDisplay"}},"weapon_stat_display":{"type":"string"}}},"HeroStatsUIDisplay":{"type":"object","required":["category","stat_type"],"properties":{"category":{"type":"string"},"stat_type":{"type":"string"}}},"HeroSynergyStats":{"type":"object","required":["hero_id1","hero_id2","wins","matches_played","kills1","kills2","deaths1","deaths2","assists1","assists2","denies1","denies2","last_hits1","last_hits2","networth1","networth2","obj_damage1","obj_damage2","creeps1","creeps2"],"properties":{"assists1":{"type":"integer","format":"int64","description":"The number of assists by `hero_id1` when playing with `hero_id2`.","minimum":0},"assists2":{"type":"integer","format":"int64","description":"The number of assists by `hero_id2` when playing with `hero_id1`.","minimum":0},"creeps1":{"type":"integer","format":"int64","description":"The number of creeps killed by `hero_id1` when playing with `hero_id2`.","minimum":0},"creeps2":{"type":"integer","format":"int64","description":"The number of creeps killed by `hero_id2` when playing with `hero_id1`.","minimum":0},"deaths1":{"type":"integer","format":"int64","description":"The number of deaths by `hero_id1` when playing with `hero_id2`.","minimum":0},"deaths2":{"type":"integer","format":"int64","description":"The number of deaths by `hero_id2` when playing with `hero_id1`.","minimum":0},"denies1":{"type":"integer","format":"int64","description":"The number of denies by `hero_id1` when playing with `hero_id2`.","minimum":0},"denies2":{"type":"integer","format":"int64","description":"The number of denies by `hero_id2` when playing with `hero_id1`.","minimum":0},"hero_id1":{"type":"integer","format":"int32","description":"The ID of the first hero in the pair.","minimum":0},"hero_id2":{"type":"integer","format":"int32","description":"The ID of the second hero in the pair.","minimum":0},"kills1":{"type":"integer","format":"int64","description":"The number of kills by `hero_id1` when playing with `hero_id2`.","minimum":0},"kills2":{"type":"integer","format":"int64","description":"The number of kills by `hero_id2` when playing with `hero_id1`.","minimum":0},"last_hits1":{"type":"integer","format":"int64","description":"The number of last hits by `hero_id1` when playing with `hero_id2`.","minimum":0},"last_hits2":{"type":"integer","format":"int64","description":"The number of last hits by `hero_id2` when playing with `hero_id1`.","minimum":0},"matches_played":{"type":"integer","format":"int64","description":"The total number of matches played where `hero_id1` and `hero_id2` were on the same team, meeting the filter criteria.","minimum":0},"networth1":{"type":"integer","format":"int64","description":"The net worth of `hero_id1` when playing with `hero_id2`.","minimum":0},"networth2":{"type":"integer","format":"int64","description":"The net worth of `hero_id2` when playing with `hero_id1`.","minimum":0},"obj_damage1":{"type":"integer","format":"int64","description":"The amount of objective damage dealt by `hero_id1` when playing with `hero_id2`.","minimum":0},"obj_damage2":{"type":"integer","format":"int64","description":"The amount of objective damage dealt by `hero_id2` when playing with `hero_id1`.","minimum":0},"wins":{"type":"integer","format":"int64","description":"The number of times the team won when both `hero_id1` and `hero_id2` were on the same team.","minimum":0}}},"HeroType":{"type":"string","enum":["assassin","brawler","marksman","mystic"]},"HorizontalRecoil":{"type":"object","properties":{"burst_exponent":{"type":["number","null"],"format":"double"},"range":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RecoilRange"}]}}},"IngestLiveUrl":{"type":"object","required":["match_id","broadcast_url"],"properties":{"broadcast_url":{"type":"string"},"lobby_id":{"type":["integer","null"],"format":"int64","minimum":0},"match_id":{"type":"integer","format":"int64","minimum":0},"started_at":{"type":["integer","null"],"format":"int64"}}},"Item":{"oneOf":[{"$ref":"#/components/schemas/Ability"},{"$ref":"#/components/schemas/Weapon"},{"$ref":"#/components/schemas/Upgrade"}]},"ItemDraftRound":{"type":"object","required":["normal_mod_tier","rare_mod_tier"],"properties":{"normal_mod_tier":{"type":"integer","format":"int32","minimum":0},"rare_mod_tier":{"type":"integer","format":"int32","minimum":0}}},"ItemDraftRoundPerGameRound":{"type":"object","required":["chance_rare","chance_enhanced","item_draft_rounds"],"properties":{"chance_enhanced":{"$ref":"#/components/schemas/OutcomeToWeights"},"chance_rare":{"$ref":"#/components/schemas/OutcomeToWeights"},"item_draft_rounds":{"type":"array","items":{"$ref":"#/components/schemas/ItemDraftRound"}}}},"ItemFlowEdge":{"type":"object","description":"A transition between an item in one column and an item in the next column,\ncounted across players who purchased both.","required":["from_column","from_item_id","to_item_id","wins","losses","matches"],"properties":{"from_column":{"type":"integer","format":"int32","description":"The column of the source item.","minimum":0},"from_item_id":{"type":"integer","format":"int32","minimum":0},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"to_item_id":{"type":"integer","format":"int32","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"ItemFlowNode":{"type":"object","description":"A single item, aggregated within one column of the flow graph.","required":["column","item_id","wins","losses","matches","players","total_kills","total_deaths","total_assists","adjusted_win_rate","avg_net_worth_at_buy"],"properties":{"adjusted_win_rate":{"type":"number","format":"double","description":"Win rate standardized to the stage's net-worth-at-buy distribution, removing the\n\"richer buyers win more\" confound. See the endpoint description."},"avg_net_worth_at_buy":{"type":"number","format":"double","description":"Average net worth of buyers at the moment they bought this item (confound visibility)."},"column":{"type":"integer","format":"int32","description":"The phase column (0-based) the item was bought in.","minimum":0},"item_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/items>","minimum":0},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"players":{"type":"integer","format":"int64","minimum":0},"total_assists":{"type":"integer","format":"int64","minimum":0},"total_deaths":{"type":"integer","format":"int64","minimum":0},"total_kills":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"ItemFlowStats":{"type":"object","required":["nodes","edges","summary","baseline","reached_per_column"],"properties":{"baseline":{"$ref":"#/components/schemas/ItemFlowSummary","description":"Totals ignoring the locked build path (item filters only). Denominator for chained pick rate."},"edges":{"type":"array","items":{"$ref":"#/components/schemas/ItemFlowEdge"}},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/ItemFlowNode"}},"reached_per_column":{"type":"array","items":{"type":"integer","format":"int64","minimum":0},"description":"Distinct baseline games that bought any upgrade in each stage column (index = column).\n`reached / baseline.matches` shows how survivorship-selected a (late) stage is."},"summary":{"$ref":"#/components/schemas/ItemFlowSummary","description":"Totals for the locked build-path population (all filters applied). Denominator for pick rate."}}},"ItemFlowSummary":{"type":"object","description":"Population-level totals for the (optionally locked) build path.","required":["wins","losses","matches","players","total_kills","total_deaths","total_assists","avg_net_worth","avg_duration_s"],"properties":{"avg_duration_s":{"type":"number","format":"double","description":"Average match duration (seconds) of the population."},"avg_net_worth":{"type":"number","format":"double","description":"Average final net worth of the population."},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"players":{"type":"integer","format":"int64","minimum":0},"total_assists":{"type":"integer","format":"int64","minimum":0},"total_deaths":{"type":"integer","format":"int64","minimum":0},"total_kills":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"ItemGroup":{"type":"object","required":["shop_group","upgrades"],"properties":{"shop_group":{"type":"string"},"upgrades":{"type":"array","items":{"type":"string"}}}},"ItemPermutationStats":{"type":"object","required":["item_ids","wins","losses","matches"],"properties":{"item_ids":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"See more: <https://api.deadlock-api.com/v1/assets/items>"},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"ItemProperty":{"type":"object","properties":{"can_set_token_override":{"type":["boolean","null"]},"conditional":{"type":["string","null"]},"css_class":{"type":["string","null"]},"disable_value":{"type":["string","null"]},"display_units":{"type":["string","null"]},"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"loc_token_override":{"type":["string","null"]},"negative_attribute":{"type":["boolean","null"]},"postfix":{"type":["string","null"]},"postvalue_label":{"type":["string","null"]},"prefix":{"type":["string","null"]},"provided_property_type":{"type":["string","null"]},"scale_function":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawItemPropertyScaleFunctionSubclass"}]},"street_brawl_value":{"type":["string","null"]},"usage_flags":{"type":["array","null"],"items":{"$ref":"#/components/schemas/StatsUsageFlag"}},"value":{"type":["string","null"],"description":"Raw JSON value preserves the source distinction between numeric and\nstringly-typed bonuses (`\"14.5\"` vs `14.5`)."}}},"ItemSlotType":{"type":"string","enum":["weapon","spirit","vitality"]},"ItemStats":{"type":"object","required":["item_id","bucket","wins","losses","matches","players","avg_buy_time_s","avg_sell_time_s","avg_buy_time_relative","avg_sell_time_relative"],"properties":{"avg_buy_time_relative":{"type":"number","format":"double","description":"Average buy time as percentage of match duration"},"avg_buy_time_s":{"type":"number","format":"double","description":"Average buy time in seconds (absolute)"},"avg_sell_time_relative":{"type":"number","format":"double","description":"Average sell time as percentage of match duration (for items that were sold)"},"avg_sell_time_s":{"type":"number","format":"double","description":"Average sell time in seconds (absolute, for items that were sold)"},"bucket":{"type":"integer","format":"int32","minimum":0},"item_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/items>","minimum":0},"losses":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"players":{"type":"integer","format":"int64","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"ItemType":{"type":"string","description":"Discriminator for the `type` field on every item variant.","enum":["ability","weapon","upgrade"]},"JobStatus":{"type":"string","enum":["queued","running","done","failed"]},"KillDeathStats":{"type":"object","required":["position_x","position_y","killer_team","deaths","kills"],"properties":{"deaths":{"type":"integer","format":"int64","minimum":0},"killer_team":{"type":"integer","format":"int32","minimum":0},"kills":{"type":"integer","format":"int64","minimum":0},"position_x":{"type":"integer","format":"int32"},"position_y":{"type":"integer","format":"int32"}}},"LaneInfo":{"type":"object","required":["lane_name","color"],"properties":{"color":{"$ref":"#/components/schemas/Color"},"css_class":{"type":["string","null"]},"lane_name":{"type":"string"},"minimap_zipline_color_override":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"objective_color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]}}},"Leaderboard":{"type":"object","required":["entries"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntry"},"description":"The leaderboard entries."}}},"LeaderboardEntry":{"type":"object","properties":{"account_name":{"type":["string","null"],"description":"The account name of the player."},"badge_level":{"type":["integer","null"],"format":"int32","description":"The badge level of the player (tier = first digits, subtier = last digit). See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"possible_account_ids":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"The possible account IDs of the player. **CAVEAT: This is not always correct, as Steam account names are not unique.**"},"rank":{"type":["integer","null"],"format":"int32","description":"The rank of the player (tier = first digits, subtier = last digit). See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"ranked_rank":{"type":["integer","null"],"format":"int32","description":"The ranked rank of the player. See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"ranked_subrank":{"type":["integer","null"],"format":"int32","description":"The ranked subrank of the player. See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"top_hero_ids":{"type":"array","items":{"type":"integer","format":"int32","minimum":0},"description":"The top hero IDs of the player. See more: <https://api.deadlock-api.com/v1/assets/heroes>"}}},"ListServersResponse":{"type":"object","required":["servers"],"properties":{"servers":{"type":"array","items":{"$ref":"#/components/schemas/GameServerInfo"}}}},"LiveUrl":{"type":"object","required":["match_id","broadcast_url"],"properties":{"broadcast_url":{"type":"string"},"lobby_id":{"type":["integer","null"],"format":"int64","minimum":0},"match_id":{"type":"integer","format":"int64","minimum":0},"started_at":{"type":["integer","null"],"format":"int64"},"updated_at":{"type":["integer","null"],"format":"int64"}}},"LootEntry":{"type":"object","required":["item"],"properties":{"item":{"type":"string"}}},"LootTable":{"type":"object","required":["entries"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/LootEntry"}}}},"MMRHistory":{"type":"object","required":["account_id","match_id","start_time","player_score","rank","division","division_tier"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"division":{"type":"integer","format":"int32","description":"Extracted from the rank the division (rank // 10)","minimum":0},"division_tier":{"type":"integer","format":"int32","description":"Extracted from the rank the division tier (rank % 10)","minimum":0},"match_id":{"type":"integer","format":"int64","minimum":0},"player_score":{"type":"number","format":"double","description":"Player Score is the index for the rank array (internally used for the rank regression)"},"rank":{"type":"integer","format":"int32","description":"The Player Rank (tier = first digits, subtier = last digit). See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"start_time":{"type":"integer","format":"int32","description":"Start time of the match","minimum":0}}},"MapData":{"type":"object","description":"The `/v1/assets/map` response.","required":["radius","images","objective_positions","zipline_paths"],"properties":{"images":{"$ref":"#/components/schemas/MapImages"},"objective_positions":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ObjectivePosition"},"propertyNames":{"type":"string"}},"radius":{"type":"integer","format":"int32","minimum":0},"zipline_paths":{"type":"array","items":{"$ref":"#/components/schemas/ZiplanePath"}}}},"MapImages":{"type":"object","description":"Fixed CDN URLs for the minimap image layers.","required":["minimap","plain","background","frame","mid"],"properties":{"background":{"type":"string"},"frame":{"type":"string"},"mid":{"type":"string"},"minimap":{"type":"string"},"plain":{"type":"string"}}},"MatchPlayer":{"type":"object","required":["account_id"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0}}},"MatchSaltsResponse":{"type":"object","required":["match_id"],"properties":{"cluster_id":{"type":["integer","null"],"format":"int32","minimum":0},"demo_url":{"type":["string","null"]},"match_id":{"type":"integer","format":"int64","minimum":0},"metadata_salt":{"type":["integer","null"],"format":"int32","minimum":0},"metadata_url":{"type":["string","null"]},"replay_salt":{"type":["integer","null"],"format":"int32","minimum":0}}},"MatchSpectateResponse":{"type":"object","required":["broadcast_url"],"properties":{"broadcast_url":{"type":"string"},"lobby_id":{"type":["integer","null"],"format":"int64","minimum":0}}},"MateStats":{"type":"object","required":["mate_id","wins","matches_played","matches"],"properties":{"matches":{"type":"array","items":{"type":"integer","format":"int64","minimum":0}},"matches_played":{"type":"integer","format":"int64","minimum":0},"mate_id":{"type":"integer","format":"int32","minimum":0},"wins":{"type":"integer","format":"int64","minimum":0}}},"MetricIngestRequest":{"type":"object","required":["server_id","region","game_mode","metric_name","account_id","metric_value"],"properties":{"account_id":{"type":"integer","format":"int32","description":"Steam account id (`UInt32`) of the player this metric is about","minimum":0},"game_mode":{"type":"string","description":"Game mode this metric applies to (e.g. \"speedrun\")"},"game_mode_version":{"type":["string","null"],"description":"Optional game-mode version tag (e.g. \"v2\", \"season3\") for versioning leaderboards"},"map":{"type":["string","null"],"description":"Optional map identifier the metric was produced on"},"metadata":{"type":"object","description":"Free-form key/value metadata for game-mode-specific context","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"metric_name":{"type":"string","description":"Name of the metric (e.g. `run_time`)"},"metric_value":{"type":"number","format":"double","description":"The primary numeric measurement for this metric"},"region":{"type":"string","description":"Region the server is located in (e.g. \"eu\", \"na\")"},"server_id":{"type":"string","description":"Unique identifier for the game server reporting the metric"}}},"MiniMapOffsets":{"type":"object","required":["entity_class","offset_2d"],"properties":{"entity_class":{"type":"string"},"lane_index":{"type":["integer","null"],"format":"int64"},"offset_2d":{"type":"array","items":{"type":"number","format":"double"}}}},"MiscEntity":{"type":"object","required":["class_name","id"],"properties":{"break_on_dodge_touch":{"type":["boolean","null"]},"class_name":{"type":"string"},"collision_radius":{"type":["number","null"],"format":"double"},"color":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"damaged_by_abilities":{"type":["boolean","null"]},"damaged_by_bullets":{"type":["boolean","null"]},"damaged_by_melee":{"type":["boolean","null"]},"expiration_duration":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/CurveOrFloat"}]},"gold_amount":{"type":["number","null"],"format":"double"},"gold_per_minute_amount":{"type":["number","null"],"format":"double"},"health":{"type":["integer","null"],"format":"int64"},"id":{"type":"integer","format":"int32","minimum":0},"initial_spawn_delay_in_seconds":{"type":["integer","null"],"format":"int64"},"initial_spawn_delay_seconds":{"type":["integer","null"],"format":"int64","description":"Duplicate of `initial_spawn_delay_in_seconds` for shape parity."},"initial_spawn_time":{"type":["number","null"],"format":"double"},"is_mantleable":{"type":["boolean","null"]},"lifetime":{"type":["number","null"],"format":"double"},"loot_list_deck_size":{"type":["integer","null"],"format":"int64"},"m_vecPickups_lv2":{"type":["array","null"],"items":{"$ref":"#/components/schemas/Pickup"}},"m_vecPickups_lv3":{"type":["array","null"],"items":{"$ref":"#/components/schemas/Pickup"}},"match_time_mins_for_level2_pickups":{"type":["integer","null"],"format":"int64"},"match_time_mins_for_level3_pickups":{"type":["integer","null"],"format":"int64"},"modifier":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_ModifierDefinition"}]},"orb_spawn_delay_max":{"type":["number","null"],"format":"double"},"orb_spawn_delay_min":{"type":["number","null"],"format":"double"},"pickup_radius":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/CurveOrFloat"}]},"primary_drop_chance":{"type":["number","null"],"format":"double"},"primary_pickups":{"type":["array","null"],"items":{"$ref":"#/components/schemas/Pickup"}},"render_after_death":{"type":["boolean","null"]},"respawn_time":{"type":["number","null"],"format":"double"},"roll_type":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RollType"}]},"show_on_minimap":{"type":["boolean","null"]},"solid_after_death":{"type":["boolean","null"]},"spawn_interval":{"type":["number","null"],"format":"double"},"spawn_interval_in_seconds":{"type":["integer","null"],"format":"int64"}}},"ModifierValue":{"type":"object","properties":{"value":{"type":["number","null"],"format":"double"},"value_max":{"type":["number","null"],"format":"double"},"value_min":{"type":["number","null"],"format":"double"},"value_type":{"type":["string","null"]}}},"NewPlayerMetrics":{"type":"object","required":["skill_tier_name","net_worth","damage_taken","boss_damage","player_damage","last_hits","orbs_secured","orbs_denied","abilities_upgraded","mods_purchased"],"properties":{"abilities_upgraded":{"type":"integer","format":"int64"},"boss_damage":{"type":"integer","format":"int64"},"damage_taken":{"type":"integer","format":"int64"},"last_hits":{"type":"integer","format":"int64"},"mods_purchased":{"type":"integer","format":"int64"},"net_worth":{"type":"integer","format":"int64"},"orbs_denied":{"type":"integer","format":"int64"},"orbs_secured":{"type":"integer","format":"int64"},"player_damage":{"type":"integer","format":"int64"},"skill_tier_name":{"type":"string"}}},"NpcUnit":{"type":"object","required":["class_name","id"],"properties":{"acceleration":{"type":["number","null"],"format":"double"},"attack_t1_boss_max_range":{"type":["number","null"],"format":"double"},"attack_t3_boss_max_range":{"type":["number","null"],"format":"double"},"attack_t3_boss_phase2_max_range":{"type":["number","null"],"format":"double"},"attack_trooper_max_range":{"type":["number","null"],"format":"double"},"backdoor_bullet_resist_modifier":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_BulletResistModifier"}]},"barrack_boss_dps":{"type":["number","null"],"format":"double"},"barrack_guardian_damage_resist_pct":{"type":["number","null"],"format":"double"},"bound_abilities":{"type":["object","null"],"additionalProperties":{"type":"string"},"propertyNames":{"type":"string","description":"Slot used by `m_mapBoundAbilities` on heroes and NPC units. Parses from\n`Source`'s `ESlot_*` identifiers and serializes as a `snake_case` string,\nincluding when used as a JSON map key.","enum":["WeaponPrimary","WeaponSecondary","WeaponMelee","AbilityMantle","AbilityJump","AbilitySlide","AbilityZipLine","AbilityZipLineBoost","AbilityClimbRope","AbilityInnate1","AbilityInnate2","AbilityInnate3","Signature1","Signature2","Signature3","Signature4","EslotCosmetic1"]}},"class_name":{"type":"string"},"empowered_modifier_level1":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_EmpoweredModifierLevel"}]},"empowered_modifier_level2":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_EmpoweredModifierLevel"}]},"enemy_trooper_damage_reduction":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_TrooperDamageReduction"}]},"enemy_trooper_protection_range":{"type":["number","null"],"format":"double"},"generator_boss_dps":{"type":["number","null"],"format":"double"},"gold_reward":{"type":["number","null"],"format":"double"},"gold_reward_bonus_percent_per_minute":{"type":["number","null"],"format":"double"},"health_bar_color_enemy":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"health_bar_color_friend":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"health_bar_color_team1":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"health_bar_color_team2":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"health_bar_color_team_neutral":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Color"}]},"id":{"type":"integer","format":"int32","minimum":0},"intrinsic_modifiers":{"type":["array","null"],"items":{"$ref":"#/components/schemas/Subclass_IntrinsicModifiers"}},"laser_dps_max_health":{"type":["number","null"],"format":"double"},"laser_dps_to_players":{"type":["number","null"],"format":"double"},"max_health":{"type":["integer","null"],"format":"int64"},"max_health_final":{"type":["integer","null"],"format":"int64"},"max_health_generator":{"type":["integer","null"],"format":"int64"},"melee_attempt_range":{"type":["number","null"],"format":"double"},"melee_damage":{"type":["number","null"],"format":"double"},"melee_duration":{"type":["number","null"],"format":"double"},"melee_hit_range":{"type":["number","null"],"format":"double"},"near_death_duration":{"type":["number","null"],"format":"double"},"no_shield_laser_dps_to_players":{"type":["number","null"],"format":"double"},"objective_health_growth_phase1":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_ObjectiveHealthGrowthPhase"}]},"objective_health_growth_phase2":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_ObjectiveHealthGrowthPhase"}]},"objective_regen":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_ObjectiveRegen"}]},"phase2_health":{"type":["integer","null"],"format":"int64"},"player_damage_resist_pct":{"type":["number","null"],"format":"double"},"player_dps":{"type":["number","null"],"format":"double"},"ranged_armor_modifier":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Subclass_RangedArmorModifier"}]},"run_speed":{"type":["number","null"],"format":"double"},"sight_range_npcs":{"type":["number","null"],"format":"double"},"sight_range_players":{"type":["number","null"],"format":"double"},"spawn_breakables_on_death":{"type":["boolean","null"]},"stomp_damage":{"type":["number","null"],"format":"double"},"stomp_damage_max_health_percent":{"type":["number","null"],"format":"double"},"stomp_impact_radius":{"type":["number","null"],"format":"double"},"stun_duration":{"type":["number","null"],"format":"double"},"t1_boss_damage_resist_pct":{"type":["number","null"],"format":"double"},"t1_boss_dps":{"type":["number","null"],"format":"double"},"t1_boss_dpsbase_resist":{"type":["number","null"],"format":"double"},"t1_boss_dpsmax_resist":{"type":["number","null"],"format":"double"},"t1_boss_dpsmax_resist_time_in_seconds":{"type":["number","null"],"format":"double"},"t2_boss_damage_resist_pct":{"type":["number","null"],"format":"double"},"t2_boss_dps":{"type":["number","null"],"format":"double"},"t2_boss_dpsbase_resist":{"type":["number","null"],"format":"double"},"t2_boss_dpsmax_resist":{"type":["number","null"],"format":"double"},"t2_boss_dpsmax_resist_time_in_seconds":{"type":["number","null"],"format":"double"},"t3_boss_damage_resist_pct":{"type":["number","null"],"format":"double"},"t3_boss_dps":{"type":["number","null"],"format":"double"},"trooper_damage_resist_pct":{"type":["number","null"],"format":"double"},"trooper_dps":{"type":["number","null"],"format":"double"},"walk_speed":{"type":["number","null"],"format":"double"},"weapon_info":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/WeaponInfo"}]}}},"ObjectiveParams":{"type":"object","required":["gold_per_orb","near_player_split_pct","tier1_gold_kill","tier1_gold_orbs","tier2_gold_kill","tier2_gold_orbs","base_guardians_gold_kill","base_guardians_gold_orbs","shrines_gold_kill","shrines_gold_orbs","patron_phase1_gold_kill","patron_phase1_gold_orbs"],"properties":{"base_guardians_gold_kill":{"type":"integer","format":"int64"},"base_guardians_gold_orbs":{"type":"integer","format":"int64"},"gold_per_orb":{"type":"integer","format":"int64"},"near_player_split_pct":{"type":"number","format":"double"},"patron_phase1_gold_kill":{"type":"integer","format":"int64"},"patron_phase1_gold_orbs":{"type":"integer","format":"int64"},"shrines_gold_kill":{"type":"integer","format":"int64"},"shrines_gold_orbs":{"type":"integer","format":"int64"},"tier1_gold_kill":{"type":"integer","format":"int64"},"tier1_gold_orbs":{"type":"integer","format":"int64"},"tier2_gold_kill":{"type":"integer","format":"int64"},"tier2_gold_orbs":{"type":"integer","format":"int64"}}},"ObjectivePosition":{"type":"object","description":"A position on the minimap, as fractions of its width/height.","required":["left_relative","top_relative"],"properties":{"left_relative":{"type":"number","format":"double"},"top_relative":{"type":"number","format":"double"}}},"OutcomeToWeights":{"type":"object","required":["outcomes_to_weights"],"properties":{"outcomes_to_weights":{"type":"object","additionalProperties":{"type":"number","format":"double"},"propertyNames":{"type":"string"}}}},"OutputFormat":{"type":"string","enum":["parquet","ndjson"]},"Patch":{"type":"object","required":["title","pub_date","link","guid","author","category","dc_creator","content_encoded","slash_comments"],"properties":{"author":{"type":"string"},"category":{"$ref":"#/components/schemas/PatchCategory"},"content_encoded":{"type":"string"},"dc_creator":{"type":"string"},"guid":{"$ref":"#/components/schemas/PatchGuid"},"link":{"type":"string"},"pub_date":{"type":"string","format":"date-time"},"slash_comments":{"type":"string"},"title":{"type":"string"}}},"PatchCategory":{"type":"object","required":["domain","text"],"properties":{"domain":{"type":"string"},"text":{"type":"string"}}},"PatchGuid":{"type":"object","required":["is_perma_link","text"],"properties":{"is_perma_link":{"type":"boolean"},"text":{"type":"string"}}},"Pickup":{"type":"object","properties":{"pickup_name":{"type":["string","null"]},"pickup_weight":{"type":["number","null"],"format":"double"}}},"PlayerAccountHeroStats":{"type":"object","required":["stat_id","total_value","medals_bronze","medals_silver","medals_gold"],"properties":{"hero_id":{"type":["integer","null"],"format":"int32","minimum":0},"medals_bronze":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}},"medals_gold":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}},"medals_silver":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}},"stat_id":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}},"total_value":{"type":"array","items":{"type":"integer","format":"int64","minimum":0}}}},"PlayerAccountStats":{"type":"object","required":["account_id","stats"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"stats":{"type":"array","items":{"$ref":"#/components/schemas/PlayerAccountHeroStats"}}}},"PlayerCard":{"type":"object","required":["account_id","slots"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"ranked_badge_level":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"ranked_rank":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"ranked_subrank":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/ranks>","minimum":0},"slots":{"type":"array","items":{"$ref":"#/components/schemas/PlayerCardSlot"}}}},"PlayerCardSlot":{"type":"object","properties":{"hero":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/PlayerCardSlotHero"}]},"slot_id":{"type":["integer","null"],"format":"int32","minimum":0},"stat":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/PlayerCardSlotStat"}]}}},"PlayerCardSlotHero":{"type":"object","properties":{"id":{"type":["integer","null"],"format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"kills":{"type":["integer","null"],"format":"int32","minimum":0},"wins":{"type":["integer","null"],"format":"int32","minimum":0}}},"PlayerCardSlotStat":{"type":"object","properties":{"stat_id":{"type":["integer","null"],"format":"int32"},"stat_score":{"type":["integer","null"],"format":"int32","minimum":0}}},"PlayerEntry":{"type":"object","required":["rank","account_id","value","matches"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"matches":{"type":"integer","format":"int64","minimum":0},"rank":{"type":"integer","format":"int64","minimum":0},"value":{"type":"number","format":"double"}}},"PlayerMatchHistoryEntry":{"type":"object","required":["account_id","match_id","hero_id","hero_level","start_time","game_mode","match_mode","player_team","player_kills","player_deaths","player_assists","denies","net_worth","last_hits","match_duration_s","match_result","objectives_mask_team0","objectives_mask_team1"],"properties":{"abandoned_time_s":{"type":["integer","null"],"format":"int32","minimum":0},"account_id":{"type":"integer","format":"int32","minimum":0},"brawl_avg_round_time_s":{"type":["integer","null"],"format":"int32","minimum":0},"brawl_score_team0":{"type":["integer","null"],"format":"int32","minimum":0},"brawl_score_team1":{"type":["integer","null"],"format":"int32","minimum":0},"denies":{"type":"integer","format":"int32","minimum":0},"game_mode":{"type":"integer","format":"int32"},"hero_id":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/heroes>","minimum":0},"hero_level":{"type":"integer","format":"int32","minimum":0},"last_hits":{"type":"integer","format":"int32","minimum":0},"match_duration_s":{"type":"integer","format":"int32","minimum":0},"match_id":{"type":"integer","format":"int64","minimum":0},"match_mode":{"type":"integer","format":"int32"},"match_result":{"type":"integer","format":"int32","minimum":0},"net_worth":{"type":"integer","format":"int32","minimum":0},"objectives_mask_team0":{"type":"integer","format":"int32","minimum":0},"objectives_mask_team1":{"type":"integer","format":"int32","minimum":0},"player_assists":{"type":"integer","format":"int32","minimum":0},"player_deaths":{"type":"integer","format":"int32","minimum":0},"player_kills":{"type":"integer","format":"int32","minimum":0},"player_team":{"type":"integer","format":"int32"},"start_time":{"type":"integer","format":"int32","minimum":0},"team_abandoned":{"type":["boolean","null"]}}},"PlayerPerformanceCurvePoint":{"type":"object","required":["game_time","net_worth_avg","net_worth_std","kills_avg","kills_std","deaths_avg","deaths_std","assists_avg","assists_std"],"properties":{"assists_avg":{"type":"number","format":"double","description":"Average assists at this time point"},"assists_std":{"type":"number","format":"double","description":"Standard deviation of assists at this time point"},"deaths_avg":{"type":"number","format":"double","description":"Average deaths at this time point"},"deaths_std":{"type":"number","format":"double","description":"Standard deviation of deaths at this time point"},"game_time":{"type":"integer","format":"int32","description":"The time point of the data.\nIf `resolution` (default 10) is > 0, this is a percentage (0, 10, ..., 100).\nIf `resolution` is 0, this is the match time in seconds.","minimum":0},"kills_avg":{"type":"number","format":"double","description":"Average kills at this time point"},"kills_std":{"type":"number","format":"double","description":"Standard deviation of kills at this time point"},"net_worth_avg":{"type":"number","format":"double","description":"Average net worth at this time point"},"net_worth_std":{"type":"number","format":"double","description":"Standard deviation of net worth at this time point"}}},"Rank":{"type":"object","required":["tier","name","images","color"],"properties":{"color":{"type":"string"},"images":{"$ref":"#/components/schemas/RankImages"},"name":{"type":"string"},"tier":{"type":"integer","format":"int32","minimum":0}}},"RankImages":{"type":"object","description":"Image URLs for a single rank tier. Field declaration order is load-bearing:\nit sets the JSON key order, which is stable across versions of this API.","properties":{"large":{"type":["string","null"]},"large_subrank1":{"type":["string","null"]},"large_subrank1_webp":{"type":["string","null"]},"large_subrank2":{"type":["string","null"]},"large_subrank2_webp":{"type":["string","null"]},"large_subrank3":{"type":["string","null"]},"large_subrank3_webp":{"type":["string","null"]},"large_subrank4":{"type":["string","null"]},"large_subrank4_webp":{"type":["string","null"]},"large_subrank5":{"type":["string","null"]},"large_subrank5_webp":{"type":["string","null"]},"large_subrank6":{"type":["string","null"]},"large_subrank6_webp":{"type":["string","null"]},"large_webp":{"type":["string","null"]},"small":{"type":["string","null"]},"small_subrank1":{"type":["string","null"]},"small_subrank1_webp":{"type":["string","null"]},"small_subrank2":{"type":["string","null"]},"small_subrank2_webp":{"type":["string","null"]},"small_subrank3":{"type":["string","null"]},"small_subrank3_webp":{"type":["string","null"]},"small_subrank4":{"type":["string","null"]},"small_subrank4_webp":{"type":["string","null"]},"small_subrank5":{"type":["string","null"]},"small_subrank5_webp":{"type":["string","null"]},"small_subrank6":{"type":["string","null"]},"small_subrank6_webp":{"type":["string","null"]},"small_webp":{"type":["string","null"]}}},"RankPredictResponse":{"allOf":[{"$ref":"#/components/schemas/RankPrediction"},{"type":"object","required":["matches_used"],"properties":{"matches_used":{"type":"integer","description":"Number of recent matches used for the prediction","minimum":0}}}]},"RankPrediction":{"type":"object","required":["badge","raw_score"],"properties":{"badge":{"type":"integer","format":"int32","description":"See more: <https://api.deadlock-api.com/v1/assets/ranks>"},"raw_score":{"type":"number","format":"float","description":"Calibrated model output (float index into badge space)"}}},"RawAbilityUpgrade":{"type":"object","properties":{"property_upgrades":{"type":"array","items":{"$ref":"#/components/schemas/RawAbilityUpgradePropertyUpgrade"}}}},"RawAbilityUpgradePropertyUpgrade":{"type":"object","required":["name","bonus"],"properties":{"bonus":{"type":"string"},"name":{"type":"string"},"scale_stat_filter":{"type":["string","null"]},"upgrade_type":{"type":["string","null"]}}},"RawCustomCrosshairSettings":{"type":"object","properties":{"m_DotColor":{"type":["array","null"],"items":{"type":"integer","format":"int32"}},"m_DotOutlineColor":{"type":["array","null"],"items":{"type":"integer","format":"int32"}},"m_PipColor":{"type":["array","null"],"items":{"type":"integer","format":"int32"}},"m_PipOutlineColor":{"type":["array","null"],"items":{"type":"integer","format":"int32"}},"m_SpreadIndicatingElement":{"type":["string","null"]},"m_flBaseSpread":{"type":["number","null"],"format":"double"},"m_flDotOpacity":{"type":["number","null"],"format":"double"},"m_flDotOutlineOpacity":{"type":["number","null"],"format":"double"},"m_flPipOpacity":{"type":["number","null"],"format":"double"},"m_flPipOutlineOpacity":{"type":["number","null"],"format":"double"},"m_nDotOutlineGap":{"type":["integer","null"],"format":"int32"},"m_nDotOutlineWidth":{"type":["integer","null"],"format":"int32"},"m_nDotRadius":{"type":["integer","null"],"format":"int32"},"m_nPipHeight":{"type":["integer","null"],"format":"int32"},"m_nPipOutlineGap":{"type":["integer","null"],"format":"int32"},"m_nPipOutlineWidth":{"type":["integer","null"],"format":"int32"},"m_nPipWidth":{"type":["integer","null"],"format":"int32"}}},"RawItemPropertyScaleFunctionSubclass":{"type":"object","properties":{"class_name":{"type":["string","null"]},"scaling_stats":{"type":["array","null"],"items":{"type":"string"}},"specific_stat_scale_type":{"type":["string","null"]},"stat_scale":{"type":["number","null"],"format":"double"},"street_brawl_stat_scale":{"type":["number","null"],"format":"double"},"subclass_name":{"type":["string","null"]}}},"RawItemWeaponInfoBulletSpeedCurve":{"type":"object","required":["domain_maxs","domain_mins"],"properties":{"domain_maxs":{"type":"array","items":{"type":"number","format":"double"}},"domain_mins":{"type":"array","items":{"type":"number","format":"double"}},"spline":{"type":["array","null"],"items":{"$ref":"#/components/schemas/RawItemWeaponInfoBulletSpeedCurveSpline"}}}},"RawItemWeaponInfoBulletSpeedCurveSpline":{"type":"object","required":["slope_incoming","slope_outgoing","x","y"],"properties":{"slope_incoming":{"type":"number","format":"double"},"slope_outgoing":{"type":"number","format":"double"},"x":{"type":"number","format":"double"},"y":{"type":"number","format":"double"}}},"RawItemWeaponInfoInner":{"type":"object","properties":{"m_BulletSpeedCurve":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawItemWeaponInfoBulletSpeedCurve"}]}}},"RawWeaponInfoHorizontalRecoil":{"type":"object","properties":{"burst_exponent":{"type":["number","null"],"format":"double"},"range":{}}},"RawWeaponInfoVerticalRecoil":{"type":"object","properties":{"burst_constant":{"type":["number","null"],"format":"double"},"burst_exponent":{"type":["number","null"],"format":"double"},"burst_slope":{"type":["number","null"],"format":"double"},"range":{}}},"RecoilRange":{"oneOf":[{"type":"array","items":{"type":"number","format":"double"}},{"type":"number","format":"double"}],"description":"Recoil `m_Range` is either a `[min, max]` array or a single scalar."},"RegionMode":{"type":"string","enum":["row","europe","se_asia","s_america","russia","oceania"]},"RejuvParams":{"type":"object","required":["rejuvinator_expiration_warning_timing","rejuvinator_buff_duration","rejuvinator_drop_height","rejuvinator_drop_duration","trooper_health_mult","player_respawn_mult","rejuvinator_rebirth_duration"],"properties":{"player_respawn_mult":{"type":"array","items":{"type":"number","format":"double"}},"rejuvinator_buff_duration":{"type":"number","format":"double"},"rejuvinator_drop_duration":{"type":"number","format":"double"},"rejuvinator_drop_height":{"type":"number","format":"double"},"rejuvinator_expiration_warning_timing":{"type":"number","format":"double"},"rejuvinator_rebirth_duration":{"type":"array","items":{"type":"number","format":"double"}},"trooper_health_mult":{"type":"array","items":{"type":"number","format":"double"}}}},"RollType":{"oneOf":[{"type":"string","enum":["BreakablePowerupPickup"]},{"type":"string","enum":["BreakableGoldPickup"]},{"type":"object","required":["Other"],"properties":{"Other":{"type":"string"}}}],"description":"Known values for `m_eRollType`. Unknown values pass through as\n[`RollType::Other`] so a newly-introduced roll type doesn't 500."},"ScriptValues":{"type":"object","properties":{"modifier_value":{"type":["string","null"]},"value":{"type":["number","null"],"format":"double"}}},"ServerRegion":{"type":"string","enum":["europe","eu_amsterdam","eu_poland","eu_stockholm","eu_helsinki","eu_falkenstein","eu_spain","eu_east","eu_london","south_africa","us_west","us_east","us_north_central","us_south_central","us_south_east","us_south_west","australia","singapore","japan","hong_kong","mp_hong_kong","seoul","chile","peru","argentina","south_america"]},"ServerStatusRequest":{"type":"object","required":["server_id","game_mode","region","ip","port","current_player_count"],"properties":{"current_player_count":{"type":"integer","format":"int32","description":"Current number of players on this server","minimum":0},"game_mode":{"type":"string","description":"Game mode this server is running (e.g. \"ranked\", \"unranked\")"},"hostname":{"type":["string","null"],"description":"Hostname of the game server"},"ip":{"type":"string","description":"IP address of the game server"},"port":{"type":"integer","format":"int32","description":"Port the game server is listening on","minimum":0},"region":{"type":"string","description":"Region the server is located in (e.g. \"eu\", \"na\", \"sa\", \"asia\", \"oceania\")"},"server_id":{"type":"string","description":"Unique identifier for the game server"}}},"ServerStatusResponse":{"type":"object","required":["server_id","ttl_secs"],"properties":{"server_id":{"type":"string","description":"The server ID that reported status"},"ttl_secs":{"type":"integer","format":"int64","description":"TTL in seconds before this registration expires"}}},"ShopSpiritStatsDisplay":{"type":"object","required":["display_stats"],"properties":{"display_stats":{"type":"array","items":{"type":"string"}}}},"ShopStatDisplay":{"type":"object","required":["spirit_stats_display","vitality_stats_display","weapon_stats_display"],"properties":{"spirit_stats_display":{"$ref":"#/components/schemas/ShopSpiritStatsDisplay"},"vitality_stats_display":{"$ref":"#/components/schemas/ShopVitalityStatsDisplay"},"weapon_stats_display":{"$ref":"#/components/schemas/ShopWeaponStatsDisplay"}}},"ShopVitalityStatsDisplay":{"type":"object","required":["display_stats","other_display_stats"],"properties":{"display_stats":{"type":"array","items":{"type":"string"}},"other_display_stats":{"type":"array","items":{"type":"string"}}}},"ShopWeaponStatsDisplay":{"type":"object","required":["display_stats","other_display_stats"],"properties":{"display_stats":{"type":"array","items":{"type":"string"}},"other_display_stats":{"type":"array","items":{"type":"string"}},"weapon_attributes":{"type":["array","null"],"items":{"type":"string"}},"weapon_image":{"type":["string","null"]},"weapon_image_webp":{"type":["string","null"]}}},"SpreadPenalty":{"oneOf":[{"type":"array","items":{"type":"number","format":"double"}},{"type":"string"}],"description":"Source data emits spread penalties as either a list of floats or a string\n(sometimes a comma-separated list, sometimes a literal label)."},"StartingStat":{"type":"object","required":["value","display_stat_name"],"properties":{"display_stat_name":{"type":"string"},"value":{"type":"number","format":"double"}}},"StartingStats":{"type":"object","required":["max_move_speed","sprint_speed","crouch_speed","move_acceleration","light_melee_damage","heavy_melee_damage","max_health","weapon_power","reload_speed","weapon_power_scale","proc_build_up_rate_scale","stamina","base_health_regen","stamina_regen_per_second","ability_resource_max","ability_resource_regen_per_second","crit_damage_received_scale","tech_duration","tech_range"],"properties":{"ability_resource_max":{"$ref":"#/components/schemas/StartingStat"},"ability_resource_regen_per_second":{"$ref":"#/components/schemas/StartingStat"},"air_dash_distance_in_meters":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StartingStat"}]},"air_dash_duration":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StartingStat"}]},"base_health_regen":{"$ref":"#/components/schemas/StartingStat"},"bullet_armor_damage_reduction":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StartingStat"}]},"crit_damage_received_scale":{"$ref":"#/components/schemas/StartingStat"},"crouch_speed":{"$ref":"#/components/schemas/StartingStat"},"ground_dash_distance_in_meters":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StartingStat"}]},"ground_dash_duration":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StartingStat"}]},"heavy_melee_damage":{"$ref":"#/components/schemas/StartingStat"},"light_melee_damage":{"$ref":"#/components/schemas/StartingStat"},"max_health":{"$ref":"#/components/schemas/StartingStat"},"max_move_speed":{"$ref":"#/components/schemas/StartingStat"},"move_acceleration":{"$ref":"#/components/schemas/StartingStat"},"proc_build_up_rate_scale":{"$ref":"#/components/schemas/StartingStat"},"reload_speed":{"$ref":"#/components/schemas/StartingStat"},"sprint_speed":{"$ref":"#/components/schemas/StartingStat"},"stamina":{"$ref":"#/components/schemas/StartingStat"},"stamina_regen_per_second":{"$ref":"#/components/schemas/StartingStat"},"tech_armor_damage_reduction":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/StartingStat"}]},"tech_duration":{"$ref":"#/components/schemas/StartingStat"},"tech_range":{"$ref":"#/components/schemas/StartingStat"},"weapon_power":{"$ref":"#/components/schemas/StartingStat"},"weapon_power_scale":{"$ref":"#/components/schemas/StartingStat"}}},"StatsDisplay":{"type":"object","required":["health_header_stats","health_stats","magic_header_stats","magic_stats","weapon_header_stats","weapon_stats"],"properties":{"health_header_stats":{"type":"array","items":{"type":"string"}},"health_stats":{"type":"array","items":{"type":"string"}},"magic_header_stats":{"type":"array","items":{"type":"string"}},"magic_stats":{"type":"array","items":{"type":"string"}},"weapon_header_stats":{"type":"array","items":{"type":"string"}},"weapon_stats":{"type":"array","items":{"type":"string"}}}},"StatsUsageFlag":{"type":"string","enum":["ConditionallyApplied","ConditionallyEnemyApplied","IntrinsicallyProvidedInAbility","IntrinsicallyProvidedInModifier"]},"Status":{"type":"object","required":["services"],"properties":{"services":{"$ref":"#/components/schemas/StatusServices","description":"Status of the services."}}},"StatusServices":{"type":"object","required":["clickhouse","postgres","redis"],"properties":{"clickhouse":{"type":"boolean","description":"Whether Clickhouse is reachable."},"postgres":{"type":"boolean","description":"Whether Postgres is reachable."},"redis":{"type":"boolean","description":"Whether Redis is reachable."}}},"SteamFriend":{"type":"object","required":["account_id","friend_since"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"friend_since":{"type":"string","format":"date-time"}}},"SteamInfo":{"type":"object","description":"Per-patch Steam manifest as served by the public assets API.\n\nField order is load-bearing — it sets the JSON key order, which matches the\nlegacy Python endpoint.","required":["client_version","server_version","product_name","app_id","server_app_id","tools_app_id","source_revision","version_date","version_time","version_datetime"],"properties":{"app_id":{"type":"integer","format":"int32","minimum":0},"client_version":{"type":"integer","format":"int32","minimum":0},"product_name":{"type":"string"},"server_app_id":{"type":"integer","format":"int32","minimum":0},"server_version":{"type":"integer","format":"int32","minimum":0},"source_revision":{"type":"integer","format":"int64","minimum":0},"tools_app_id":{"type":"integer","format":"int32","minimum":0},"version_date":{"type":"string"},"version_datetime":{"type":"string","description":"`version_date` + `version_time` combined into a naive ISO-8601 string\n(`YYYY-MM-DDTHH:MM:SS`, no timezone) — matches the Python output."},"version_time":{"type":"string"}}},"SteamNews":{"type":"object","required":["title","pub_date","link","guid","content"],"properties":{"content":{"type":"string"},"guid":{"$ref":"#/components/schemas/PatchGuid"},"link":{"type":"string"},"pub_date":{"type":"string","format":"date-time"},"title":{"type":"string"}}},"SteamProfile":{"type":"object","required":["account_id","personaname","profileurl","avatar","avatarmedium","avatarfull","last_updated","friends","matches_played_last_30d"],"properties":{"account_id":{"type":"integer","format":"int32","minimum":0},"avatar":{"type":"string"},"avatarfull":{"type":"string"},"avatarmedium":{"type":"string"},"countrycode":{"type":["string","null"]},"friends":{"type":"array","items":{"$ref":"#/components/schemas/SteamFriend"}},"last_team_avg_badge":{"type":["integer","null"],"format":"int32","minimum":0},"last_updated":{"type":"string","format":"date-time"},"matches_played_last_30d":{"type":"integer","format":"int64","minimum":0},"personaname":{"type":"string"},"profileurl":{"type":"string"},"realname":{"type":["string","null"]}}},"SteamServer":{"type":"object","required":["addr","gameport","steamid","name","appid","gamedir","version","product","region","players","max_players","bots","map","secure","dedicated","os","gametype"],"properties":{"addr":{"type":"string","description":"Full address of the server including port (e.g. `1.2.3.4:27015`)"},"appid":{"type":"integer","format":"int32","description":"Steam appid of the game running on this server","minimum":0},"bots":{"type":"integer","format":"int32","description":"Number of bots on the server","minimum":0},"dedicated":{"type":"boolean","description":"Whether this is a dedicated server"},"gamedir":{"type":"string","description":"Internal game directory name"},"gameport":{"type":"integer","format":"int32","description":"Game port the server is listening on","minimum":0},"gametype":{"type":"string","description":"Steam gametype tags"},"map":{"type":"string","description":"Current map"},"max_players":{"type":"integer","format":"int32","description":"Maximum player count","minimum":0},"name":{"type":"string","description":"Server name as advertised to Steam"},"os":{"type":"string","description":"Operating system the server is running on (e.g. `l` for Linux, `w` for Windows)"},"players":{"type":"integer","format":"int32","description":"Current player count","minimum":0},"product":{"type":"string","description":"Product identifier reported by the server"},"region":{"type":"integer","format":"int32","description":"Steam region code reported by the server"},"secure":{"type":"boolean","description":"Whether the server is VAC-secured"},"steamid":{"type":"string","description":"`SteamID` of the server"},"version":{"type":"string","description":"Server build version"}}},"StreetBrawl":{"type":"object","required":["respawn_times","gold_per_round","apper_round","item_draft_rerolls_per_round","round_length_minutes","round_length_minutes_urgent","overtime_respawn_time_increase","overtime_respawn_time_increase_urgent","overtime_trooper_health_scale","overtime_trooper_damage_scale","buy_time","pre_buy_time","score_to_win","scoring_time","lane_number","objective_max_health","tier2_bonus_health","comeback_bonus_health","comeback_bonus_health_critical","trooper_spawn_timer","trooper_spawn_before_round_start_timer","zip_boost_cooldown_on_start","buy_time_grace_period","tier1_max_resist_time","tier2_max_resist_time","ultimate_unlock_round","item_draft_rounds_per_game_round","item_drafts"],"properties":{"apper_round":{"type":"array","items":{"type":"integer","format":"int64"}},"buy_time":{"type":"array","items":{"type":"integer","format":"int64"}},"buy_time_grace_period":{"type":"number","format":"double"},"comeback_bonus_health":{"type":"integer","format":"int64"},"comeback_bonus_health_critical":{"type":"integer","format":"int64"},"gold_per_round":{"type":"array","items":{"type":"integer","format":"int64"}},"item_draft_rerolls_per_round":{"type":"array","items":{"type":"integer","format":"int64"}},"item_draft_rounds_per_game_round":{"type":"array","items":{"$ref":"#/components/schemas/ItemDraftRoundPerGameRound"}},"item_drafts":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DraftBuckets"},"propertyNames":{"type":"string"}},"lane_number":{"type":"integer","format":"int64"},"objective_max_health":{"type":"array","items":{"type":"integer","format":"int64"}},"overtime_respawn_time_increase":{"type":"array","items":{"type":"number","format":"double"}},"overtime_respawn_time_increase_urgent":{"type":"array","items":{"type":"number","format":"double"}},"overtime_trooper_damage_scale":{"type":"array","items":{"type":"number","format":"double"}},"overtime_trooper_health_scale":{"type":"array","items":{"type":"number","format":"double"}},"pre_buy_time":{"type":"array","items":{"type":"number","format":"double"}},"respawn_times":{"type":"array","items":{"type":"integer","format":"int64"}},"round_length_minutes":{"type":"array","items":{"type":"integer","format":"int64"}},"round_length_minutes_urgent":{"type":"array","items":{"type":"number","format":"double"}},"score_to_win":{"type":"integer","format":"int64"},"scoring_time":{"type":"number","format":"double"},"tier1_max_resist_time":{"type":"number","format":"double"},"tier2_bonus_health":{"type":"integer","format":"int64"},"tier2_max_resist_time":{"type":"number","format":"double"},"trooper_spawn_before_round_start_timer":{"type":"number","format":"double"},"trooper_spawn_timer":{"type":"array","items":{"type":"number","format":"double"}},"ultimate_unlock_round":{"type":"integer","format":"int64"},"zip_boost_cooldown_on_start":{"type":"number","format":"double"}}},"Subclass_BulletResistModifier":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"bullet_resist":{"type":["integer","null"],"format":"int64"},"bullet_resist_reduction_per_hero":{"type":["integer","null"],"format":"int64"}}}}},"Subclass_EmpoweredModifierLevel":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"max_health":{"type":["integer","null"],"format":"int64"},"model_scale":{"type":["number","null"],"format":"double"},"transition_duration":{"type":["number","null"],"format":"double"}}}}},"Subclass_IntrinsicModifiers":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"script_values":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ScriptValues"}}}}}},"Subclass_ModifierDefinition":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"always_show_in_ui":{"type":["array","null"],"items":{"type":"string"}},"class_name":{"type":["string","null"]},"duration":{"type":["number","null"],"format":"double"},"modifier_values":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ModifierValue"}},"script_values":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ModifierValue"}},"subclass_name":{"type":["string","null"]},"time_max":{"type":["number","null"],"format":"double"},"time_min":{"type":["number","null"],"format":"double"}}}}},"Subclass_ObjectiveHealthGrowthPhase":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"growth_per_minute":{"type":["integer","null"],"format":"int64"},"growth_start_time_in_minutes":{"type":["integer","null"],"format":"int64"},"tick_rate":{"type":["number","null"],"format":"double"}}}}},"Subclass_ObjectiveRegen":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"out_of_combat_health_regen":{"type":["number","null"],"format":"double"},"out_of_combat_regen_delay":{"type":["number","null"],"format":"double"}}}}},"Subclass_RangedArmorModifier":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"invuln_range":{"type":["number","null"],"format":"double"},"range_max":{"type":["number","null"],"format":"double"},"range_min":{"type":["number","null"],"format":"double"}}}}},"Subclass_TrooperDamageReduction":{"type":"object","description":"Serializes back as `{\"subclass\": ...}` to preserve the KV3 wrapper shape in\nJSON output.","required":["subclass"],"properties":{"subclass":{"type":"object","properties":{"damage_reduction_for_troopers":{"type":["number","null"],"format":"double"}}}}},"TableSchemaResponse":{"type":"object","required":["name","kind","columns"],"properties":{"columns":{"type":"array","items":{"$ref":"#/components/schemas/ColumnSchema"}},"kind":{"type":"string","description":"`entity` for tables discovered from the demo's send-tables, `event` for the\nevent tables common to every demo."},"name":{"type":"string"}}},"TableSize":{"type":"object","required":["is_view"],"properties":{"data_compressed_bytes":{"type":["integer","null"],"format":"int64","description":"Compressed size of the table in bytes.","minimum":0},"data_uncompressed_bytes":{"type":["integer","null"],"format":"int64","description":"Uncompressed size of the table in bytes.","minimum":0},"is_view":{"type":"boolean","description":"Whether the table is a view."},"rows":{"type":["integer","null"],"format":"int64","description":"Number of rows in the table.","minimum":0}}},"TooltipDetailsBlock":{"type":"object","properties":{"loc_string":{"type":["string","null"]},"properties":{"type":["array","null"],"items":{"$ref":"#/components/schemas/TooltipDetailsBlockProperty"}}}},"TooltipDetailsBlockProperty":{"type":"object","properties":{"important_property":{"type":["string","null"]},"important_property_icon":{"type":["string","null"]},"requires_ability_upgrade":{"type":["boolean","null"]},"show_property_value":{"type":["boolean","null"]},"status_effect_name":{"type":["string","null"]},"status_effect_value":{"type":["string","null"]}}},"TooltipDetailsInfoSection":{"type":"object","properties":{"basic_properties":{"type":["array","null"],"items":{"type":"string"}},"loc_string":{"type":["string","null"]},"properties_block":{"type":["array","null"],"items":{"$ref":"#/components/schemas/TooltipDetailsBlock"}},"property_upgrade_required":{"type":["string","null"]}}},"Upgrade":{"type":"object","required":["id","class_name","name","type","item_slot_type","item_tier","activation","is_active_item","shopable"],"properties":{"activation":{"$ref":"#/components/schemas/AbilityActivation"},"class_name":{"type":"string"},"component_items":{"type":["array","null"],"items":{"type":"string"}},"cost":{"type":["integer","null"],"format":"int32","minimum":0},"description":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/UpgradeDescription"}]},"disabled":{"type":["boolean","null"]},"hero":{"type":["integer","null"],"format":"int32","minimum":0},"heroes":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}},"id":{"type":"integer","format":"int32","minimum":0},"image":{"type":["string","null"]},"image_webp":{"type":["string","null"]},"imbue":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AbilityImbue"}]},"is_active_item":{"type":"boolean"},"item_slot_type":{"$ref":"#/components/schemas/ItemSlotType"},"item_tier":{"type":"integer","format":"int32","minimum":0},"name":{"type":"string"},"properties":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/UpgradeProperty"},"propertyNames":{"type":"string"}},"shop_image":{"type":["string","null"]},"shop_image_small":{"type":["string","null"]},"shop_image_small_webp":{"type":["string","null"]},"shop_image_webp":{"type":["string","null"]},"shopable":{"type":"boolean"},"start_trained":{"type":["boolean","null"]},"tooltip_sections":{"type":["array","null"],"items":{"$ref":"#/components/schemas/UpgradeTooltipSection"}},"type":{"$ref":"#/components/schemas/ItemType"},"update_time":{"type":["integer","null"],"format":"int64"},"upgrades":{"type":["array","null"],"items":{"$ref":"#/components/schemas/RawAbilityUpgrade"}},"weapon_info":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawItemWeaponInfoInner"}]}}},"UpgradeDescription":{"type":"object","properties":{"active":{"type":["string","null"]},"desc":{"type":["string","null"]},"desc2":{"type":["string","null"]},"passive":{"type":["string","null"]}}},"UpgradeProperty":{"allOf":[{"$ref":"#/components/schemas/ItemProperty"},{"type":"object","properties":{"tooltip_is_elevated":{"type":["boolean","null"]},"tooltip_is_important":{"type":["boolean","null"]},"tooltip_section":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AbilitySectionType"}]}}}]},"UpgradeTooltipImportantPropertyWithIcon":{"type":"object","properties":{"icon":{"type":["string","null"]},"localized_name":{"type":["string","null"]},"name":{"type":["string","null"]}}},"UpgradeTooltipSection":{"type":"object","properties":{"section_attributes":{"type":["array","null"],"items":{"$ref":"#/components/schemas/UpgradeTooltipSectionAttribute"}},"section_type":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/AbilitySectionType"}]}}},"UpgradeTooltipSectionAttribute":{"type":"object","properties":{"elevated_properties":{"type":["array","null"],"items":{"type":"string"}},"important_properties":{"type":["array","null"],"items":{"type":"string"}},"important_properties_with_icon":{"type":["array","null"],"items":{"$ref":"#/components/schemas/UpgradeTooltipImportantPropertyWithIcon"}},"loc_string":{"type":["string","null"]},"properties":{"type":["array","null"],"items":{"type":"string"}}}},"VariableCategory":{"type":"string","enum":["General","Daily","Hero","Item","Leaderboard","Overall"]},"VariableDescription":{"type":"object","required":["name","description","extra_args","category"],"properties":{"category":{"$ref":"#/components/schemas/VariableCategory","description":"The category of the variable."},"default_label":{"type":["string","null"],"description":"The default label for the variable."},"description":{"type":"string","description":"The description of the variable."},"extra_args":{"type":"array","items":{"type":"string"},"description":"Extra arguments that can be passed to the variable."},"name":{"type":"string","description":"The name of the variable."}}},"VerticalRecoil":{"type":"object","properties":{"burst_constant":{"type":["number","null"],"format":"double"},"burst_exponent":{"type":["number","null"],"format":"double"},"burst_slope":{"type":["number","null"],"format":"double"},"range":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RecoilRange"}]}}},"Weapon":{"type":"object","required":["id","class_name","name","type"],"properties":{"class_name":{"type":"string"},"crosshair_css_class":{"type":["string","null"]},"custom_crosshair_settings":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawCustomCrosshairSettings"}]},"hero":{"type":["integer","null"],"format":"int32","minimum":0},"heroes":{"type":["array","null"],"items":{"type":"integer","format":"int32","minimum":0}},"id":{"type":"integer","format":"int32","minimum":0},"image":{"type":["string","null"]},"image_webp":{"type":["string","null"]},"name":{"type":"string"},"properties":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/ItemProperty"},"propertyNames":{"type":"string"}},"start_trained":{"type":["boolean","null"]},"type":{"$ref":"#/components/schemas/ItemType"},"update_time":{"type":["integer","null"],"format":"int64"},"use_custom_crosshair_settings":{"type":["boolean","null"]},"weapon_info":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/WeaponInfo"}]}}},"WeaponInfo":{"type":"object","properties":{"aiming_shot_spread_penalty":{},"build_up_rate":{"type":["number","null"],"format":"double"},"bullet_damage":{"type":["number","null"],"format":"double"},"bullet_gravity_scale":{"type":["number","null"],"format":"double"},"bullet_inherit_shooter_velocity_scale":{"type":["number","null"],"format":"double"},"bullet_lifetime":{"type":["number","null"],"format":"double"},"bullet_radius":{"type":["number","null"],"format":"double"},"bullet_radius_vs_world":{"type":["number","null"],"format":"double"},"bullet_reflect_amount":{"type":["number","null"],"format":"double"},"bullet_reflect_scale":{"type":["number","null"],"format":"double"},"bullet_speed":{"type":["number","null"],"format":"double"},"bullet_speed_curve":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawItemWeaponInfoBulletSpeedCurve"}]},"bullet_whiz_distance":{"type":["number","null"],"format":"double"},"bullets":{"type":["integer","null"],"format":"int32","minimum":0},"bullets_per_second":{"type":["number","null"],"format":"double"},"bullets_per_second_with_reload":{"type":["number","null"],"format":"double"},"burst_shot_cooldown":{"type":["number","null"],"format":"double"},"burst_shot_count":{"type":["integer","null"],"format":"int32","minimum":0},"can_zoom":{"type":["boolean","null"]},"clip_size":{"type":["integer","null"],"format":"int32","minimum":0},"crit_bonus_against_npcs":{"type":["number","null"],"format":"double"},"crit_bonus_end":{"type":["number","null"],"format":"double"},"crit_bonus_end_range":{"type":["number","null"],"format":"double"},"crit_bonus_start":{"type":["number","null"],"format":"double"},"crit_bonus_start_range":{"type":["number","null"],"format":"double"},"cycle_time":{"type":["number","null"],"format":"double"},"damage_falloff_bias":{"type":["number","null"],"format":"double"},"damage_falloff_end_range":{"type":["number","null"],"format":"double"},"damage_falloff_end_scale":{"type":["number","null"],"format":"double"},"damage_falloff_start_range":{"type":["number","null"],"format":"double"},"damage_falloff_start_scale":{"type":["number","null"],"format":"double"},"damage_per_magazine":{"type":["number","null"],"format":"double"},"damage_per_second":{"type":["number","null"],"format":"double"},"damage_per_second_with_reload":{"type":["number","null"],"format":"double"},"damage_per_shot":{"type":["number","null"],"format":"double"},"horizontal_punch":{"type":["number","null"],"format":"double"},"horizontal_recoil":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawWeaponInfoHorizontalRecoil"}]},"intra_burst_cycle_time":{"type":["number","null"],"format":"double"},"is_semi_auto":{"type":["boolean","null"]},"low_ammo_indicator_threshold":{"type":["number","null"],"format":"double"},"max_spin_cycle_time":{"type":["number","null"],"format":"double"},"range":{"type":["number","null"],"format":"double"},"recoil_recovery_delay_factor":{"type":["number","null"],"format":"double"},"recoil_recovery_speed":{"type":["number","null"],"format":"double"},"recoil_seed":{"type":["number","null"],"format":"double"},"recoil_shot_index_recovery_time_factor":{"type":["number","null"],"format":"double"},"recoil_speed":{"type":["number","null"],"format":"double"},"reload_duration":{"type":["number","null"],"format":"double"},"reload_move_speed":{"type":["number","null"],"format":"double"},"reload_single_bullets":{"type":["boolean","null"]},"reload_single_bullets_allow_cancel":{"type":["boolean","null"]},"reload_single_bullets_initial_delay":{"type":["number","null"],"format":"double"},"scatter_yaw_scale":{"type":["number","null"],"format":"double"},"semi_auto_cycle_rate":{"type":["number","null"],"format":"double"},"shoot_move_speed_percent":{"type":["number","null"],"format":"double"},"shoot_spread_penalty_decay":{"type":["number","null"],"format":"double"},"shoot_spread_penalty_decay_delay":{"type":["number","null"],"format":"double"},"shoot_spread_penalty_per_shot":{"type":["number","null"],"format":"double"},"shooting_up_spread_penalty":{"type":["number","null"],"format":"double"},"shots_per_second":{"type":["number","null"],"format":"double"},"shots_per_second_with_reload":{"type":["number","null"],"format":"double"},"spin_decay_rate":{"type":["number","null"],"format":"double"},"spin_increase_rate":{"type":["number","null"],"format":"double"},"spins_up":{"type":["boolean","null"]},"spread":{"type":["number","null"],"format":"double"},"standing_shot_spread_penalty":{},"standing_spread":{"type":["number","null"],"format":"double"},"vertical_punch":{"type":["number","null"],"format":"double"},"vertical_recoil":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/RawWeaponInfoVerticalRecoil"}]},"zoom_fov":{"type":["number","null"],"format":"double"},"zoom_move_speed_percent":{"type":["number","null"],"format":"double"}}},"ZiplanePath":{"type":"object","description":"A single lane's zip-line cubic spline.","required":["origin","color","P0_points","P1_points","P2_points","color_parsed"],"properties":{"P0_points":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double"}}},"P1_points":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double"}}},"P2_points":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double"}}},"color":{"type":"string"},"color_parsed":{"$ref":"#/components/schemas/Color"},"origin":{"type":"array","items":{"type":"number","format":"double"}}}}},"securitySchemes":{"api_key_header":{"type":"apiKey","in":"header","name":"X-API-KEY"},"api_key_query":{"type":"apiKey","in":"query","name":"api_key"}}},"tags":[{"name":"Patches","description":"Endpoints that return data about game patches."},{"name":"Matches","description":"\nComprehensive match data endpoints for retrieving detailed information about games.\nProvides access to active matches, match metadata, replay salts, and more.\n"},{"name":"Custom Matches","description":"Custom Match related endpoints"},{"name":"Demo","description":"\nQuery and inspect match demo files: discover the queryable schema and run SQL extractions\nover a demo's entity and event tables.\n"},{"name":"Players","description":"Player related endpoints"},{"name":"MMR","description":"\n# STOP! READ THIS FIRST!\n\nPlease be very careful when using this endpoint and make yourself familiar with the way we calculate the MMR.\n\nThis is how we calculate a player MMR.\n\n1. We take the average badge of the team the player was on in a match.\n2. We convert the badge to a MMR score using the formula: `(intDiv(badge, 10) - 1) * 6 + (badge % 10)`\n3. We do a exponential moving average (EMA) of the last 50 matches to get the player's MMR score.\n4. We convert the MMR score back to a badge using the formula: `10 * intDiv(mmr_score, 6) + 1 + mmr_score % 6`\n\n### Rate Limits:\n| Type | Limit |\n| ---- | ----- |\n| IP | 5req/min |\n| Key | 25req/min |\n| Global | 50req/min |\n\nRate limits are shared across all MMR endpoints (single bucket).\n "},{"name":"Steam","description":"Steam related endpoints"},{"name":"Leaderboard","description":"\nEndpoints for retrieving global and hero-specific leaderboards.\nSupports filtering by region and provides data in both JSON and protobuf formats.\n"},{"name":"Analytics","description":"\nComprehensive game statistics and analysis endpoints.\nProvides detailed performance metrics for heroes, items, and players, including hero synergies, counters, and combinations.\nFeatures scoreboards for both heroes and players.\n"},{"name":"Builds","description":"\nSearch and retrieve hero builds with comprehensive filtering options.\n"},{"name":"Commands","description":"\nIntegration endpoints for the [Deadlock Streamkit](https://streamkit.deadlock-api.com/).\nProvides functionality to resolve dynamic command templates and variables for streaming overlays and chat commands.\nIncludes endpoints to retrieve available variables, resolve specific variables or command templates, and get widget version information.\n"},{"name":"Info","description":"\nSystem status and info endpoints.\nProvides health checks for monitoring service availability (Clickhouse, Postgres, Redis) and API statistics including database table sizes, match fetching rates, and missed matches.\n"},{"name":"SQL","description":"\nDatabase exploration endpoints for direct SQL access.\nProvides functionality to execute custom SQL queries with rate limiting protection, list available tables, and inspect table schemas.\n"},{"name":"Servers","description":"\nGame server status and listing endpoints.\nUsed by game servers to report their status and by clients to discover available servers.\n"},{"name":"Accolades","description":"Accolade definitions derived from per-version game data files."},{"name":"Build Tags","description":"Build tag definitions derived from per-version localization keys."},{"name":"Client Versions","description":"Known Deadlock client/game versions with versioned assets available."},{"name":"Colors","description":"Panorama color palette from per-version `citadel_base_styles.css`."},{"name":"Generic Data","description":"Game-wide generic configuration derived from per-version `generic_data.vdata`."},{"name":"Heroes","description":"Hero metadata derived from per-version game data files."},{"name":"Items","description":"Item, ability, and weapon definitions parsed from the patch's KV3 source files. Mirrors the previous Python `/v2/items` endpoint."},{"name":"Loot Tables","description":"Loot table definitions derived from per-version game data files."},{"name":"Map","description":"Map metadata: minimap radius, image-layer URLs, objective marker positions (from per-version `objectives_map.css`), and the zip-line lane splines."},{"name":"Misc Entities","description":"Misc entity definitions (powerup spawners, breakable props, neutral camps, capture points, …) derived from per-version game data files."},{"name":"NPC Units","description":"NPC unit definitions derived from per-version game data files."},{"name":"Assets","description":"File-tree indexes of static assets (images, icons, sounds, fonts) hosted on the CDN, mapping each asset's name to its public URL."},{"name":"Ranks","description":"Per-rank metadata (name, tier color, badge image URLs) derived from per-version game data files."},{"name":"Steam Info","description":"Per-version `steam.inf` manifest (client/server version, app IDs, build timestamp)."},{"name":"GraphQL","description":"\nGraphQL API for flexible match and player queries.\n\nVisit [/v1/graphql](/v1/graphql) in a browser for the interactive GraphiQL playground.\n"}],"externalDocs":{"url":"https://github.com/deadlock-api/deadlock-api","description":"Source Code"},"x-tagGroups":[{"name":"Game Data","tags":["Players","Matches","Steam","MMR","Analytics","Builds","Leaderboard","Custom Matches","Demo"]},{"name":"Assets","tags":["Items","Heroes","Ranks","NPC Units","Build Tags","Client Versions","Map","Assets Bucket","Misc Entities","Generic Data","Loot Tables","Accolades","Steam Info","Colors"]},{"name":"Game Info","tags":["Info","Patches"]},{"name":"Developer","tags":["GraphQL","SQL","Servers","Commands","Internal"]}]}