swagger: "2.0"
schemes:
  - https
host: www.haloapi.com
basePath: /stats
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
securityDefinitions:
  apiKeyHeader:
    in: header
    name: Ocp-Apim-Subscription-Key
    type: apiKey
  apiKeyQuery:
    in: query
    name: subscription-key
    type: apiKey
security:
  - apiKeyHeader: []
  - apiKeyQuery: []
tags: []
paths:
  "/h5/arena/matches/{matchId}":
    get:
      description: |
        <p>Retrieves detailed statistics for a Match with the Arena Game Mode.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 12, 2018:</strong></p>
            <ul>
                <li>Updated the documentation for "PlayerScore".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Post-Game Carnage Report: Arena" to "Halo 5 - Match Result - Arena".</li>
                <li>Removed "{title}" Request Parameter.</li>
                <li>Updated the documentation for "GameVariantResourceId" and "MapVariantResourceId" to reference the UGC API.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 16, 2016:</strong></p>
            <ul>
                <li>Documented HTTP 503 Response Code.</li>
                <li>Added documentation for the "MatchSpeedWinAmount", "ObjectivesCompletedAmount", and "BoostData" fields.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added documentation for the "GameVariantResourceId", "MapVariantResourceId", and "PlayerScore" fields.</li>
                <li>Updated the documentation for the "MapVariantId" and "GameVariantId" fields with the recommendation of using the "MapVariantResourceId" and "GameVariantResourceId" fields, respectively.</li>
            </ul>
        </div>
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // A list of stats for each player who was present in the match.
                "PlayerStats": [
                  {
                    // The experience information for the player in this match.
                    "XpInfo": {

                      // The player's Spartan Rank before the match started.
                      "PrevSpartanRank": "int",

                      // The player's Spartan Rank after the match ended.
                      "SpartanRank": "int",

                      // The player's XP before the match started.
                      "PrevTotalXP": "int",

                      // The player's XP after the match ended.
                      "TotalXP": "int",

                      // The multiplier on the XP earned this match based on their Spartan Rank when
                      // the match ended.
                      "SpartanRankMatchXPScalar": "double",

                      // The portion of the XP the player earned this match that was based on how much
                      // time was spent in-match.
                      "PlayerTimePerformanceXPAward": "int",

                      // The XP awarded to the player based on how their team ranked when the match
                      // concluded.
                      "PerformanceXP": "int",

                      // The XP awarded to the player for their team-agnostic rank.
                      "PlayerRankXPAward": "int",

                      // The amount of XP the player earned if they played a boost card for this match,
                      // and the boost card criteria was met. This is a fixed amount of XP, not a
                      // multiplier.
                      "BoostAmount": "int",

                      // The amount of XP the player earned for finishing the match quickly.
                      "MatchSpeedWinAmount": "int",

                      // The amount of XP the player earned for completing objectives.
                      "ObjectivesCompletedAmount": "int"
                    },

                    // The Competitive Skill Ranking (CSR) of the player before the match started. If
                    // the player is still in measurement matches, this field is null. If the player
                    // finished the last measurement match this match, this field is still null.
                    "PreviousCsr": {

                      // The CSR tier. CSR Tiers are designation-specific and are available via the
                      // Metadata API.
                      "Tier": "int",

                      // The Designation of the CSR. CSR Designations are available via the Metadata
                      // API.
                      "DesignationId": "int",

                      // The CSR value. Zero for normal (Diamond and below) designations.
                      "Csr": "int",

                      // The percentage of progress towards the next CSR tier.
                      "PercentToNextTier": "int",

                      // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                      // otherwise.
                      "Rank": "int"
                    },

                    // The Competitive Skill Ranking (CSR) of the player after the match ended. If the
                    // player is still in measurement matches, this field is null.
                    "CurrentCsr": {

                      // The CSR tier. CSR Tiers are designation-specific and are available via the
                      // Metadata API.
                      "Tier": "int",

                      // The Designation of the CSR. CSR Designations are available via the Metadata
                      // API.
                      "DesignationId": "int",

                      // The CSR value. Zero for normal (Diamond and below) designations.
                      "Csr": "int",

                      // The percentage of progress towards the next CSR tier.
                      "PercentToNextTier": "int",

                      // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                      // otherwise.
                      "Rank": "int"
                    },

                    // The player's measurement matches left. If this field is greater than zero, then
                    // the player will not have a CSR yet. If the player finished the match, this match
                    // is included in this count.
                    "MeasurementMatchesLeft": "int",

                    // The set of rewards that the player got in this match.
                    "RewardSets": [
                      {
                        // The ID of the reward.
                        "RewardSet": "guid",

                        // The source of the reward. Options are:
                        //   None = 0,
                        //   Meta Commendation = 1,
                        //   Progress Commendation = 2,
                        //   Spartan Rank = 3
                        "RewardSourceType": "int",

                        // If the Reward Source is Spartan Rank, this value is set to the Spartan Rank
                        // the player acquired that led to this reward being granted. Note: Unlike the
                        // commendations fields in this structure, this is not the GUID to a Spartan
                        // Rank content item. That's because the Spartan Rank content item itself does
                        // not detail what specific Spartan Rank it pertains to - this information is
                        // derived from the list of Spartan Ranks as a whole. Spartan Ranks are
                        // available via the Metadata API.
                        "SpartanRankSource": "int",

                        // If the Reward Source is a Commendation, this is the ID of the level of the
                        // commendation that earned the reward.
                        "CommendationLevelId": "guid",

                        // If the Reward Source is a Meta Commendation or Progress Commendation, this
                        // is the ID of the Meta Commendation or Progress Commendation, respectively,
                        // that earned the reward. Commendations are available via the Metadata API.
                        "CommendationSource": "guid"
                      },

                    ],

                    // The number of times the player killed each opponent. If the player did not kill
                    // an opponent, there will be no entry for that opponent.
                    "KilledOpponentDetails": [
                      {
                        // The gamertag of the opponent that was killed.
                        "GamerTag": "string",

                        // The number of times that opponent was killed.
                        "TotalKills": "int"
                      }
                    ],

                    // The number of times the player was killed by each opponent. If the player was
                    // not killed by an opponent, there will be no entry for that opponent.
                    "KilledByOpponentDetails": [
                      {
                        // The gamertag of the opponent that killed the player.
                        "GamerTag": "string",

                        // The number of times the opponent killed the player.
                        "TotalKills": "int"
                      }
                    ],

                    // The game base variant specific stats for this match. Flexible stats are
                    // available via the Metadata API.
                    "FlexibleStats": {

                      // The set of flexible stats that are derived from medal events.
                      "MedalStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from impulse events.
                      "ImpulseStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from medal time lapses.
                      "MedalTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ],        

                      // The set of flexible stats that are derived from impulse time lapses.
                      "ImpulseTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ]
                    },

                    // Details on any credits the player may have earned from playing this match.
                    "CreditsEarned": {

                      // Indicates how the credits result was arrived at. Options are:
                      //   Credits Disabled In Playlist = 0,
                      //   Player Did Not Finish = 1,
                      //   Credits Earned = 2
                      // Credits Disabled In Playlist: TotalCreditsEarned is zero because this playlist
                      // has credits disabled.
                      // Player Did Not Finish: Credits are enabled in this playlist, but
                      // TotalCreditsEarned is zero because the player did not finish the match.
                      // Credits Earned: Credits are enabled in this playlist and the player completed
                      // the match, so the credits formula was successfully evaluated. The fields below
                      // provide the client with the values used in the formula. Note: That if we used
                      // one or more default values, we still return "NormalResult". The fields below
                      // will confirm the actual values used.
                      "Result": "int",

                      // The total number of credits the player earned from playing this match.
                      "TotalCreditsEarned": "int",

                      // The scalar applied to the credits earned based on the player's Spartan Rank.
                      "SpartanRankModifier": "double",

                      // The portion of credits earned due to the player's team-agnostic rank in the
                      // match.
                      "PlayerRankAmount": "int",

                      // The portion of credits earned due to the time the player played in the match.
                      "TimePlayedAmount": "double",

                      // The portion of credits earned due to the boost card the user applied
                      "BoostAmount": "int"
                    },

                    // The player's progress towards meta commendations. Commendations that had no
                    // progress earned this match will not be returned. 
                    "MetaCommendationDeltas": [
                      {
                        // The commendation ID. Commendations are available via the Metadata API.
                        "Id": "guid",

                        // The progress the player had made towards the commendation level before the
                        // match. In C#, this can be reassembled into a Guid in the following manner:
                        // new Guid((int)Data1, (short)Data2, (short)Data3,
                        // BitConverter.GetBytes((long)Data4)).
                        "PreviousMetRequirements": [
                          {
                            "Data1": "int",

                            "Data2": "int",

                            "Data3": "int",

                            "Data4": "int"
                          }
                        ],

                        // The progress the player had made towards the commendation level after the
                        // match. In C#, this can be reassembled into a Guid in the following manner:
                        // new Guid((int)Data1, (short)Data2, (short)Data3,
                        // BitConverter.GetBytes((long)Data4)).
                        "MetRequirements": [
                          {
                            "Data1": "int",

                            "Data2": "int",

                            "Data3": "int",

                            "Data4": "int"
                          }
                        ]
                      }
                    ],

                    // The player's progress towards progressive commendations. Commendations that had
                    // no progress earned this match will not be returned.
                    "ProgressiveCommendationDeltas": [
                      {
                        // The commendation ID. Commendations are available via the Metadata API.
                        "Id": "guid",

                        // The progress the player had made towards the commendation level before the
                        // match.
                        "PreviousProgress": "int",

                        // The progress the player had made towards the commendation level after the
                        // match.
                        "Progress": "int"
                      }
                    ],

                    // Details on the boost card the user used in this match. If the user did not use a
                    // boost card this field will be null.
                    "BoostData": {

                      // The identifier of the boost card that was used. Boost cards are available via
                      // the Requisitions Metadata API.
                      "DefinitionId": "guid",

                      // Whether the card was consumed because its conditions were met. If not consumed
                      // the card is returned to the user's inventory.
                      "CardConsumed": "bool"
                    },

                    "Player": {

                       // The player's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The ID of the team that the player was on when the match ended. 
                    "TeamId": "int",

                    // The player's team-agnostic ranking.
                    "Rank": "int",

                    // Indicates whether the player was present in the match when it ended.
                    "DNF": "boolean",

                    // The player's average lifetime.
                    "AvgLifeTimeOfPlayer": "string",

                    // Internal use only. This will always be null.
                    "PreMatchRatings": null,

                    // Internal use only. This will always be null.
                    "PostMatchRatings": null,

                    // The Player's Score. This is not used by all Game Variants and may contain null
                    // or invalid data.
                    "PlayerScore": "int",

                    // Total number of kills done by the player. This includes melee kills, shoulder
                    // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle
                    // destructions.       
                    "TotalKills": "int",

                    // Total number of headshots done by the player.
                    "TotalHeadshots": "int",

                    // Total weapon damage dealt by the player.
                    "TotalWeaponDamage": "double",

                    // Total number of shots fired by the player.
                    "TotalShotsFired": "int",

                    // Total number of shots landed by the player.
                    "TotalShotsLanded": "int",

                    // The weapon the player used to get the most kills this match.
                    "WeaponWithMostKills": {

                      "WeaponId": {

                        // The ID of the weapon. Weapons are available via the Metadata API.
                        "StockId": "int",

                        // Any attachments the weapon had.
                        "Attachments": [ "int" ]
                      },

                      // The number of shots fired for this weapon.
                      "TotalShotsFired": "int",

                      // The number of shots landed for this weapon.
                      "TotalShotsLanded": "int",

                      // The number of headshots for this weapon.
                      "TotalHeadshots": "int",

                      // The number of kills for this weapon.
                      "TotalKills": "int",

                      // The total damage dealt for this weapon.
                      "TotalDamageDealt": "double",

                      // The total possession time for this weapon. This is expressed as an ISO 8601
                      // Duration.
                      "TotalPossessionTime": "string"
                    },

                    // Total number of melee kills by the player.
                    "TotalMeleeKills": "int",

                    // Total melee damage dealt by the player.
                    "TotalMeleeDamage": "double",

                    // Total number of assassinations by the player.
                    "TotalAssassinations": "int",

                    // Total number of ground pound kills by the player.
                    "TotalGroundPoundKills": "int",

                    // Total ground pound damage dealt by the player.
                    "TotalGroundPoundDamage": "double",

                    // Total number of shoulder bash kills by the player.
                    "TotalShoulderBashKills": "int",

                    // Total shoulder bash damage dealt by the player.
                    "TotalShoulderBashDamage": "double",

                    // Total grenade damage dealt by the player.
                    "TotalGrenadeDamage": "double",

                    // Total number of power weapon kills by the player.
                    "TotalPowerWeaponKills": "int",

                    // Total power weapon damage dealt by the player.
                    "TotalPowerWeaponDamage": "double",

                    // Total number of power weapon grabs by the player.
                    "TotalPowerWeaponGrabs": "int",

                    // Total power weapon possession by the player. This is expressed as an ISO 8601
                    // Duration.
                    "TotalPowerWeaponPossessionTime": "string",

                    // Total number of deaths by the player.
                    "TotalDeaths": "int",

                    // Total number of assists by the player.
                    "TotalAssists": "int",

                    // Not used.
                    "TotalGamesCompleted": "int",

                    // Not used.
                    "TotalGamesWon": "int",

                    // Not used.
                    "TotalGamesLost": "int",

                    // Not used.
                    "TotalGamesTied": "int",

                    // Total timed played in this match by the player.
                    "TotalTimePlayed": "string",

                    // Total number of grenade kills by the player.
                    "TotalGrenadeKills": "int",

                    // The set of Medals earned by the player.
                    "MedalAwards": [
                      {
                        // The ID of the Medal. Medals are available via the Metadata API.
                        "MedalId": "int",

                        // The number of times the Medal was earned.
                        "Count": "int"
                      }
                    ], 

                    // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.
                    // Note: this stat measures enemy vehicles, not any vehicle destruction.
                    "DestroyedEnemyVehicles": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // List of enemies killed, per enemy type. Enemies are available via the Metadata
                    // API.
                    "EnemyKills": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // The set of weapons (weapons and vehicles included) used by the player.
                    "WeaponStats": [
                      {
                        "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                          "StockId": "int",

                            // Any attachments the weapon had.
                          "Attachments": [ 
                            "int" 
                          ]
                        },

                        // The number of shots fired for this weapon.
                        "TotalShotsFired": "int",

                        // The number of shots landed for this weapon.
                        "TotalShotsLanded": "int",

                        // The number of headshots for this weapon.
                        "TotalHeadshots": "int",

                        // The number of kills for this weapon.
                        "TotalKills": "int",

                        // The total damage dealt for this weapon.
                        "TotalDamageDealt": "double",

                        // The total possession time for this weapon. This is expressed as an ISO 8601
                        // Duration.
                        "TotalPossessionTime": "string"
                      }
                    ],

                    // The set of Impulses (invisible Medals) earned by the player.
                    "Impulses": [
                      {
                        // The ID of the Impulse. Impulses are available via the Metadata API.
                        "Id": "int",

                        // The number of times the Impulse was earned.
                        "Count": "int"
                      }
                    ],

                    // Total number of Spartan kills by the player.
                    "TotalSpartanKills": "int"
                  }
                ],

                // A list of stats for each team who in the match. Note that in Free For All modes,
                // there is an entry for every player.
                "TeamStats": [
                  {
                    // The ID for the team.
                    "TeamId": "int",

                    // The team's score at the end of the match. The way the score is determined is
                    // based off the game base variant being played: 
                    //   Breakout = number of rounds won,
                    //   CTF = number of flag captures,
                    //   Slayer = number of kills,
                    //   Strongholds = number of points,
                    //   Warzone = number of points.
                    // Score can be a negative value. Unfortunately, this value is returned as an
                    // unsigned 32-bit integer. This means that if the score is -1, the score reported
                    // is 4,294,967,295.
                    "Score": "uint32",

                    // The team's rank at the end of the match.
                    "Rank": "int",

                    // The set of round stats for the team.
                    "RoundStats": [
                      {
                        // The round number this entry pertains to.
                        "RoundNumber": "int",

                        // The end rank for the team this round.
                        "Rank": "int",

                        // The end score for the team this round.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                      }
                    ]
                  }
                ],

                // Indicates if the match is completed or not. Some match details are available while
                // the match is in-progress, but the behavior for incomplete matches in undefined.
                "IsMatchOver": "boolean",

                // The length of the match. This is expressed as an ISO 8601 Duration.
                "TotalDuration": "string",

                // The variant of the map for this match. Map variants are available via the Metadata
                // API. More information is available in MapVariantResourceId.
                "MapVariantId": "guid",

                // The variant of the game for this match. Game variants are available via the Metadata
                // API. More information is available in GameVariantResourceId.
                "GameVariantId": "guid",

                // The playlist ID of the match. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // The ID of the base map for this match. Maps are available via the Metadata API.
                "MapId": "guid",

                // The ID of the game base variant for this match. Game base variants are available via
                // the Metadata API.
                "GameBaseVariantId": "guid",

                // Whether this was a team-based game or not.
                "IsTeamGame": "boolean",

                // The ID of the season for this match if it was played in a seasonal playlist. Null if
                // the match was played in a non-seasonal playlist.
                "SeasonId": "guid",

                // The variant of the game for this match. There are two sources of game variants:
                // official game variants available via the Metadata API and user-generated game
                // variants available via the UGC API.
                "GameVariantResourceId": {

                  // The resource type. 2 indicates game variant.
                  "ResourceType": 2,

                  // The ID of the game variant. Official game variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",        

                  // The source of the game variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the game variant if this is a user-generated
                  // game variant, or null otherwise. 
                  "Owner": "string"
                },

                // The variant of the map for this match. There are two sources of map variants:
                // official map variants available via the Metadata API and user-generated map variants
                // available via the UGC API.
                "MapVariantResourceId": {

                  // The resource type. 3 indicates map variant.
                  "ResourceType": 3,

                  // The ID of the map variant. Official map variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",

                  // The source of the map variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the map variant if this is a user-generated
                  // map variant, or null otherwise. 
                  "Owner": "string"
                }
              }
        "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>
        <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>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Post-Game Carnage Report: Campaign" to "Halo 5 - Match Result - Campaign".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 16, 2016:</strong></p>
            <ul>
                <li>Documented HTTP 503 Response Code.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added documentation for the "GameVariantResourceId", "MapVariantResourceId", and "PlayerScore" fields.</li>
            </ul>
        </div>
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // A list of stats for each player who was present in the match.
                "PlayerStats": [
                  {
                    // The player's biggest score due to a kill.
                    "BiggestKillScore": "int",

                    // The game base variant specific stats for this match. Flexible stats are
                    // available via the Metadata API.
                    "FlexibleStats": {

                      // The set of flexible stats that are derived from medal events.
                      "MedalStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from impulse events.
                      "ImpulseStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from medal time lapses.
                      "MedalTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ],        

                      // The set of flexible stats that are derived from impulse time lapses.
                      "ImpulseTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ]
                    },

                    // The player's score.
                    // Score can be a negative value. Unfortunately, this value is returned as an
                    // unsigned 32-bit integer. This means that if the score is -1, the score reported
                    // is 4,294,967,295.
                    "Score": "uint32",

                    // Unused.
                    "CharacterIndex": null,

                    "Player": {

                       // The player's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The ID of the team that the player was on when the match ended. This value has
                    // no meaning in Campaign.
                    "TeamId": "int",

                    // The player's team-agnostic ranking.
                    "Rank": "int",

                    // Indicates whether the player was present in the match when it ended. 
                    "DNF": "boolean",

                    // The player's average lifetime.
                    "AvgLifeTimeOfPlayer": "string",

                    // Internal use only. This will always be null.
                    "PreMatchRatings": null,

                    // Internal use only. This will always be null.
                    "PostMatchRatings": null,

                    // Unused for Campaign matches. This will usually be null or contain invalid data.
                    "PlayerScore": null,

                    // Total number of kills done by the player. This includes melee kills, shoulder
                    // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle
                    // destructions. 
                    "TotalKills": "int",

                    // Total number of headshots done by the player.
                    "TotalHeadshots": "int",

                    // Total weapon damage dealt by the player.
                    "TotalWeaponDamage": "double",

                    // Total number of shots fired by the player.
                    "TotalShotsFired": "int",

                    // Total number of shots landed by the player.
                    "TotalShotsLanded": "int",

                    // The weapon the player used to get the most kills this match.
                    "WeaponWithMostKills": {

                      "WeaponId": {

                        // The ID of the weapon. Weapons are available via the Metadata API.
                        "StockId": "int",

                        // Any attachments the weapon had.
                        "Attachments": [ "int" ]
                      },

                      // The number of shots fired for this weapon.
                      "TotalShotsFired": "int",

                      // The number of shots landed for this weapon.
                      "TotalShotsLanded": "int",

                      // The number of headshots for this weapon.
                      "TotalHeadshots": "int",

                      // The number of kills for this weapon.
                      "TotalKills": "int",

                      // The total damage dealt for this weapon.
                      "TotalDamageDealt": "double",

                      // The total possession time for this weapon. This is expressed as an ISO 8601
                      // Duration.
                      "TotalPossessionTime": "string"
                    },

                    // Total number of melee kills by the player.
                    "TotalMeleeKills": "int",

                    // Total melee damage dealt by the player.
                    "TotalMeleeDamage": "double",

                    // Total number of assassinations by the player.
                    "TotalAssassinations": "int",

                    // Total number of ground pound kills by the player.
                    "TotalGroundPoundKills": "int",

                    // Total ground pound damage dealt by the player.
                    "TotalGroundPoundDamage": "double",

                    // Total number of shoulder bash kills by the player.
                    "TotalShoulderBashKills": "int",

                    // Total shoulder bash damage dealt by the player.
                    "TotalShoulderBashDamage": "double",

                    // Total grenade damage dealt by the player.
                    "TotalGrenadeDamage": "double",

                    // Total number of power weapon kills by the player.
                    "TotalPowerWeaponKills": "int",

                    // Total power weapon damage dealt by the player.
                    "TotalPowerWeaponDamage": "double",

                    // Total number of power weapon grabs by the player.
                    "TotalPowerWeaponGrabs": "int",

                    // Total power weapon possession by the player. This is expressed as an ISO 8601
                    // Duration.
                    "TotalPowerWeaponPossessionTime": "string",

                    // Total number of deaths by the player.
                    "TotalDeaths": "int",

                    // Total number of assists by the player.
                    "TotalAssists": "int",

                    // Not used.
                    "TotalGamesCompleted": "int",

                    // Not used.
                    "TotalGamesWon": "int",

                    // Not used.
                    "TotalGamesLost": "int",

                    // Not used.
                    "TotalGamesTied": "int",

                    // Total timed played in this match by the player.
                    "TotalTimePlayed": "string",

                    // Total number of grenade kills by the player.
                    "TotalGrenadeKills": "int",

                    // The set of Medals earned by the player.
                    "MedalAwards": [
                      {
                        // The ID of the Medal. Medals are available via the Metadata API.
                        "MedalId": "int",

                        // The number of times the Medal was earned.
                        "Count": "int"
                      }
                    ], 

                    // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.
                    // Note: this stat measures enemy vehicles, not any vehicle destruction.
                    "DestroyedEnemyVehicles": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // List of enemies killed, per enemy type. Enemies are available via the Metadata
                    // API.
                    "EnemyKills": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // The set of weapons (weapons and vehicles included) used by the player.
                    "WeaponStats": [
                      {
                        "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                          "StockId": "int",

                            // Any attachments the weapon had.
                          "Attachments": [ 
                            "int" 
                          ]
                        },

                          // The number of shots fired for this weapon.
                        "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                        "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                        "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                        "TotalKills": "int",

                          // The total damage dealt for this weapon.
                        "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                        "TotalPossessionTime": "string"
                      }
                    ],

                    // The set of Impulses (invisible Medals) earned by the player.
                    "Impulses": [
                      {
                        // The ID of the Impulse. Impulses are available via the Metadata API.
                        "Id": "int",

                        // The number of times the Impulse was earned.
                        "Count": "int"
                      }
                    ],

                    // Total number of Spartan kills by the player.
                    "TotalSpartanKills": "int"
                  }
                ],

                // The total playthrough time of the mission as calculated by the game. This value is
                // persisted in save files.
                "TotalMissionPlaythroughTime": "string",

                // The difficulty the mission was played at. Options are:
                //   Easy = 0,
                //   Normal = 1,
                //   Heroic = 2,
                //   Legendary = 3
                "Difficulty": "int",

                // The list of skulls used for the mission. Skulls are available via the Metadata API.
                "Skulls": [
                  "int"
                ],

                // Indicates whether the mission was completed when the match ended.
                "MissionCompleted": "boolean",

                // Indicates if the match is completed or not. Some match details are available while
                // the match is in-progress, but the behavior for incomplete matches in undefined.
                "IsMatchOver": "boolean",

                // The length of the match. This is expressed as an ISO 8601 Duration.
                "TotalDuration": "string",

                // Unused for Campaign matches. This will always be an empty guid.
                "MapVariantId": "guid",

                // Unused for Campaign matches. This will always be empty guid.
                "GameVariantId": "guid",

                // The playlist ID of the match. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // The ID of the Campaign Mission. In Campaign, Map ID is overriden to be the Mission
                // ID. Missions are available via the Metadata API.
                "MapId": "guid",

                // The ID of the game base variant for this match. Game base variants are available via
                // the Metadata API.
                "GameBaseVariantId": "guid",

                // Whether this was a team-based game or not.
                "IsTeamGame": "boolean",

                // Unused for Campaign matches. This will always be null.
                "SeasonId": null,

                // Unused for Campaign matches. All fields within this structure will have their
                // default value.
                "GameVariantResourceId": {

                  "ResourceType": "int",

                  "ResourceId": "guid",

                  "OwnerType": "int",

                  "Owner": "string"
                },

                // Unused for Campaign matches. All fields within this structure will have their
                // default value.
                "MapVariantResourceId": {

                  "ResourceType": "int",

                  "ResourceId": "guid",

                  "OwnerType": "int",

                  "Owner": "string"
                }
              }
        "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>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>July 14, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Company name, status, and members.
          examples:
            application/json: |
              {
                // The ID of the company.
                "Id": "guid",

                // The name of the company.
                "Name": "string",

                // Information about the creator of the company. The creator might not necessarily be a
                // member of the company.
                "Creator": {

                  // The company creator's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // The highest number of users that were (or are) in this company.
                "PeakMembershipCount": "int",

                // Indicates the date that the company is suspended until. This is expressed as an ISO
                // 8601 combined Date and Time.
                "SuspendedUntilDate": {

                  "ISO8601Date": "string"
                },

                // The current members of the company. If the company does not have any members, this
                // list will be empty. 
                "Members": [
                  {
                     // Information about the member. 
                    "Player": {

                      // The member's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The role of the member in the company. This field will contain one of the
                    // following values:
                    //   Member = 0,
                    //   Lieutenant = 1,
                    //   Leader = 2
                    "Role": "int",

                    // The date when the member was added to the company. The time component of this
                    // date is always set to "00:00:00". This is expressed as an ISO 8601 combined Date
                    // and Time.
                    "JoinedDate": {

                      "ISO8601Date": "string"
                    },

                    // The date when the member's role was last modified. The time component of this
                    // date is always set to "00:00:00". This is expressed as an ISO 8601 combined Date
                    // and Time.
                    "LastModifiedDate": {

                      "ISO8601Date": "string"
                  }
                ],

                // The date when the company was created. The time component of this date is always set
                // to "00:00:00". This is expressed as an ISO 8601 combined Date and Time.
                "CreatedDate": {

                  "ISO8601Date": "string"
                },

                // The date when the company was last modified. The time component of this date is
                // always set to "00:00:00". This is expressed as an ISO 8601 combined Date and Time.
                "LastModifiedDate": {

                  "ISO8601Date": "string"
                }
              }
        "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>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>July 14, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the commendation state for the Company.
          examples:
            application/json: |
              {
                // Internal use only. A set of related resource links.
                "Links": null,

                // The progress towards each Progressive Commendation. Progressive commendations have a
                // series of increasingly difficult thresholds (levels) that must crossed to receive
                // increasingly greater rewards. If no progress has been made for a progressive
                // commendation, it is omitted from this list.
                "ProgressiveCommendations": [
                  {
                    // The commendation ID. Commendations are available via the Metadata API.
                    "Id": "guid",

                    // The progress that has been made towards the commendation.
                    "Progress": "int",

                    // The levels that have been completed for the commendation.
                    "CompletedLevels": [
                      {
                        // The commendation level ID. Commendation Levels area available via the
                        // Metadata API.
                        "Id": "guid",

                        // The date the commendation level was completed. The time component of this
                        // date is always set to "00:00:00". This is expressed as an ISO 8601 combined
                        // Date and Time.
                        "CompletedDateUtc": {

                          "ISO8601Date": "string"
                        }
                      }
                    ]
                  }
                ],

                // The progress towards each Meta Commendation. Meta commendations are unlocked when
                // one or more other commendation levels have been completed. If no progress has been
                // made for a meta commendation, it is omitted from this list.
                "MetaCommendations": [
                  {
                    // The commendation ID. Commendations are available via the Metadata API.
                    "Id": "guid",

                    // The required commendation IDs that have been completed that are associated with
                    // this meta commendation. In C#, this can be reassembled into a Guid in the
                    // following manner: new Guid((int)Data1, (short)Data2, (short)Data3,
                    // BitConverter.GetBytes((long)Data4)).
                    "MetRequirements": [
                      {
                        "Data1": "int",

                        "Data2": "int",

                        "Data3": "int",

                        "Data4": "int"
                      }
                    ]
                  }
                ],

                // The date when the commendations progress was last updated. The time component of
                // this date is always set to "00:00:00". This is expressed as an ISO 8601 combined
                // Date and Time.
                "LastUpdatedDateUtc": {

                  "ISO8601Date": "string"
                }
              }
        "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>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 12, 2018:</strong></p>
            <ul>
                <li>Updated the documentation for "PlayerScore".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
                <li>Added documentation for "PresentInMatch".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Post-Game Carnage Report: Custom" to "Halo 5 - Match Result - Custom".</li>
                <li>Removed "{title}" Request Parameter.</li>
                <li>Updated the documentation for "GameVariantResourceId" and "MapVariantResourceId" to reference the UGC API.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 16, 2016:</strong></p>
            <ul>
                <li>Documented HTTP 503 Response Code.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added documentation for the "GameVariantResourceId", "MapVariantResourceId", and "PlayerScore" fields.</li>
                <li>Updated the documentation for the "MapVariantId" and "GameVariantId" fields with the recommendation of using the "MapVariantResourceId" and "GameVariantResourceId" fields, respectively.</li>
            </ul>
        </div>
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // A list of stats for each player who was present in the match.
                "PlayerStats": [
                  {
                    // The number of times the player killed each opponent. If the player did not kill
                    // an opponent, there will be no entry for that opponent.
                    "KilledOpponentDetails": [
                      {
                        // The gamertag of the opponent that was killed.
                        "GamerTag": "string",

                        // The number of times that opponent was killed.
                        "TotalKills": "int"
                      }
                    ],

                    // The number of times the player was killed by each opponent. If the player was
                    // not killed by an opponent, there will be no entry for that opponent.
                    "KilledByOpponentDetails": [
                      {
                        // The gamertag of the opponent that killed the player.
                        "GamerTag": "string",

                        // The number of times the opponent killed the player.
                        "TotalKills": "int"
                      }
                    ],

                    // The game base variant specific stats for this match. Flexible stats are
                    // available via the Metadata API.
                    "FlexibleStats": {

                      // The set of flexible stats that are derived from medal events.
                      "MedalStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from impulse events.
                      "ImpulseStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from medal time lapses.
                      "MedalTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ],        

                      // The set of flexible stats that are derived from impulse time lapses.
                      "ImpulseTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ]
                    },

                    // Internal use only.
                    "PresentInMatch": "boolean",

                    "Player": {

                       // The player's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The ID of the team that the player was on when the match ended. 
                    "TeamId": "int",

                    // The player's team-agnostic ranking.
                    "Rank": "int",

                    // Indicates whether the player was present in the match when it ended.
                    "DNF": "boolean",

                    // The player's average lifetime.
                    "AvgLifeTimeOfPlayer": "string",

                    // Internal use only. This will always be null.
                    "PreMatchRatings": null,

                    // Internal use only. This will always be null.
                    "PostMatchRatings": null,

                    // The Player's Score. This is not used by all Game Variants and may contain null
                    // or invalid data.
                    "PlayerScore": "int",

                    // Total number of kills done by the player. This includes melee kills, shoulder
                    // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle
                    // destructions. 
                    "TotalKills": "int",

                    // Total number of headshots done by the player.
                    "TotalHeadshots": "int",

                    // Total weapon damage dealt by the player.
                    "TotalWeaponDamage": "double",

                    // Total number of shots fired by the player.
                    "TotalShotsFired": "int",

                    // Total number of shots landed by the player.
                    "TotalShotsLanded": "int",

                    // The weapon the player used to get the most kills this match.
                    "WeaponWithMostKills": {

                      "WeaponId": {

                        // The ID of the weapon. Weapons are available via the Metadata API.
                        "StockId": "int",

                        // Any attachments the weapon had.
                        "Attachments": [ "int" ]
                      },

                      // The number of shots fired for this weapon.
                      "TotalShotsFired": "int",

                      // The number of shots landed for this weapon.
                      "TotalShotsLanded": "int",

                      // The number of headshots for this weapon.
                      "TotalHeadshots": "int",

                      // The number of kills for this weapon.
                      "TotalKills": "int",

                      // The total damage dealt for this weapon.
                      "TotalDamageDealt": "double",

                      // The total possession time for this weapon. This is expressed as an ISO 8601
                      // Duration.
                      "TotalPossessionTime": "string"
                    },

                    // Total number of melee kills by the player.
                    "TotalMeleeKills": "int",

                    // Total melee damage dealt by the player.
                    "TotalMeleeDamage": "double",

                    // Total number of assassinations by the player.
                    "TotalAssassinations": "int",

                    // Total number of ground pound kills by the player.
                    "TotalGroundPoundKills": "int",

                    // Total ground pound damage dealt by the player.
                    "TotalGroundPoundDamage": "double",

                    // Total number of shoulder bash kills by the player.
                    "TotalShoulderBashKills": "int",

                    // Total shoulder bash damage dealt by the player.
                    "TotalShoulderBashDamage": "double",

                    // Total grenade damage dealt by the player.
                    "TotalGrenadeDamage": "double",

                    // Total number of power weapon kills by the player.
                    "TotalPowerWeaponKills": "int",

                    // Total power weapon damage dealt by the player.
                    "TotalPowerWeaponDamage": "double",

                    // Total number of power weapon grabs by the player.
                    "TotalPowerWeaponGrabs": "int",

                    // Total power weapon possession by the player. This is expressed as an ISO 8601
                    // Duration.
                    "TotalPowerWeaponPossessionTime": "string",

                    // Total number of deaths by the player.
                    "TotalDeaths": "int",

                    // Total number of assists by the player.
                    "TotalAssists": "int",

                    // Not used.
                    "TotalGamesCompleted": "int",

                    // Not used.
                    "TotalGamesWon": "int",

                    // Not used.
                    "TotalGamesLost": "int",

                    // Not used.
                    "TotalGamesTied": "int",

                    // Total timed played in this match by the player.
                    "TotalTimePlayed": "string",

                    // Total number of grenade kills by the player.
                    "TotalGrenadeKills": "int",

                    // The set of Medals earned by the player.
                    "MedalAwards": [
                      {
                        // The ID of the Medal. Medals are available via the Metadata API.
                        "MedalId": "int",

                        // The number of times the Medal was earned.
                        "Count": "int"
                      }
                    ], 

                    // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.
                    // Note: this stat measures enemy vehicles, not any vehicle destruction.
                    "DestroyedEnemyVehicles": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // List of enemies killed, per enemy type. Enemies are available via the Metadata
                    // API.
                    "EnemyKills": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // The set of weapons (weapons and vehicles included) used by the player.
                    "WeaponStats": [
                      {
                        "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                          "StockId": "int",

                            // Any attachments the weapon had.
                          "Attachments": [ 
                            "int" 
                          ]
                        },

                          // The number of shots fired for this weapon.
                        "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                        "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                        "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                        "TotalKills": "int",

                          // The total damage dealt for this weapon.
                        "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                        "TotalPossessionTime": "string"
                      }
                    ],

                    // The set of Impulses (invisible Medals) earned by the player.
                    "Impulses": [
                      {
                        // The ID of the Impulse. Impulses are available via the Metadata API.
                        "Id": "int",

                        // The number of times the Impulse was earned.
                        "Count": "int"
                      }
                    ],

                    // Total number of Spartan kills by the player.
                    "TotalSpartanKills": "int"
                  },

                ],

                // A list of stats for each team who in the match. Note that in Free For All modes,
                // there is an entry for every player.
                "TeamStats": [
                  {
                    // The ID for the team.
                    "TeamId": "int",

                    // The team's score at the end of the match. The way the score is determined is
                    // based off the game base variant being played: 
                    //   Breakout = number of rounds won,
                    //   CTF = number of flag captures,
                    //   Slayer = number of kills,
                    //   Strongholds = number of points,
                    //   Warzone = number of points.
                    // Score can be a negative value. Unfortunately, this value is returned as an
                    // unsigned 32-bit integer. This means that if the score is -1, the score reported
                    // is 4,294,967,295.
                    "Score": "uint32",

                    // The team's rank at the end of the match.
                    "Rank": "int",

                    // The set of round stats for the team.
                    "RoundStats": [
                      {
                        // The round number this entry pertains to.
                        "RoundNumber": "int",

                        // The end rank for the team this round.
                        "Rank": "int",

                        // The end score for the team this round.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                      }
                    ]
                  }
                ],

                // Indicates if the match is completed or not. Some match details are available while
                // the match is in-progress, but the behavior for incomplete matches in undefined.
                "IsMatchOver": "boolean",

                // The length of the match. This is expressed as an ISO 8601 Duration.
                "TotalDuration": "string",

                // The variant of the map for this match. Map variants are available via the Metadata
                // API. More information is available in MapVariantResourceId.
                "MapVariantId": "guid",

                // The variant of the game for this match. Game variants are available via the Metadata
                // API. More information is available in GameVariantResourceId.
                "GameVariantId": "guid",

                // The playlist ID of the match. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // The ID of the base map for this match. Maps are available via the Metadata API.
                "MapId": "guid",

                // The ID of the game base variant for this match. Game base variants are available via
                // the Metadata API.
                "GameBaseVariantId": "guid",

                // Whether this was a team-based game or not.
                "IsTeamGame": "boolean",

                // Unused for Custom matches. This will always be null.
                "SeasonId": null,

                // The variant of the game for this match. There are two sources of game variants:
                // official game variants available via the Metadata API and user-generated game
                // variants are available via the UGC API.
                "GameVariantResourceId": {

                  // The resource type. 2 indicates game variant.
                  "ResourceType": 2,

                  // The ID of the game variant. Official game variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",        

                  // The source of the game variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the game variant if this is a user-generated
                  // game variant, or null otherwise. 
                  "Owner": "string"
                },

                // The variant of the map for this match. There are two sources of map variants:
                // official map variants available via the Metadata API and user-generated map variants
                // available vai the UGC API.
                "MapVariantResourceId": {

                  // The resource type. 3 indicates map variant.
                  "ResourceType": 3,

                  // The ID of the map variant. Official map variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",

                  // The source of the map variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the map variant if this is a user-generated
                  // map variant, or null otherwise. 
                  "Owner": "string"
                }
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Match Result - Custom
  "/h5/customlocal/matches/{matchId}":
    get:
      description: |
        <p>Retrieves detailed statistics for a Match with the Custom Local Game Mode. Games with the Custom Local Game Mode are played on Local Servers. For games played on Xbox Live Servers, use the "Halo 5 - Match Result - Custom" Endpoint.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 12, 2018:</strong></p>
            <ul>
                <li>Updated the documentation for "PlayerScore".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-5-Match-Result-Custom-Local
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // A list of stats for each player who was present in the match.
                "PlayerStats": [
                  {
                    // The number of times the player killed each opponent. If the player did not kill
                    // an opponent, there will be no entry for that opponent.
                    "KilledOpponentDetails": [
                      {
                        // The gamertag of the opponent that was killed.
                        "GamerTag": "string",

                        // The number of times that opponent was killed.
                        "TotalKills": "int"
                      }
                    ],

                    // The number of times the player was killed by each opponent. If the player was
                    // not killed by an opponent, there will be no entry for that opponent.
                    "KilledByOpponentDetails": [
                      {
                        // The gamertag of the opponent that killed the player.
                        "GamerTag": "string",

                        // The number of times the opponent killed the player.
                        "TotalKills": "int"
                      }
                    ],

                    // The game base variant specific stats for this match. Flexible stats are
                    // available via the Metadata API.
                    "FlexibleStats": {

                      // The set of flexible stats that are derived from medal events.
                      "MedalStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from impulse events.
                      "ImpulseStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from medal time lapses.
                      "MedalTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ],        

                      // The set of flexible stats that are derived from impulse time lapses.
                      "ImpulseTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ]
                    },

                    // Internal use only.
                    "PresentInMatch": "boolean",

                    "Player": {

                       // The player's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The ID of the team that the player was on when the match ended. 
                    "TeamId": "int",

                    // The player's team-agnostic ranking.
                    "Rank": "int",

                    // Indicates whether the player was present in the match when it ended.
                    "DNF": "boolean",

                    // The player's average lifetime.
                    "AvgLifeTimeOfPlayer": "string",

                    // Internal use only. This will always be null.
                    "PreMatchRatings": null,

                    // Internal use only. This will always be null.
                    "PostMatchRatings": null,

                    // The Player's Score. This is not used by all Game Variants and may contain null
                    // or invalid data.
                    "PlayerScore": "int",

                    // Total number of kills done by the player. This includes melee kills, shoulder
                    // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle
                    // destructions. 
                    "TotalKills": "int",

                    // Total number of headshots done by the player.
                    "TotalHeadshots": "int",

                    // Total weapon damage dealt by the player.
                    "TotalWeaponDamage": "double",

                    // Total number of shots fired by the player.
                    "TotalShotsFired": "int",

                    // Total number of shots landed by the player.
                    "TotalShotsLanded": "int",

                    // The weapon the player used to get the most kills this match.
                    "WeaponWithMostKills": {

                      "WeaponId": {

                        // The ID of the weapon. Weapons are available via the Metadata API.
                        "StockId": "int",

                        // Any attachments the weapon had.
                        "Attachments": [ "int" ]
                      },

                      // The number of shots fired for this weapon.
                      "TotalShotsFired": "int",

                      // The number of shots landed for this weapon.
                      "TotalShotsLanded": "int",

                      // The number of headshots for this weapon.
                      "TotalHeadshots": "int",

                      // The number of kills for this weapon.
                      "TotalKills": "int",

                      // The total damage dealt for this weapon.
                      "TotalDamageDealt": "double",

                      // The total possession time for this weapon. This is expressed as an ISO 8601
                      // Duration.
                      "TotalPossessionTime": "string"
                    },

                    // Total number of melee kills by the player.
                    "TotalMeleeKills": "int",

                    // Total melee damage dealt by the player.
                    "TotalMeleeDamage": "double",

                    // Total number of assassinations by the player.
                    "TotalAssassinations": "int",

                    // Total number of ground pound kills by the player.
                    "TotalGroundPoundKills": "int",

                    // Total ground pound damage dealt by the player.
                    "TotalGroundPoundDamage": "double",

                    // Total number of shoulder bash kills by the player.
                    "TotalShoulderBashKills": "int",

                    // Total shoulder bash damage dealt by the player.
                    "TotalShoulderBashDamage": "double",

                    // Total grenade damage dealt by the player.
                    "TotalGrenadeDamage": "double",

                    // Total number of power weapon kills by the player.
                    "TotalPowerWeaponKills": "int",

                    // Total power weapon damage dealt by the player.
                    "TotalPowerWeaponDamage": "double",

                    // Total number of power weapon grabs by the player.
                    "TotalPowerWeaponGrabs": "int",

                    // Total power weapon possession by the player. This is expressed as an ISO 8601
                    // Duration.
                    "TotalPowerWeaponPossessionTime": "string",

                    // Total number of deaths by the player.
                    "TotalDeaths": "int",

                    // Total number of assists by the player.
                    "TotalAssists": "int",

                    // Not used.
                    "TotalGamesCompleted": "int",

                    // Not used.
                    "TotalGamesWon": "int",

                    // Not used.
                    "TotalGamesLost": "int",

                    // Not used.
                    "TotalGamesTied": "int",

                    // Total timed played in this match by the player.
                    "TotalTimePlayed": "string",

                    // Total number of grenade kills by the player.
                    "TotalGrenadeKills": "int",

                    // The set of Medals earned by the player.
                    "MedalAwards": [
                      {
                        // The ID of the Medal. Medals are available via the Metadata API.
                        "MedalId": "int",

                        // The number of times the Medal was earned.
                        "Count": "int"
                      }
                    ], 

                    // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.
                    // Note: this stat measures enemy vehicles, not any vehicle destruction.
                    "DestroyedEnemyVehicles": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // List of enemies killed, per enemy type. Enemies are available via the Metadata
                    // API.
                    "EnemyKills": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // The set of weapons (weapons and vehicles included) used by the player.
                    "WeaponStats": [
                      {
                        "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                          "StockId": "int",

                            // Any attachments the weapon had.
                          "Attachments": [ 
                            "int" 
                          ]
                        },

                          // The number of shots fired for this weapon.
                        "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                        "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                        "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                        "TotalKills": "int",

                          // The total damage dealt for this weapon.
                        "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                        "TotalPossessionTime": "string"
                      }
                    ],

                    // The set of Impulses (invisible Medals) earned by the player.
                    "Impulses": [
                      {
                        // The ID of the Impulse. Impulses are available via the Metadata API.
                        "Id": "int",

                        // The number of times the Impulse was earned.
                        "Count": "int"
                      }
                    ],

                    // Total number of Spartan kills by the player.
                    "TotalSpartanKills": "int"
                  },

                ],

                // A list of stats for each team who in the match. Note that in Free For All modes,
                // there is an entry for every player.
                "TeamStats": [
                  {
                    // The ID for the team.
                    "TeamId": "int",

                    // The team's score at the end of the match. The way the score is determined is
                    // based off the game base variant being played: 
                    //   Breakout = number of rounds won,
                    //   CTF = number of flag captures,
                    //   Slayer = number of kills,
                    //   Strongholds = number of points,
                    //   Warzone = number of points.
                    // Score can be a negative value. Unfortunately, this value is returned as an
                    // unsigned 32-bit integer. This means that if the score is -1, the score reported
                    // is 4,294,967,295.
                    "Score": "uint32",

                    // The team's rank at the end of the match.
                    "Rank": "int",

                    // The set of round stats for the team.
                    "RoundStats": [
                      {
                        // The round number this entry pertains to.
                        "RoundNumber": "int",

                        // The end rank for the team this round.
                        "Rank": "int",

                        // The end score for the team this round.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                      }
                    ]
                  }
                ],

                // Indicates if the match is completed or not. Some match details are available while
                // the match is in-progress, but the behavior for incomplete matches in undefined.
                "IsMatchOver": "boolean",

                // The length of the match. This is expressed as an ISO 8601 Duration.
                "TotalDuration": "string",

                // The variant of the map for this match. Map variants are available via the Metadata
                // API. More information is available in MapVariantResourceId.
                "MapVariantId": "guid",

                // The variant of the game for this match. Game variants are available via the Metadata
                // API. More information is available in GameVariantResourceId.
                "GameVariantId": "guid",

                // The playlist ID of the match. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // The ID of the base map for this match. Maps are available via the Metadata API.
                "MapId": "guid",

                // The ID of the game base variant for this match. Game base variants are available via
                // the Metadata API.
                "GameBaseVariantId": "guid",

                // Whether this was a team-based game or not.
                "IsTeamGame": "boolean",

                // Unused for Custom matches. This will always be null.
                "SeasonId": null,

                // The variant of the game for this match. There are two sources of game variants:
                // official game variants available via the Metadata API and user-generated game
                // variants are available via the UGC API.
                "GameVariantResourceId": {

                  // The resource type. 2 indicates game variant.
                  "ResourceType": 2,

                  // The ID of the game variant. Official game variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",        

                  // The source of the game variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the game variant if this is a user-generated
                  // game variant, or null otherwise. 
                  "Owner": "string"
                },

                // The variant of the map for this match. There are two sources of map variants:
                // official map variants available via the Metadata API and user-generated map variants
                // available vai the UGC API.
                "MapVariantResourceId": {

                  // The resource type. 3 indicates map variant.
                  "ResourceType": 3,

                  // The ID of the map variant. Official map variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",

                  // The source of the map variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the map variant if this is a user-generated
                  // map variant, or null otherwise. 
                  "Owner": "string"
                }
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Match Result - Custom Local
  "/h5/matches/{matchId}/events":
    get:
      description: |
        <p>Retrieves a set of Events related to the Match specified. Events are only available once the Match has completed.</p>
        <p>The set of Events may grow over time as data becomes available.</p>
        <p>This Endpoint does not have the accuracy guarantees of other Endpoints have, so please use with caution. This endpoint may not return Matches before December 1, 2015.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Events for Match" to "Halo 5 - Match Events".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 20, 2016:</strong></p>
            <ul>
                <li>The Endpoint now correctly reports the "Content-Type" Response Header as "application/json".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 16, 2016:</strong></p>
            <ul>
                <li>Documented HTTP 503 Response Code.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added new types of events to the Endpoint: Impulses, Medals, Player Spawns, Round Stats, Round Ends, Weapon Drops, Weapon Pickups, and Weapon Pickup Pads.</li>
                <li>Fixed an issue that caused the API to consistently return HTTP 500's for matches where a player left and rejoined the match.</li>
            </ul>
        </div>
      operationId: Halo-5-Match-Events
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Events.
          examples:
            application/json: |
              {
                // Events that describe a match from start to completion. Events are reported in
                // chronological order.
                // Events can come in a variety of types indicated by the "EventName" field. Each event
                // is documented in detail below the documentation for this return contract.
                // Additional event types may be added in the future.
                // When deserializing events, it is suggested to use a union of all of the fields
                // across all of the different event types, shown below.
                "GameEvents": [
                  {
                    "Assistants": [
                      {
                        "Gamertag": "string",

                        "Xuid": null
                      }
                    ],

                    "DeathDisposition": "int",

                    "ImpulseId": "int",

                    "IsAssassination": "boolean",

                    "IsGroundPound": "boolean",

                    "IsHeadshot": "boolean",

                    "IsMelee": "boolean",

                    "IsShoulderBash": "boolean",

                    "IsWeapon": "boolean",

                    "Killer": {

                      "Gamertag": "string",

                      "Xuid": null
                    },

                    "KillerAgent": "int",

                    "KillerWeaponAttachmentIds": [ "int" ],

                    "KillerWeaponStockId": "int",

                    "KillerWorldLocation": {

                      "x": "double",

                      "y": "double",

                      "z": "double"
                    },

                    "MedalId": "int",

                    "Player": {

                      "Gamertag": "string",

                      "Xuid": null
                    },

                    "RoundIndex": "int",

                    "ShotsFired": "int",

                    "ShotsLanded": "int",

                    "TimeWeaponActiveAsPrimary": "string",

                    "Victim": {

                      "Gamertag": "string",

                      "Xuid": null
                    },

                    "VictimAgent": "int",

                    "VictimAttachmentIds": [ "int" ],

                    "VictimStockId": "int",

                    "VictimWorldLocation": {

                      "x": "double",

                      "y": "double",

                      "z": "double"
                    },

                    "WeaponAttachmentIds": [ "int" ],

                    "WeaponStockId": "int",

                    // Descriptor to determine what fields will be filled in for the event. This list
                    // will grow over time as more events are exposed. Can be one of the following:
                    //   "Death" - An event that is created when a death occurs in the match.
                    //   "Impulse" - An event that is created when an impulse (invisible medal) is
                    // triggered in the match.
                    //   "Medal" - An event that is created when a medal is awarded in the match.
                    //   "PlayerSpawn" - An event that is created when a player spawns in the match.
                    //   "RoundStart" - An event that is created when a round starts. In regular
                    // matches, there is typically one round. However, some modes have multiple rounds..
                    //   "RoundEnd" - An event that is created when a round ends. In regular matches,
                    // there is typically one round. However, some modes have multiple rounds..
                    //   "WeaponDrop" - An event that is created when a player drops a weapon for a new
                    // weapon. This occurs when a player picks up a new weapon and drops their current
                    // one, when a player dies and drops their weapon(s), or at the end of the match
                    // for each player.
                    //   "WeaponPickup" - An event that is created when a player picks up a weapon.
                    // This can be when a player spawns, or when a player picks up a new weapon.
                    //   "WeaponPickupPad" - An event that is created when a player picks up a weapon
                    // off a pad. This will not be triggered if the weapon was picked up off the ground
                    // after another player who had picked it off a pad.
                    "EventName": "string",

                    // Time passed since the start of the match when the event occurred. This is
                    // expressed as an ISO 8601 Duration.
                    "TimeSinceStart": "string"
                  }
                ],

                // As this is an experimental API it has no guarantees around its accuracy. However we
                // do try our best to ensure all events are valid and accounted for. If they do not
                // match up to our expectations this field will return as false indicating this may not
                // be the full set of events that occurred in game.
                "IsCompleteSetOfEvents": "boolean",

                // Internal use only. A set of related resource links.
                "Links": null
              }

              // Death Event
              {
                // The gamertags of players who contributed to a kill.
                "Assistants": [
                {
                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                }],

                // The disposition of the death. Can be one of the following:
                //   Friendly = 0,
                //   Hostile = 1,
                //   Neutral = 2
                "DeathDisposition": "int",

                // Describes if the death was committed by the killer from behind (Assassination or
                // melee to back).
                "IsAssassination": "boolean",

                // Describes if the kill was committed by the killer with a ground pound.
                "IsGroundPound": "boolean",

                // Describes if the kill was committed by the killer with a head shot.
                "IsHeadshot": "boolean",

                // Describes if the kill was committed by the killer using melee.
                "IsMelee": "boolean",

                // Describes if the kill was committed by the killer with a shoulder bash.
                "IsShoulderBash": "boolean",

                // Describes if the kill was committed by the killer with a weapon.
                "IsWeapon": "boolean",

                // Describes the killer's information. Can be null if killer is not a player in the
                // game.
                "Killer": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // The type of killer that caused the death. Can be one of the following:
                //   None = 0,
                //   Player = 1,
                //   AI = 2
                "KillerAgent": "int",

                // The IDs of any attachments that were associated with the weapon that was used to
                // kill the victim.
                "KillerWeaponAttachmentIds": ["int"],

                // The ID of the weapon that was used to kill the victim. Depending on the type of the
                // kill, this could be the ID of an Enemy, Vehicle, or Weapon, all of which are
                // available via the Metadata APIs. Note that most vehicles are duplicated between both
                // the Vehicle and Weapon Metadata APIs. If this was a standard kill with an actual
                // weapon, then this will be the ID of the weapon that killed the victim. If this was a
                // kill with a vehicle, then this will the ID of the vehicle that killed the victim. If
                // this was a melee kill, then this will be the ID of the type of the object that
                // killed the player (which will be either Spartan or the type of the type of the AI
                // enemy that killed the player). Note that if the victim was killed by a weapon held
                // by an AI enemy, the type of the AI enemy is unknown.
                "KillerWeaponStockId": "int",

                // Object describing the position of the killer on the map when they made the kill.
                "KillerWorldLocation": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Describes the victim's information. Can be null if victim is not a player in the
                // game.
                "Victim": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // The type of victim who was killed. Can be one of the following:
                //   None = 0,
                //   Player = 1,
                //   AI = 2
                "VictimAgent": "int",

                // Any variants of the AI enemy, empty otherwise.
                "VictimAttachmentIds": ["int"],

                // The ID of the AI Enemy killed, zero otherwise. Enemy IDs are available via the
                // Metadata API.
                "VictimStockId": "int",

                // Object describing the position of the victim on the map when they were killed.
                "VictimWorldLocation": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "string",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // Impulse Event
              {
                // The ID that uniquely identifies this impulse. Impulses are available via the
                // Metadata API.
                "ImpulseId" : "int",

                // The player who received the impulse.
                "Player": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                }
                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "Impulse",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // Medal Event
              {
                // The ID that uniquely identifies this medal. Medals are available via the Metadata
                // API.
                "MedalId" : "int",

                // The player who received the medal.
                "Player": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "Medal",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // PlayerSpawn Event
              {
                // The player who spawned.
                "Player": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "PlayerSpawn",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // RoundStart Event
              {
                // The index of the round that started.
                "RoundIndex" : "int",

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "RoundStart",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // RoundEnd Event
              {
                // The index of the round that ended.
                "RoundIndex" : "int",

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "RoundEnd",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // WeaponDrop Event
              {
                // The player who dropped the weapon.
                "Player": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // The number of shots fired with the weapon by the player.
                "ShotsFired" : "int",

                // The number of shots that hit the target with the weapon by the player.
                "ShotsLanded" : "int",

                // The amount of time the weapon was in the active slot of the player. This is
                // expressed as an ISO 8601 Duration.
                "TimeWeaponActiveAsPrimary": "string",

                // The IDs of any attachments that were associated with the weapon that was dropped.
                "WeaponAttachmentIds": ["int"],

                // The ID of the weapon that was dropped. Weapons are available via the Metadata API.
                "WeaponStockId": "int",

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "WeaponDrop",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // WeaponPickup Event
              {
                // The player who picked up the weapon.
                "Player": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // The IDs of any attachments that were associated with the weapon that was picked up.
                "WeaponAttachmentIds": ["int"],

                // The ID of the weapon that was picked up. Weapons are available via the Metadata API.
                "WeaponStockId": "int",

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "WeaponPickup",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }

              // WeaponPickupPad Event
              {
                // The player who picked up the weapon.
                "Player": {

                  // The player's gamertag.
                  "Gamertag": "string",

                  // Internal use only. This will always be null.
                  "Xuid": null
                },

                // The IDs of any attachments that were associated with the weapon that was picked up.
                "WeaponAttachmentIds": ["int"],

                // The ID of the weapon that was picked up. Weapons are available via the Metadata API.
                "WeaponStockId": "int",

                // Descriptor to determine what fields will be filled in for the event.
                "EventName": "WeaponPickupPad",

                // Time passed since the start of the match when the event occurred. This is expressed
                // as an ISO 8601 Duration.
                "TimeSinceStart": "string"
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Match Events
  "/h5/player-leaderboards/csr/{seasonId}/{playlistId}":
    get:
      description: |
        <p>Retrieves the Leaderboard for Player CSRs. The Leaderboard consists of the top Players with a CSR of 1800 or above for a given Playlist in a Season.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>March 6, 2018:</strong></p>
            <ul>
                <li>Fixed documentation typos for the names of the "Player" and "Gamertag" properties.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>July 31, 2017:</strong></p>
            <ul>
                <li>Clarified documentation for which players are included in the leaderboard.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Player Leaderboard" to "Halo 5 - Leaderboard Player CSR".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-5-Leaderboard-Player-CSR
      parameters:
        - description: The ID for the Season.
          in: path
          name: seasonId
          required: true
          type: string
        - description: The ID for the Playlist.
          in: path
          name: playlistId
          required: true
          type: string
        - description: |-
            When specified, this indicates the maximum quantity of items the client would like returned in the response.

            When omitted, 200 is assumed.

            When the value contains a non-digit or is exactly "0", HTTP 400 ("Bad Request") is returned.

            When the value is greater than the allowed range [1,250], the maximum allowed value is used instead.

            The "Count" field in the response will confirm the actual value that was used.
          in: query
          name: count
          type: number
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Players in the Leaderboard. An empty list will be returned if no Players are in the Leaderboard.
          examples:
            application/json: |
              {
                // The starting point that was used. Will always be 0.
                "Start": "int",

                // The number of results that the service attempted to retrieve to satisfy this
                // request. Normally this value is equal to the "count" parameter. If the client
                // specified a count parameter greater than the maximum allowed, this value contains
                // the maximum allowed amount.
                "Count": "int",

                // The number of results that are actually being returned in this response. This field
                // is named "ResultCount" to avoid confusion with "Count".
                "ResultCount": "int",

                // Internal use only. A set of related resource links.
                "Links": "links",

                // A list of players in the leaderboard. Players are listed in chronological order with
                // the player with the highest CSR first.
                "Results": [
                  {
                    // Information about the player for whom this data was returned.
                    "Player": {

                      // The gamertag of the player queried.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The player's rank in the leaderboard.
                    "Rank": "int",

                    "Score": {

                      // The CSR tier. CSR Tiers are designation-specific and are available via the
                      // Metadata API.
                      "Tier": "int",

                      // The Designation of the CSR. CSR Designations are available via the Metadata
                      // API.
                      "DesignationId": "int",

                      // The CSR value. Zero for normal (Diamond and below) designations.
                      "Csr": "int",

                      // The percentage of progress towards the next CSR tier.
                      "PercentToNextTier": "int",

                      // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                      // otherwise.
                      "Rank": "int"
                    }
                  }
                ]
              }
        "404":
          description: The Season does not exist, or the Playlist either does not exist or is not part of the given Season.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Leaderboard - Player CSR
  "/h5/players/{player}/commendations":
    get:
      description: |
        <p>Retrieves the commendation state for a Player.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>July 14, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Commendations
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the commendation state for the Player.
          examples:
            application/json: |
              {
                // Internal use only. A set of related resource links.
                "Links": null,

                // The progress towards each Progressive Commendation. Progressive commendations have a
                // series of increasingly difficult thresholds (levels) that must crossed to receive
                // increasingly greater rewards. If no progress has been made for a progressive
                // commendation, it is omitted from this list.
                "ProgressiveCommendations": [
                  {
                    // The commendation ID. Commendations are available via the Metadata API.
                    "Id": "guid",

                    // The progress that has been made towards the commendation.
                    "Progress": "int",

                    // The levels that have been completed for the commendation.
                    "CompletedLevels": [
                      {
                        // The commendation level ID. Commendation Levels area available via the
                        // Metadata API.
                        "Id": "guid",

                        // The date the commendation level was completed. The time component of this
                        // date is always set to "00:00:00". This is expressed as an ISO 8601 combined
                        // Date and Time.
                        "CompletedDateUtc": {

                          "ISO8601Date": "string"
                        }
                      }
                    ]
                  }
                ],

                // The progress towards each Meta Commendation. Meta commendations are unlocked when
                // one or more other commendation levels have been completed. If no progress has been
                // made for a meta commendation, it is omitted from this list.
                "MetaCommendations": [
                  {
                    // The commendation ID. Commendations are available via the Metadata API.
                    "Id": "guid",

                    // The required commendation IDs that have been completed that are associated with
                    // this meta commendation. In C#, this can be reassembled into a Guid in the
                    // following manner: new Guid((int)Data1, (short)Data2, (short)Data3,
                    // BitConverter.GetBytes((long)Data4)).
                    "MetRequirements": [
                      {
                        "Data1": "int",

                        "Data2": "int",

                        "Data3": "int",

                        "Data4": "int"
                      }
                    ]
                  }
                ],

                // The date when the commendations progress was last updated. The time component of
                // this date is always set to "00:00:00". This is expressed as an ISO 8601 combined
                // Date and Time.
                "LastUpdatedDateUtc": {

                  "ISO8601Date": "string"
                }
              }
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Player Commendations
  "/h5/players/{player}/matches":
    get:
      description: |
        <p>Retrieves a list of Matches that the Player has participated in and which have completed processing. If the Player is currently in a match, it is not returned in this API.</p>
        <p>This endpoint will include games played on Local Servers with the Custom Local Game Mode for games that occurred or after December 22, 2017.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>February 1, 2019:</strong></p>
            <ul>
                <li>Enabled support for viewing the time component of the "MatchCompletedDate" via the "{include-times}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added support for the Custom Local Game mode.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Matches for Player" to "Halo 5 - Player Match History".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Clarified documentation for the "MapVariant" and "GameVariant" fields.</li>
                <li>Corrected "OwnerType" values for the "MapVariant" and "GameVariant" fields.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Match-History
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
        - description: |-
            Indicates what Game Mode(s) the client is interested in getting Matches for (arena, campaign, custom, customlocal, or warzone).

            When the parameter is omitted or empty, Matches from all modes are returned. When a client would like to receive Matches spanning multiple Modes, separate the Modes with a comma (e.g. "arena,custom"). There is no significance to the order the Modes are specified in this parameter.

            When an invalid Mode is specified, HTTP 400 ("Bad Request") is returned.

            When a valid Mode is specified more than once, HTTP 400 ("Bad Request") is returned.
          in: query
          name: modes
          type: string
        - description: |-
            When specified, this indicates the starting index (0-based) for which the batch of results will begin at. For example, "start=0" indicates that the first qualifying result will be returned, no items are 'skipped'. Passing "start=10" indicates that the result will begin with the 11th item, the first 10 will be 'skipped'.

            When omitted, zero is assumed.

            When the value contains a non-digit, HTTP 400 ("Bad Request") is returned.
          in: query
          name: start
          type: number
        - description: |-
            When specified, this indicates the maximum quantity of items the client would like returned in the response.

            When omitted, 25 is assumed.

            When the value contains a non-digit or is exactly "0", HTTP 400 ("Bad Request") is returned.

            When the value is greater than the allowed range [1,25], the maximum allowed value is used instead. The "Count" field in the response will confirm the actual value that was used.
          in: query
          name: count
          type: number
        - description: |-
            When set to "true", this indicates that the time component of the "MatchCompletedDate" field should be populated.

            Otherwise, when set to "false" or when omitted, the time component will be set to "00:00:00".

            When the value contains a non-boolean, HTTP 400 ("Bad Request") is returned.
          in: query
          name: include-times
          type: boolean
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Player's recent Matches. An empty list will be returned if the Player has not played any Matches in the specified Game Mode(s).
          examples:
            application/json: |
              {
                // The starting point that was used. When the "start" query string parameter is
                // specified, this value is identical. When "start" is omitted, the default value is
                // returned.
                "Start": "int",  

                // The number of results that the service attempted to retrieve to satisfy this
                // request. Normally this value is equal to the "count" parameter. If the client
                // specified a count parameter greater than the maximum allowed, this value contains
                // the maximum allowed amount.
                "Count": "int",

                // The number of results that are actually being returned in this response. This field
                // is named "ResultCount" to avoid confusion with "Count".
                "ResultCount": "int",

                // A list of recent matches. Matches are listed in reverse chronological order with the
                // most recently started match first.
                "Results": [
                  {
                    // Internal use only. A set of related resource links.
                    "Links": "links",

                    "Id": {

                      // The ID for this match. More match details are available via the applicable
                      // Match Result Endpoint.
                      "MatchId": "guid",

                      // The game mode applicable to this match. Options are: 
                      //   Error = 0, 
                      //   Arena = 1, 
                      //   Campaign = 2, 
                      //   Custom = 3, 
                      //   Warzone = 4,
                      //   CustomLocal = 6.
                      "GameMode": "int",

                    },

                    // The ID of the playlist (aka "Hopper") for the match. 
                    // Hoppers are used in Arena and Warzone. In Arena, they function just as you would
                    // expect, similar to previous Halo titles. Warzone uses hoppers as well. There
                    // will be multiple Warzone hoppers which contain a rotating playlist of scenarios
                    // to play. 
                    // Null for campaign & custom games. 
                    // Playlists are available via the Metadata API.
                    "HopperId": "guid",

                    // The ID of the base map for this match. Maps are available via the Metadata API.
                    "MapId": "guid",

                    // The variant of the map for this match. There are two sources of map variants:
                    // official map variants available via the Metadata API and user-generated map
                    // variants which are not available via the APIs currently. This will be null for
                    // campaign games.
                    "MapVariant": {

                      // The resource type. 3 indicates map variant.
                      "ResourceType": 3,

                      // The ID of the map variant. Official map variants are available via the
                      // Metadata API.
                      "ResourceId": "guid",

                      // The source of the map variant. Options are:
                      //   Unknown = 0,
                      //   User-generated = 1,
                      //   Official = 3.
                      "OwnerType": "int",

                      // The gamertag of the user that created the map variant if this is a
                      // user-generated map variant, or null otherwise. 
                      "Owner": "string"
                    },

                    // The ID of the game base variant for this match. Game base variants are available
                    // via the Metadata API.
                    "GameBaseVariantId": "guid",

                    // The variant of the game for this match. There are two sources of game variants:
                    // official game variants available via the Metadata API and user-generated game
                    // variants which are not available via the APIs currently. This will be null for
                    // campaign games.
                    "GameVariant": {

                      // The resource type. 2 indicates game variant.
                      "ResourceType": 2,

                      // The ID of the game variant. Official game variants are available via the
                      // Metadata API.
                      "ResourceId": "guid",        

                      // The source of the game variant. Options are:
                      //   Unknown = 0,
                      //   User-generated = 1,
                      //   Official = 3.
                      "OwnerType": "int",

                      // The gamertag of the user that created the game variant if this is a
                      // user-generated game variant, or null otherwise. 
                      "Owner": "string"
                    },

                    // The length of the match. This is expressed as an ISO 8601 Duration.
                    "MatchDuration": "string",

                    // The date and time when the match ended. Note that this is different than the
                    // processing date, once matches end they typically take a small amount of time to
                    // process. The processing date is not available through this API. The time
                    // component of this date is set to "00:00:00" unless the "{include-times}" request
                    // parameter is set to "true". This is expressed as an ISO 8601 combined Date and
                    // Time.
                    "MatchCompletedDate": {

                      "ISO8601Date": "string"
                    },

                    // Provides team data. This list contains all team that Won or Tied. Losing teams
                    // are not included. This list is empty for campaign games. 
                    "Teams": [
                      {
                        // The ID for the team. The team's ID dictates the team's color. Team colors
                        // are available via the Metadata API.
                        "Id": "int",

                        // The team's score at the end of the match. The way the score is determined is
                        // based off the game base variant being played: 
                        //   Breakout = number of rounds won,
                        //   CTF = number of flag captures,
                        //   Slayer = number of kills,
                        //   Strongholds = number of points,
                        //   Warzone = number of points.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                        // The team's rank at the end of the match.
                        "Rank": "int"
                      }
                    ],

                    // This field contains the player's data. This will only contain data for the
                    // player specified in the request.
                    "Players": [
                      {          
                        "Player": {

                          // The player's gamertag.
                          "Gamertag": "string",

                          // Internal use only. This will always be null.
                          "Xuid": null
                        },

                        // The ID of the team that the player was on when the match ended. Zero for
                        // campaign games.
                        "TeamId": "int",

                        // The player's team-agnostic ranking in this match.
                        "Rank": "int",

                        // Indicates what result the player received at the conclusion of the match.
                        // Options are:
                        //   Did Not Finish = 0, 
                        //   Lost = 1, 
                        //   Tied = 2, 
                        //   Won = 3. 
                        // Did Not Finish: The player was not present when the match ended.
                        // Lost: The player was on a team that was assigned a loss, typically this is
                        // when a team does not have rank = 1. 
                        // Won: The player was on the team that was assigned the win, typically this is
                        // the team that has rank = 1. 
                        // Tied: The player was on the team that was awarded a tie. Typically this is
                        // when the player is on the team with rank = 1, and there is at least one
                        // other team with rank = 1. Ties are only for rank = 1 teams. Consider the
                        // scenario when exactly one team is rank = 1, and two teams are rank = 2.
                        // Players on the rank=1 team will have "Won", players on the rank = 2 teams
                        // will have "Lost". For ties, this documentation states 'typically' because
                        // the game may have unique rules for multi-team and FFA scenarios, in which
                        // multiple teams are awarded a win.
                        "Result": "int",

                        // The number of enemy kills the player had during this match. This includes
                        // other Spartans and Enemy AI.
                        "TotalKills": "int",

                        // The number of times this player died during the match.
                        "TotalDeaths": "int",

                        // The number of assists credited to the player during the match. This includes
                        // other Spartans and Enemy AI.
                        "TotalAssists": "int",

                        // Internal use only. This will always be null.
                        "PreMatchRatings": null,

                        // Internal use only. This will always be null.
                        "PostMatchRatings": null
                      }
                    ],

                    // Whether this was a team-based game or not (e.g. free-for-all).
                    "IsTeamGame": "boolean",

                    // The ID of the season for this match if it was played in a seasonal playlist.
                    // Null if the match was played in a non-seasonal playlist. This will only be set
                    // for Arena matches and will be null for all other game modes.
                    "SeasonId": null,

                    // Internal use only. Do not use.
                    "MatchCompletedDateFidelity": "int"
                  }
                ]
              }
        "400":
          description: An unsupported value was provided for a query string parameter.
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Player Match History
  /h5/servicerecords/arena:
    get:
      description: |
        <p>Retrieves Service Records for the Arena Game Mode for one or more players. A Service Record contains a player's lifetime statistics in the Game Mode.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>June 29, 2018:</strong></p>
            <ul>
                <li>Added support for Social (Unranked) Playlists.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Service Record: Arena" to "Halo 5 - Player Service Records - Arena".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added documentation for the "CsrPercentile" field.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Service-Records-Arena
      parameters:
        - description: A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
        - description: When specified, this indicates the Season to request the Arena Playlist Stats for. If this is not specified, the default is the current Season. Seasons are available via the Metadata API. Social (Unranked) Arena Playlist Stats can be retrieved by specifying "NonSeasonal".
          in: query
          name: seasonId
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Service Records for the requested player(s).
          examples:
            application/json: |
              {
                // Set of responses. One per user queried.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. One of the following:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    // The Service Record result for the player. Only set if ResultCode is Success.
                    "Result": {

                      // Arena stats data.
                      "ArenaStats": {

                        // List of arena stats by playlist. This is the ONLY set of stats in the
                        // response that respects the Season ID request parameter. If no Season ID was
                        // specified, these will be the stats for the current season. If an invalid
                        // Season ID was specified, this will be empty.
                        "ArenaPlaylistStats": [
                          {
                            // The playlist ID. Playlists are available via the Metadata API.
                            "PlaylistId": "guid",

                            // The player's measurement matches left. If this field is greater than
                            // zero, then the player will not have a CSR yet.
                            "MeasurementMatchesLeft": "int",

                            // The highest Competitive Skill Ranking (CSR) achieved by the player. This
                            // is included because a player's CSR can drop based on performance.
                            "HighestCsr": {

                              // The CSR tier. CSR Tiers are designation-specific and are available via
                              // the Metadata API.
                              "Tier": "int",

                              // The Designation of the CSR. CSR Designations are available via the
                              // Metadata API.
                              "DesignationId": "int",

                              // The CSR value. Zero for normal (Diamond and below) designations.
                              "Csr": "int",

                              // The percentage of progress towards the next CSR tier.
                              "PercentToNextTier": "int",

                              // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                              // otherwise.
                              "Rank": "int"
                            },

                            // The current Competitive Skill Ranking (CSR) of the player.
                            "Csr": {

                              // The CSR tier. CSR Tiers are designation-specific and are available via
                              // the Metadata API.
                              "Tier": "int",

                              // The Designation of the CSR. CSR Designations are available via the
                              // Metadata API.
                              "DesignationId": "int",

                              // The CSR value. Zero for normal (Diamond and below) designations.
                              "Csr": "int",

                              // The percentage of progress towards the next CSR tier.
                              "PercentToNextTier": "int",

                              // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                              // otherwise.
                              "Rank": "int"
                            },

                            // Number represents within what percent of the top players the user is
                            // (top 2 percent for example). Can be null if list is not ranked or if
                            // player has not completed their measurement matches. Does not work for
                            // pre-season.
                            "CsrPercentile": "int"
                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [ 
                                  "int" 
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // The highest obtained CSR by the player in arena across all seasons. If the
                        // player hasn't finished measurement matches yet for any playlist, this value
                        // is null.
                        "HighestCsrAttained": {

                          // The CSR tier. CSR Tiers are designation-specific and are available via the
                          // Metadata API.
                          "Tier": "int",

                          // The Designation of the CSR. CSR Designations are available via the
                          // Metadata API.
                          "DesignationId": "int",

                          // The CSR value. Zero for normal (Diamond and below) designations.
                          "Csr": "int",

                          // The percentage of progress towards the next CSR tier.
                          "PercentToNextTier": "int",

                          // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                          // otherwise.
                          "Rank": "int"
                        },

                        // List of arena stats by GameBaseVariant across all seasons.
                        "ArenaGameBaseVariantStats": [
                          {
                            // The game base variant specific stats. Flexible stats are available via
                            // the Metadata API.
                            "FlexibleStats": {

                              // The set of flexible stats that are derived from medal events.
                              "MedalStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from impulse events.
                              "ImpulseStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from medal time lapses.
                              "MedalTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ],    

                              // The set of flexible stats that are derived from impulse time lapses.
                              "ImpulseTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ]
                            },

                            // The ID of the game base variant. Game base variants are available via
                            // the Metadata API.
                            "GameBaseVariantId": "guid",

                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [ 
                                  "int" 
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // A list of up to three game base variants with the highest win rate across
                        // all seasons by the user. If there is a tie, the game base variant with more
                        // completed games is higher. If there's still a tie, the game base variant IDs
                        // are sorted and selected.
                        "TopGameBaseVariants": [
                          {
                            // Rank between 1-3
                            "GameBaseVariantRank": "int",

                            // Number of games played in game base variant
                            "NumberOfMatchesCompleted": "int",

                            // Id of the game base variant
                            "GameBaseVariantId": "guid",

                            // Number of matches won on game base variant
                            "NumberOfMatchesWon": "int"
                          }
                        ],

                        // The ID for the playlist that pertains to the highest obtained CSR field
                        // across all seasons. If the CSR is null, so is this field. 
                        "HighestCsrPlaylistId": "guid",

                        // The ID for the season that pertains to the highest obtained CSR field across
                        // all seasons. If the CSR is null, so is this field.
                        "HighestCsrSeasonId": "guid",

                        // The ID for the Season of the stats in ArenaPlaylistStats. If no Season ID
                        // was specified on the request, then this is the ID of the current season.
                        "ArenaPlaylistStatsSeasonId": "guid",

                        // Total number of kills done by the player. This includes melee kills,
                        // shoulder bash kills and Spartan charge kills, all power weapons, AI kills
                        // and vehicle destructions. 
                        "TotalKills": "int",

                        // Total number of headshots done by the player.
                        "TotalHeadshots": "int",

                        // Total weapon damage dealt by the player.
                        "TotalWeaponDamage": "double",

                        // Total number of shots fired by the player.
                        "TotalShotsFired": "int",

                        // Total number of shots landed by the player.
                        "TotalShotsLanded": "int",

                        // The weapon the player used to get the most kills.
                        "WeaponWithMostKills": {

                          "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                            "StockId": "int",

                            // Any attachments the weapon had.
                            "Attachments": [ 
                              "int" 
                            ]
                          },

                          // The number of shots fired for this weapon.
                          "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                          "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                          "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                          "TotalKills": "int",

                          // The total damage dealt for this weapon.
                          "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                          "TotalPossessionTime": "string"
                        },

                        // Total number of melee kills by the player.
                        "TotalMeleeKills": "int",

                        // Total melee damage dealt by the player.
                        "TotalMeleeDamage": "double",

                        // Total number of assassinations by the player.
                        "TotalAssassinations": "int",

                        // Total number of ground pound kills by the player.
                        "TotalGroundPoundKills": "int",

                        // Total ground pound damage dealt by the player.
                        "TotalGroundPoundDamage": "double",

                        // Total number of shoulder bash kills by the player.
                        "TotalShoulderBashKills": "int",

                        // Total shoulder bash damage dealt by the player.
                        "TotalShoulderBashDamage": "double",

                        // Total grenade damage dealt by the player.
                        "TotalGrenadeDamage": "double",

                        // Total number of power weapon kills by the player.
                        "TotalPowerWeaponKills": "int",

                        // Total power weapon damage dealt by the player.
                        "TotalPowerWeaponDamage": "double",

                        // Total number of power weapon grabs by the player.
                        "TotalPowerWeaponGrabs": "int",

                        // Total power weapon possession by the player. This is expressed as an ISO
                        // 8601 Duration.
                        "TotalPowerWeaponPossessionTime": "string",

                        // Total number of deaths by the player.
                        "TotalDeaths": "int",

                        // Total number of assists by the player.
                        "TotalAssists": "int",

                        // Total number of games the player has completed.
                        "TotalGamesCompleted": "int",

                        // Total number of games won by the player.
                        "TotalGamesWon": "int",

                        // Total number of games lost by the player.
                        "TotalGamesLost": "int",

                        // Total number of games tied by the player.
                        "TotalGamesTied": "int",

                        // Total timed played by the player.
                        "TotalTimePlayed": "string",

                        // Total number of grenade kills by the player.
                        "TotalGrenadeKills": "int",

                        // The set of Medals earned by the player.
                        "MedalAwards": [
                          {
                            // The ID of the Medal. Medals are available via the Metadata API.
                            "MedalId": "int",

                            // The number of times the Medal was earned.
                            "Count": "int"
                          }
                        ], 

                        // List of enemy vehicles destroyed. Vehicles are available via the Metadata
                        // API. Note: this stat measures enemy vehicles, not any vehicle destruction.
                        "DestroyedEnemyVehicles": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // List of enemies killed, per enemy type. Enemies are available via the
                        // Metadata API.
                        "EnemyKills": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // The set of weapons (weapons and vehicles included) used by the player.
                        "WeaponStats": [
                          {
                            "WeaponId": {

                              // The ID of the weapon. Weapons are available via the Metadata API.
                              "StockId": "int",

                              // Any attachments the weapon had.
                              "Attachments": [ 
                                "int" 
                              ]
                            },

                            // The number of shots fired for this weapon.
                            "TotalShotsFired": "int",

                            // The number of shots landed for this weapon.
                            "TotalShotsLanded": "int",

                            // The number of headshots for this weapon.
                            "TotalHeadshots": "int",

                            // The number of kills for this weapon.
                            "TotalKills": "int",

                            // The total damage dealt for this weapon.
                            "TotalDamageDealt": "double",

                            // The total possession time for this weapon. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPossessionTime": "string"
                          }
                        ],

                        // The set of Impulses (invisible Medals) earned by the player.
                        "Impulses": [
                          {
                            // The ID of the Impulse. Impulses are available via the Metadata API.
                            "Id": "int",

                            // The number of times the Impulse was earned.
                            "Count": "int"
                          }
                        ],

                        // Total number of Spartan kills by the player.
                        "TotalSpartanKills": "int"
                      },

                      // Information about the player for whom this data was returned.
                      "PlayerId": {

                        // The gamertag of the player queried.
                        "GamerTag": "string",

                        // Internal use only. This will always be null.
                        "Xuid": null
                      },

                      // The player's Spartan Rank.
                      "SpartanRank": "int",

                      // The player's XP.
                      "Xp": "int"
                    }
                  }
                ],

                // Internal use only. A set of related resource links.
                "Links": null
              }
        "404":
          description: One or more Gamertags don't pass validation rules.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Player Service Records - Arena
  /h5/servicerecords/campaign:
    get:
      description: |
        <p>Retrieves Service Records for the Campaign Game Mode for one or more players. A Service Record contains a player's lifetime statistics in the Game Mode.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Service Record: Campaign" to "Halo 5 - Player Service Records - Campaign".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Service-Records-Campaign
      parameters:
        - description: A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Service Records for the requested player(s).
          examples:
            application/json: |
              {
                // Set of responses. One per user queried.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. One of the following:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    // The Service Record result for the player. Only set if ResultCode is Success.
                    "Result": {

                      // Campaign stats data.
                      "CampaignStat": {

                        // List of campaign stats by mission ID.
                        "CampaignMissionStats": [
                          {
                            // Flexible stats are available via the Metadata API.
                            "FlexibleStats": {

                              // The set of flexible stats that are derived from medal events.
                              "MedalStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from impulse events.
                              "ImpulseStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from medal time lapses.
                              "MedalTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ],    

                              // The set of flexible stats that are derived from impulse time lapses.
                              "ImpulseTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ]
                            },

                            // The set of stats from missions completed while playing co-op. The key is
                            // the difficulty and the value is the playthrough stats for that
                            // difficulty. Empty if there are no finished playthroughs. 
                            "CoopStats": {

                              // The difficulty the mission was played at. Options are:
                              //   Easy = 0,
                              //   Normal = 1,
                              //   Heroic = 2,
                              //   Legendary = 3
                              "int": {

                                // The highest score achieved by the player on this difficulty.
                                "HighestScore": "int",

                                // The fastest completion time by the player on this difficulty.
                                "FastestCompletionTime": "string",

                                // The aggregate set of skulls the player managed to finish this
                                // mission on this difficulty. Not most in a single run, but which have
                                // been completed overall.
                                "Skulls": [
                                  "int"
                                ],

                                // The number of times this mission was completed by the player on this
                                // difficulty.
                                "TotalTimesCompleted": "int",

                                // True if the mission was completed with all of the skulls on in one
                                // playthrough for this difficulty. False otherwise.This field is
                                // provided to disambiguate the case where the Skulls set contains all
                                // the Skulls but the player played through the mission multiple times,
                                // each with a different Skull (as opposed to playing through the
                                // mission with ALL the skulls enabled).
                                "AllSkullsOn": "bool"
                              }
                            },

                            // The set of stats from missions completed while playing solo. The key is
                            // the difficulty and the value is the playthrough stats for that
                            // difficulty. Empty if there are no finished playthroughs. 
                            "SoloStats": {

                              // The difficulty the mission was played at. Options are:
                              //   Easy = 0,
                              //   Normal = 1,
                              //   Heroic = 2,
                              //   Legendary = 3
                              "int": {

                                // The highest score achieved by the player on this difficulty.
                                "HighestScore": "int",

                                // The fastest completion time by the player on this difficulty.
                                "FastestCompletionTime": "string",

                                // The aggregate set of skulls the player managed to finish this
                                // mission on this difficulty. Not most in a single run, but which have
                                // been completed overall.
                                "Skulls": [
                                  "int"
                                ],

                                // The number of times this mission was completed by the player on this
                                // difficulty.
                                "TotalTimesCompleted": "int",

                                // True if the mission was completed with all of the skulls on in one
                                // playthrough for this difficulty. False otherwise. This field is
                                // provided to disambiguate the case where the Skulls set contains all
                                // the Skulls but the player played through the mission multiple times,
                                // each with a different Skull (as opposed to playing through the
                                // mission with ALL the skulls enabled).
                                "AllSkullsOn": "bool"
                              }
                            },

                            // The mission ID that pertains to this mission. Can be found in metadata.
                            "MissionId": "guid",

                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [
                                  "int"
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed. Note that for Campaign,
                            // this does not mean that the mission was completed. Mission completion
                            // counts are tracked in SoloStats and CoopStats.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player. Not used for Campaign.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player. Not used for Campaign.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player. Not used for Campaign.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // Total number of kills done by the player. This includes melee kills,
                        // shoulder bash kills and Spartan charge kills, all power weapons, AI kills
                        // and vehicle destructions. 
                        "TotalKills": "int",

                        // Total number of headshots done by the player.
                        "TotalHeadshots": "int",

                        // Total weapon damage dealt by the player.
                        "TotalWeaponDamage": "double",

                        // Total number of shots fired by the player.
                        "TotalShotsFired": "int",

                        // Total number of shots landed by the player.
                        "TotalShotsLanded": "int",

                        // The weapon the player used to get the most kills.
                        "WeaponWithMostKills": {

                          "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                            "StockId": "int",

                            // Any attachments the weapon had.
                            "Attachments": [
                              "int"
                            ]
                          },

                          // The number of shots fired for this weapon.
                          "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                          "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                          "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                          "TotalKills": "int",

                          // The total damage dealt for this weapon.
                          "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                          "TotalPossessionTime": "string"
                        },

                        // Total number of melee kills by the player.
                        "TotalMeleeKills": "int",

                        // Total melee damage dealt by the player.
                        "TotalMeleeDamage": "double",

                        // Total number of assassinations by the player.
                        "TotalAssassinations": "int",

                        // Total number of ground pound kills by the player.
                        "TotalGroundPoundKills": "int",

                        // Total ground pound damage dealt by the player.
                        "TotalGroundPoundDamage": "double",

                        // Total number of shoulder bash kills by the player.
                        "TotalShoulderBashKills": "int",

                        // Total shoulder bash damage dealt by the player.
                        "TotalShoulderBashDamage": "double",

                        // Total grenade damage dealt by the player.
                        "TotalGrenadeDamage": "double",

                        // Total number of power weapon kills by the player.
                        "TotalPowerWeaponKills": "int",

                        // Total power weapon damage dealt by the player.
                        "TotalPowerWeaponDamage": "double",

                        // Total number of power weapon grabs by the player.
                        "TotalPowerWeaponGrabs": "int",

                        // Total power weapon possession by the player. This is expressed as an ISO
                        // 8601 Duration.
                        "TotalPowerWeaponPossessionTime": "string",

                        // Total number of deaths by the player.
                        "TotalDeaths": "int",

                        // Total number of assists by the player.
                        "TotalAssists": "int",

                        // Total number of games the player has completed. Note that for Campaign, this
                        // does not mean that the mission was completed. Mission completion counts are
                        // tracked in SoloStats and CoopStats.
                        "TotalGamesCompleted": "int",

                        // Total number of games won by the player. Not used for Campaign.
                        "TotalGamesWon": "int",

                        // Total number of games lost by the player. Not used for Campaign.
                        "TotalGamesLost": "int",

                        // Total number of games tied by the player. Not used for Campaign.
                        "TotalGamesTied": "int",

                        "TotalTimePlayed": "string",

                        // Total number of grenade kills by the player.
                        "TotalGrenadeKills": "int",

                        // The set of Medals earned by the player.
                        "MedalAwards": [
                          {
                            // The ID of the Medal. Medals are available via the Metadata API.
                            "MedalId": "int",

                            // The number of times the Medal was earned.
                            "Count": "int"
                          }
                        ], 

                        // List of enemy vehicles destroyed. Vehicles are available via the Metadata
                        // API. Note: this stat measures enemy vehicles, not any vehicle destruction.
                        "DestroyedEnemyVehicles": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // List of enemies killed, per enemy type. Enemies are available via the
                        // Metadata API.
                        "EnemyKills": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // The set of weapons (weapons and vehicles included) used by the player.
                        "WeaponStats": [
                          {
                            "WeaponId": {

                              // The ID of the weapon. Weapons are available via the Metadata API.
                              "StockId": "int",

                              // Any attachments the weapon had.
                              "Attachments": [ 
                                "int" 
                              ]
                            },

                            // The number of shots fired for this weapon.
                            "TotalShotsFired": "int",

                            // The number of shots landed for this weapon.
                            "TotalShotsLanded": "int",

                            // The number of headshots for this weapon.
                            "TotalHeadshots": "int",

                            // The number of kills for this weapon.
                            "TotalKills": "int",

                            // The total damage dealt for this weapon.
                            "TotalDamageDealt": "double",

                            // The total possession time for this weapon. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPossessionTime": "string"
                          }
                        ],

                        // The set of Impulses (invisible Medals) earned by the player.
                        "Impulses": [
                          {
                            // The ID of the Impulse. Impulses are available via the Metadata API.
                            "Id": "int",

                            // The number of times the Impulse was earned.
                            "Count": "int"
                          }
                        ],

                        // Total number of Spartan kills by the player.
                        "TotalSpartanKills": "int"
                      },

                      // Information about the player for whom this data was returned.
                      "PlayerId": {

                        // The gamertag of the player queried.
                        "GamerTag": "string",

                        // Internal use only. This will always be null.
                        "Xuid": null
                      },

                      // The player's Spartan Rank. Zero for campaign.
                      "SpartanRank": "int",

                      // The player's XP. Zero for campaign.
                      "Xp": "int"
                    }
                  }
                ],

                // Internal use only. A set of related resource links.
                "Links": null
              }
        "404":
          description: One or more Gamertags don't pass validation rules.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Player Service Records - Campaign
  /h5/servicerecords/custom:
    get:
      description: |
        <p>Retrieves Service Records for the Custom Game Mode for one or more players. A Service Record contains a player's lifetime statistics in the Game Mode. Games with the Custom Game Mode are played on Xbox Live Servers. For games played on Local Servers, use the "Halo 5 - Player Service Records - Custom Local" Endpoint.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Service Record: Custom" to "Halo 5 - Player Service Records - Custom".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Service-Records-Custom
      parameters:
        - description: A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Service Records for the requested player(s).
          examples:
            application/json: |
              {
                // Set of responses. One per user queried.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. One of the following:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    // The Service Record result for the player. Only set if ResultCode is Success.
                    "Result": {

                      // Custom stats data.
                      "CustomStats": {

                        // List of custom stats by CustomGameBaseVariant.
                        "CustomGameBaseVariantStats": [
                          {
                            // The game base variant specific stats. Flexible stats are available via
                            // the Metadata API.
                            "FlexibleStats": {

                              // The set of flexible stats that are derived from medal events.
                              "MedalStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from impulse events.
                              "ImpulseStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from medal time lapses.
                              "MedalTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ],    

                              // The set of flexible stats that are derived from impulse time lapses.
                              "ImpulseTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ]
                            },

                            // The ID of the game base variant. Game base variants are available via
                            // the Metadata API.
                            "GameBaseVariantId": "guid",

                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [
                                  "int"
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // A list of up to 3 top game base variants played by the user Top means
                        // Wins/Completed matches. If there is a tie, the one with more completions is
                        // higher. If there's still a tie, the GUIDs are sorted and selected
                        "TopGameBaseVariants": [
                          {
                            // Rank between 1-3
                            "GameBaseVariantRank": "int",

                            // Number of games played in game base variant
                            "NumberOfMatchesCompleted": "int",

                            // Id of the game base variant
                            "GameBaseVariantId": "guid",

                            // Number of matches won on game base variant
                            "NumberOfMatchesWon": "int"
                          }
                        ],

                        // Total number of kills done by the player. This includes melee kills,
                        // shoulder bash kills and Spartan charge kills, all power weapons, AI kills
                        // and vehicle destructions. 
                        "TotalKills": "int",

                        // Total number of headshots done by the player.
                        "TotalHeadshots": "int",

                        // Total weapon damage dealt by the player.
                        "TotalWeaponDamage": "double",

                        // Total number of shots fired by the player.
                        "TotalShotsFired": "int",

                        // Total number of shots landed by the player.
                        "TotalShotsLanded": "int",

                        // The weapon the player used to get the most kills.
                        "WeaponWithMostKills": {

                          "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                            "StockId": "int",

                            // Any attachments the weapon had.
                            "Attachments": [
                              "int"
                            ]
                          },

                          // The number of shots fired for this weapon.
                          "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                          "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                          "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                          "TotalKills": "int",

                          // The total damage dealt for this weapon.
                          "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                          "TotalPossessionTime": "string"
                        },

                        // Total number of melee kills by the player.
                        "TotalMeleeKills": "int",

                        // Total melee damage dealt by the player.
                        "TotalMeleeDamage": "double",

                        // Total number of assassinations by the player.
                        "TotalAssassinations": "int",

                        // Total number of ground pound kills by the player.
                        "TotalGroundPoundKills": "int",

                        // Total ground pound damage dealt by the player.
                        "TotalGroundPoundDamage": "double",

                        // Total number of shoulder bash kills by the player.
                        "TotalShoulderBashKills": "int",

                        // Total shoulder bash damage dealt by the player.
                        "TotalShoulderBashDamage": "double",

                        // Total grenade damage dealt by the player.
                        "TotalGrenadeDamage": "double",

                        // Total number of power weapon kills by the player.
                        "TotalPowerWeaponKills": "int",

                        // Total power weapon damage dealt by the player.
                        "TotalPowerWeaponDamage": "double",

                        // Total number of power weapon grabs by the player.
                        "TotalPowerWeaponGrabs": "int",

                        // Total power weapon possession by the player. This is expressed as an ISO
                        // 8601 Duration.
                        "TotalPowerWeaponPossessionTime": "string",

                        // Total number of deaths by the player.
                        "TotalDeaths": "int",

                        // Total number of assists by the player.
                        "TotalAssists": "int",

                        // Not used.
                        "TotalGamesCompleted": "int",

                        // Not used.
                        "TotalGamesWon": "int",

                        // Not used.
                        "TotalGamesLost": "int",

                        // Not used.
                        "TotalGamesTied": "int",

                        // Total timed played by the player.
                        "TotalTimePlayed": "string",

                        // Total number of grenade kills by the player.
                        "TotalGrenadeKills": "int",

                        // The set of Medals earned by the player.
                        "MedalAwards": [
                          {
                            // The ID of the Medal. Medals are available via the Metadata API.
                            "MedalId": "int",

                            // The number of times the Medal was earned.
                            "Count": "int"
                          }
                        ], 

                        // List of enemy vehicles destroyed. Vehicles are available via the Metadata
                        // API. Note: this stat measures enemy vehicles, not any vehicle destruction.
                        "DestroyedEnemyVehicles": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // List of enemies killed, per enemy type. Enemies are available via the
                        // Metadata API.
                        "EnemyKills": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // The set of weapons (weapons and vehicles included) used by the player.
                        "WeaponStats": [
                          {
                            "WeaponId": {

                              // The ID of the weapon. Weapons are available via the Metadata API.
                              "StockId": "int",

                              // Any attachments the weapon had.
                              "Attachments": [ 
                                "int" 
                              ]
                            },

                            // The number of shots fired for this weapon.
                            "TotalShotsFired": "int",

                            // The number of shots landed for this weapon.
                            "TotalShotsLanded": "int",

                            // The number of headshots for this weapon.
                            "TotalHeadshots": "int",

                            // The number of kills for this weapon.
                            "TotalKills": "int",

                            // The total damage dealt for this weapon.
                            "TotalDamageDealt": "double",

                            // The total possession time for this weapon. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPossessionTime": "string"
                          }
                        ],

                        // The set of Impulses (invisible Medals) earned by the player.
                        "Impulses": [
                          {
                            // The ID of the Impulse. Impulses are available via the Metadata API.
                            "Id": "int",

                            // The number of times the Impulse was earned.
                            "Count": "int"
                          }
                        ],

                        // Total number of Spartan kills by the player.
                        "TotalSpartanKills": "int"
                      },

                      // Information about the player for whom this data was returned.
                      "PlayerId": {

                        // The gamertag of the player queried.
                        "GamerTag": "string",

                        // Internal use only. This will always be null.
                        "Xuid": null
                      },

                      // The player's Spartan Rank. Zero for custom.
                      "SpartanRank": "int",

                      // The player's XP. Zero for custom.
                      "Xp": "int"
                    }
                  }
                ],

                // Internal use only. A set of related resource links.
                "Links": null
              }
        "404":
          description: One or more Gamertags don't pass validation rules.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Player Service Records - Custom
  /h5/servicerecords/customlocal:
    get:
      description: |
        <p>Retrieves Service Records for the Custom Local Game Mode for one or more players. A Service Record contains a player's lifetime statistics in the Game Mode. Games with the Custom Local Game Mode are played on Local Servers. For games played on Xbox Live Servers, use the "Halo 5 - Player Service Records - Custom" Endpoint. A player's Custom Local Service Record summarizes games played on or after December 22, 2017.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Service-Records-Custom-Local
      parameters:
        - description: A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Service Records for the requested player(s).
          examples:
            application/json: |
              {
                // Set of responses. One per user queried.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. One of the following:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    // The Service Record result for the player. Only set if ResultCode is Success.
                    "Result": {

                      // Custom stats data.
                      "CustomStats": {

                        // List of custom stats by CustomGameBaseVariant.
                        "CustomGameBaseVariantStats": [
                          {
                            // The game base variant specific stats. Flexible stats are available via
                            // the Metadata API.
                            "FlexibleStats": {

                              // The set of flexible stats that are derived from medal events.
                              "MedalStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from impulse events.
                              "ImpulseStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from medal time lapses.
                              "MedalTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ],    

                              // The set of flexible stats that are derived from impulse time lapses.
                              "ImpulseTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ]
                            },

                            // The ID of the game base variant. Game base variants are available via
                            // the Metadata API.
                            "GameBaseVariantId": "guid",

                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [
                                  "int"
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // A list of up to 3 top game base variants played by the user Top means
                        // Wins/Completed matches. If there is a tie, the one with more completions is
                        // higher. If there's still a tie, the GUIDs are sorted and selected
                        "TopGameBaseVariants": [
                          {
                            // Rank between 1-3
                            "GameBaseVariantRank": "int",

                            // Number of games played in game base variant
                            "NumberOfMatchesCompleted": "int",

                            // Id of the game base variant
                            "GameBaseVariantId": "guid",

                            // Number of matches won on game base variant
                            "NumberOfMatchesWon": "int"
                          }
                        ],

                        // Total number of kills done by the player. This includes melee kills,
                        // shoulder bash kills and Spartan charge kills, all power weapons, AI kills
                        // and vehicle destructions. 
                        "TotalKills": "int",

                        // Total number of headshots done by the player.
                        "TotalHeadshots": "int",

                        // Total weapon damage dealt by the player.
                        "TotalWeaponDamage": "double",

                        // Total number of shots fired by the player.
                        "TotalShotsFired": "int",

                        // Total number of shots landed by the player.
                        "TotalShotsLanded": "int",

                        // The weapon the player used to get the most kills.
                        "WeaponWithMostKills": {

                          "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                            "StockId": "int",

                            // Any attachments the weapon had.
                            "Attachments": [
                              "int"
                            ]
                          },

                          // The number of shots fired for this weapon.
                          "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                          "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                          "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                          "TotalKills": "int",

                          // The total damage dealt for this weapon.
                          "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                          "TotalPossessionTime": "string"
                        },

                        // Total number of melee kills by the player.
                        "TotalMeleeKills": "int",

                        // Total melee damage dealt by the player.
                        "TotalMeleeDamage": "double",

                        // Total number of assassinations by the player.
                        "TotalAssassinations": "int",

                        // Total number of ground pound kills by the player.
                        "TotalGroundPoundKills": "int",

                        // Total ground pound damage dealt by the player.
                        "TotalGroundPoundDamage": "double",

                        // Total number of shoulder bash kills by the player.
                        "TotalShoulderBashKills": "int",

                        // Total shoulder bash damage dealt by the player.
                        "TotalShoulderBashDamage": "double",

                        // Total grenade damage dealt by the player.
                        "TotalGrenadeDamage": "double",

                        // Total number of power weapon kills by the player.
                        "TotalPowerWeaponKills": "int",

                        // Total power weapon damage dealt by the player.
                        "TotalPowerWeaponDamage": "double",

                        // Total number of power weapon grabs by the player.
                        "TotalPowerWeaponGrabs": "int",

                        // Total power weapon possession by the player. This is expressed as an ISO
                        // 8601 Duration.
                        "TotalPowerWeaponPossessionTime": "string",

                        // Total number of deaths by the player.
                        "TotalDeaths": "int",

                        // Total number of assists by the player.
                        "TotalAssists": "int",

                        // Not used.
                        "TotalGamesCompleted": "int",

                        // Not used.
                        "TotalGamesWon": "int",

                        // Not used.
                        "TotalGamesLost": "int",

                        // Not used.
                        "TotalGamesTied": "int",

                        // Total timed played by the player.
                        "TotalTimePlayed": "string",

                        // Total number of grenade kills by the player.
                        "TotalGrenadeKills": "int",

                        // The set of Medals earned by the player.
                        "MedalAwards": [
                          {
                            // The ID of the Medal. Medals are available via the Metadata API.
                            "MedalId": "int",

                            // The number of times the Medal was earned.
                            "Count": "int"
                          }
                        ], 

                        // List of enemy vehicles destroyed. Vehicles are available via the Metadata
                        // API. Note: this stat measures enemy vehicles, not any vehicle destruction.
                        "DestroyedEnemyVehicles": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // List of enemies killed, per enemy type. Enemies are available via the
                        // Metadata API.
                        "EnemyKills": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // The set of weapons (weapons and vehicles included) used by the player.
                        "WeaponStats": [
                          {
                            "WeaponId": {

                              // The ID of the weapon. Weapons are available via the Metadata API.
                              "StockId": "int",

                              // Any attachments the weapon had.
                              "Attachments": [ 
                                "int" 
                              ]
                            },

                            // The number of shots fired for this weapon.
                            "TotalShotsFired": "int",

                            // The number of shots landed for this weapon.
                            "TotalShotsLanded": "int",

                            // The number of headshots for this weapon.
                            "TotalHeadshots": "int",

                            // The number of kills for this weapon.
                            "TotalKills": "int",

                            // The total damage dealt for this weapon.
                            "TotalDamageDealt": "double",

                            // The total possession time for this weapon. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPossessionTime": "string"
                          }
                        ],

                        // The set of Impulses (invisible Medals) earned by the player.
                        "Impulses": [
                          {
                            // The ID of the Impulse. Impulses are available via the Metadata API.
                            "Id": "int",

                            // The number of times the Impulse was earned.
                            "Count": "int"
                          }
                        ],

                        // Total number of Spartan kills by the player.
                        "TotalSpartanKills": "int"
                      },

                      // Information about the player for whom this data was returned.
                      "PlayerId": {

                        // The gamertag of the player queried.
                        "GamerTag": "string",

                        // Internal use only. This will always be null.
                        "Xuid": null
                      },

                      // The player's Spartan Rank. Zero for custom.
                      "SpartanRank": "int",

                      // The player's XP. Zero for custom.
                      "Xp": "int"
                    }
                  }
                ],

                // Internal use only. A set of related resource links.
                "Links": null
              }
        "404":
          description: One or more Gamertags don't pass validation rules.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Player Service Records - Custom Local
  /h5/servicerecords/warzone:
    get:
      description: |
        <p>Retrieves Service Records for the Warzone Game Mode for one or more players. A Service Record contains a player's lifetime statistics in the Game Mode.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Service Record: Warzone" to "Halo 5 - Player Service Records - Warzone".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
      operationId: Halo-5-Player-Service-Records-Warzone
      parameters:
        - description: A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Service Records for the requested player(s).
          examples:
            application/json: |
              {
                // Set of responses. One per user queried.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. One of the following:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    // The Service Record result for the player. Only set if ResultCode is Success.
                    "Result": {

                      // Warzone stats data.
                      "WarzoneStat": {

                        // The total number of "pies" (in-game currency) the player has earned.
                        "TotalPiesEarned": "int",

                        // List of scenario stats by map and game base variant id.
                        "ScenarioStats": [
                          {
                            // The total number of "pies" (in-game currency) the player has earned in
                            // the scenario.
                            "TotalPiesEarned": "int",

                            // The game base variant specific stats. Flexible stats are available via
                            // the Metadata API.
                            "FlexibleStats": {

                              // The set of flexible stats that are derived from medal events.
                              "MedalStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from impulse events.
                              "ImpulseStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from medal time lapses.
                              "MedalTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ],    

                              // The set of flexible stats that are derived from impulse time lapses.
                              "ImpulseTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ]
                            },

                            // The map global ID that this warzone scenario pertains to. Found in
                            // metadata
                            "MapId": "guid",

                            // The ID of the game base variant. Game base variants are available via
                            // the Metadata API.
                            "GameBaseVariantId": "guid",

                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [
                                  "int"
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // Total number of kills done by the player. This includes melee kills,
                        // shoulder bash kills and Spartan charge kills, all power weapons, AI kills
                        // and vehicle destructions. 
                        "TotalKills": "int",

                        // Total number of headshots done by the player.
                        "TotalHeadshots": "int",

                        // Total weapon damage dealt by the player.
                        "TotalWeaponDamage": "double",

                        // Total number of shots fired by the player.
                        "TotalShotsFired": "int",

                        // Total number of shots landed by the player.
                        "TotalShotsLanded": "int",

                        // The weapon the player used to get the most kills.
                        "WeaponWithMostKills": {

                          "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                            "StockId": "int",

                            // Any attachments the weapon had.
                            "Attachments": [
                              "int"
                            ]
                          },

                          // The number of shots fired for this weapon.
                          "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                          "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                          "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                          "TotalKills": "int",

                          // The total damage dealt for this weapon.
                          "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                          "TotalPossessionTime": "string"
                        },

                        // Total number of melee kills by the player.
                        "TotalMeleeKills": "int",

                        // Total melee damage dealt by the player.
                        "TotalMeleeDamage": "double",

                        // Total number of assassinations by the player.
                        "TotalAssassinations": "int",

                        // Total number of ground pound kills by the player.
                        "TotalGroundPoundKills": "int",

                        // Total ground pound damage dealt by the player.
                        "TotalGroundPoundDamage": "double",

                        // Total number of shoulder bash kills by the player.
                        "TotalShoulderBashKills": "int",

                        // Total shoulder bash damage dealt by the player.
                        "TotalShoulderBashDamage": "double",

                        // Total grenade damage dealt by the player.
                        "TotalGrenadeDamage": "double",

                        // Total number of power weapon kills by the player.
                        "TotalPowerWeaponKills": "int",

                        // Total power weapon damage dealt by the player.
                        "TotalPowerWeaponDamage": "double",

                        // Total number of power weapon grabs by the player.
                        "TotalPowerWeaponGrabs": "int",

                        // Total power weapon possession by the player. This is expressed as an ISO
                        // 8601 Duration.
                        "TotalPowerWeaponPossessionTime": "string",

                        // Total number of deaths by the player.
                        "TotalDeaths": "int",

                        // Total number of assists by the player.
                        "TotalAssists": "int",

                        // Total number of games the player has completed.
                        "TotalGamesCompleted": "int",

                        // Total number of games won by the player.
                        "TotalGamesWon": "int",

                        // Total number of games lost by the player.
                        "TotalGamesLost": "int",

                        // Total number of games tied by the player.
                        "TotalGamesTied": "int",

                        // Total timed played by the player.
                        "TotalTimePlayed": "string",

                        // Total number of grenade kills by the player.
                        "TotalGrenadeKills": "int",

                        // The set of Medals earned by the player.
                        "MedalAwards": [
                          {
                            // The ID of the Medal. Medals are available via the Metadata API.
                            "MedalId": "int",

                            // The number of times the Medal was earned.
                            "Count": "int"
                          }
                        ], 

                        // List of enemy vehicles destroyed. Vehicles are available via the Metadata
                        // API. Note: this stat measures enemy vehicles, not any vehicle destruction.
                        "DestroyedEnemyVehicles": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // List of enemies killed, per enemy type. Enemies are available via the
                        // Metadata API.
                        "EnemyKills": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // The set of weapons (weapons and vehicles included) used by the player.
                        "WeaponStats": [
                          {
                            "WeaponId": {

                              // The ID of the weapon. Weapons are available via the Metadata API.
                              "StockId": "int",

                              // Any attachments the weapon had.
                              "Attachments": [ 
                                "int" 
                              ]
                            },

                            // The number of shots fired for this weapon.
                            "TotalShotsFired": "int",

                            // The number of shots landed for this weapon.
                            "TotalShotsLanded": "int",

                            // The number of headshots for this weapon.
                            "TotalHeadshots": "int",

                            // The number of kills for this weapon.
                            "TotalKills": "int",

                            // The total damage dealt for this weapon.
                            "TotalDamageDealt": "double",

                            // The total possession time for this weapon. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPossessionTime": "string"
                          }
                        ],

                        // The set of Impulses (invisible Medals) earned by the player.
                        "Impulses": [
                          {
                            // The ID of the Impulse. Impulses are available via the Metadata API.
                            "Id": "int",

                            // The number of times the Impulse was earned.
                            "Count": "int"
                          }
                        ],

                        // Total number of Spartan kills by the player.
                        "TotalSpartanKills": "int"
                      },

                      // Information about the player for whom this data was returned.
                      "PlayerId": {

                        // The gamertag of the player queried.
                        "GamerTag": "string",

                        // Internal use only. This will always be null.
                        "Xuid": null
                      },

                      // The player's Spartan Rank.
                      "SpartanRank": "int",

                      // The player's XP.
                      "Xp": "int"
                    }
                  }
                ],

                // Internal use only. A set of related resource links.
                "Links": null
              }
        "404":
          description: One or more Gamertags don't pass validation rules.
        "500":
          description: Internal Server Error
      summary: Halo 5 - Player Service Records - Warzone
  "/h5/warzone/matches/{matchId}":
    get:
      description: |
        <p>Retrieves detailed statistics for a Match with the Warzone Game Mode.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Post-Game Carnage Report: Warzone" to "Halo 5 - Match Result - Warzone".</li>
                <li>Removed "{title}" Request Parameter.</li>
                <li>Updated the documentation for "GameVariantResourceId" and "MapVariantResourceId" to reference the UGC API.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 16, 2016:</strong></p>
            <ul>
                <li>Documented HTTP 503 Response Code.</li>
                <li>Added documentation for the "MatchSpeedWinAmount", "ObjectivesCompletedAmount", and "BoostData" fields.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added documentation for the "GameVariantResourceId", "MapVariantResourceId", and "PlayerScore" fields.</li>
                <li>Updated the documentation for the "MapVariantId" and "GameVariantId" fields with the recommendation of using the "MapVariantResourceId" and "GameVariantResourceId" fields, respectively.</li>
            </ul>
        </div>
      operationId: Halo-5-Match-Result-Warzone
      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
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // A list of stats for each player who was present in the match.
                "PlayerStats": [
                  {
                    // The experience information for the player in this match.
                    "XpInfo": {

                      // The player's Spartan Rank before the match started.
                      "PrevSpartanRank": "int",

                      // The player's Spartan Rank after the match ended.
                      "SpartanRank": "int",

                      // The player's XP before the match started.
                      "PrevTotalXP": "int",

                      // The player's XP after the match ended.
                      "TotalXP": "int",

                      // The multiplier on the XP earned this match based on their Spartan Rank when
                      // the match ended.
                      "SpartanRankMatchXPScalar": "double",

                      // The portion of the XP the player earned this match that was based on how much
                      // time was spent in-match.
                      "PlayerTimePerformanceXPAward": "int",

                      // The XP awarded to the player based on how their team ranked when the match
                      // concluded.
                      "PerformanceXP": "int",

                      // The XP awarded to the player for their team-agnostic rank.
                      "PlayerRankXPAward": "int",

                      // The amount of XP the player earned if they played a boost card for this match,
                      // and the boost card criteria was met. This is a fixed amount of XP, not a
                      // multiplier.
                      "BoostAmount": "int",

                      // The amount of XP the player earned for finishing the match quickly.
                      "MatchSpeedWinAmount": "int",

                      // The amount of XP the player earned for completing objectives.
                      "ObjectivesCompletedAmount": "int"
                    },

                    // The number of times the player killed each opponent. If the player did not kill
                    // an opponent, there will be no entry for that opponent.
                    "KilledOpponentDetails": [
                      {
                        // The gamertag of the opponent that was killed.
                        "GamerTag": "string",

                        // The number of times that opponent was killed.
                        "TotalKills": "int"
                      }
                    ],

                    // The number of times the player was killed by each opponent. If the player was
                    // not killed by an opponent, there will be no entry for that opponent.
                    "KilledByOpponentDetails": [
                      {
                        // The gamertag of the opponent that killed the player.
                        "GamerTag": "string",

                        // The number of times the opponent killed the player.
                        "TotalKills": "int"
                      }
                    ],

                    // The maximum level the player achieved in the match.
                    "WarzoneLevel": "int",

                    // The total number of "pies" (in-game currency) the player earned in the match.
                    "TotalPiesEarned": "int",

                    // The game base variant specific stats for this match. Flexible stats are
                    // available via the Metadata API.
                    "FlexibleStats": {

                      // The set of flexible stats that are derived from medal events.
                      "MedalStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from impulse events.
                      "ImpulseStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from medal time lapses.
                      "MedalTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ],        

                      // The set of flexible stats that are derived from impulse time lapses.
                      "ImpulseTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ]
                    },

                    // The set of rewards that the player got in this match. Rewards are available via
                    // the Metadata API.
                    "RewardSets": [
                      {
                        // The ID of the reward.
                        "RewardSet": "guid",

                        // The source of the reward. Options are:
                        //   None = 0,
                        //   Meta Commendation = 1,
                        //   Progress Commendation = 2,
                        //   Spartan Rank = 3
                        "RewardSourceType": "int",

                        // If the Reward Source is Spartan Rank, this value is set to the Spartan Rank
                        // the player acquired that led to this reward being granted. Note: Unlike the
                        // commendations fields in this structure, this is not the GUID to a Spartan
                        // Rank content item. That's because the Spartan Rank content item itself does
                        // not detail what specific Spartan Rank it pertains to - this information is
                        // derived from the list of Spartan Ranks as a whole. 
                        "SpartanRankSource": "int",

                        // If the Reward Source is a Commendation, this is the ID of the level of the
                        // commendation that earned the reward.
                        "CommendationLevelId": "guid",

                        // If the Reward Source is a Meta Commendation or Progress Commendation, this
                        // is the ID of the Meta Commendation or Progress Commendation, respectively,
                        // that earned the reward.
                        "CommendationSource": "guid"
                      },

                    ],

                    // Details on any credits the player may have earned from playing this match.
                    "CreditsEarned": {

                      // Indicates how the credits result was arrived at. Options are:
                      //   Credits Disabled In Playlist = 0,
                      //   Player Did Not Finish = 1,
                      //   Credits Earned = 2
                      // Credits Disabled In Playlist: TotalCreditsEarned is zero because this playlist
                      // has credits disabled.
                      // Player Did Not Finish: Credits are enabled in this playlist, but
                      // TotalCreditsEarned is zero because the player did not finish the match.
                      // Credits Earned: Credits are enabled in this playlist and the player completed
                      // the match, so the credits formula was successfully evaluated. The fields below
                      // provide the client with the values used in the formula. Note: That if we used
                      // one or more default values, we still return "NormalResult". The fields below
                      // will confirm the actual values used.
                      "Result": "int",

                      // The total number of credits the player earned from playing this match.
                      "TotalCreditsEarned": "int",

                      // The scalar applied to the credits earned based on the player's Spartan Rank.
                      "SpartanRankModifier": "double",

                      // The portion of credits earned due to the player's team-agnostic rank in the
                      // match.
                      "PlayerRankAmount": "int",

                      // The portion of credits earned due to the time the player played in the match.
                      "TimePlayedAmount": "double",

                      // The portion of credits earned due to the boost card the user applied
                      "BoostAmount": "int"
                    },

                    // The player's progress towards meta commendations. Commendations that had no
                    // progress earned this match will not be returned. 
                    "MetaCommendationDeltas": [
                      {
                        // The commendation ID. Commendations are available via the Metadata API.
                        "Id": "guid",

                        // The progress the player had made towards the commendation level before the
                        // match. In C#, this can be reassembled into a Guid in the following manner:
                        // new Guid((int)Data1, (short)Data2, (short)Data3,
                        // BitConverter.GetBytes((long)Data4)).
                        "PreviousMetRequirements": [
                          {
                            "Data1": "int",

                            "Data2": "int",

                            "Data3": "int",

                            "Data4": "int"
                          }
                        ],

                        // The progress the player had made towards the commendation level after the
                        // match. In C#, this can be reassembled into a Guid in the following manner:
                        // new Guid((int)Data1, (short)Data2, (short)Data3,
                        // BitConverter.GetBytes((long)Data4)).
                        "MetRequirements": [
                          {
                            "Data1": "int",

                            "Data2": "int",

                            "Data3": "int",

                            "Data4": "int"
                          }
                        ]
                      }
                    ],

                    // The player's progress towards progressive commendations. Commendations that had
                    // no progress earned this match will not be returned.
                    "ProgressiveCommendationDeltas": [
                      {
                        // The commendation ID. Commendations are available via the Metadata API.
                        "Id": "guid",

                        // The progress the player had made towards the commendation level before the
                        // match.
                        "PreviousProgress": "int",

                        // The progress the player had made towards the commendation level after the
                        // match.
                        "Progress": "int"
                      }
                    ],

                    // Details on the boost card the user used in this match. If the user did not use a
                    // boost card this field will be null.
                    "BoostData": {

                      // The identifier of the boost card that was used. Boost cards are available via
                      // the Requisitions Metadata API.
                      "DefinitionId": "guid",

                      // Whether the card was consumed because its conditions were met. If not consumed
                      // the card is returned to the user's inventory.
                      "CardConsumed": "bool"
                    },

                    "Player": {

                       // The player's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The ID of the team that the player was on when the match ended. 
                    "TeamId": "int",

                    // The player's team-agnostic ranking.
                    "Rank": "int",

                    // Indicates whether the player was present in the match when it ended.
                    "DNF": "boolean",

                    // The player's average lifetime.
                    "AvgLifeTimeOfPlayer": "string",

                    // Internal use only. This will always be null.
                    "PreMatchRatings": null,

                    // Internal use only. This will always be null.
                    "PostMatchRatings": null,

                    // The score for the player if this was a Warzone Firefight match. Otherwise, this
                    // is unused and will usually be null or contain invalid data.
                    "PlayerScore": null,

                    // Total number of kills done by the player. This includes melee kills, shoulder
                    // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle
                    // destructions. 
                    "TotalKills": "int",

                    // Total number of headshots done by the player.
                    "TotalHeadshots": "int",

                    // Total weapon damage dealt by the player.
                    "TotalWeaponDamage": "double",

                    // Total number of shots fired by the player.
                    "TotalShotsFired": "int",

                    // Total number of shots landed by the player.
                    "TotalShotsLanded": "int",

                    // The weapon the player used to get the most kills this match.
                    "WeaponWithMostKills": {

                      "WeaponId": {

                        // The ID of the weapon. Weapons are available via the Metadata API.
                        "StockId": "int",

                        // Any attachments the weapon had.
                        "Attachments": [ "int" ]
                      },

                      // The number of shots fired for this weapon.
                      "TotalShotsFired": "int",

                      // The number of shots landed for this weapon.
                      "TotalShotsLanded": "int",

                      // The number of headshots for this weapon.
                      "TotalHeadshots": "int",

                      // The number of kills for this weapon.
                      "TotalKills": "int",

                      // The total damage dealt for this weapon.
                      "TotalDamageDealt": "double",

                      // The total possession time for this weapon. This is expressed as an ISO 8601
                      // Duration.
                      "TotalPossessionTime": "string"
                    },

                    // Total number of melee kills by the player.
                    "TotalMeleeKills": "int",

                    // Total melee damage dealt by the player.
                    "TotalMeleeDamage": "double",

                    // Total number of assassinations by the player.
                    "TotalAssassinations": "int",

                    // Total number of ground pound kills by the player.
                    "TotalGroundPoundKills": "int",

                    // Total ground pound damage dealt by the player.
                    "TotalGroundPoundDamage": "double",

                    // Total number of shoulder bash kills by the player.
                    "TotalShoulderBashKills": "int",

                    // Total shoulder bash damage dealt by the player.
                    "TotalShoulderBashDamage": "double",

                    // Total grenade damage dealt by the player.
                    "TotalGrenadeDamage": "double",

                    // Total number of power weapon kills by the player.
                    "TotalPowerWeaponKills": "int",

                    // Total power weapon damage dealt by the player.
                    "TotalPowerWeaponDamage": "double",

                    // Total number of power weapon grabs by the player.
                    "TotalPowerWeaponGrabs": "int",

                    // Total power weapon possession by the player. This is expressed as an ISO 8601
                    // Duration.
                    "TotalPowerWeaponPossessionTime": "string",

                    // Total number of deaths by the player.
                    "TotalDeaths": "int",

                    // Total number of assists by the player.
                    "TotalAssists": "int",

                    // Not used.
                    "TotalGamesCompleted": "int",

                    // Not used.
                    "TotalGamesWon": "int",

                    // Not used.
                    "TotalGamesLost": "int",

                    // Not used.
                    "TotalGamesTied": "int",

                    // Total timed played in this match by the player.
                    "TotalTimePlayed": "string",

                    // Total number of grenade kills by the player.
                    "TotalGrenadeKills": "int",

                    // The set of Medals earned by the player.
                    "MedalAwards": [
                      {
                        // The ID of the Medal. Medals are available via the Metadata API.
                        "MedalId": "int",

                        // The number of times the Medal was earned.
                        "Count": "int"
                      }
                    ], 

                    // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.
                    // Note: this stat measures enemy vehicles, not any vehicle destruction.
                    "DestroyedEnemyVehicles": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // List of enemies killed, per enemy type. Enemies are available via the Metadata
                    // API.
                    "EnemyKills": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // The set of weapons (weapons and vehicles included) used by the player.
                    "WeaponStats": [
                      {
                        "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                          "StockId": "int",

                            // Any attachments the weapon had.
                          "Attachments": [ 
                            "int" 
                          ]
                        },

                          // The number of shots fired for this weapon.
                        "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                        "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                        "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                        "TotalKills": "int",

                          // The total damage dealt for this weapon.
                        "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                        "TotalPossessionTime": "string"
                      }
                    ],

                    // The set of Impulses (invisible Medals) earned by the player.
                    "Impulses": [
                      {
                        // The ID of the Impulse. Impulses are available via the Metadata API.
                        "Id": "int",

                        // The number of times the Impulse was earned.
                        "Count": "int"
                      }
                    ],

                    // Total number of Spartan kills by the player.
                    "TotalSpartanKills": "int"
                  }
                ],

                // A list of stats for each team who in the match. Note that in Free For All modes,
                // there is an entry for every player.
                "TeamStats": [
                  {
                    // The ID for the team.
                    "TeamId": "int",

                    // The team's score at the end of the match. The way the score is determined is
                    // based off the game base variant being played: 
                    //   Breakout = number of rounds won,
                    //   CTF = number of flag captures,
                    //   Slayer = number of kills,
                    //   Strongholds = number of points,
                    //   Warzone = number of points.
                    // Score can be a negative value. Unfortunately, this value is returned as an
                    // unsigned 32-bit integer. This means that if the score is -1, the score reported
                    // is 4,294,967,295.
                    "Score": "uint32",

                    // The team's rank at the end of the match.
                    "Rank": "int",

                    // The set of round stats for the team.
                    "RoundStats": [
                      {
                        // The round number this entry pertains to.
                        "RoundNumber": "int",

                        // The end rank for the team this round.
                        "Rank": "int",

                        // The end score for the team this round.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                      }
                    ]
                  }
                ],

                // The number of objective rounds successfully completed if the game base variant is
                // Firefight, null otherwise.
                "ObjectivesCompleted": "int",

                // Indicates if the match is completed or not. Some match details are available while
                // the match is in-progress, but the behavior for incomplete matches in undefined.
                "IsMatchOver": "boolean",

                // The length of the match. This is expressed as an ISO 8601 Duration.
                "TotalDuration": "string",

                // The variant of the map for this match. Map variants are available via the Metadata
                // API. More information is available in MapVariantResourceId.
                "MapVariantId": "guid",

                // The variant of the game for this match. Game variants are available via the Metadata
                // API. More information is available in GameVariantResourceId.
                "GameVariantId": "guid",

                // The playlist ID of the match. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // The ID of the base map for this match. Maps are available via the Metadata API.
                "MapId": "guid",

                // The ID of the game base variant for this match. Game base variants are available via
                // the Metadata API.
                "GameBaseVariantId": "guid",

                // Whether this was a team-based game or not.
                "IsTeamGame": "boolean",

                // Unused for Warzone matches. This will always be null.
                "SeasonId": null,

                // The variant of the game for this match. There are two sources of game variants:
                // official game variants available via the Metadata API and user-generated game
                // variants available via the UGC API.
                "GameVariantResourceId": {

                  // The resource type. 2 indicates game variant.
                  "ResourceType": 2,

                  // The ID of the game variant. Official game variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",        

                  // The source of the game variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the game variant if this is a user-generated
                  // game variant, or null otherwise. 
                  "Owner": "string"
                },

                // The variant of the map for this match. There are two sources of map variants:
                // official map variants available via the Metadata API and user-generated map variants
                // available via the UGC API.
                "MapVariantResourceId": {

                  // The resource type. 3 indicates map variant.
                  "ResourceType": 3,

                  // The ID of the map variant. Official map variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",

                  // The source of the map variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the map variant if this is a user-generated
                  // map variant, or null otherwise. 
                  "Owner": "string"
                }
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 - Match Result - Warzone
  "/h5pc/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>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 12, 2018:</strong></p>
            <ul>
                <li>Updated the documentation for "PlayerScore".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
                <li>Added documentation for "PresentInMatch".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Post-Game Carnage Report: Custom" to "Halo 5 - Match Result - Custom".</li>
                <li>Removed "{title}" Request Parameter.</li>
                <li>Updated the documentation for "GameVariantResourceId" and "MapVariantResourceId" to reference the UGC API.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>May 16, 2016:</strong></p>
            <ul>
                <li>Documented HTTP 503 Response Code.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Added documentation for the "GameVariantResourceId", "MapVariantResourceId", and "PlayerScore" fields.</li>
                <li>Updated the documentation for the "MapVariantId" and "GameVariantId" fields with the recommendation of using the "MapVariantResourceId" and "GameVariantResourceId" fields, respectively.</li>
            </ul>
        </div>
      operationId: Halo-5-PC-Match-Result-Custom
      parameters:
        - description: An ID that uniquely identifies a Match. Match IDs can be retrieved from the "Halo 5 PC - Player Match History" Endpoint.
          in: path
          name: matchId
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // A list of stats for each player who was present in the match.
                "PlayerStats": [
                  {
                    // The number of times the player killed each opponent. If the player did not kill
                    // an opponent, there will be no entry for that opponent.
                    "KilledOpponentDetails": [
                      {
                        // The gamertag of the opponent that was killed.
                        "GamerTag": "string",

                        // The number of times that opponent was killed.
                        "TotalKills": "int"
                      }
                    ],

                    // The number of times the player was killed by each opponent. If the player was
                    // not killed by an opponent, there will be no entry for that opponent.
                    "KilledByOpponentDetails": [
                      {
                        // The gamertag of the opponent that killed the player.
                        "GamerTag": "string",

                        // The number of times the opponent killed the player.
                        "TotalKills": "int"
                      }
                    ],

                    // The game base variant specific stats for this match. Flexible stats are
                    // available via the Metadata API.
                    "FlexibleStats": {

                      // The set of flexible stats that are derived from medal events.
                      "MedalStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from impulse events.
                      "ImpulseStatCounts": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The number of times this flexible stat was earned.
                          "Count": "int"
                        }
                      ],

                      // The set of flexible stats that are derived from medal time lapses.
                      "MedalTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ],        

                      // The set of flexible stats that are derived from impulse time lapses.
                      "ImpulseTimelapses": [
                        {
                          // The ID of the flexible stat.
                          "Id": "guid",

                          // The amount of time the flexible stat was earned for. This is expressed as
                          // an ISO 8601 Duration.
                          "Timelapse": "string"
                        }
                      ]
                    },

                    // Internal use only.
                    "PresentInMatch": "boolean",

                    "Player": {

                       // The player's gamertag.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The ID of the team that the player was on when the match ended. 
                    "TeamId": "int",

                    // The player's team-agnostic ranking.
                    "Rank": "int",

                    // Indicates whether the player was present in the match when it ended.
                    "DNF": "boolean",

                    // The player's average lifetime.
                    "AvgLifeTimeOfPlayer": "string",

                    // Internal use only. This will always be null.
                    "PreMatchRatings": null,

                    // Internal use only. This will always be null.
                    "PostMatchRatings": null,

                    // The Player's Score. This is not used by all Game Variants and may contain null
                    // or invalid data.
                    "PlayerScore": "int",

                    // Total number of kills done by the player. This includes melee kills, shoulder
                    // bash kills and Spartan charge kills, all power weapons, AI kills and vehicle
                    // destructions. 
                    "TotalKills": "int",

                    // Total number of headshots done by the player.
                    "TotalHeadshots": "int",

                    // Total weapon damage dealt by the player.
                    "TotalWeaponDamage": "double",

                    // Total number of shots fired by the player.
                    "TotalShotsFired": "int",

                    // Total number of shots landed by the player.
                    "TotalShotsLanded": "int",

                    // The weapon the player used to get the most kills this match.
                    "WeaponWithMostKills": {

                      "WeaponId": {

                        // The ID of the weapon. Weapons are available via the Metadata API.
                        "StockId": "int",

                        // Any attachments the weapon had.
                        "Attachments": [ "int" ]
                      },

                      // The number of shots fired for this weapon.
                      "TotalShotsFired": "int",

                      // The number of shots landed for this weapon.
                      "TotalShotsLanded": "int",

                      // The number of headshots for this weapon.
                      "TotalHeadshots": "int",

                      // The number of kills for this weapon.
                      "TotalKills": "int",

                      // The total damage dealt for this weapon.
                      "TotalDamageDealt": "double",

                      // The total possession time for this weapon. This is expressed as an ISO 8601
                      // Duration.
                      "TotalPossessionTime": "string"
                    },

                    // Total number of melee kills by the player.
                    "TotalMeleeKills": "int",

                    // Total melee damage dealt by the player.
                    "TotalMeleeDamage": "double",

                    // Total number of assassinations by the player.
                    "TotalAssassinations": "int",

                    // Total number of ground pound kills by the player.
                    "TotalGroundPoundKills": "int",

                    // Total ground pound damage dealt by the player.
                    "TotalGroundPoundDamage": "double",

                    // Total number of shoulder bash kills by the player.
                    "TotalShoulderBashKills": "int",

                    // Total shoulder bash damage dealt by the player.
                    "TotalShoulderBashDamage": "double",

                    // Total grenade damage dealt by the player.
                    "TotalGrenadeDamage": "double",

                    // Total number of power weapon kills by the player.
                    "TotalPowerWeaponKills": "int",

                    // Total power weapon damage dealt by the player.
                    "TotalPowerWeaponDamage": "double",

                    // Total number of power weapon grabs by the player.
                    "TotalPowerWeaponGrabs": "int",

                    // Total power weapon possession by the player. This is expressed as an ISO 8601
                    // Duration.
                    "TotalPowerWeaponPossessionTime": "string",

                    // Total number of deaths by the player.
                    "TotalDeaths": "int",

                    // Total number of assists by the player.
                    "TotalAssists": "int",

                    // Not used.
                    "TotalGamesCompleted": "int",

                    // Not used.
                    "TotalGamesWon": "int",

                    // Not used.
                    "TotalGamesLost": "int",

                    // Not used.
                    "TotalGamesTied": "int",

                    // Total timed played in this match by the player.
                    "TotalTimePlayed": "string",

                    // Total number of grenade kills by the player.
                    "TotalGrenadeKills": "int",

                    // The set of Medals earned by the player.
                    "MedalAwards": [
                      {
                        // The ID of the Medal. Medals are available via the Metadata API.
                        "MedalId": "int",

                        // The number of times the Medal was earned.
                        "Count": "int"
                      }
                    ], 

                    // List of enemy vehicles destroyed. Vehicles are available via the Metadata API.
                    // Note: this stat measures enemy vehicles, not any vehicle destruction.
                    "DestroyedEnemyVehicles": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // List of enemies killed, per enemy type. Enemies are available via the Metadata
                    // API.
                    "EnemyKills": [
                      {
                        // The enemy this entry references
                        "Enemy": {

                          // The Base ID for the enemy.
                          "BaseId": "int",

                          // The attachments (variants) for the enemy.
                          "Attachments": [
                            "int"
                          ]
                        },

                        // Total number of kills on the enemy by the player
                        "TotalKills": "int"
                      }
                    ],

                    // The set of weapons (weapons and vehicles included) used by the player.
                    "WeaponStats": [
                      {
                        "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                          "StockId": "int",

                            // Any attachments the weapon had.
                          "Attachments": [ 
                            "int" 
                          ]
                        },

                          // The number of shots fired for this weapon.
                        "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                        "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                        "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                        "TotalKills": "int",

                          // The total damage dealt for this weapon.
                        "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                        "TotalPossessionTime": "string"
                      }
                    ],

                    // The set of Impulses (invisible Medals) earned by the player.
                    "Impulses": [
                      {
                        // The ID of the Impulse. Impulses are available via the Metadata API.
                        "Id": "int",

                        // The number of times the Impulse was earned.
                        "Count": "int"
                      }
                    ],

                    // Total number of Spartan kills by the player.
                    "TotalSpartanKills": "int"
                  },

                ],

                // A list of stats for each team who in the match. Note that in Free For All modes,
                // there is an entry for every player.
                "TeamStats": [
                  {
                    // The ID for the team.
                    "TeamId": "int",

                    // The team's score at the end of the match. The way the score is determined is
                    // based off the game base variant being played: 
                    //   Breakout = number of rounds won,
                    //   CTF = number of flag captures,
                    //   Slayer = number of kills,
                    //   Strongholds = number of points,
                    //   Warzone = number of points.
                    // Score can be a negative value. Unfortunately, this value is returned as an
                    // unsigned 32-bit integer. This means that if the score is -1, the score reported
                    // is 4,294,967,295.
                    "Score": "uint32",

                    // The team's rank at the end of the match.
                    "Rank": "int",

                    // The set of round stats for the team.
                    "RoundStats": [
                      {
                        // The round number this entry pertains to.
                        "RoundNumber": "int",

                        // The end rank for the team this round.
                        "Rank": "int",

                        // The end score for the team this round.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                      }
                    ]
                  }
                ],

                // Indicates if the match is completed or not. Some match details are available while
                // the match is in-progress, but the behavior for incomplete matches in undefined.
                "IsMatchOver": "boolean",

                // The length of the match. This is expressed as an ISO 8601 Duration.
                "TotalDuration": "string",

                // The variant of the map for this match. Map variants are available via the Metadata
                // API. More information is available in MapVariantResourceId.
                "MapVariantId": "guid",

                // The variant of the game for this match. Game variants are available via the Metadata
                // API. More information is available in GameVariantResourceId.
                "GameVariantId": "guid",

                // The playlist ID of the match. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // The ID of the base map for this match. Maps are available via the Metadata API.
                "MapId": "guid",

                // The ID of the game base variant for this match. Game base variants are available via
                // the Metadata API.
                "GameBaseVariantId": "guid",

                // Whether this was a team-based game or not.
                "IsTeamGame": "boolean",

                // Unused for Custom matches. This will always be null.
                "SeasonId": null,

                // The variant of the game for this match. There are two sources of game variants:
                // official game variants available via the Metadata API and user-generated game
                // variants are available via the UGC API.
                "GameVariantResourceId": {

                  // The resource type. 2 indicates game variant.
                  "ResourceType": 2,

                  // The ID of the game variant. Official game variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",        

                  // The source of the game variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the game variant if this is a user-generated
                  // game variant, or null otherwise. 
                  "Owner": "string"
                },

                // The variant of the map for this match. There are two sources of map variants:
                // official map variants available via the Metadata API and user-generated map variants
                // available vai the UGC API.
                "MapVariantResourceId": {

                  // The resource type. 3 indicates map variant.
                  "ResourceType": 3,

                  // The ID of the map variant. Official map variants are available via the Metadata
                  // API.
                  "ResourceId": "guid",

                  // The source of the map variant. Options are:
                  //   Unknown = 0,
                  //   User-generated = 1,
                  //   Official = 3.
                  "OwnerType": "int",

                  // The gamertag of the user that created the map variant if this is a user-generated
                  // map variant, or null otherwise. 
                  "Owner": "string"
                }
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 PC - Match Result - Custom
  "/h5pc/players/{player}/matches":
    get:
      description: |
        <p>Retrieves a list of Matches that the Player has participated in and which have completed processing. If the Player is currently in a match, it is not returned in this API.</p>
        <p>This endpoint will include games played on Local Servers with the Custom Local Game Mode for games that occurred or after December 22, 2017.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>February 1, 2019:</strong></p>
            <ul>
                <li>Enabled support for viewing the time component of the "MatchCompletedDate" via the "{include-times}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added support for the Custom Local Game mode.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Matches for Player" to "Halo 5 - Player Match History".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>April 20, 2016:</strong></p>
            <ul>
                <li>Clarified documentation for the "MapVariant" and "GameVariant" fields.</li>
                <li>Corrected "OwnerType" values for the "MapVariant" and "GameVariant" fields.</li>
            </ul>
        </div>
      operationId: Halo-5-PC-Player-Match-History
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
        - description: |-
            Indicates what Game Mode(s) the client is interested in getting Matches for (arena, campaign, custom, or warzone).

            When the parameter is omitted or empty, Matches from all modes are returned. When a client would like to receive Matches spanning multiple Modes, separate the Modes with a comma (e.g. "arena,custom"). There is no significance to the order the Modes are specified in this parameter.

            When an invalid Mode is specified, HTTP 400 ("Bad Request") is returned.

            When a valid Mode is specified more than once, HTTP 400 ("Bad Request") is returned.
          in: query
          name: modes
          type: string
        - description: |-
            When specified, this indicates the starting index (0-based) for which the batch of results will begin at. For example, "start=0" indicates that the first qualifying result will be returned, no items are 'skipped'. Passing "start=10" indicates that the result will begin with the 11th item, the first 10 will be 'skipped'.

            When omitted, zero is assumed.

            When the value contains a non-digit, HTTP 400 ("Bad Request") is returned.
          in: query
          name: start
          type: number
        - description: |-
            When specified, this indicates the maximum quantity of items the client would like returned in the response.

            When omitted, 25 is assumed.

            When the value contains a non-digit or is exactly "0", HTTP 400 ("Bad Request") is returned.

            When the value is greater than the allowed range [1,25], the maximum allowed value is used instead. The "Count" field in the response will confirm the actual value that was used.
          in: query
          name: count
          type: number
        - description: |-
            When set to "true", this indicates that the time component of the "MatchCompletedDate" field should be populated.

            Otherwise, when set to "false" or when omitted, the time component will be set to "00:00:00".

            When the value contains a non-boolean, HTTP 400 ("Bad Request") is returned.
          in: query
          name: include-times
          type: boolean
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Player's recent Matches. An empty list will be returned if the Player has not played any Matches in the specified Game Mode(s).
          examples:
            application/json: |
              {
                // The starting point that was used. When the "start" query string parameter is
                // specified, this value is identical. When "start" is omitted, the default value is
                // returned.
                "Start": "int",  

                // The number of results that the service attempted to retrieve to satisfy this
                // request. Normally this value is equal to the "count" parameter. If the client
                // specified a count parameter greater than the maximum allowed, this value contains
                // the maximum allowed amount.
                "Count": "int",

                // The number of results that are actually being returned in this response. This field
                // is named "ResultCount" to avoid confusion with "Count".
                "ResultCount": "int",

                // A list of recent matches. Matches are listed in reverse chronological order with the
                // most recently started match first.
                "Results": [
                  {
                    // Internal use only. A set of related resource links.
                    "Links": "links",

                    "Id": {

                      // The ID for this match. More match details are available via the applicable
                      // Match Result Endpoint.
                      "MatchId": "guid",

                      // The game mode applicable to this match. Options are: 
                      //   Error = 0, 
                      //   Arena = 1, 
                      //   Campaign = 2, 
                      //   Custom = 3, 
                      //   Warzone = 4,
                      //   CustomLocal = 6.
                      "GameMode": "int",

                    },

                    // The ID of the playlist (aka "Hopper") for the match. 
                    // Hoppers are used in Arena and Warzone. In Arena, they function just as you would
                    // expect, similar to previous Halo titles. Warzone uses hoppers as well. There
                    // will be multiple Warzone hoppers which contain a rotating playlist of scenarios
                    // to play. 
                    // Null for campaign & custom games. 
                    // Playlists are available via the Metadata API.
                    "HopperId": "guid",

                    // The ID of the base map for this match. Maps are available via the Metadata API.
                    "MapId": "guid",

                    // The variant of the map for this match. There are two sources of map variants:
                    // official map variants available via the Metadata API and user-generated map
                    // variants which are not available via the APIs currently. This will be null for
                    // campaign games.
                    "MapVariant": {

                      // The resource type. 3 indicates map variant.
                      "ResourceType": 3,

                      // The ID of the map variant. Official map variants are available via the
                      // Metadata API.
                      "ResourceId": "guid",

                      // The source of the map variant. Options are:
                      //   Unknown = 0,
                      //   User-generated = 1,
                      //   Official = 3.
                      "OwnerType": "int",

                      // The gamertag of the user that created the map variant if this is a
                      // user-generated map variant, or null otherwise. 
                      "Owner": "string"
                    },

                    // The ID of the game base variant for this match. Game base variants are available
                    // via the Metadata API.
                    "GameBaseVariantId": "guid",

                    // The variant of the game for this match. There are two sources of game variants:
                    // official game variants available via the Metadata API and user-generated game
                    // variants which are not available via the APIs currently. This will be null for
                    // campaign games.
                    "GameVariant": {

                      // The resource type. 2 indicates game variant.
                      "ResourceType": 2,

                      // The ID of the game variant. Official game variants are available via the
                      // Metadata API.
                      "ResourceId": "guid",        

                      // The source of the game variant. Options are:
                      //   Unknown = 0,
                      //   User-generated = 1,
                      //   Official = 3.
                      "OwnerType": "int",

                      // The gamertag of the user that created the game variant if this is a
                      // user-generated game variant, or null otherwise. 
                      "Owner": "string"
                    },

                    // The length of the match. This is expressed as an ISO 8601 Duration.
                    "MatchDuration": "string",

                    // The date and time when the match ended. Note that this is different than the
                    // processing date, once matches end they typically take a small amount of time to
                    // process. The processing date is not available through this API. The time
                    // component of this date is set to "00:00:00" unless the "{include-times}" request
                    // parameter is set to "true". This is expressed as an ISO 8601 combined Date and
                    // Time.
                    "MatchCompletedDate": {

                      "ISO8601Date": "string"
                    },

                    // Provides team data. This list contains all team that Won or Tied. Losing teams
                    // are not included. This list is empty for campaign games. 
                    "Teams": [
                      {
                        // The ID for the team. The team's ID dictates the team's color. Team colors
                        // are available via the Metadata API.
                        "Id": "int",

                        // The team's score at the end of the match. The way the score is determined is
                        // based off the game base variant being played: 
                        //   Breakout = number of rounds won,
                        //   CTF = number of flag captures,
                        //   Slayer = number of kills,
                        //   Strongholds = number of points,
                        //   Warzone = number of points.
                        // Score can be a negative value. Unfortunately, this value is returned as an
                        // unsigned 32-bit integer. This means that if the score is -1, the score
                        // reported is 4,294,967,295.
                        "Score": "uint32",

                        // The team's rank at the end of the match.
                        "Rank": "int"
                      }
                    ],

                    // This field contains the player's data. This will only contain data for the
                    // player specified in the request.
                    "Players": [
                      {          
                        "Player": {

                          // The player's gamertag.
                          "Gamertag": "string",

                          // Internal use only. This will always be null.
                          "Xuid": null
                        },

                        // The ID of the team that the player was on when the match ended. Zero for
                        // campaign games.
                        "TeamId": "int",

                        // The player's team-agnostic ranking in this match.
                        "Rank": "int",

                        // Indicates what result the player received at the conclusion of the match.
                        // Options are:
                        //   Did Not Finish = 0, 
                        //   Lost = 1, 
                        //   Tied = 2, 
                        //   Won = 3. 
                        // Did Not Finish: The player was not present when the match ended.
                        // Lost: The player was on a team that was assigned a loss, typically this is
                        // when a team does not have rank = 1. 
                        // Won: The player was on the team that was assigned the win, typically this is
                        // the team that has rank = 1. 
                        // Tied: The player was on the team that was awarded a tie. Typically this is
                        // when the player is on the team with rank = 1, and there is at least one
                        // other team with rank = 1. Ties are only for rank = 1 teams. Consider the
                        // scenario when exactly one team is rank = 1, and two teams are rank = 2.
                        // Players on the rank=1 team will have "Won", players on the rank = 2 teams
                        // will have "Lost". For ties, this documentation states 'typically' because
                        // the game may have unique rules for multi-team and FFA scenarios, in which
                        // multiple teams are awarded a win.
                        "Result": "int",

                        // The number of enemy kills the player had during this match. This includes
                        // other Spartans and Enemy AI.
                        "TotalKills": "int",

                        // The number of times this player died during the match.
                        "TotalDeaths": "int",

                        // The number of assists credited to the player during the match. This includes
                        // other Spartans and Enemy AI.
                        "TotalAssists": "int",

                        // Internal use only. This will always be null.
                        "PreMatchRatings": null,

                        // Internal use only. This will always be null.
                        "PostMatchRatings": null
                      }
                    ],

                    // Whether this was a team-based game or not (e.g. free-for-all).
                    "IsTeamGame": "boolean",

                    // The ID of the season for this match if it was played in a seasonal playlist.
                    // Null if the match was played in a non-seasonal playlist. This will only be set
                    // for Arena matches and will be null for all other game modes.
                    "SeasonId": null,

                    // Internal use only. Do not use.
                    "MatchCompletedDateFidelity": "int"
                  }
                ]
              }
        "400":
          description: An unsupported value was provided for a query string parameter.
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 PC - Player Match History
  /h5pc/servicerecords/custom:
    get:
      description: |
        <p>Retrieves Service Records for the Custom Game Mode for one or more players. A Service Record contains a player's lifetime statistics in the Game Mode. Games with the Custom Game Mode are played on Xbox Live Servers. For games played on Local Servers, use the "Halo 5 - Player Service Records - Custom Local" Endpoint.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>December 22, 2017:</strong></p>
            <ul>
                <li>Added Game Mode clarifications to the Endpoint description.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Renamed Endpoint from "Service Record: Custom" to "Halo 5 - Player Service Records - Custom".</li>
                <li>Removed "{title}" Request Parameter.</li>
            </ul>
        </div>
      operationId: Halo-5-PC-Player-Service-Records-Custom
      parameters:
        - description: A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Service Records for the requested player(s).
          examples:
            application/json: |
              {
                // Set of responses. One per user queried.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. One of the following:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    // The Service Record result for the player. Only set if ResultCode is Success.
                    "Result": {

                      // Custom stats data.
                      "CustomStats": {

                        // List of custom stats by CustomGameBaseVariant.
                        "CustomGameBaseVariantStats": [
                          {
                            // The game base variant specific stats. Flexible stats are available via
                            // the Metadata API.
                            "FlexibleStats": {

                              // The set of flexible stats that are derived from medal events.
                              "MedalStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from impulse events.
                              "ImpulseStatCounts": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The number of times this flexible stat was earned.
                                  "Count": "int"
                                }
                              ],

                              // The set of flexible stats that are derived from medal time lapses.
                              "MedalTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ],    

                              // The set of flexible stats that are derived from impulse time lapses.
                              "ImpulseTimelapses": [
                                {
                                  // The ID of the flexible stat.
                                  "Id": "guid",

                                  // The amount of time the flexible stat was earned for. This is
                                  // expressed as an ISO 8601 Duration.
                                  "Timelapse": "string"
                                }
                              ]
                            },

                            // The ID of the game base variant. Game base variants are available via
                            // the Metadata API.
                            "GameBaseVariantId": "guid",

                            // Total number of kills done by the player. This includes melee kills,
                            // shoulder bash kills and Spartan charge kills, all power weapons, AI
                            // kills and vehicle destructions. 
                            "TotalKills": "int",

                            // Total number of headshots done by the player.
                            "TotalHeadshots": "int",

                            // Total weapon damage dealt by the player.
                            "TotalWeaponDamage": "double",

                            // Total number of shots fired by the player.
                            "TotalShotsFired": "int",

                            // Total number of shots landed by the player.
                            "TotalShotsLanded": "int",

                            // The weapon the player used to get the most kills.
                            "WeaponWithMostKills": {

                              "WeaponId": {

                                // The ID of the weapon. Weapons are available via the Metadata API.
                                "StockId": "int",

                                // Any attachments the weapon had.
                                "Attachments": [
                                  "int"
                                ]
                              },

                              // The number of shots fired for this weapon.
                              "TotalShotsFired": "int",

                              // The number of shots landed for this weapon.
                              "TotalShotsLanded": "int",

                              // The number of headshots for this weapon.
                              "TotalHeadshots": "int",

                              // The number of kills for this weapon.
                              "TotalKills": "int",

                              // The total damage dealt for this weapon.
                              "TotalDamageDealt": "double",

                              // The total possession time for this weapon. This is expressed as an ISO
                              // 8601 Duration.
                              "TotalPossessionTime": "string"
                            },

                            // Total number of melee kills by the player.
                            "TotalMeleeKills": "int",

                            // Total melee damage dealt by the player.
                            "TotalMeleeDamage": "double",

                            // Total number of assassinations by the player.
                            "TotalAssassinations": "int",

                            // Total number of ground pound kills by the player.
                            "TotalGroundPoundKills": "int",

                            // Total ground pound damage dealt by the player.
                            "TotalGroundPoundDamage": "double",

                            // Total number of shoulder bash kills by the player.
                            "TotalShoulderBashKills": "int",

                            // Total shoulder bash damage dealt by the player.
                            "TotalShoulderBashDamage": "double",

                            // Total grenade damage dealt by the player.
                            "TotalGrenadeDamage": "double",

                            // Total number of power weapon kills by the player.
                            "TotalPowerWeaponKills": "int",

                            // Total power weapon damage dealt by the player.
                            "TotalPowerWeaponDamage": "double",

                            // Total number of power weapon grabs by the player.
                            "TotalPowerWeaponGrabs": "int",

                            // Total power weapon possession by the player. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPowerWeaponPossessionTime": "string",

                            // Total number of deaths by the player.
                            "TotalDeaths": "int",

                            // Total number of assists by the player.
                            "TotalAssists": "int",

                            // Total number of games the player has completed.
                            "TotalGamesCompleted": "int",

                            // Total number of games won by the player.
                            "TotalGamesWon": "int",

                            // Total number of games lost by the player.
                            "TotalGamesLost": "int",

                            // Total number of games tied by the player.
                            "TotalGamesTied": "int",

                            // Total timed played by the player.
                            "TotalTimePlayed": "string",

                            // Total number of grenade kills by the player.
                            "TotalGrenadeKills": "int",

                            // The set of Medals earned by the player.
                            "MedalAwards": [
                              {
                                // The ID of the Medal. Medals are available via the Metadata API.
                                "MedalId": "int",

                                // The number of times the Medal was earned.
                                "Count": "int"
                              }
                            ], 

                            // List of enemy vehicles destroyed. Vehicles are available via the
                            // Metadata API. Note: this stat measures enemy vehicles, not any vehicle
                            // destruction.
                            "DestroyedEnemyVehicles": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // List of enemies killed, per enemy type. Enemies are available via the
                            // Metadata API.
                            "EnemyKills": [
                              {
                                // The enemy this entry references
                                "Enemy": {

                                  // The Base ID for the enemy.
                                  "BaseId": "int",

                                  // The attachments (variants) for the enemy.
                                  "Attachments": [
                                    "int"
                                  ]
                                },

                                // Total number of kills on the enemy by the player
                                "TotalKills": "int"
                              }
                            ],

                            // The set of weapons (weapons and vehicles included) used by the player.
                            "WeaponStats": [
                              {
                                "WeaponId": {

                                  // The ID of the weapon. Weapons are available via the Metadata API.
                                  "StockId": "int",

                                  // Any attachments the weapon had.
                                  "Attachments": [ 
                                    "int" 
                                  ]
                                },

                                // The number of shots fired for this weapon.
                                "TotalShotsFired": "int",

                                // The number of shots landed for this weapon.
                                "TotalShotsLanded": "int",

                                // The number of headshots for this weapon.
                                "TotalHeadshots": "int",

                                // The number of kills for this weapon.
                                "TotalKills": "int",

                                // The total damage dealt for this weapon.
                                "TotalDamageDealt": "double",

                                // The total possession time for this weapon. This is expressed as an
                                // ISO 8601 Duration.
                                "TotalPossessionTime": "string"
                              }
                            ],

                            // The set of Impulses (invisible Medals) earned by the player.
                            "Impulses": [
                              {
                                // The ID of the Impulse. Impulses are available via the Metadata API.
                                "Id": "int",

                                // The number of times the Impulse was earned.
                                "Count": "int"
                              }
                            ],

                            // Total number of Spartan kills by the player.
                            "TotalSpartanKills": "int"
                          }
                        ],

                        // A list of up to 3 top game base variants played by the user Top means
                        // Wins/Completed matches. If there is a tie, the one with more completions is
                        // higher. If there's still a tie, the GUIDs are sorted and selected
                        "TopGameBaseVariants": [
                          {
                            // Rank between 1-3
                            "GameBaseVariantRank": "int",

                            // Number of games played in game base variant
                            "NumberOfMatchesCompleted": "int",

                            // Id of the game base variant
                            "GameBaseVariantId": "guid",

                            // Number of matches won on game base variant
                            "NumberOfMatchesWon": "int"
                          }
                        ],

                        // Total number of kills done by the player. This includes melee kills,
                        // shoulder bash kills and Spartan charge kills, all power weapons, AI kills
                        // and vehicle destructions. 
                        "TotalKills": "int",

                        // Total number of headshots done by the player.
                        "TotalHeadshots": "int",

                        // Total weapon damage dealt by the player.
                        "TotalWeaponDamage": "double",

                        // Total number of shots fired by the player.
                        "TotalShotsFired": "int",

                        // Total number of shots landed by the player.
                        "TotalShotsLanded": "int",

                        // The weapon the player used to get the most kills.
                        "WeaponWithMostKills": {

                          "WeaponId": {

                            // The ID of the weapon. Weapons are available via the Metadata API.
                            "StockId": "int",

                            // Any attachments the weapon had.
                            "Attachments": [
                              "int"
                            ]
                          },

                          // The number of shots fired for this weapon.
                          "TotalShotsFired": "int",

                          // The number of shots landed for this weapon.
                          "TotalShotsLanded": "int",

                          // The number of headshots for this weapon.
                          "TotalHeadshots": "int",

                          // The number of kills for this weapon.
                          "TotalKills": "int",

                          // The total damage dealt for this weapon.
                          "TotalDamageDealt": "double",

                          // The total possession time for this weapon. This is expressed as an ISO
                          // 8601 Duration.
                          "TotalPossessionTime": "string"
                        },

                        // Total number of melee kills by the player.
                        "TotalMeleeKills": "int",

                        // Total melee damage dealt by the player.
                        "TotalMeleeDamage": "double",

                        // Total number of assassinations by the player.
                        "TotalAssassinations": "int",

                        // Total number of ground pound kills by the player.
                        "TotalGroundPoundKills": "int",

                        // Total ground pound damage dealt by the player.
                        "TotalGroundPoundDamage": "double",

                        // Total number of shoulder bash kills by the player.
                        "TotalShoulderBashKills": "int",

                        // Total shoulder bash damage dealt by the player.
                        "TotalShoulderBashDamage": "double",

                        // Total grenade damage dealt by the player.
                        "TotalGrenadeDamage": "double",

                        // Total number of power weapon kills by the player.
                        "TotalPowerWeaponKills": "int",

                        // Total power weapon damage dealt by the player.
                        "TotalPowerWeaponDamage": "double",

                        // Total number of power weapon grabs by the player.
                        "TotalPowerWeaponGrabs": "int",

                        // Total power weapon possession by the player. This is expressed as an ISO
                        // 8601 Duration.
                        "TotalPowerWeaponPossessionTime": "string",

                        // Total number of deaths by the player.
                        "TotalDeaths": "int",

                        // Total number of assists by the player.
                        "TotalAssists": "int",

                        // Not used.
                        "TotalGamesCompleted": "int",

                        // Not used.
                        "TotalGamesWon": "int",

                        // Not used.
                        "TotalGamesLost": "int",

                        // Not used.
                        "TotalGamesTied": "int",

                        // Total timed played by the player.
                        "TotalTimePlayed": "string",

                        // Total number of grenade kills by the player.
                        "TotalGrenadeKills": "int",

                        // The set of Medals earned by the player.
                        "MedalAwards": [
                          {
                            // The ID of the Medal. Medals are available via the Metadata API.
                            "MedalId": "int",

                            // The number of times the Medal was earned.
                            "Count": "int"
                          }
                        ], 

                        // List of enemy vehicles destroyed. Vehicles are available via the Metadata
                        // API. Note: this stat measures enemy vehicles, not any vehicle destruction.
                        "DestroyedEnemyVehicles": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // List of enemies killed, per enemy type. Enemies are available via the
                        // Metadata API.
                        "EnemyKills": [
                          {
                            // The enemy this entry references
                            "Enemy": {

                              // The Base ID for the enemy.
                              "BaseId": "int",

                              // The attachments (variants) for the enemy.
                              "Attachments": [
                                "int"
                              ]
                            },

                            // Total number of kills on the enemy by the player
                            "TotalKills": "int"
                          }
                        ],

                        // The set of weapons (weapons and vehicles included) used by the player.
                        "WeaponStats": [
                          {
                            "WeaponId": {

                              // The ID of the weapon. Weapons are available via the Metadata API.
                              "StockId": "int",

                              // Any attachments the weapon had.
                              "Attachments": [ 
                                "int" 
                              ]
                            },

                            // The number of shots fired for this weapon.
                            "TotalShotsFired": "int",

                            // The number of shots landed for this weapon.
                            "TotalShotsLanded": "int",

                            // The number of headshots for this weapon.
                            "TotalHeadshots": "int",

                            // The number of kills for this weapon.
                            "TotalKills": "int",

                            // The total damage dealt for this weapon.
                            "TotalDamageDealt": "double",

                            // The total possession time for this weapon. This is expressed as an ISO
                            // 8601 Duration.
                            "TotalPossessionTime": "string"
                          }
                        ],

                        // The set of Impulses (invisible Medals) earned by the player.
                        "Impulses": [
                          {
                            // The ID of the Impulse. Impulses are available via the Metadata API.
                            "Id": "int",

                            // The number of times the Impulse was earned.
                            "Count": "int"
                          }
                        ],

                        // Total number of Spartan kills by the player.
                        "TotalSpartanKills": "int"
                      },

                      // Information about the player for whom this data was returned.
                      "PlayerId": {

                        // The gamertag of the player queried.
                        "GamerTag": "string",

                        // Internal use only. This will always be null.
                        "Xuid": null
                      },

                      // The player's Spartan Rank. Zero for custom.
                      "SpartanRank": "int",

                      // The player's XP. Zero for custom.
                      "Xp": "int"
                    }
                  }
                ],

                // Internal use only. A set of related resource links.
                "Links": null
              }
        "404":
          description: One or more Gamertags don't pass validation rules.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo 5 PC - Player Service Records - Custom
  "/hw2/matches/{matchId}":
    get:
      description: |
        <p>Retrieves detailed statistics for a Match. Matches can be retrieved before they are completed; however, the data for in-progress Matches is only updated every few minutes.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>September 5, 2017:</strong></p>
            <ul>
                <li>Documented new game mode "Terminus Firefight".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Match-Result
      parameters:
        - description: An ID that uniquely identifies a Match. Match IDs can be retrieved from the "Halo Wars 2 - Player Match History" Endpoint.
          in: path
          name: matchId
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Result.
          examples:
            application/json: |
              {
                // ID for this match.
                "MatchId": "guid",

                // Match type for this match. This field will contain one of the following values:
                //   Unknown = 0,
                //   Campaign = 1,
                //   Custom = 2,
                //   Matchmaking = 3
                "MatchType": "int",

                // Game mode for this match. This field will contain one of the following values:
                //   Unknown = 0,
                //   CampaignSolo = 1,
                //   CampaignCooperative = 2,
                //   Deathmatch = 3,
                //   Domination = 4,
                //   Strongholds = 5,
                //   Blitz = 6,
                //   Firefight = 7,
                //   NormalTutorial = 8,
                //   BlitzTutorial = 9,
                //   TerminusFirefight = 10
                "GameMode": "int",

                // Season ID for the match if the match occurred in a ranked playlist; otherwise, null.
                // Seasons are available via the Metadata API.
                "SeasonId": "guid",

                // Playlist the match occurred in if the match occurred in a playlist; otherwise, null
                // or empty Guid. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // ID of the map the match was played on. Maps are available via the Metadata API.
                "MapId": "string",

                // Whether the match is in-progress or completed. If the match is not complete, many
                // fields will not be set.
                "IsMatchComplete": "bool",

                // Reason the match ended. If the match is not complete, this will be null. This field
                // will contain one of the following values:
                //   Unknown = 0,
                //   Completed = 1,
                //   StartedNewMission = 2,
                //   EveryoneDisconnected = 3,
                //   InviteAccepted = 4
                "MatchEndReason": "int",

                // Reason the winning team achieved victory. If the match is not complete, this will be
                // null. This field will contain one of the following values:
                //   EndedPrematurely = 0,
                //   ObjectiveCompleted = 1,
                //   OpponentsEliminated = 2,
                //   Unknown = 255
                "VictoryCondition": "int",

                // Date and time the match started. This is expressed as an ISO 8601 combined Date and
                // Time.
                "MatchStartDate": {

                  "ISO8601Date": "string"
                },

                // Duration of the match. This is expressed as an ISO 8601 Duration.
                "MatchDuration": "string",

                // Information regarding the teams in the match. Neutral teams are not included in this
                // collection.
                "Teams": {

                  // Team ID.
                  "int": {

                    // Number of players on the team.
                    "TeamSize": "int",

                    // Outcome for the team in the match. If the match is not complete, this will be
                    // null. This field will contain one of the following values:
                    //   Unknown = 0,
                    //   Win = 1,
                    //   Loss = 2,
                    //   Tie = 3
                    "MatchOutcome": "int",

                    // Score for the team at the end of the match. If the match is not complete, this
                    // will be null.
                    "ObjectiveScore": "int"
                  }
                },

                // Information regarding the players in the match. Netural players are not included in
                // this collection.
                "Players": {

                  // Player Index.
                  "int": {

                    // Whether this represents a human player or a computer player.
                    "IsHuman": "bool",

                    // Identify of the player if this is a human player; otherwise, null.
                    "HumanPlayerId": {

                      // Gamertag of the player.
                      "Gamertag": "string",

                      // Internal use. This will always be null.
                      "Xuid": null
                    },

                    // ID of the computer player if this is a computer player; otherwise, null.
                    "ComputerPlayerId": "int",

                    // Difficulty of the computer player if this is a computer player; otherwise, null.
                    // Difficulties are available via the Metadata API.
                    "ComputerDifficulty": "int",

                    // ID of the team the player was a member of.
                    "TeamId": "int",

                    // Index of the player on their team. This is derived by sorting all the players on
                    // a team by their PlayerIndex and selecting the resulting position.
                    "TeamPlayerIndex": "int",

                    // Leader the player used. Leaders are available via the Metadata API.
                    "LeaderId": "int",

                    // Whether the player finished the match. This will be null until either the player
                    // leaves the match or the match is complete.
                    "PlayerCompletedMatch": "bool",

                    // Duration of time the player participated in the match. This will be null until
                    // either the player leaves the match or the match is complete.
                    "TimeInMatch": "string",

                    // Outcome of the match for the player. This will be null until either the player
                    // leaves the match or the match is complete. If the player leaves the match early,
                    // the player might have a different match outcome than their team. This field will
                    // contain one of the following values:
                    //   Unknown = 0,
                    //   Win = 1,
                    //   Loss = 2,
                    //   Tie = 3
                    "PlayerMatchOutcome": "int",

                    // Information about the capture points the player interacted with in the match. If
                    // the match is not complete, this will be null.
                    "PointStats": {

                      // ID of the capture point.
                      "string": {

                        // Number of times the player captured the point. 
                        "TimesCaptured": "int"
                      }
                    },

                    // Information about the units the player interacted with in the match. If the
                    // match is not complete, this will be null.
                    "UnitStats": {

                      // ID of the unit. Units are available via the Metadata API as Game Objects.
                      "string": {

                        // Number of times the player trained a unit of this type.
                        "TotalBuilt": "int",

                        // Number of times the player lost a unit of this type.
                        "TotalLost": "int",

                        // Number of times the player assisted in killing a unit of this type.
                        "TotalDestroyed": "int"
                      }
                    },

                    // Information about the cards the player used in the match. If the match is not
                    // complete, this will be null.
                    "CardStats": {

                      // ID of the card. Cards are available via the Metadata API.
                      "guid": {

                        // Number of times the player played a card of this type.
                        "TotalPlays": "int"
                      }
                    },

                    // Information about the waves the player participated in. If the match is not
                    // complete, this will be null.
                    "WaveStats": {

                      // Wave number.
                      "int": {

                        // Duration of how long the team the player was on took to complete the wave.
                        // This is expressed as an ISO 8601 Duration.
                        "WaveDuration": "string"
                      }
                    },

                    // Information about the leader powers the player used in the match. If the match
                    // is not complete, this will be null.
                    "LeaderPowerStats": {

                      // ID of the leader power. Leader Powers are available via the Metadata API.
                      "string": {

                        // Number of times the player used a leader power of this type.
                        "TimesCast": "int"
                      }
                    },

                    // XP progress the player earned as a result of their participation in the match. 
                    "XPProgress": {

                      // Total amount of XP the player had when they entered the match.
                      "PreviousTotalXP": "int",

                      // XP the player earned as a result of actions taken in the match. This does not
                      // include XP the player earned as a result of challenges completed in the match,
                      // which is reported separately. If the match is not complete, this will be 0.
                      "GameplayXP": "int",

                      // XP the player earned as a result of completing challenges in the match. This
                      // does not include XP the player earned as a result of actions taken in the
                      // match, which is reported separately. If the match is not complete, this will
                      // be 0.
                      "ChallengesXP": "int",

                      // Total amount of XP the player had after the match. If the match is not
                      // complete, this will be 0.
                      "UpdatedTotalXP": "int",

                      // Spartan Ranks the player completed as a result of the XP earned in the match.
                      // If this collection is empty, the player did not earn enough XP in this match
                      // to complete a rank. There is no significance to the ordering of this
                      // collection.
                      "CompletedSpartanRanks": [
                        {
                          // Spartan Rank the player completed. Spartan Ranks are available via the
                          // Metadata API.
                          "Id": "guid",

                          // Packs the player was awarded as a result of completing the rank. There is
                          // no significance to the ordering of this collection. Packs are available
                          // via the Metadata API.
                          "PacksAwarded": [ "guid" ]
                        }
                      ]
                    },

                    // Rating progress the player earned as a result of their participation in the
                    // match.
                    "RatingProgress": {

                      // Competitive Skill Ranking (CSR) of the player before the match started. If the
                      // match did not occur in a ranked playlist, this will be null.
                      "PreviousCsr": {

                        // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                        // measurement matches, this field will be null. CSR Tiers are referenced by
                        // CSR Designations, which are available via the Metadata API.
                        "Tier": "int",

                        // CSR Designation. If the player is still in measurement matches, this field
                        // will be null. CSR Designations are available via the Metadata API.
                        "Designation": "int",

                        // Raw CSR value. If the player is still in measurement matches, this field
                        // will be null. If the player is not in a high enough designation, this will
                        // be zero.
                        "Raw": "int",

                        // Percentage of progress towards the next CSR tier. If the player is still in
                        // measurement matches, this field will be null.
                        "PercentToNextTier": "int",

                        // Number of measurement matches remaining until the player earns a CSR. If
                        // this field is greater than zero, the player does not have a CSR yet and the
                        // other components of the CSR will be null.
                        "MeasurementMatchesRemaining": "int",

                        // Player's ranking on the CSR leaderboard. If the player is still in
                        // measurement matches, this field will be null. If the player is not in a high
                        // enough designation, this will be zero.
                        "Rank": "int"
                      },

                      // Competitive Skill Ranking (CSR) of the player after the match ended. If the
                      // match did not occur in a ranked playlist, this will be null. If the match is
                      // not complete, this will be null.
                      "UpdatedCsr": {

                        // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                        // measurement matches, this field will be null. CSR Tiers are referenced by
                        // CSR Designations, which are available via the Metadata API.
                        "Tier": "int",

                        // CSR Designation. If the player is still in measurement matches, this field
                        // will be null. CSR Designations are available via the Metadata API.
                        "Designation": "int",

                        // Raw CSR value. If the player is still in measurement matches, this field
                        // will be null. If the player is not in a high enough designation, this will
                        // be zero.
                        "Raw": "int",

                        // Percentage of progress towards the next CSR tier. If the player is still in
                        // measurement matches, this field will be null.
                        "PercentToNextTier": "int",

                        // Number of measurement matches remaining until the player earns a CSR. If
                        // this field is greater than zero, the player does not have a CSR yet and the
                        // other components of the CSR will be null.
                        "MeasurementMatchesRemaining": "int",

                        // Player's ranking on the CSR leaderboard. If the player is still in
                        // measurement matches, this field will be null. If the player is not in a high
                        // enough designation, this will be zero.
                        "Rank": "int"
                      },

                      // Internal use.
                      "PreviousMmr": {

                        "Rating": "double",

                        "Variance": "double",

                        // Unused.
                        "LastModifiedDate": {

                          "ISO8601Date": "string"
                        }
                      },

                      // Internal use.
                      "UpdatedMmr": {

                        "Rating": "double",

                        "Variance": "double",

                        // Unused.
                        "LastModifiedDate": {

                          "ISO8601Date": "string"
                        }
                      }
                    }
                  }
                }
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Match Result
  "/hw2/matches/{matchId}/events":
    get:
      description: |
        <p>Retrieves a set of Events related to the Match specified. Events are only available once the Match has completed. Events are not available for Matches played with the Custom Match Type.</p>
        <p>The set of Events may grow over time as data becomes available.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>September 5, 2017:</strong></p>
            <ul>
                <li>Documented new game mode "Terminus Firefight".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Match-Events
      parameters:
        - description: An ID that uniquely identifies a Match. Match IDs can be retrieved from the "Halo Wars 2 - Player Match History" Endpoint.
          in: path
          name: matchId
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match Events.
          examples:
            application/json: |
              //
              // Main Response
              //
              {
                // Events that describe a match from start to completion. Events are reported in
                // chronological order.
                // Events can come in a variety of types indicated by the "EventName" field. Each event
                // is documented in detail below the documentation for this return contract.
                // Additional event types may be added in the future.
                // When deserializing events, it is suggested to use a union of all of the fields
                // across all of the different event types.
                "GameEvents": [ "GameEvent" ],

                // Whether this set of events accounts for the complete set of events from the match.
                "IsCompleteSetOfEvents": "bool"
              }

              //
              // BuildingConstructionQueued Event
              //
              // This event is fired for the following reasons:
              //   - A player queues a building for construction.
              //   - A building is provided by the scenario (for instance, the buildings a player
              //     starts with at the beginning of the scenario). In this case, a subsequent
              //     BuildingConstructionCompleted event will not be fired.
              //   - A building is produced by a leader power.
              //   - A building is built in an "upgraded" state. In this case, a
              //     BuildingConstructionQueued event is fired for the the "upgraded" building rather
              //     than firing a BuildingConstructionQueued event for the "non-upgraded" building
              //     followed by a subsequent BuildingUpgraded event.
              //
              {
                // Index of the player that will control building that was queued for construction.
                "PlayerIndex": "int",

                // ID that indicates the type of the building. Buildings are available via the Metadata
                // API as Game Objects.
                "BuildingId": "string",

                // Instance ID that identifies the building. The building will be referred to by this
                // ID in subsequent events.
                "InstanceId": "int",

                // Location that the building will be created at.
                "Location": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Supply cost paid to construct the building.
                "SupplyCost": "int",

                // Energy cost paid to construct the building.
                "EnergyCost": "int",

                // Length of the construction queue after enqueuing the building.
                "QueueLength": "int",

                // Whether the building was queued by the player or the scenario.
                "ProvidedByScenario": "bool",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "EventName"  
              }

              //
              // BuildingConstructionCompleted Event
              //
              // This event is fired when a building is successfully constructed.
              //
              {
                // Index of the player that controls the building that was constructed.
                "PlayerIndex": "int",

                // Instance of the building that was constructed.
                "InstanceId": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "BuildingConstructionCompleted"  
              }

              //
              // BuildingRecycled Event
              //
              // This event is fired when a building is recycled.
              //
              {
                // Index of the player that controls the building that was recycled.
                "PlayerIndex": "int",

                // Instance of the building that was recycled.
                "InstanceId": "int",

                // Supply earned from recycling the building.
                "SupplyEarned": "int",

                // Energy earned from recycling the building.
                "EnergyEarned": "int",

                // Whether the building was recycled by the player or the scenario.
                "ProvidedByScenario": "bool",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "BuildingRecycled"  
              }

              //
              // BuildingUpgraded Event
              //
              // This event is fired when a building is upgraded.
              //
              {
                // Index of the player that controls the building that was upgraded.
                "PlayerIndex": "int",

                // ID that indicates the new type of the building. Buildings are available via the
                // Metadata API as Game Objects.
                "NewBuildingId": "string",

                // Instance ID of the building that was upgraded.
                "InstanceId": "int",

                // Supply cost paid to upgrade the building.
                "SupplyCost": "int",

                // Energy cost paid to upgrade the building.
                "EnergyCost": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "BuildingUpgraded"  
              }

              //
              // CardCycled Event
              //
              // This event is fired when a card is cycled.
              //
              {
                // Index of the player that cycled a card.
                "PlayerIndex": "int",

                // Mana cost paid to cycle the card.
                "ManaCost": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "CardCycled"  
              }

              //
              // CardPlayed Event
              //
              // This event is fired when a card is played.
              //
              {
                // Index of the player that played a card.
                "PlayerIndex": "int",

                // ID that indicates the type of the card. Cards are available via the Metadata API.
                "CardId": "guid",

                // Instance ID that identifies this cast of the card. This instance will be referred to
                // by this ID in subsequent events.
                "InstanceId": "int",

                // Mana cost paid to play the card.
                "ManaCost": "int",

                // Location where the card was played.
                "TargetLocation": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Whether the card was played in the base.
                "SpawnAtBase": "bool",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "CardPlayed"  
              }

              //
              // Death Event
              //
              // This event is fired when a building or unit is destroyed.
              //
              {
                // Index of the player that controlled the building or unit that was destroyed.
                "VictimPlayerIndex": "int",

                // ID that indicates the type of the building or unit that was destroyed. Game Objects
                // are available via the Metadata API.
                "VictimObjectTypeId": "string",

                // Instance ID of the building or unit that was destroyed.
                "VictimInstanceId": "int",

                // Whether the death was considered a suicide.
                "IsSuicide": "bool",

                // Participants that contributed to the destruction of the building or unit.
                // Participants are grouped by player, then object, then combat stats.
                "Participants": {

                  // Index of the player that participated in the destruction.
                  "int": {

                    // Objects that participated in the destruction that were owned by the given
                    // player. Object participants are grouped by object then combat stats.
                    "ObjectParticipants": {

                      // ID that indicates the type of the building or unit that participated in the
                      // destruction. Game Objects are available via the Metadata API.
                      "string": {

                        // Number of objects of the given type owned by the given player that
                        // participated in the destruction.
                        "Count": "int",

                        // Information about the combat stats across all the objects of the given type
                        // owned by the given player that participated in the destruction. Combat stats
                        // are grouped by damage type.
                        "CombatStats": {

                          // Damage type dealt by the object of the given type. This field will contain
                          // one of the following values:
                          //   Basic = 0,
                          //   LeaderPower = 1,
                          //   LeaderPowerNonFlying = 2,
                          //   AntiInfantry = 3,
                          //   Fire = 4,
                          //   AntiBuildingFire = 5,
                          //   SmallArms = 6,
                          //   AASmallArms = 7,
                          //   SmallArmsScouts = 8,
                          //   MediumArms = 9,
                          //   ChainGun = 10,
                          //   ArmorPiercing = 11,
                          //   AntiVehicle = 12,
                          //   FuelRod = 13,
                          //   BansheeFuelRod = 14,
                          //   AntiAir = 15,
                          //   Explosive = 16,
                          //   TankExplosive = 17,
                          //   Artillery = 18,
                          //   Missile = 19,
                          //   Grenade = 20,
                          //   Demolition = 21,
                          //   Beam = 22,
                          //   WarthogRam = 23,
                          //   GaussCannon = 24,
                          //   BruteShot = 25,
                          //   Melee = 26,
                          //   SuicideGrunt = 27,
                          //   SuicideGruntAV = 28,
                          //   SuperSentinel = 29,
                          //   Hero = 30,
                          //   CampaignHero = 31,
                          //   ScarabBeam = 32,
                          //   Unknown = 255
                          // Additional damage types may be added in the future.
                          "int": {

                            // Number of attacks of the given damage type that were successfully landed
                            // on the victim building or unit.
                            "AttacksLanded": "int"
                          }
                        }
                      }
                    }
                  }
                },

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "Death"  
              }

              //
              // FirefightWaveCompleted Event
              //
              // This event is fired when a team successfully clears a Firefight wave.
              //
              {
                // Wave number that was completed.
                "WaveNumber": "int",

                // Elapsed time, measured in milliseconds, that the team took to clear the wave.
                "WaveDurationMilliseconds": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "FirefightWaveCompleted"  
              }

              //
              // FirefightWaveSpawned Event
              //
              // This event is fired when a Firefight wave has been spawned.
              //
              {
                // Wave number that was spawned.
                "WaveNumber": "int",

                // Instance IDs of the buildings and units that make up the wave.
                "InstancesSpawned": [ "int" ],

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "FirefightWaveSpawned"  
              }

              //
              // FirefightWaveStarted Event
              //
              // This event is fired when a Firefight wave has started.
              //
              {
                // Wave number that was started.
                "WaveNumber": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "FirefightWaveStarted"  
              }

              //
              // LeaderPowerCast Event
              //
              // This event is fired when a leader power is cast.
              //
              {
                // Index of the player that cast the leader power.
                "PlayerIndex": "int",

                // ID that indicates the type of the leader power. Leader Powers are available via the
                // Metadata API.
                "PowerId": "string",

                // Instance ID that identifies this cast of the leader power. This instance will be
                // referred to by this ID in subsequent events.
                "InstanceId": "int",

                // Location where the leader power was cast.
                "TargetLocation": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Supply cost paid to cast the leader power.
                "SupplyCost": "int",

                // Energy cost paid to cast the leader power.
                "EnergyCost": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "LeaderPowerCast"  
              }

              //
              // LeaderPowerUnlocked Event
              //
              // This event is fired when a leader power is unlocked.
              //
              {
                // Index of the player that unlocked the leader power.
                "PlayerIndex": "int",

                // ID that indicates the type of the leader power. Leader Powers are available via the
                // Metadata API.
                "PowerId": "string",

                // Command point cost paid to unlock the leader power.
                "CommandPointCost": "int",

                // Whether the leader power was unlocked by the scenario.
                "ProvidedByScenario": "bool",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "LeaderPowerUnlocked"  
              }

              //
              // ManaOrbCollected Event
              //
              // This event is fired when a mana orb is collected.
              //
              {
                // Index of the player that collected the mana orb.
                "PlayerIndex": "int",

                // Instance ID of the unit that collected the mana orb.
                "CollectorInstanceId": "int",

                // Increase to the player's mana generation rate.
                "ManaRateIncrease": "int",

                // Location of the mana orb that was collected.
                "Location": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "ManaOrbCollected"  
              }

              //
              // MatchEnd Event
              //
              // This event is fired when the match ends.
              //
              {
                // Reason the match ended. This field will contain one of the following values:
                //   Unknown = 0,
                //   Completed = 1,
                //   StartedNewMission = 2,
                //   EveryoneDisconnected = 3,
                //   InviteAccepted = 4
                "MatchEndReason": "int",

                // Reason the winning team achieved victory. This field will contain one of the
                // following values:
                //   EndedPrematurely = 0,
                //   ObjectiveCompleted = 1,
                //   OpponentsEliminated = 2,
                //   Unknown = 255
                "VictoryCondition": "int",

                // Elapsed time, measured in milliseconds, spent playing the match.
                "ActivePlaytimeMilliseconds": "int",

                // Ending states for the teams in the match.
                "TeamState": {

                  // Team ID.
                  "int": {

                    // Score for the team.
                    "ObjectiveScore": "int",

                    // Outcome for the team. This field will contain one of the following values:
                    //   Unknown = 0,
                    //   Win = 1,
                    //   Loss = 2,
                    //   Tie = 3
                    "MatchOutcome": "int"
                  }
                },

                // Ending states for the players in the match.
                "PlayerState": {

                  // Player Index.
                  "int": {

                    // Score for the player.
                    "PersonalScore": "int"
                  }
                },

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "MatchEnd"  
              }

              //
              // MatchStart Event
              //
              // This event is fired when the match starts.
              //
              {
                // ID of the match.
                "MatchId": "guid",

                // Game mode. This field will contain one of the following values:
                //   Unknown = 0,
                //   CampaignSolo = 1,
                //   CampaignCooperative = 2,
                //   Deathmatch = 3,
                //   Domination = 4,
                //   Strongholds = 5,
                //   Blitz = 6,
                //   Firefight = 7,
                //   NormalTutorial = 8,
                //   BlitzTutorial = 9,
                //   TerminusFirefight = 10
                "GameMode": "int",

                // Match type. This field will contain one of the following values:
                //   Unknown = 0,
                //   Campaign = 1,
                //   Custom = 2,
                //   Matchmaking = 3
                "MatchType": "int",

                // ID of the map. Maps are available via the Metadata API.
                "MapId": "string",

                // Playlist the match occurred in if the match occurred in a playlist; otherwise, empty
                // Guid.
                "PlaylistId": "guid",

                // Max team size for the match.
                "TeamSize": "int",

                // whether the match is using the default rule set.
                "IsDefaultRuleSet": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "MatchStart"  
              }

              //
              // PlayerEliminated Event
              //
              // This event is fired when a player is eliminated from the match.
              //
              {
                // Index of the player that was eliminated.
                "PlayerIndex": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "PlayerEliminated"  
              }

              //
              // PlayerJoinedMatch Event
              //
              // This event is fired at the start of the match for each player in the match. This event
              // is fired for the neutral players in addition to the Human and Computer players.
              //
              {
                // Index of the player that joined the match. The player will be referred to by this
                // index in subsequent events.
                "PlayerIndex": "int",

                // Type of the player that joined the match. This field will contain one of the
                // following values:
                //   Unknown = 0,
                //   Human = 1,
                //   Computer = 2,
                //   NPC = 3
                "PlayerType": "int",

                // Identify of the player if this is a human player; otherwise, null.
                "HumanPlayerId": {

                  // Gamertag of the player.
                  "Gamertag": "string",

                  // Internal use. This will always be null.
                  "Xuid": null
                },

                // ID of the computer player if this is a computer player; otherwise, null.
                "ComputerPlayerId": "int",

                // Difficulty of the computer player if this is a computer player; otherwise, null.
                // Difficulties are available via the Metadata API.
                "ComputerDifficulty": "int",

                // Team the player is a member of.
                "TeamId": "int",

                // Leader the player is using. Leaders are available via the Metadata API.
                "LeaderId": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "PlayerJoinedMatch"  
              }

              //
              // PlayerLeftMatch Event
              //
              // This event is fired when a player leaves the match early for any reason. This is not
              // to be confused with the PlayerEliminated event. If a player is eliminated, the
              // PlayerEliminated event will be fired. The player may continue to spectate the match
              // after being eliminated. If the player stops spectating the match, then this event will
              // be fired.
              //
              {
                // Index of the player that left the match.
                "PlayerIndex": "int",

                // Elapsed time, measured in milliseconds, the player spent playing the match.
                "TimeInMatchMilliseconds": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "PlayerLeftMatch"  
              }

              //
              // PointCaptured Event
              //
              // This event is fired when an objective is captured in all game modes besides Blitz.
              //
              {
                // Index of the player that captured the objective.
                "PlayerIndex": "int",

                // Instance ID of the objective that was captured.
                "InstanceId": "int",

                // Instance ID of the unit that captured the objective.
                "CapturerInstanceId": "int",

                // Location of the unit that captured the objective.
                "CapturerLocation": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // ID of the team that now owns the objective. If the objective is not owned by a team,
                // this will be 0.
                "NewOwningTeamId": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "PointCaptured"  
              }

              //
              // PointCreated Event
              //
              // This event is fired at the start of the match for each objective that can be captured
              // on the map.
              //
              {
                // ID that indicates the type of the objective.
                "PointId": "string",

                // Instance ID that identifies the objective. The objective will be referred to by this
                // ID in subsequent events.
                "InstanceId": "int",

                // Location of the objective.
                "Location": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "PointCreated"  
              }

              //
              // PointStatusChange Event
              //
              // This event is fired when an objective is captured in the Blitz game mode.
              //
              {
                // Instance ID of the objective that was captured.
                "InstanceId": "int",

                // Updated status of the objective. This field will contain one of the following values:
                //   Neutral = 0,
                //   Contested = 1,
                //   Captured = 2
                "Status": "int",

                // ID of the team that now owns the objective. If the objective is not owned by a team,
                // this will be 255.
                "OwningTeamId": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "PointStatusChange"  
              }

              //
              // ResourceHeartbeat Event
              //
              // This event is fired at the start of a match and then at regular 5 seconds thereafter.
              //
              {
                // Current resources for each team.
                "TeamResources": {

                  // Team ID.
                  "int": {

                    // Current objective score for the team.
                    "ObjectiveScore": "int"
                  }
                },

                // Current resources for each player.
                "PlayerResources": {

                  // Player Index.
                  "int": {

                    // Current supply balance for the player.
                    "Supply": "int",

                    // Total supply generated by the player throughout the match.
                    "TotalSupply": "int",

                    // Current energy balance for the player.
                    "Energy": "int",

                    // Total energy generated by the player throughout the match.
                    "TotalEnergy": "int",

                    // Current population count for the player.
                    "Population": "int",

                    // Current maximum population for the player.
                    "PopulationCap": "int",

                    // Current tech level for the player.
                    "TechLevel": "int",

                    // Current command point balance for the player.
                    "CommandPoints": "int",

                    // Total command points generated by the player throughout the match.
                    "TotalCommandPoints": "int",

                    // Current mana balance for the player.
                    "Mana": "int",

                    // Total mana generated by the player throughout the match.
                    "TotalMana": "int",

                    // Unused.
                    "ManaRate": "int",

                    // Current command XP for the player.
                    "CommandXP": "int"
                  }
                },

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "EventName"  
              }

              //
              // ResourceTransferred Event
              //
              // This event is fired when a player transfers resources to another player.
              //
              {
                // Index of the player that sent the resources.
                "SendingPlayerIndex": "int",

                // Index of the player that received the resources.
                "ReceivingPlayerIndex": "int",

                // Supply cost paid by the sending player to send the resource.
                "SupplyCost": "int",

                // Energy cost paid by the sending player to send the resource.
                "EnergyCost": "int",

                // Supply earned by the receiving player.
                "SupplyEarned": "int",

                // Energy earned by the receiving player.
                "EnergyEarned": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "ResourceTransferred"  
              }

              //
              // TechResearched Event
              //
              // This event is fired when a tech is researched.
              //
              {
                // Index of the player that received the researched tech.
                "PlayerIndex": "int",

                // ID that indicates the type of the tech that was researched. Techs are available via
                // the Metadata API.
                "TechId": "string",

                // ID of the instance that researched the tech.
                "ResearcherInstanceId": "int",

                // Supply cost paid to research the tech.
                "SupplyCost": "int",

                // Energy cost paid to research the tech.
                "EnergyCost": "int",

                // Whether the tech was researched by the player or the scenario.
                "ProvidedByScenario": "bool",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "TechResearched"  
              }

              //
              // UnitControlTransferred Event
              //
              // This event is fired when control of a unit is transferred from a player to another
              // player.
              //
              {
                // Index of the player that lost control of the unit.
                "OldPlayerIndex": "int",

                // Index of the player that gained control of the unit.
                "NewPlayerIndex": "int",

                // ID that indicates the type of the unit that was transferred. Units are available via
                // the Metadata API as Game Objects.
                "SquadId": "string",

                // ID of the instance that was transferred.
                "InstanceId": "int",

                // ID of the instance that caused the transfer of the unit, if appropriate; otherwise,
                // 0.
                "CapturerInstanceId": "int",

                // Location of the unit when control was transferred.
                "Location": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Population consumed by the transferred unit.
                "PopulationCost": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "UnitControlTransferred"  
              }

              //
              // UnitPromoted Event
              //
              // This event is fired when a unit is promoted.
              //
              {
                // Index of the player that controls the unit that was promoted.
                "PlayerIndex": "int",

                // ID that indicates the type of the unit that was promoted. Units are available via
                // the Metadata API as Game Objects.
                "SquadId": "string",

                // ID of the instance that was promoted.
                "InstanceId": "int",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "UnitPromoted"  
              }

              //
              // UnitTrained Event
              //
              // This event is fired for the following reasons:
              //   - A player trains a unit from a building.
              //   - A unit is produced by a leader power or card.
              //   - A unit is provided by the scenario (for instance, the units a player starts with
              //     at the beginning of the scenario).
              //
              {
                // Index of the player that controls the unit that was trained.
                "PlayerIndex": "int",

                // ID that indicates the type of the unit that was trained. Units are available via the
                // Metadata API as Game Objects.
                "SquadId": "string",

                // Instance ID that identifies the unit. The unit will be referred to by this ID in
                // subsequent events.
                "InstanceId": "int",

                // ID of the instance that trained the unit, if appropriate; otherwise, 0.
                "CreatorInstanceId": "int",

                // Location of the unit when it spawned.
                "SpawnLocation": {

                  "x": "double",

                  "y": "double",

                  "z": "double"
                },

                // Supply cost paid to train the unit.
                "SupplyCost": "int",

                // Energy cost paid to train the unit.
                "EnergyCost": "int",

                // Population cost paid to train the unit.
                "PopulationCost": "int",

                // Whether the unit that was trained was cloned by a leader power.
                "IsClone": "bool",

                // Whether the unit was trained by the player or the scenario.
                "ProvidedByScenario": "bool",

                // Elapsed time, measured in milliseconds, since the point when the match started.
                "TimeSinceStartMilliseconds": "int",

                // Name of the event.
                "EventName": "UnitTrained"  
              }
        "404":
          description: The specified Match could not be found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Match Events
  "/hw2/player-leaderboards/csr/{seasonId}/{playlistId}":
    get:
      description: |
        <p>Retrieves the Leaderboard for Player CSRs. The Leaderboard consists of the top Players with a CSR of 1800 or above for a given Playlist in a Season.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>March 6, 2018:</strong></p>
            <ul>
                <li>Fixed documentation typos for the names of the "Player" and "Gamertag" properties.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>July 31, 2017:</strong></p>
            <ul>
                <li>Clarified documentation for which players are included in the leaderboard.</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>July 14, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Leaderboard-Player-CSR
      parameters:
        - description: The ID for the Season.
          in: path
          name: seasonId
          required: true
          type: string
        - description: The ID for the Playlist.
          in: path
          name: playlistId
          required: true
          type: string
        - description: |-
            When specified, this indicates the maximum quantity of items the client would like returned in the response.

            When omitted, 200 is assumed.

            When the value contains a non-digit or is exactly "0", HTTP 400 ("Bad Request") is returned.

            When the value is greater than the allowed range [1,250], the maximum allowed value is used instead.

            The "Count" field in the response will confirm the actual value that was used.
          in: query
          name: count
          type: number
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Players in the Leaderboard. An empty list will be returned if no Players are in the Leaderboard.
          examples:
            application/json: |
              {
                // The starting point that was used. Will always be 0.
                "Start": "int",

                // The number of results that the service attempted to retrieve to satisfy this
                // request. Normally this value is equal to the "count" parameter. If the client
                // specified a count parameter greater than the maximum allowed, this value contains
                // the maximum allowed amount.
                "Count": "int",

                // The number of results that are actually being returned in this response. This field
                // is named "ResultCount" to avoid confusion with "Count".
                "ResultCount": "int",

                // Internal use only. A set of related resource links.
                "Links": "links",

                // A list of players in the leaderboard. Players are listed in chronological order with
                // the player with the highest CSR first.
                "Results": [
                  {
                    // Information about the player for whom this data was returned.
                    "Player": {

                      // The gamertag of the player queried.
                      "Gamertag": "string",

                      // Internal use only. This will always be null.
                      "Xuid": null
                    },

                    // The player's rank in the leaderboard.
                    "Rank": "int",

                    "Score": {

                      // The CSR tier. CSR Tiers are designation-specific and are available via the
                      // Metadata API.
                      "Tier": "int",

                      // The Designation of the CSR. CSR Designations are available via the Metadata
                      // API.
                      "DesignationId": "int",

                      // The CSR value. Zero for normal (Diamond and below) designations.
                      "Csr": "int",

                      // The percentage of progress towards the next CSR tier.
                      "PercentToNextTier": "int",

                      // If the CSR is Onyx or Champion, the player's leaderboard ranking. Null
                      // otherwise.
                      "Rank": "int"
                    }
                  }
                ]
              }
        "404":
          description: The Season does not exist, or the Playlist either does not exist or is not part of the given Season.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Leaderboard - Player CSR
  "/hw2/players/{player}/campaign-progress":
    get:
      description: |
        <p>Retrieves the Campaign Progress state for a Player.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Player-Campaign-Progress
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Campaign Progress for the Player.
          examples:
            application/json: |
              {
                // Total amount of XP the player has earned from the campaign.
                "CampaignXP": "int",

                // Per-level progress information. If an entry is missing from this collection, the
                // player has not made any progress towards the level. Campaign Levels are available
                // via the Metadata API.
                "Levels": {

                  // Level ID.
                  "int": {

                    // Skulls from this level that the player has unlocked. Campaign Skulls are
                    // available via the Metadata API.
                    "SkullsUnlocked": [ "int" ],

                    // Total amount of time the player has spent playing this level in solo mode. This
                    // is expressed as an ISO 8601 Duration.
                    "TotalSoloPlayTime": "string",

                    // Total amount of time the player has spent playing this level in cooperative
                    // mode. This is expressed as an ISO 8601 Duration.
                    "TotalCooperativePlayTime": "string",

                    // Per-difficulty progress information for solo mode. If this level has not been
                    // completed in solo mode, this collection will be empty. Difficulties are
                    // available via the Metadata API.
                    "SoloCompletion": {

                      // Difficulty ID.
                      "int": {

                        // The fastest time that the player has ever achieved on this level on this
                        // mode on this difficulty. This may or may not have occurred at the same time
                        // the player earned their best score. This is expressed as an ISO 8601
                        // Duration.
                        "BestCompletionTime": "string",

                        // The highest score that the player has ever achieved on this level on this
                        // mode on this difficulty. This indicates the individual score, not the team
                        // score. This may or may not have occurred at the same time the player earned
                        // their best completion time.
                        "BestScore": "int",

                        // The critical objectives that the player has completed on this level on this
                        // mode on this difficulty. These may or may not have occurred in the same
                        // playthrough. Critical Objectives are referenced by Campaign Levels, which
                        // are available via the Metadata API.
                        "CriticalObjectivesCompleted": [ "int" ],

                        // The bonus objectives that the player has completed on this level on this
                        // mode on this difficulty. These may or may not have occurred in the same
                        // playthrough. Bonus Objectives are referenced by Campaign Levels, which are
                        // available via the Metadata API.
                        "BonusObjectivesCompleted": [ "int" ],

                        // The optional objectives that the player has completed on this level on this
                        // mode on this difficulty. These may or may not have occurred in the same
                        // playthrough. Optional Objectives are referenced by Campaign Levels, which
                        // are available via the Metadata API.
                        "OptionalObjectivesCompleted": [ "int" ]
                      }
                    },

                    // Per-difficulty progress information for cooperative mode. If this level has not
                    // been completed in cooperative mode, this collection will be empty. Difficulties
                    // are available via the Metadata API.
                    "SoloCompletion": {

                      // Difficulty ID.
                      "int": {

                        // The fastest time that the player has ever achieved on this level on this
                        // mode on this difficulty. This may or may not have occurred at the same time
                        // the player earned their best score. This is expressed as an ISO 8601
                        // Duration.
                        "BestCompletionTime": "string",

                        // The highest score that the player has ever achieved on this level on this
                        // mode on this difficulty. This indicates the individual score, not the team
                        // score. This may or may not have occurred at the same time the player earned
                        // their best completion time.
                        "BestScore": "int",

                        // The critical objectives that the player has completed on this level on this
                        // mode on this difficulty. These may or may not have occurred in the same
                        // playthrough. Critical Objectives are referenced by Campaign Levels, which
                        // are available via the Metadata API.
                        "CriticalObjectivesCompleted": [ "int" ],

                        // The bonus objectives that the player has completed on this level on this
                        // mode on this difficulty. These may or may not have occurred in the same
                        // playthrough. Bonus Objectives are referenced by Campaign Levels, which are
                        // available via the Metadata API.
                        "BonusObjectivesCompleted": [ "int" ],

                        // The optional objectives that the player has completed on this level on this
                        // mode on this difficulty. These may or may not have occurred in the same
                        // playthrough. Optional Objectives are referenced by Campaign Levels, which
                        // are available via the Metadata API.
                        "OptionalObjectivesCompleted": [ "int" ]
                      }
                    },

                    // Date when the player first completed the level in either solo or cooperative
                    // mode on any difficulty. If this level has not been completed, this will be null.
                    // This is expressed as an ISO 8601 combined Date and Time.
                    "FirstCompletionDate": {

                      "ISO8601Date": "string"
                    }
                  }
                },

                // Logs that the player has unlocked. Campaign Logs are available via the Metadata API.
                "LogsUnlocked": [ "int" ]
              }
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Player Campaign Progress
  "/hw2/players/{player}/matches":
    get:
      description: |
        <p>Retrieves a list of Matches that the Player has participated in. If the Player is currently in a Match, it is not returned in this API.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>September 5, 2017:</strong></p>
            <ul>
                <li>Documented new game mode "Terminus Firefight".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Player-Match-History
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
        - description: |-
            Indicates what Match Type the client is interested in getting Matches for ("custom" or "matchmaking").

            When the parameter is omitted or empty, Matches from all Match Types are returned.

            When an invalid Mode is specified, HTTP 400 ("Bad Request") is returned.
          in: query
          name: matchType
          type: string
        - description: |-
            When specified, this indicates the starting index (0-based) for which the batch of results will begin at. For example, "start=0" indicates that the first qualifying result will be returned, no items are 'skipped'. Passing "start=10" indicates that the result will begin with the 11th item, the first 10 will be 'skipped'.

            When omitted, zero is assumed.

            When the value contains a non-digit, HTTP 400 ("Bad Request") is returned.
          in: query
          name: start
          type: number
        - description: |-
            When specified, this indicates the maximum quantity of items the client would like returned in the response.

            When omitted, 25 is assumed.

            When the value contains a non-digit or is exactly "0", HTTP 400 ("Bad Request") is returned.

            When the value is greater than the allowed range [1,25], the maximum allowed value is used instead. The "Count" field in the response will confirm the actual value that was used.
          in: query
          name: count
          type: number
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Match History for the Player.
          examples:
            application/json: |
              {
                // Starting point that was used. When the "start" query string parameter is specified,
                // this value is identical. When "start" is omitted, the default value is returned.
                "Start": "int",  

                // Number of results that the service attempted to retrieve to satisfy this request.
                // Normally this value is equal to the "count" parameter. If the client specified a
                // count parameter greater than the maximum allowed, this value contains the maximum
                // allowed amount.
                "Count": "int",

                // Number of results that are actually being returned in this response. This field is
                // named "ResultCount" to avoid confusion with "Count".
                "ResultCount": "int",

                // A list of recent matches. Matches are listed in reverse chronological order with the
                // most recently started match first.
                "Results": [
                  {
                    // ID for this match. More match details are available via the "Halo Wars 2 - Match
                    // Result" Endpoint.
                    "MatchId": "guid",

                    // Match type for this match. This field will contain one of the following values:
                    //   Unknown = 0,
                    //   Campaign = 1,
                    //   Custom = 2,
                    //   Matchmaking = 3
                    "MatchType": "int",

                    // Game mode for this match. This field will contain one of the following values:
                    //   Unknown = 0,
                    //   CampaignSolo = 1,
                    //   CampaignCooperative = 2,
                    //   Deathmatch = 3,
                    //   Domination = 4,
                    //   Strongholds = 5,
                    //   Blitz = 6,
                    //   Firefight = 7,
                    //   NormalTutorial = 8,
                    //   BlitzTutorial = 9,
                    //   TerminusFirefight = 10
                    "GameMode": "int",

                    // Season ID for the match if the match occurred in a ranked playlist; otherwise,
                    // null. Seasons are available via the Metadata API.
                    "SeasonId": "guid",

                    // Playlist the match occurred in if the match occurred in a playlist; otherwise,
                    // null or empty Guid. Playlists are available via the Metadata API.
                    "PlaylistId": "guid",

                    // Information regarding the teams in the match. Neutral teams are not included in
                    // this collection.
                    "Teams": {

                      // Team ID.
                      "int": {

                        // Number of players on the team.
                        "TeamSize": "int"
                      },

                    },

                    // ID of the map the match was played on. Maps are available via the Metadata API.
                    "MapId": "string",

                    // Date and time the match started. This is expressed as an ISO 8601 combined Date
                    // and Time.
                    "MatchStartDate": {

                      "ISO8601Date": "string"
                    },

                    // Duration of time the player participated in the match. If the player finished
                    // the match, this will be equivalent to the match duration. If the player did not
                    // finish the match, this will be how long the player participated in the match
                    // until they left (with the assumption that the match potentially continued on
                    // without the player and the actual match duration was longer). This is expressed
                    // as an ISO 8601 Duration.
                    "PlayerMatchDuration": "string",

                    // Index of the player in the match.
                    "PlayerIndex": "int",

                    // ID of the team the player was a member of.
                    "TeamId": "int",

                    // Index of the player on their team. This is derived by sorting all the players on
                    // a team by their PlayerIndex and selecting the resulting position.
                    "TeamPlayerIndex": "int",

                    // Leader the player used. Leaders are available via the Metadata API.
                    "LeaderId": "int",

                    // Whether the player finished the match.
                    "PlayerCompletedMatch": "bool",

                    // Outcome of the match for the player. If the player did not finish the match,
                    // this will indicate a loss. This field will contain one of the following values:
                    //   Unknown = 0,
                    //   Win = 1,
                    //   Loss = 2,
                    //   Tie = 3
                    "PlayerMatchOutcome": "int",

                    // XP progress the player earned as a result of their participation in the match.
                    "XPProgress": {

                      // Total amount of XP the player had when they entered the match.
                      "PreviousTotalXP": "int",

                      // XP the player earned as a result of actions taken in the match. This does not
                      // include XP the player earned as a result of challenges completed in the match,
                      // which is reported separately.
                      "GameplayXP": "int",

                      // XP the player earned as a result of completing challenges in the match. This
                      // does not include XP the player earned as a result of actions taken in the
                      // match, which is reported separately.
                      "ChallengesXP": "int",

                      // Total amount of XP the player had after the match.
                      "UpdatedTotalXP": "int",

                      // Spartan Ranks the player completed as a result of the XP earned in the match.
                      // If this collection is empty, the player did not earn enough XP in this match
                      // to complete a rank. There is no significance to the ordering of this
                      // collection.
                      "CompletedSpartanRanks": [
                        {
                          // Spartan Rank the player completed. Spartan Ranks are available via the
                          // Metadata API.
                          "Id": "guid",

                          // Packs the player was awarded as a result of completing the rank. There is
                          // no significance to the ordering of this collection. Packs are available
                          // via the Metadata API.
                          "PacksAwarded": [ "guid" ]
                        }
                      ]
                    },

                    // Rating progress the player earned as a result of their participation in the
                    // match.
                    "RatingProgress": {

                      // Competitive Skill Ranking (CSR) of the player before the match started. If the
                      // match did not occur in a ranked playlist, this will be null.
                      "PreviousCsr": {

                        // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                        // measurement matches, this field will be null. CSR Tiers are referenced by
                        // CSR Designations, which are available via the Metadata API.
                        "Tier": "int",

                        // CSR Designation. If the player is still in measurement matches, this field
                        // will be null. CSR Designations are available via the Metadata API.
                        "Designation": "int",

                        // Raw CSR value. If the player is still in measurement matches, this field
                        // will be null. If the player is not in a high enough designation, this will
                        // be zero.
                        "Raw": "int",

                        // Percentage of progress towards the next CSR tier. If the player is still in
                        // measurement matches, this field will be null.
                        "PercentToNextTier": "int",

                        // Number of measurement matches remaining until the player earns a CSR. If
                        // this field is greater than zero, the player does not have a CSR yet and the
                        // other components of the CSR will be null.
                        "MeasurementMatchesRemaining": "int",

                        // Player's ranking on the CSR leaderboard. If the player is still in
                        // measurement matches, this field will be null. If the player is not in a high
                        // enough designation, this will be zero.
                        "Rank": "int"
                      },

                      // Competitive Skill Ranking (CSR) of the player after the match ended. If the
                      // match did not occur in a ranked playlist, this will be null.
                      "UpdatedCsr": {

                        // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                        // measurement matches, this field will be null. CSR Tiers are referenced by
                        // CSR Designations, which are available via the Metadata API.
                        "Tier": "int",

                        // CSR Designation. If the player is still in measurement matches, this field
                        // will be null. CSR Designations are available via the Metadata API.
                        "Designation": "int",

                        // Raw CSR value. If the player is still in measurement matches, this field
                        // will be null. If the player is not in a high enough designation, this will
                        // be zero.
                        "Raw": "int",

                        // Percentage of progress towards the next CSR tier. If the player is still in
                        // measurement matches, this field will be null.
                        "PercentToNextTier": "int",

                        // Number of measurement matches remaining until the player earns a CSR. If
                        // this field is greater than zero, the player does not have a CSR yet and the
                        // other components of the CSR will be null.
                        "MeasurementMatchesRemaining": "int",

                        // Player's ranking on the CSR leaderboard. If the player is still in
                        // measurement matches, this field will be null. If the player is not in a high
                        // enough designation, this will be zero.
                        "Rank": "int"
                      },

                      // Internal use.
                      "PreviousMmr": {

                        "Rating": "double",

                        "Variance": "double",

                        // Unused.
                        "LastModifiedDate": {

                          "ISO8601Date": "string"
                        }
                      },

                      // Internal use.
                      "UpdatedMmr": {

                        "Rating": "double",

                        "Variance": "double",

                        // Unused.
                        "LastModifiedDate": {

                          "ISO8601Date": "string"
                        }
                      },

                    }
                  }
                ],

                // Unused.
                "Links": {}
              }
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Player Match History
  "/hw2/players/{player}/stats":
    get:
      description: |
        <p>Retrieves high-level aggregations across the lifetime of a Player.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>September 5, 2017:</strong></p>
            <ul>
                <li>Added additional fields: "GameMode" and "HighestObjectiveScoreByTeamSize".</li>
                <li>Documented new game mode "Terminus Firefight".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Player-Stats-Summary
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Stats Summary for the Player.
          examples:
            application/json: |
              //
              // Main Response
              //
              {
                // Summary of activity across all Custom matches that the player has participated in.
                "CustomSummary": {

                  // Summary of activity across all Skirmish matches (player(s) vs. AI(s)) that the
                  // player has participated in.
                  "SkirmishStats": {

                    // Summary of activity across all Skirmish matches that contained only the player.
                    // This will contain a single Summary. The Summary contract is documented in detail
                    // below the documentation for the Main Response.
                    "SinglePlayerStats": "Summary",

                    // Summary of activity across all Skirmish matches that contained two or more human
                    // players that the player has participated in. This will contain a single Summary.
                    // The Summary contract is documented in detail below the documentation for the
                    // Main Response.
                    "MultiplayerStats": "Summary",

                    // Summary of activity across all Skirmish matches that contained only the player,
                    // separated by game mode. This will contain multiple Summary entries, one for each
                    // game mode. The Summary contract is documented in detail below the documentation
                    // for the Main Response.
                    "SinglePlayerModeStats": [ "Summary" ],

                    // Summary of activity across all Skirmish matches that contained two or more human
                    // players that the player has participated in. This will contain multiple Summary
                    // entries, one for each game mode. The Summary contract is documented in detail
                    // below the documentation for the Main Response.
                    "MultiplayerModeStats": [ "Summary" ],

                  },

                  // Summary of activity across all non-Skirmish matches that the player has
                  // participated in. This will contain a single Summary. The Summary contract is
                  // documented in detail below the documentation for the Main Response.
                  "CustomStats": "Summary",

                  // Summary of activity across all non-Skirmish matches that the player has
                  // participated in, separated by game mode. This will contain multiple Summary
                  // entries, one for each game mode. The Summary contract is documented in detail
                  // below the documentation for the Main Response.
                  "CustomModeStats": [ "Summary" ]
                },

                // Summary across all matchmade matches that the player has participated in. This
                // includes both social and ranked matches, matches from all seasons, and matches from
                // all game modes.
                "MatchmakingSummary": {

                  // Summary across all matches in social (unranked) playlists. This may include
                  // summary information from playlists that are no longer playable. Playlists that the
                  // player has never played in are omitted from this collection. Note that is possible
                  // for a playlist to go between social and ranked. Consumers of this endpoint should
                  // be careful about the possibility that a playlist appears in both collections. This
                  // will contain a Summary entry for each playlist. The Summary contract is documented
                  // in detail below the documentation for the Main Response.
                  "SocialPlaylistStats": [ "Summary" ],

                  // Summary across all matches in ranked playlists. This may include summary
                  // information from playlists that are no longer playable. Playlists that the player
                  // has never played in are omitted from this collection. Note that is possible for a
                  // playlist to go between social and ranked. Consumers of this endpoint should be
                  // careful about the possibility that a playlist appears in both collections. The
                  // Summary contract is documented in detail below the documentation for the Main
                  // Response.
                  "RankedPlaylistStats": [ "Summary" ],

                  // Summary across all matches in social (unranked) playlists, separated by game mode.
                  // This may include summary information from playlists that are no longer playable.
                  // Playlists that the player has never played in are omitted from this collection.
                  // Note that is possible for a playlist to go between social and ranked. Consumers of
                  // this endpoint should be careful about the possibility that a playlist appears in
                  // both collections. This will contain multiple Summary entries, one for each
                  // playlist and game mode combination. The Summary contract is documented in detail
                  // below the documentation for the Main Response.
                  "SocialModeStats": [ "Summary" ],

                  // Summary across all matches in ranked playlists, separated by game mode. This may
                  // include summary information from playlists that are no longer playable. Playlists
                  // that the player has never played in are omitted from this collection. Note that is
                  // possible for a playlist to go between social and ranked. Consumers of this
                  // endpoint should be careful about the possibility that a playlist appears in both
                  // collections. This will contain multiple Summary entries, one for each playlist and
                  // game mode combination. The Summary contract is documented in detail below the
                  // documentation for the Main Response.
                  "RankedModeStats": [ "Summary" ],

                }
              }

              //
              // Summary
              //
              {
                // Playlist ID that this entry summarizes. If this entry summarizes Custom matches,
                // this will be null. Playlists are available via the Metadata API.
                "PlaylistId": "guid",

                // When summarizing a set of matches that took place in a common playlist, this field
                // provides the current classification. This field will contain one of the following
                // values:
                //   General Stats = 0,
                //   Blitz Stats = 1,
                //   Firefight Stats = 2
                // If this entry summarizes Custom matches, this will be null.
                "PlaylistClassification": "int",

                // Highest Competitive Skill Ranking (CSR) achieved by the player in the playlist. If
                // the player has never finished the measurement matches on this playlist, this field
                // will be null. If this entry does not summarize ranked matches, this will be null.
                "HighestCsr": {

                  // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                  // measurement matches, this field will be null. CSR Tiers are referenced by CSR
                  // Designations, which are available via the Metadata API.
                  "Tier": "int",

                  // CSR Designation. If the player is still in measurement matches, this field will be
                  // null. CSR Designations are available via the Metadata API.
                  "Designation": "int",

                  // Raw CSR value. If the player is still in measurement matches, this field will be
                  // null. If the player is not in a high enough designation, this will be zero.
                  "Raw": "int",

                  // Percentage of progress towards the next CSR tier. If the player is still in
                  // measurement matches, this field will be null.
                  "PercentToNextTier": "int",

                  // Number of measurement matches remaining until the player earns a CSR. If this
                  // field is greater than zero, the player does not have a CSR yet and the other
                  // components of the CSR will be null.
                  "MeasurementMatchesRemaining": "int",

                  // Player's ranking on the CSR leaderboard. If the player is still in measurement
                  // matches, this field will be null. If the player is not in a high enough
                  // designation, this will be zero.
                  "Rank": "int"
                },

                // Total amount of time the player spent in matches. This includes time spent observing
                // the match after being eliminated. This is expressed as an ISO 8601 Duration.
                "TotalTimePlayed": "string",

                // Total number of matches that the player participated in.
                "TotalMatchesStarted": "int",

                // Total number of matches where the player was present until the match ended.
                "TotalMatchesCompleted": "int",

                // Total number of matches that the player won.
                "TotalMatchesWon": "int",

                // Total number of matches that the player lost.
                "TotalMatchesLost": "int",

                // Total number of times the player has captured a point.
                "TotalPointCaptures": "int",

                // Total number of units trained by the player.
                "TotalUnitsBuilt": "int",

                // Total number of units trained by the player that were later destroyed.
                "TotalUnitsLost": "int",

                // Total number of units that the player participated in destroying.
                "TotalUnitsDestroyed": "int",

                // Total number of times the player played a card, if applicable; otherwise, 0.
                "TotalCardPlays": "int",

                // Highest wave completed while the player was still present in a match, if applicable;
                // otherwise, 0.
                "HighestWaveCompleted": "int",

                // Summary for all leaders used by the player.
                "LeaderStats": {

                  // Leader ID. Leaders are available via the Metadata API.
                  "string": {

                    // Total amount of time the player spent in matches with this leader. This includes
                    // time spent observing the match after being eliminated. This is expressed as an
                    // ISO 8601 Duration.
                    "TotalTimePlayed": "string",

                    // Total number of matches that the player participated in with this leader.
                    "TotalMatchesStarted": "int",

                    // Total number of matches where the player was present until the match ended with
                    // this leader.
                    "TotalMatchesCompleted": "int",

                    // Total number of matches that the player won with this leader.
                    "TotalMatchesWon": "int",

                    // Total number of matches that the player lost with this leader.
                    "TotalMatchesLost": "int",

                    // Total number of times the player used this leader's active leader power.
                    "TotalLeaderPowersCast": "int"
                  }
                },

                // Game mode that this entry summarizes. If this entry is not summarizing a game mode
                // pivot, this field will be null. Otherwise, this field will contain one of the
                // following values:
                //   Unknown = 0,
                //   CampaignSolo = 1,
                //   CampaignCooperative = 2,
                //   Deathmatch = 3,
                //   Domination = 4,
                //   Strongholds = 5,
                //   Blitz = 6,
                //   Firefight = 7,
                //   NormalTutorial = 8,
                //   BlitzTutorial = 9,
                //   TerminusFirefight = 10
                "GameMode": "int",

                // Highest objective score that the player has ever achieved in matches summarized by
                // this entry. This field is a mapping from the team size to the highest objective
                // score achieved.
                "HighestObjectiveScoreByTeamSize": {

                  "int": "int",

                }
              }
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Player Stats Summary
  "/hw2/players/{player}/stats/seasons/{seasonId}":
    get:
      description: |
        <p>Retrieves high-level aggregations across a Season for a Player.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>September 5, 2017:</strong></p>
            <ul>
                <li>Added additional pivots of data: "CustomModeStats", "SinglePlayerModeStats", "MultiplayerModeStats", "SocialModeStats", and "RankedModeStats".</li>
                <li>Added additional fields to the "Summary" contract: "GameMode" and "HighestObjectiveScoreByTeamSize".</li>
                <li>Documented new game mode "Terminus Firefight".</li>
            </ul>
        </div>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Player-Season-Stats-Summary
      parameters:
        - description: The Player's Gamertag.
          in: path
          name: player
          required: true
          type: string
        - description: A Season ID or "current" for the current Season. Seasons are available via the Metadata API.
          in: path
          name: seasonId
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Stats Summary for the Player.
          examples:
            application/json: |
              {
                // ID of the Season that this summary information is for. Seasons are available via the
                // Metadata API.
                "SeasonId": "guid",

                // Summary of activity across all playlists that were part of the season (and therefore
                // ranked). Stats from gameplay in social playlists during the timeframe of the season
                // are not provided. Playlists that the player has never played in are omitted from
                // this collection.
                "RankedPlaylistStats": [
                  {
                    // Playlist ID that this entry summarizes. If this entry summarizes Custom matches,
                    // this will be null. Playlists are available via the Metadata API.
                    "PlaylistId": "guid",

                    // When summarizing a set of matches that took place in a common playlist, this
                    // field provides the current classification. This field will contain one of the
                    // following values:
                    //   General Stats = 0,
                    //   Blitz Stats = 1,
                    //   Firefight Stats = 2
                    // If this entry summarizes Custom matches, this will be null.
                    "PlaylistClassification": "int",

                    // Highest Competitive Skill Ranking (CSR) achieved by the player in the playlist.
                    // If the player has never finished the measurement matches on this playlist, this
                    // field will be null. If this entry does not summarize ranked matches, this will
                    // be null.
                    "HighestCsr": {

                      // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                      // measurement matches, this field will be null. CSR Tiers are referenced by CSR
                      // Designations, which are available via the Metadata API.
                      "Tier": "int",

                      // CSR Designation. If the player is still in measurement matches, this field
                      // will be null. CSR Designations are available via the Metadata API.
                      "Designation": "int",

                      // Raw CSR value. If the player is still in measurement matches, this field will
                      // be null. If the player is not in a high enough designation, this will be zero.
                      "Raw": "int",

                      // Percentage of progress towards the next CSR tier. If the player is still in
                      // measurement matches, this field will be null.
                      "PercentToNextTier": "int",

                      // Number of measurement matches remaining until the player earns a CSR. If this
                      // field is greater than zero, the player does not have a CSR yet and the other
                      // components of the CSR will be null.
                      "MeasurementMatchesRemaining": "int",

                      // Player's ranking on the CSR leaderboard. If the player is still in measurement
                      // matches, this field will be null. If the player is not in a high enough
                      // designation, this will be zero.
                      "Rank": "int"
                    },

                    // Total amount of time the player spent in matches. This includes time spent
                    // observing the match after being eliminated. This is expressed as an ISO 8601
                    // Duration.
                    "TotalTimePlayed": "string",

                    // Total number of matches that the player participated in.
                    "TotalMatchesStarted": "int",

                    // Total number of matches where the player was present until the match ended.
                    "TotalMatchesCompleted": "int",

                    // Total number of matches that the player won.
                    "TotalMatchesWon": "int",

                    // Total number of matches that the player lost.
                    "TotalMatchesLost": "int",

                    // Total number of times the player has captured a point.
                    "TotalPointCaptures": "int",

                    // Total number of units trained by the player.
                    "TotalUnitsBuilt": "int",

                    // Total number of units trained by the player that were later destroyed.
                    "TotalUnitsLost": "int",

                    // Total number of units that the player participated in destroying.
                    "TotalUnitsDestroyed": "int",

                    // Total number of times the player played a card, if applicable; otherwise, 0.
                    "TotalCardPlays": "int",

                    // Highest wave completed while the player was still present in a match, if
                    // applicable; otherwise, 0.
                    "HighestWaveCompleted": "int",

                    // Summary for all leaders used by the player.
                    "LeaderStats": {

                      // Leader ID. Leaders are available via the Metadata API.
                      "string": {

                        // Total amount of time the player spent in matches with this leader. This
                        // includes time spent observing the match after being eliminated. This is
                        // expressed as an ISO 8601 Duration.
                        "TotalTimePlayed": "string",

                        // Total number of matches that the player participated in with this leader.
                        "TotalMatchesStarted": "int",

                        // Total number of matches where the player was present until the match ended
                        // with this leader.
                        "TotalMatchesCompleted": "int",

                        // Total number of matches that the player won with this leader.
                        "TotalMatchesWon": "int",

                        // Total number of matches that the player lost with this leader.
                        "TotalMatchesLost": "int",

                        // Total number of times the player used this leader's active leader power.
                        "TotalLeaderPowersCast": "int"
                      }
                    },

                    // Game Mode that this entry summarizes. If this entry is not summarizing a game
                    // mode pivot, this field will be null. Otherwise, this field will contain one of
                    // the following values:
                    //   Unknown = 0,
                    //   CampaignSolo = 1,
                    //   CampaignCooperative = 2,
                    //   Deathmatch = 3,
                    //   Domination = 4,
                    //   Strongholds = 5,
                    //   Blitz = 6,
                    //   Firefight = 7,
                    //   NormalTutorial = 8,
                    //   BlitzTutorial = 9,
                    //   TerminusFirefight = 10
                    "GameMode": "int",

                    // Highest objective score that the player has ever achieved in matches summarized
                    // by this entry. This field is a mapping from the team size to the highest
                    // objective score achieved.
                    "HighestObjectiveScoreByTeamSize": {

                      "int": "int",

                    }
                  }
                ]
              }
        "404":
          description: Specified Player was not found.
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Player Season Stats Summary
  "/hw2/playlist/{playlistId}/rating":
    get:
      description: |
        <p>Retrieves Playlist Ratings in the current season for one or more Players.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Player-Playlist-Ratings
      parameters:
        - description: The ID of the Playlist to get Ratings for.
          in: path
          name: playlistId
          required: true
          type: string
        - description: A comma-separated list of Gamertags. Up to 6 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the Playlist Ratings for the Player(s).
          examples:
            application/json: |
              {
                // Set of results. One per player.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. This field will contain one of the
                    // following values:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    "Result": {

                      // Internal use.
                      "Mmr": {

                        "Rating": "double",

                        "Variance": "double",

                        // Unused.
                        "LastModifiedDate": {

                          "ISO8601Date": ""
                        }
                      },

                      // Competitive Skill Ranking (CSR) of the player. If this is not a ranked
                      // playlist, this will be null.
                      "Csr": {

                        // CSR Tier. CSR Tiers are designation-specific. If the player is still in
                        // measurement matches, this field will be null. CSR Tiers are referenced by
                        // CSR Designations, which are available via the Metadata API.
                        "Tier": "int",

                        // CSR Designation. If the player is still in measurement matches, this field
                        // will be null. CSR Designations are available via the Metadata API.
                        "Designation": "int",

                        // Raw CSR value. If the player is still in measurement matches, this field
                        // will be null. If the player is not in a high enough designation, this will
                        // be zero.
                        "Raw": "int",

                        // Percentage of progress towards the next CSR tier. If the player is still in
                        // measurement matches, this field will be null.
                        "PercentToNextTier": "int",

                        // Number of measurement matches remaining until the player earns a CSR. If
                        // this field is greater than zero, the player does not have a CSR yet and the
                        // other components of the CSR will be null.
                        "MeasurementMatchesRemaining": "int",

                        // Player's ranking on the CSR leaderboard. If the player is still in
                        // measurement matches, this field will be null. If the player is not in a high
                        // enough designation, this will be zero.
                        "Rank": "int"
                      }
                    }
                  }
                ],

                // Internal use.
                "Links": { }
              }
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Player Playlist Ratings
  /hw2/xp:
    get:
      description: |
        <p>Retrieves XP and Rank information for one or more players.</p>
        <br />
        <h4>Changelog</h4>
        <div class="panel-body">
            <p><strong>February 21, 2017:</strong></p>
            <ul>
                <li>Added Endpoint.</li>
            </ul>
        </div>
      operationId: Halo-Wars-2-Player-XPs
      parameters:
        - description: A comma-separated list of Gamertags. Up to 6 Gamertags may be specified.
          in: query
          name: players
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: The response body will contain the XPs for the Player(s).
          examples:
            application/json: |
              {
                // Set of results. One per player.
                "Results": [
                  {
                    // The player's gamertag.
                    "Id": "string",

                    // The result of the query for the player. This field will contain one of the
                    // following values:
                    //   Success = 0,
                    //   NotFound = 1,
                    //   ServiceFailure = 2,
                    //   ServiceUnavailable = 3
                    // It is possible for different requests from the batch to succeed and fail
                    // independently.
                    "ResultCode": "int",

                    "Result": {

                      // Amount of XP that the player has earned in multiplayer play. This includes
                      // both campaign earned by gameplay and challenges.
                      "MultiplayerXp": "int",

                      // Amount of XP that the player has earned in campaign play. This includes XP
                      // from solo and cooperative modes.
                      "CampaignXp": "int",

                      // Total amount of XP that the player has earned from all sources.
                      "TotalXp": "int",

                      // Date and Time when the player's XP was last updated. This is expressed as an
                      // ISO 8601 combined Date and Time.
                      "LastUpdatedDateUtc": {

                        "ISO8601Date": "string"
                      },

                      // Current rank of the player.
                      "SpartanRankId": "guid"
                    }
                  }
                ],

                // Internal use.
                "Links": { }
              }
        "500":
          description: Internal Server Error
        "503":
          description: Service Unavailable
      summary: Halo Wars 2 - Player XPs
