Stats
API change historyAPI that provides statistical data about Players and Matches.
Halo Wars 2 - Leaderboard - Player CSR
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.
Changelog
March 6, 2018:
- Fixed documentation typos for the names of the "Player" and "Gamertag" properties.
July 31, 2017:
- Clarified documentation for which players are included in the leaderboard.
July 14, 2017:
- Added Endpoint.
Request
Request URL
Request parameters
-
string
The ID for the Season.
-
string
The ID for the Playlist.
-
(optional)number
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.
Request headers
Request body
Responses
200 OK
The response body will contain the Players in the Leaderboard. An empty list will be returned if no Players are in the Leaderboard.
Representations
{
// 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 Not Found
The Season does not exist, or the Playlist either does not exist or is not part of the given Season.
Representations
500 Internal Server Error
Internal Server Error
Representations
503 Service Unavailable
Service Unavailable
Representations
Code samples
@ECHO OFF
curl -v -X GET "https://www.haloapi.com/stats/hw2/player-leaderboards/csr/{seasonId}/{playlistId}?count={number}"
-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}");
// Request parameters
queryString["count"] = "{number}";
var uri = "https://www.haloapi.com/stats/hw2/player-leaderboards/csr/{seasonId}/{playlistId}?" + 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/hw2/player-leaderboards/csr/{seasonId}/{playlistId}");
builder.setParameter("count", "{number}");
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
"count": "{number}",
};
$.ajax({
url: "https://www.haloapi.com/stats/hw2/player-leaderboards/csr/{seasonId}/{playlistId}?" + $.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/hw2/player-leaderboards/csr/{seasonId}/{playlistId}";
NSArray* array = @[
// Request parameters
@"entities=true",
@"count={number}",
];
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/hw2/player-leaderboards/csr/{seasonId}/{playlistId}');
$url = $request->getUrl();
$headers = array(
// Request headers
'Ocp-Apim-Subscription-Key' => '{subscription key}',
);
$request->setHeader($headers);
$parameters = array(
// Request parameters
'count' => '{number}',
);
$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({
# Request parameters
'count': '{number}',
})
try:
conn = httplib.HTTPSConnection('www.haloapi.com')
conn.request("GET", "/stats/hw2/player-leaderboards/csr/{seasonId}/{playlistId}?%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({
# Request parameters
'count': '{number}',
})
try:
conn = http.client.HTTPSConnection('www.haloapi.com')
conn.request("GET", "/stats/hw2/player-leaderboards/csr/{seasonId}/{playlistId}?%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/hw2/player-leaderboards/csr/{seasonId}/{playlistId}')
query = URI.encode_www_form({
# Request parameters
'count' => '{number}'
})
if uri.query && uri.query.length > 0
uri.query += '&' + query
else
uri.query = query
end
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