UNPKG

openapi-directory

Version:

Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS

1 lines 401 kB
{"openapi":"3.0.0","info":{"contact":{"x-twitter":"halo"},"description":"API that provides statistical data about Players and Matches.","title":"Stats","version":"1.0","x-apisguru-categories":["entertainment"],"x-logo":{"url":"https://upload.wikimedia.org/wikipedia/commons/d/d7/Halo_%28series%29_logo.svg"},"x-origin":[{"format":"swagger","url":"https://developer.haloapi.com/docs/services/58acdf27e2f7f71ad0dad84b/export?DocumentFormat=Swagger","version":"2.0"},{"format":"swagger","url":"https://developer.haloapi.com/docs/services/58acdf27e2f7f71ad0dad84b/export?DocumentFormat=Swagger","version":"2.0"}],"x-providerName":"haloapi.com","x-serviceName":"stats"},"security":[{"apiKeyHeader":[]},{"apiKeyQuery":[]}],"tags":[],"paths":{"/h5/arena/matches/{matchId}":{"get":{"description":"<p>Retrieves detailed statistics for a Match with the Arena Game Mode.</p>\n<br />\n<h4>Changelog</h4>\n<div class=\"panel-body\">\n <p><strong>December 12, 2018:</strong></p>\n <ul>\n <li>Updated the documentation for \"PlayerScore\".</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>December 22, 2017:</strong></p>\n <ul>\n <li>Added Game Mode clarifications to the Endpoint description.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>February 21, 2017:</strong></p>\n <ul>\n <li>Renamed Endpoint from \"Post-Game Carnage Report: Arena\" to \"Halo 5 - Match Result - Arena\".</li>\n <li>Removed \"{title}\" Request Parameter.</li>\n <li>Updated the documentation for \"GameVariantResourceId\" and \"MapVariantResourceId\" to reference the UGC API.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>May 16, 2016:</strong></p>\n <ul>\n <li>Documented HTTP 503 Response Code.</li>\n <li>Added documentation for the \"MatchSpeedWinAmount\", \"ObjectivesCompletedAmount\", and \"BoostData\" fields.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>April 20, 2016:</strong></p>\n <ul>\n <li>Added documentation for the \"GameVariantResourceId\", \"MapVariantResourceId\", and \"PlayerScore\" fields.</li>\n <li>Updated the documentation for the \"MapVariantId\" and \"GameVariantId\" fields with the recommendation of using the \"MapVariantResourceId\" and \"GameVariantResourceId\" fields, respectively.</li>\n </ul>\n</div>\n","operationId":"Halo-5-Match-Result-Arena","parameters":[{"description":"An ID that uniquely identifies a Match. Match IDs can be retrieved from the \"Halo 5 - Player Match History\" Endpoint.","in":"path","name":"matchId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The response body will contain the Match Result.","content":{"application/json":{"examples":{"response":{"value":"{\n // A list of stats for each player who was present in the match.\n \"PlayerStats\": [\n {\n // The experience information for the player in this match.\n \"XpInfo\": {\n\n // The player's Spartan Rank before the match started.\n \"PrevSpartanRank\": \"int\",\n\n // The player's Spartan Rank after the match ended.\n \"SpartanRank\": \"int\",\n\n // The player's XP before the match started.\n \"PrevTotalXP\": \"int\",\n\n // The player's XP after the match ended.\n \"TotalXP\": \"int\",\n\n // The multiplier on the XP earned this match based on their Spartan Rank when\n // the match ended.\n \"SpartanRankMatchXPScalar\": \"double\",\n\n // The portion of the XP the player earned this match that was based on how much\n // time was spent in-match.\n \"PlayerTimePerformanceXPAward\": \"int\",\n\n // The XP awarded to the player based on how their team ranked when the match\n // concluded.\n \"PerformanceXP\": \"int\",\n\n // The XP awarded to the player for their team-agnostic rank.\n \"PlayerRankXPAward\": \"int\",\n\n // The amount of XP the player earned if they played a boost card for this match,\n // and the boost card criteria was met. This is a fixed amount of XP, not a\n // multiplier.\n \"BoostAmount\": \"int\",\n\n // The amount of XP the player earned for finishing the match quickly.\n \"MatchSpeedWinAmount\": \"int\",\n\n // The amount of XP the player earned for completing objectives.\n \"ObjectivesCompletedAmount\": \"int\"\n },\n\n // The Competitive Skill Ranking (CSR) of the player before the match started. If\n // the player is still in measurement matches, this field is null. If the player\n // finished the last measurement match this match, this field is still null.\n \"PreviousCsr\": {\n\n // The CSR tier. CSR Tiers are designation-specific and are available via the\n // Metadata API.\n \"Tier\": \"int\",\n\n // The Designation of the CSR. CSR Designations are available via the Metadata\n // API.\n \"DesignationId\": \"int\",\n\n // The CSR value. Zero for normal (Diamond and below) designations.\n \"Csr\": \"int\",\n\n // The percentage of progress towards the next CSR tier.\n \"PercentToNextTier\": \"int\",\n\n // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null\n // otherwise.\n \"Rank\": \"int\"\n },\n\n // The Competitive Skill Ranking (CSR) of the player after the match ended. If the\n // player is still in measurement matches, this field is null.\n \"CurrentCsr\": {\n\n // The CSR tier. CSR Tiers are designation-specific and are available via the\n // Metadata API.\n \"Tier\": \"int\",\n\n // The Designation of the CSR. CSR Designations are available via the Metadata\n // API.\n \"DesignationId\": \"int\",\n\n // The CSR value. Zero for normal (Diamond and below) designations.\n \"Csr\": \"int\",\n\n // The percentage of progress towards the next CSR tier.\n \"PercentToNextTier\": \"int\",\n\n // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null\n // otherwise.\n \"Rank\": \"int\"\n },\n\n // The player's measurement matches left. If this field is greater than zero, then\n // the player will not have a CSR yet. If the player finished the match, this match\n // is included in this count.\n \"MeasurementMatchesLeft\": \"int\",\n\n // The set of rewards that the player got in this match.\n \"RewardSets\": [\n {\n // The ID of the reward.\n \"RewardSet\": \"guid\",\n\n // The source of the reward. Options are:\n // None = 0,\n // Meta Commendation = 1,\n // Progress Commendation = 2,\n // Spartan Rank = 3\n \"RewardSourceType\": \"int\",\n\n // If the Reward Source is Spartan Rank, this value is set to the Spartan Rank\n // the player acquired that led to this reward being granted. Note: Unlike the\n // commendations fields in this structure, this is not the GUID to a Spartan\n // Rank content item. That's because the Spartan Rank content item itself does\n // not detail what specific Spartan Rank it pertains to - this information is\n // derived from the list of Spartan Ranks as a whole. Spartan Ranks are\n // available via the Metadata API.\n \"SpartanRankSource\": \"int\",\n\n // If the Reward Source is a Commendation, this is the ID of the level of the\n // commendation that earned the reward.\n \"CommendationLevelId\": \"guid\",\n\n // If the Reward Source is a Meta Commendation or Progress Commendation, this\n // is the ID of the Meta Commendation or Progress Commendation, respectively,\n // that earned the reward. Commendations are available via the Metadata API.\n \"CommendationSource\": \"guid\"\n },\n\n ],\n\n // The number of times the player killed each opponent. If the player did not kill\n // an opponent, there will be no entry for that opponent.\n \"KilledOpponentDetails\": [\n {\n // The gamertag of the opponent that was killed.\n \"GamerTag\": \"string\",\n\n // The number of times that opponent was killed.\n \"TotalKills\": \"int\"\n }\n ],\n\n // The number of times the player was killed by each opponent. If the player was\n // not killed by an opponent, there will be no entry for that opponent.\n \"KilledByOpponentDetails\": [\n {\n // The gamertag of the opponent that killed the player.\n \"GamerTag\": \"string\",\n\n // The number of times the opponent killed the player.\n \"TotalKills\": \"int\"\n }\n ],\n\n // The game base variant specific stats for this match. Flexible stats are\n // available via the Metadata API.\n \"FlexibleStats\": {\n\n // The set of flexible stats that are derived from medal events.\n \"MedalStatCounts\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The number of times this flexible stat was earned.\n \"Count\": \"int\"\n }\n ],\n\n // The set of flexible stats that are derived from impulse events.\n \"ImpulseStatCounts\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The number of times this flexible stat was earned.\n \"Count\": \"int\"\n }\n ],\n\n // The set of flexible stats that are derived from medal time lapses.\n \"MedalTimelapses\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The amount of time the flexible stat was earned for. This is expressed as\n // an ISO 8601 Duration.\n \"Timelapse\": \"string\"\n }\n ], \n\n // The set of flexible stats that are derived from impulse time lapses.\n \"ImpulseTimelapses\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The amount of time the flexible stat was earned for. This is expressed as\n // an ISO 8601 Duration.\n \"Timelapse\": \"string\"\n }\n ]\n },\n\n // Details on any credits the player may have earned from playing this match.\n \"CreditsEarned\": {\n\n // Indicates how the credits result was arrived at. Options are:\n // Credits Disabled In Playlist = 0,\n // Player Did Not Finish = 1,\n // Credits Earned = 2\n // Credits Disabled In Playlist: TotalCreditsEarned is zero because this playlist\n // has credits disabled.\n // Player Did Not Finish: Credits are enabled in this playlist, but\n // TotalCreditsEarned is zero because the player did not finish the match.\n // Credits Earned: Credits are enabled in this playlist and the player completed\n // the match, so the credits formula was successfully evaluated. The fields below\n // provide the client with the values used in the formula. Note: That if we used\n // one or more default values, we still return \"NormalResult\". The fields below\n // will confirm the actual values used.\n \"Result\": \"int\",\n\n // The total number of credits the player earned from playing this match.\n \"TotalCreditsEarned\": \"int\",\n\n // The scalar applied to the credits earned based on the player's Spartan Rank.\n \"SpartanRankModifier\": \"double\",\n\n // The portion of credits earned due to the player's team-agnostic rank in the\n // match.\n \"PlayerRankAmount\": \"int\",\n\n // The portion of credits earned due to the time the player played in the match.\n \"TimePlayedAmount\": \"double\",\n\n // The portion of credits earned due to the boost card the user applied\n \"BoostAmount\": \"int\"\n },\n\n // The player's progress towards meta commendations. Commendations that had no\n // progress earned this match will not be returned. \n \"MetaCommendationDeltas\": [\n {\n // The commendation ID. Commendations are available via the Metadata API.\n \"Id\": \"guid\",\n\n // The progress the player had made towards the commendation level before the\n // match. In C#, this can be reassembled into a Guid in the following manner:\n // new Guid((int)Data1, (short)Data2, (short)Data3,\n // BitConverter.GetBytes((long)Data4)).\n \"PreviousMetRequirements\": [\n {\n \"Data1\": \"int\",\n\n \"Data2\": \"int\",\n\n \"Data3\": \"int\",\n\n \"Data4\": \"int\"\n }\n ],\n\n // The progress the player had made towards the commendation level after the\n // match. In C#, this can be reassembled into a Guid in the following manner:\n // new Guid((int)Data1, (short)Data2, (short)Data3,\n // BitConverter.GetBytes((long)Data4)).\n \"MetRequirements\": [\n {\n \"Data1\": \"int\",\n\n \"Data2\": \"int\",\n\n \"Data3\": \"int\",\n\n \"Data4\": \"int\"\n }\n ]\n }\n ],\n\n // The player's progress towards progressive commendations. Commendations that had\n // no progress earned this match will not be returned.\n \"ProgressiveCommendationDeltas\": [\n {\n // The commendation ID. Commendations are available via the Metadata API.\n \"Id\": \"guid\",\n\n // The progress the player had made towards the commendation level before the\n // match.\n \"PreviousProgress\": \"int\",\n\n // The progress the player had made towards the commendation level after the\n // match.\n \"Progress\": \"int\"\n }\n ],\n\n // Details on the boost card the user used in this match. If the user did not use a\n // boost card this field will be null.\n \"BoostData\": {\n\n // The identifier of the boost card that was used. Boost cards are available via\n // the Requisitions Metadata API.\n \"DefinitionId\": \"guid\",\n\n // Whether the card was consumed because its conditions were met. If not consumed\n // the card is returned to the user's inventory.\n \"CardConsumed\": \"bool\"\n },\n\n \"Player\": {\n\n // The player's gamertag.\n \"Gamertag\": \"string\",\n\n // Internal use only. This will always be null.\n \"Xuid\": null\n },\n\n // The ID of the team that the player was on when the match ended. \n \"TeamId\": \"int\",\n\n // The player's team-agnostic ranking.\n \"Rank\": \"int\",\n\n // Indicates whether the player was present in the match when it ended.\n \"DNF\": \"boolean\",\n\n // The player's average lifetime.\n \"AvgLifeTimeOfPlayer\": \"string\",\n\n // Internal use only. This will always be null.\n \"PreMatchRatings\": null,\n\n // Internal use only. This will always be null.\n \"PostMatchRatings\": null,\n\n // The Player's Score. This is not used by all Game Variants and may contain null\n // or invalid data.\n \"PlayerScore\": \"int\",\n\n // Total number of kills done by the player. This includes melee kills, shoulder\n // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle\n // destructions. \n \"TotalKills\": \"int\",\n\n // Total number of headshots done by the player.\n \"TotalHeadshots\": \"int\",\n\n // Total weapon damage dealt by the player.\n \"TotalWeaponDamage\": \"double\",\n\n // Total number of shots fired by the player.\n \"TotalShotsFired\": \"int\",\n\n // Total number of shots landed by the player.\n \"TotalShotsLanded\": \"int\",\n\n // The weapon the player used to get the most kills this match.\n \"WeaponWithMostKills\": {\n\n \"WeaponId\": {\n\n // The ID of the weapon. Weapons are available via the Metadata API.\n \"StockId\": \"int\",\n\n // Any attachments the weapon had.\n \"Attachments\": [ \"int\" ]\n },\n\n // The number of shots fired for this weapon.\n \"TotalShotsFired\": \"int\",\n\n // The number of shots landed for this weapon.\n \"TotalShotsLanded\": \"int\",\n\n // The number of headshots for this weapon.\n \"TotalHeadshots\": \"int\",\n\n // The number of kills for this weapon.\n \"TotalKills\": \"int\",\n\n // The total damage dealt for this weapon.\n \"TotalDamageDealt\": \"double\",\n\n // The total possession time for this weapon. This is expressed as an ISO 8601\n // Duration.\n \"TotalPossessionTime\": \"string\"\n },\n\n // Total number of melee kills by the player.\n \"TotalMeleeKills\": \"int\",\n\n // Total melee damage dealt by the player.\n \"TotalMeleeDamage\": \"double\",\n\n // Total number of assassinations by the player.\n \"TotalAssassinations\": \"int\",\n\n // Total number of ground pound kills by the player.\n \"TotalGroundPoundKills\": \"int\",\n\n // Total ground pound damage dealt by the player.\n \"TotalGroundPoundDamage\": \"double\",\n\n // Total number of shoulder bash kills by the player.\n \"TotalShoulderBashKills\": \"int\",\n\n // Total shoulder bash damage dealt by the player.\n \"TotalShoulderBashDamage\": \"double\",\n\n // Total grenade damage dealt by the player.\n \"TotalGrenadeDamage\": \"double\",\n\n // Total number of power weapon kills by the player.\n \"TotalPowerWeaponKills\": \"int\",\n\n // Total power weapon damage dealt by the player.\n \"TotalPowerWeaponDamage\": \"double\",\n\n // Total number of power weapon grabs by the player.\n \"TotalPowerWeaponGrabs\": \"int\",\n\n // Total power weapon possession by the player. This is expressed as an ISO 8601\n // Duration.\n \"TotalPowerWeaponPossessionTime\": \"string\",\n\n // Total number of deaths by the player.\n \"TotalDeaths\": \"int\",\n\n // Total number of assists by the player.\n \"TotalAssists\": \"int\",\n\n // Not used.\n \"TotalGamesCompleted\": \"int\",\n\n // Not used.\n \"TotalGamesWon\": \"int\",\n\n // Not used.\n \"TotalGamesLost\": \"int\",\n\n // Not used.\n \"TotalGamesTied\": \"int\",\n\n // Total timed played in this match by the player.\n \"TotalTimePlayed\": \"string\",\n\n // Total number of grenade kills by the player.\n \"TotalGrenadeKills\": \"int\",\n\n // The set of Medals earned by the player.\n \"MedalAwards\": [\n {\n // The ID of the Medal. Medals are available via the Metadata API.\n \"MedalId\": \"int\",\n\n // The number of times the Medal was earned.\n \"Count\": \"int\"\n }\n ], \n\n // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.\n // Note: this stat measures enemy vehicles, not any vehicle destruction.\n \"DestroyedEnemyVehicles\": [\n {\n // The enemy this entry references\n \"Enemy\": {\n\n // The Base ID for the enemy.\n \"BaseId\": \"int\",\n\n // The attachments (variants) for the enemy.\n \"Attachments\": [\n \"int\"\n ]\n },\n\n // Total number of kills on the enemy by the player\n \"TotalKills\": \"int\"\n }\n ],\n\n // List of enemies killed, per enemy type. Enemies are available via the Metadata\n // API.\n \"EnemyKills\": [\n {\n // The enemy this entry references\n \"Enemy\": {\n\n // The Base ID for the enemy.\n \"BaseId\": \"int\",\n\n // The attachments (variants) for the enemy.\n \"Attachments\": [\n \"int\"\n ]\n },\n\n // Total number of kills on the enemy by the player\n \"TotalKills\": \"int\"\n }\n ],\n\n // The set of weapons (weapons and vehicles included) used by the player.\n \"WeaponStats\": [\n {\n \"WeaponId\": {\n\n // The ID of the weapon. Weapons are available via the Metadata API.\n \"StockId\": \"int\",\n\n // Any attachments the weapon had.\n \"Attachments\": [ \n \"int\" \n ]\n },\n\n // The number of shots fired for this weapon.\n \"TotalShotsFired\": \"int\",\n\n // The number of shots landed for this weapon.\n \"TotalShotsLanded\": \"int\",\n\n // The number of headshots for this weapon.\n \"TotalHeadshots\": \"int\",\n\n // The number of kills for this weapon.\n \"TotalKills\": \"int\",\n\n // The total damage dealt for this weapon.\n \"TotalDamageDealt\": \"double\",\n\n // The total possession time for this weapon. This is expressed as an ISO 8601\n // Duration.\n \"TotalPossessionTime\": \"string\"\n }\n ],\n\n // The set of Impulses (invisible Medals) earned by the player.\n \"Impulses\": [\n {\n // The ID of the Impulse. Impulses are available via the Metadata API.\n \"Id\": \"int\",\n\n // The number of times the Impulse was earned.\n \"Count\": \"int\"\n }\n ],\n\n // Total number of Spartan kills by the player.\n \"TotalSpartanKills\": \"int\"\n }\n ],\n\n // A list of stats for each team who in the match. Note that in Free For All modes,\n // there is an entry for every player.\n \"TeamStats\": [\n {\n // The ID for the team.\n \"TeamId\": \"int\",\n\n // The team's score at the end of the match. The way the score is determined is\n // based off the game base variant being played: \n // Breakout = number of rounds won,\n // CTF = number of flag captures,\n // Slayer = number of kills,\n // Strongholds = number of points,\n // Warzone = number of points.\n // Score can be a negative value. Unfortunately, this value is returned as an\n // unsigned 32-bit integer. This means that if the score is -1, the score reported\n // is 4,294,967,295.\n \"Score\": \"uint32\",\n\n // The team's rank at the end of the match.\n \"Rank\": \"int\",\n\n // The set of round stats for the team.\n \"RoundStats\": [\n {\n // The round number this entry pertains to.\n \"RoundNumber\": \"int\",\n\n // The end rank for the team this round.\n \"Rank\": \"int\",\n\n // The end score for the team this round.\n // Score can be a negative value. Unfortunately, this value is returned as an\n // unsigned 32-bit integer. This means that if the score is -1, the score\n // reported is 4,294,967,295.\n \"Score\": \"uint32\",\n\n }\n ]\n }\n ],\n\n // Indicates if the match is completed or not. Some match details are available while\n // the match is in-progress, but the behavior for incomplete matches in undefined.\n \"IsMatchOver\": \"boolean\",\n\n // The length of the match. This is expressed as an ISO 8601 Duration.\n \"TotalDuration\": \"string\",\n\n // The variant of the map for this match. Map variants are available via the Metadata\n // API. More information is available in MapVariantResourceId.\n \"MapVariantId\": \"guid\",\n\n // The variant of the game for this match. Game variants are available via the Metadata\n // API. More information is available in GameVariantResourceId.\n \"GameVariantId\": \"guid\",\n\n // The playlist ID of the match. Playlists are available via the Metadata API.\n \"PlaylistId\": \"guid\",\n\n // The ID of the base map for this match. Maps are available via the Metadata API.\n \"MapId\": \"guid\",\n\n // The ID of the game base variant for this match. Game base variants are available via\n // the Metadata API.\n \"GameBaseVariantId\": \"guid\",\n\n // Whether this was a team-based game or not.\n \"IsTeamGame\": \"boolean\",\n\n // The ID of the season for this match if it was played in a seasonal playlist. Null if\n // the match was played in a non-seasonal playlist.\n \"SeasonId\": \"guid\",\n\n // The variant of the game for this match. There are two sources of game variants:\n // official game variants available via the Metadata API and user-generated game\n // variants available via the UGC API.\n \"GameVariantResourceId\": {\n\n // The resource type. 2 indicates game variant.\n \"ResourceType\": 2,\n\n // The ID of the game variant. Official game variants are available via the Metadata\n // API.\n \"ResourceId\": \"guid\", \n\n // The source of the game variant. Options are:\n // Unknown = 0,\n // User-generated = 1,\n // Official = 3.\n \"OwnerType\": \"int\",\n\n // The gamertag of the user that created the game variant if this is a user-generated\n // game variant, or null otherwise. \n \"Owner\": \"string\"\n },\n\n // The variant of the map for this match. There are two sources of map variants:\n // official map variants available via the Metadata API and user-generated map variants\n // available via the UGC API.\n \"MapVariantResourceId\": {\n\n // The resource type. 3 indicates map variant.\n \"ResourceType\": 3,\n\n // The ID of the map variant. Official map variants are available via the Metadata\n // API.\n \"ResourceId\": \"guid\",\n\n // The source of the map variant. Options are:\n // Unknown = 0,\n // User-generated = 1,\n // Official = 3.\n \"OwnerType\": \"int\",\n\n // The gamertag of the user that created the map variant if this is a user-generated\n // map variant, or null otherwise. \n \"Owner\": \"string\"\n }\n}\n"}}}}},"404":{"description":"The specified Match could not be found."},"500":{"description":"Internal Server Error"},"503":{"description":"Service Unavailable"}},"summary":"Halo 5 - Match Result - Arena"}},"/h5/campaign/matches/{matchId}":{"get":{"description":"<p>Retrieves detailed statistics for a Match with the Campaign Game Mode.</p>\n<p>Every time a player plays a portion of a Campaign Mission, a Match will be generated whether the player finishes the Mission or not. If the \"Match\" ends because the Mission was completed, this will be indicated in the response.</p>\n<br />\n<h4>Changelog</h4>\n<div class=\"panel-body\">\n <p><strong>December 22, 2017:</strong></p>\n <ul>\n <li>Added Game Mode clarifications to the Endpoint description.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>February 21, 2017:</strong></p>\n <ul>\n <li>Renamed Endpoint from \"Post-Game Carnage Report: Campaign\" to \"Halo 5 - Match Result - Campaign\".</li>\n <li>Removed \"{title}\" Request Parameter.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>May 16, 2016:</strong></p>\n <ul>\n <li>Documented HTTP 503 Response Code.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>April 20, 2016:</strong></p>\n <ul>\n <li>Added documentation for the \"GameVariantResourceId\", \"MapVariantResourceId\", and \"PlayerScore\" fields.</li>\n </ul>\n</div>\n","operationId":"Halo-5-Match-Result-Campaign","parameters":[{"description":"An ID that uniquely identifies a Match. Match IDs can be retrieved from the \"Halo 5 - Player Match History\" Endpoint.","in":"path","name":"matchId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The response body will contain the Match Result.","content":{"application/json":{"examples":{"response":{"value":"{\n // A list of stats for each player who was present in the match.\n \"PlayerStats\": [\n {\n // The player's biggest score due to a kill.\n \"BiggestKillScore\": \"int\",\n\n // The game base variant specific stats for this match. Flexible stats are\n // available via the Metadata API.\n \"FlexibleStats\": {\n\n // The set of flexible stats that are derived from medal events.\n \"MedalStatCounts\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The number of times this flexible stat was earned.\n \"Count\": \"int\"\n }\n ],\n\n // The set of flexible stats that are derived from impulse events.\n \"ImpulseStatCounts\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The number of times this flexible stat was earned.\n \"Count\": \"int\"\n }\n ],\n\n // The set of flexible stats that are derived from medal time lapses.\n \"MedalTimelapses\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The amount of time the flexible stat was earned for. This is expressed as\n // an ISO 8601 Duration.\n \"Timelapse\": \"string\"\n }\n ], \n\n // The set of flexible stats that are derived from impulse time lapses.\n \"ImpulseTimelapses\": [\n {\n // The ID of the flexible stat.\n \"Id\": \"guid\",\n\n // The amount of time the flexible stat was earned for. This is expressed as\n // an ISO 8601 Duration.\n \"Timelapse\": \"string\"\n }\n ]\n },\n\n // The player's score.\n // Score can be a negative value. Unfortunately, this value is returned as an\n // unsigned 32-bit integer. This means that if the score is -1, the score reported\n // is 4,294,967,295.\n \"Score\": \"uint32\",\n\n // Unused.\n \"CharacterIndex\": null,\n\n \"Player\": {\n\n // The player's gamertag.\n \"Gamertag\": \"string\",\n\n // Internal use only. This will always be null.\n \"Xuid\": null\n },\n\n // The ID of the team that the player was on when the match ended. This value has\n // no meaning in Campaign.\n \"TeamId\": \"int\",\n\n // The player's team-agnostic ranking.\n \"Rank\": \"int\",\n\n // Indicates whether the player was present in the match when it ended. \n \"DNF\": \"boolean\",\n\n // The player's average lifetime.\n \"AvgLifeTimeOfPlayer\": \"string\",\n\n // Internal use only. This will always be null.\n \"PreMatchRatings\": null,\n\n // Internal use only. This will always be null.\n \"PostMatchRatings\": null,\n\n // Unused for Campaign matches. This will usually be null or contain invalid data.\n \"PlayerScore\": null,\n\n // Total number of kills done by the player. This includes melee kills, shoulder\n // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle\n // destructions. \n \"TotalKills\": \"int\",\n\n // Total number of headshots done by the player.\n \"TotalHeadshots\": \"int\",\n\n // Total weapon damage dealt by the player.\n \"TotalWeaponDamage\": \"double\",\n\n // Total number of shots fired by the player.\n \"TotalShotsFired\": \"int\",\n\n // Total number of shots landed by the player.\n \"TotalShotsLanded\": \"int\",\n\n // The weapon the player used to get the most kills this match.\n \"WeaponWithMostKills\": {\n\n \"WeaponId\": {\n\n // The ID of the weapon. Weapons are available via the Metadata API.\n \"StockId\": \"int\",\n\n // Any attachments the weapon had.\n \"Attachments\": [ \"int\" ]\n },\n\n // The number of shots fired for this weapon.\n \"TotalShotsFired\": \"int\",\n\n // The number of shots landed for this weapon.\n \"TotalShotsLanded\": \"int\",\n\n // The number of headshots for this weapon.\n \"TotalHeadshots\": \"int\",\n\n // The number of kills for this weapon.\n \"TotalKills\": \"int\",\n\n // The total damage dealt for this weapon.\n \"TotalDamageDealt\": \"double\",\n\n // The total possession time for this weapon. This is expressed as an ISO 8601\n // Duration.\n \"TotalPossessionTime\": \"string\"\n },\n\n // Total number of melee kills by the player.\n \"TotalMeleeKills\": \"int\",\n\n // Total melee damage dealt by the player.\n \"TotalMeleeDamage\": \"double\",\n\n // Total number of assassinations by the player.\n \"TotalAssassinations\": \"int\",\n\n // Total number of ground pound kills by the player.\n \"TotalGroundPoundKills\": \"int\",\n\n // Total ground pound damage dealt by the player.\n \"TotalGroundPoundDamage\": \"double\",\n\n // Total number of shoulder bash kills by the player.\n \"TotalShoulderBashKills\": \"int\",\n\n // Total shoulder bash damage dealt by the player.\n \"TotalShoulderBashDamage\": \"double\",\n\n // Total grenade damage dealt by the player.\n \"TotalGrenadeDamage\": \"double\",\n\n // Total number of power weapon kills by the player.\n \"TotalPowerWeaponKills\": \"int\",\n\n // Total power weapon damage dealt by the player.\n \"TotalPowerWeaponDamage\": \"double\",\n\n // Total number of power weapon grabs by the player.\n \"TotalPowerWeaponGrabs\": \"int\",\n\n // Total power weapon possession by the player. This is expressed as an ISO 8601\n // Duration.\n \"TotalPowerWeaponPossessionTime\": \"string\",\n\n // Total number of deaths by the player.\n \"TotalDeaths\": \"int\",\n\n // Total number of assists by the player.\n \"TotalAssists\": \"int\",\n\n // Not used.\n \"TotalGamesCompleted\": \"int\",\n\n // Not used.\n \"TotalGamesWon\": \"int\",\n\n // Not used.\n \"TotalGamesLost\": \"int\",\n\n // Not used.\n \"TotalGamesTied\": \"int\",\n\n // Total timed played in this match by the player.\n \"TotalTimePlayed\": \"string\",\n\n // Total number of grenade kills by the player.\n \"TotalGrenadeKills\": \"int\",\n\n // The set of Medals earned by the player.\n \"MedalAwards\": [\n {\n // The ID of the Medal. Medals are available via the Metadata API.\n \"MedalId\": \"int\",\n\n // The number of times the Medal was earned.\n \"Count\": \"int\"\n }\n ], \n\n // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.\n // Note: this stat measures enemy vehicles, not any vehicle destruction.\n \"DestroyedEnemyVehicles\": [\n {\n // The enemy this entry references\n \"Enemy\": {\n\n // The Base ID for the enemy.\n \"BaseId\": \"int\",\n\n // The attachments (variants) for the enemy.\n \"Attachments\": [\n \"int\"\n ]\n },\n\n // Total number of kills on the enemy by the player\n \"TotalKills\": \"int\"\n }\n ],\n\n // List of enemies killed, per enemy type. Enemies are available via the Metadata\n // API.\n \"EnemyKills\": [\n {\n // The enemy this entry references\n \"Enemy\": {\n\n // The Base ID for the enemy.\n \"BaseId\": \"int\",\n\n // The attachments (variants) for the enemy.\n \"Attachments\": [\n \"int\"\n ]\n },\n\n // Total number of kills on the enemy by the player\n \"TotalKills\": \"int\"\n }\n ],\n\n // The set of weapons (weapons and vehicles included) used by the player.\n \"WeaponStats\": [\n {\n \"WeaponId\": {\n\n // The ID of the weapon. Weapons are available via the Metadata API.\n \"StockId\": \"int\",\n\n // Any attachments the weapon had.\n \"Attachments\": [ \n \"int\" \n ]\n },\n\n // The number of shots fired for this weapon.\n \"TotalShotsFired\": \"int\",\n\n // The number of shots landed for this weapon.\n \"TotalShotsLanded\": \"int\",\n\n // The number of headshots for this weapon.\n \"TotalHeadshots\": \"int\",\n\n // The number of kills for this weapon.\n \"TotalKills\": \"int\",\n\n // The total damage dealt for this weapon.\n \"TotalDamageDealt\": \"double\",\n\n // The total possession time for this weapon. This is expressed as an ISO\n // 8601 Duration.\n \"TotalPossessionTime\": \"string\"\n }\n ],\n\n // The set of Impulses (invisible Medals) earned by the player.\n \"Impulses\": [\n {\n // The ID of the Impulse. Impulses are available via the Metadata API.\n \"Id\": \"int\",\n\n // The number of times the Impulse was earned.\n \"Count\": \"int\"\n }\n ],\n\n // Total number of Spartan kills by the player.\n \"TotalSpartanKills\": \"int\"\n }\n ],\n\n // The total playthrough time of the mission as calculated by the game. This value is\n // persisted in save files.\n \"TotalMissionPlaythroughTime\": \"string\",\n\n // The difficulty the mission was played at. Options are:\n // Easy = 0,\n // Normal = 1,\n // Heroic = 2,\n // Legendary = 3\n \"Difficulty\": \"int\",\n\n // The list of skulls used for the mission. Skulls are available via the Metadata API.\n \"Skulls\": [\n \"int\"\n ],\n\n // Indicates whether the mission was completed when the match ended.\n \"MissionCompleted\": \"boolean\",\n\n // Indicates if the match is completed or not. Some match details are available while\n // the match is in-progress, but the behavior for incomplete matches in undefined.\n \"IsMatchOver\": \"boolean\",\n\n // The length of the match. This is expressed as an ISO 8601 Duration.\n \"TotalDuration\": \"string\",\n\n // Unused for Campaign matches. This will always be an empty guid.\n \"MapVariantId\": \"guid\",\n\n // Unused for Campaign matches. This will always be empty guid.\n \"GameVariantId\": \"guid\",\n\n // The playlist ID of the match. Playlists are available via the Metadata API.\n \"PlaylistId\": \"guid\",\n\n // The ID of the Campaign Mission. In Campaign, Map ID is overriden to be the Mission\n // ID. Missions are available via the Metadata API.\n \"MapId\": \"guid\",\n\n // The ID of the game base variant for this match. Game base variants are available via\n // the Metadata API.\n \"GameBaseVariantId\": \"guid\",\n\n // Whether this was a team-based game or not.\n \"IsTeamGame\": \"boolean\",\n\n // Unused for Campaign matches. This will always be null.\n \"SeasonId\": null,\n\n // Unused for Campaign matches. All fields within this structure will have their\n // default value.\n \"GameVariantResourceId\": {\n\n \"ResourceType\": \"int\",\n\n \"ResourceId\": \"guid\",\n\n \"OwnerType\": \"int\",\n\n \"Owner\": \"string\"\n },\n\n // Unused for Campaign matches. All fields within this structure will have their\n // default value.\n \"MapVariantResourceId\": {\n\n \"ResourceType\": \"int\",\n\n \"ResourceId\": \"guid\",\n\n \"OwnerType\": \"int\",\n\n \"Owner\": \"string\"\n }\n}\n"}}}}},"404":{"description":"The specified Match could not be found."},"500":{"description":"Internal Server Error"},"503":{"description":"Service Unavailable"}},"summary":"Halo 5 - Match Result - Campaign"}},"/h5/companies/{companyId}":{"get":{"description":"<p>Retrieves information about the Company. The response will contain the Company's name, status, and members.</p>\n<br />\n<h4>Changelog</h4>\n<div class=\"panel-body\">\n <p><strong>July 14, 2017:</strong></p>\n <ul>\n <li>Added Endpoint.</li>\n </ul>\n</div>\n","operationId":"Halo-5-Company","parameters":[{"description":"The ID for the Company. The Company ID for a player can be retrieved from the Profile APIs via the \"Halo 5 - Player Apperance\" Endpoint.","in":"path","name":"companyId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The response body will contain the Company name, status, and members.","content":{"application/json":{"examples":{"response":{"value":"{\n // The ID of the company.\n \"Id\": \"guid\",\n\n // The name of the company.\n \"Name\": \"string\",\n\n // Information about the creator of the company. The creator might not necessarily be a\n // member of the company.\n \"Creator\": {\n\n // The company creator's gamertag.\n \"Gamertag\": \"string\",\n\n // Internal use only. This will always be null.\n \"Xuid\": null\n },\n\n // The highest number of users that were (or are) in this company.\n \"PeakMembershipCount\": \"int\",\n\n // Indicates the date that the company is suspended until. This is expressed as an ISO\n // 8601 combined Date and Time.\n \"SuspendedUntilDate\": {\n\n \"ISO8601Date\": \"string\"\n },\n\n // The current members of the company. If the company does not have any members, this\n // list will be empty. \n \"Members\": [\n {\n // Information about the member. \n \"Player\": {\n\n // The member's gamertag.\n \"Gamertag\": \"string\",\n\n // Internal use only. This will always be null.\n \"Xuid\": null\n },\n\n // The role of the member in the company. This field will contain one of the\n // following values:\n // Member = 0,\n // Lieutenant = 1,\n // Leader = 2\n \"Role\": \"int\",\n\n // The date when the member was added to the company. The time component of this\n // date is always set to \"00:00:00\". This is expressed as an ISO 8601 combined Date\n // and Time.\n \"JoinedDate\": {\n\n \"ISO8601Date\": \"string\"\n },\n\n // The date when the member's role was last modified. The time component of this\n // date is always set to \"00:00:00\". This is expressed as an ISO 8601 combined Date\n // and Time.\n \"LastModifiedDate\": {\n\n \"ISO8601Date\": \"string\"\n }\n ],\n\n // The date when the company was created. The time component of this date is always set\n // to \"00:00:00\". This is expressed as an ISO 8601 combined Date and Time.\n \"CreatedDate\": {\n\n \"ISO8601Date\": \"string\"\n },\n\n // The date when the company was last modified. The time component of this date is\n // always set to \"00:00:00\". This is expressed as an ISO 8601 combined Date and Time.\n \"LastModifiedDate\": {\n\n \"ISO8601Date\": \"string\"\n }\n}\n"}}}}},"404":{"description":"Specified Company was not found."},"500":{"description":"Internal Server Error"},"503":{"description":"Service Unavailable"}},"summary":"Halo 5 - Company"}},"/h5/companies/{companyId}/commendations":{"get":{"description":"<p>Retrieves the commendation state for a Company.</p>\n<br />\n<h4>Changelog</h4>\n<div class=\"panel-body\">\n <p><strong>July 14, 2017:</strong></p>\n <ul>\n <li>Added Endpoint.</li>\n </ul>\n</div>\n","operationId":"Halo-5-Company-Commendations","parameters":[{"description":"The ID for the Company. The Company ID for a player can be retrieved from the Profile APIs via the \"Halo 5 - Player Apperance\" Endpoint.","in":"path","name":"companyId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The response body will contain the commendation state for the Company.","content":{"application/json":{"examples":{"response":{"value":"{\n // Internal use only. A set of related resource links.\n \"Links\": null,\n\n // The progress towards each Progressive Commendation. Progressive commendations have a\n // series of increasingly difficult thresholds (levels) that must crossed to receive\n // increasingly greater rewards. If no progress has been made for a progressive\n // commendation, it is omitted from this list.\n \"ProgressiveCommendations\": [\n {\n // The commendation ID. Commendations are available via the Metadata API.\n \"Id\": \"guid\",\n\n // The progress that has been made towards the commendation.\n \"Progress\": \"int\",\n\n // The levels that have been completed for the commendation.\n \"CompletedLevels\": [\n {\n // The commendation level ID. Commendation Levels area available via the\n // Metadata API.\n \"Id\": \"guid\",\n\n // The date the commendation level was completed. The time component of this\n // date is always set to \"00:00:00\". This is expressed as an ISO 8601 combined\n // Date and Time.\n \"CompletedDateUtc\": {\n\n \"ISO8601Date\": \"string\"\n }\n }\n ]\n }\n ],\n\n // The progress towards each Meta Commendation. Meta commendations are unlocked when\n // one or more other commendation levels have been completed. If no progress has been\n // made for a meta commendation, it is omitted from this list.\n \"MetaCommendations\": [\n {\n // The commendation ID. Commendations are available via the Metadata API.\n \"Id\": \"guid\",\n\n // The required commendation IDs that have been completed that are associated with\n // this meta commendation. In C#, this can be reassembled into a Guid in the\n // following manner: new Guid((int)Data1, (short)Data2, (short)Data3,\n // BitConverter.GetBytes((long)Data4)).\n \"MetRequirements\": [\n {\n \"Data1\": \"int\",\n\n \"Data2\": \"int\",\n\n \"Data3\": \"int\",\n\n \"Data4\": \"int\"\n }\n ]\n }\n ],\n\n // The date when the commendations progress was last updated. The time component of\n // this date is always set to \"00:00:00\". This is expressed as an ISO 8601 combined\n // Date and Time.\n \"LastUpdatedDateUtc\": {\n\n \"ISO8601Date\": \"string\"\n }\n}\n"}}}}},"404":{"description":"Specified Company was not found."},"500":{"description":"Internal Server Error"},"503":{"description":"Service Unavailable"}},"summary":"Halo 5 - Company Commendations"}},"/h5/custom/matches/{matchId}":{"get":{"description":"<p>Retrieves detailed statistics for a Match with the Custom Game Mode. Games with the Custom Game Mode are played on Xbox Live Servers. For games played on Local Servers, use the \"Halo 5 - Match Result - Custom Local\" Endpoint.</p>\n<br />\n<h4>Changelog</h4>\n<div class=\"panel-body\">\n <p><strong>December 12, 2018:</strong></p>\n <ul>\n <li>Updated the documentation for \"PlayerScore\".</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>December 22, 2017:</strong></p>\n <ul>\n <li>Added Game Mode clarifications to the Endpoint description.</li>\n <li>Added documentation for \"PresentInMatch\".</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>February 21, 2017:</strong></p>\n <ul>\n <li>Renamed Endpoint from \"Post-Game Carnage Report: Custom\" to \"Halo 5 - Match Result - Custom\".</li>\n <li>Removed \"{title}\" Request Parameter.</li>\n <li>Updated the documentation for \"GameVariantResourceId\" and \"MapVariantResourceId\" to reference the UGC API.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>May 16, 2016:</strong></p>\n <ul>\n <li>Documented HTTP 503 Response Code.</li>\n </ul>\n</div>\n<div class=\"panel-body\">\n <p><strong>April 20, 2016:</strong></p>\n <ul>\n <li>Added documentation for the \"GameVariantResourceId\", \"MapVariantResourceId\", and \"PlayerScore\" fields.</li>\n <li>Updated the documentation for the \"MapVariantId\" and \"GameVariantId\" fields with the recommendation of using the \"MapVariantResourceId\" and \"GameVariantResourceId\" fields, respectively.</li>\n </ul>\n</div>\n","operationId":"Halo-5-Match-Result-Custom","parameters":[{"description":"An ID that uniquely identifies a Match. Match IDs can be retrieved from the \"Halo 5 - Player Match History\" Endpoint.","in":"path","name":"matchId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The response body will contain the Match Result.","content":{"application/json":{"examples":{"response":{"value":"{\n // A list of stats for each player who was present in the match.\n \"PlayerStats\": [\n {\n // The number of times the player killed each opponent. If the player did not kill\n // an opponent, there will be no entry for that opponent.\n \"KilledOpponentDetails\": [\n {\n // The gamertag of the opponent that was killed.\n \"GamerTag\": \"string\",\n\n // The number of times that opponent was killed.\n \"TotalKills\": \"int\"\n }\n ],\n\n // The number of times the player was killed by each opponent. If the player was\n // not killed by an opponent, there will be no entry for that opponent.\n \"KilledB