Stats
API change historyAPI that provides statistical data about Players and Matches.
Halo 5 - Player Service Records - Warzone
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.
Changelog
December 22, 2017:
- Added Game Mode clarifications to the Endpoint description.
February 21, 2017:
- Renamed Endpoint from "Service Record: Warzone" to "Halo 5 - Player Service Records - Warzone".
- Removed "{title}" Request Parameter.
Request
Request URL
Request parameters
-
string
A comma-separated list of Gamertags. Up to 32 Gamertags may be specified.
Request headers
Request body
Responses
200 OK
The response body will contain the Service Records for the requested player(s).
Representations
{
// 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 Not Found
One or more Gamertags don't pass validation rules.
Representations
500 Internal Server Error
Internal Server Error
Representations
Code samples
@ECHO OFF
curl -v -X GET "https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "{body}"
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");
var uri = "https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}&" + queryString;
var response = await client.GetAsync(uri);
}
}
}
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample
{
public static void main(String[] args)
{
HttpClient httpclient = HttpClients.createDefault();
try
{
URIBuilder builder = new URIBuilder("https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}");
URI uri = builder.build();
HttpGet request = new HttpGet(uri);
request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");
// Request body
StringEntity reqEntity = new StringEntity("{body}");
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var params = {
// Request parameters
};
$.ajax({
url: "https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}&" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
},
type: "GET",
// Request body
data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* path = @"https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}";
NSArray* array = @[
// Request parameters
@"entities=true",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"GET"];
// Request headers
[_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
// Request body
[_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if (nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if (nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';
$request = new Http_Request2('https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}');
$url = $request->getUrl();
$headers = array(
// Request headers
'Ocp-Apim-Subscription-Key' => '{subscription key}',
);
$request->setHeader($headers);
$parameters = array(
// Request parameters
);
$url->setQueryVariables($parameters);
$request->setMethod(HTTP_Request2::METHOD_GET);
// Request body
$request->setBody("{body}");
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.urlencode({
})
try:
conn = httplib.HTTPSConnection('www.haloapi.com')
conn.request("GET", "/stats/h5/servicerecords/warzone?players={players}&%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.parse.urlencode({
})
try:
conn = http.client.HTTPSConnection('www.haloapi.com')
conn.request("GET", "/stats/h5/servicerecords/warzone?players={players}&%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://www.haloapi.com/stats/h5/servicerecords/warzone?players={players}')
request = Net::HTTP::Get.new(uri.request_uri)
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body