Stats

API change history

API 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.

Try it

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

  • string
    Subscription key which provides access to this API. Found in your Profile.

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