curl --request GET \
--url https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match \
--header 'Authorization: Bearer <token>'import requests
url = "https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"mode": "default",
"kind": "live",
"round": {
"id": "<string>",
"round_number": 123,
"commissioner_key": "<string>",
"execution_backend": "dispatch",
"round_config": {},
"status": "pending",
"division": {
"id": "<string>",
"name": "<string>",
"level": 123,
"type": "<string>",
"hidden": true,
"league": {
"name": "<string>",
"commissioner_key": "<string>",
"id": "<string>",
"game": {
"name": "<string>",
"owner_user_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"coworld_name": "<string>",
"description": "<string>",
"notes": "<string>",
"default_league_id": "<string>",
"coworld_id": "<string>",
"canonical_coworld_id": "<string>",
"coworld_tags": [
"<string>"
]
},
"mod": {
"name": "<string>",
"owner_user_id": "<string>",
"id": "<string>",
"game": {
"name": "<string>",
"owner_user_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"coworld_name": "<string>",
"description": "<string>",
"notes": "<string>",
"default_league_id": "<string>",
"coworld_id": "<string>",
"canonical_coworld_id": "<string>",
"coworld_tags": [
"<string>"
]
},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"notes": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"logs_reporter_id": "<string>",
"handicaps": {},
"handicap_dynamic": {
"max_handicap": 0.5,
"curve": 1,
"min_entrants": 3,
"dominance_ratio_for_max": 3,
"winrate_for_max": 0.85
},
"short_name": "<string>",
"description": "<string>",
"commissioner_config": {},
"commissioner_migration_version": "<string>",
"rounds_paused_at": "2023-11-07T05:31:56Z",
"submissions_locked_at": "2023-11-07T05:31:56Z",
"settings": {},
"filler_policy_version_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"seed_policy_version_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"seed_policy_number": 123,
"rules": {},
"public": false,
"hidden": false,
"is_game_of_week": false,
"disabled_at": "2023-11-07T05:31:56Z",
"notes": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"archived_at": "2023-11-07T05:31:56Z",
"round_schedule": {},
"notes": "<string>",
"commissioner_description": {
"round_schedule": "<string>",
"round_structure": "<string>",
"leaderboard_rules": "<string>",
"next_round": "<string>",
"scoring_mechanics": "<string>",
"changelog": [
{
"date": "<string>",
"title": "<string>",
"detail": "<string>",
"category": "<string>"
}
]
}
},
"created_at": "2023-11-07T05:31:56Z",
"round_display": {},
"scheduled_by": "ladder",
"error": "<string>",
"skip_kind": "budget_refused",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
},
"episode": {
"id": "<string>",
"inspect_url": "<string>",
"status": "pending",
"policy_version_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"participants": [
{
"position": 123,
"policy_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_name": "<string>",
"version": 123,
"kind": "policy",
"player_id": "<string>",
"player_name": "<string>",
"is_filler": false,
"is_seed": false
}
],
"scores": [
{
"policy_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"score": 123
}
],
"created_at": "2023-11-07T05:31:56Z",
"episode_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coworld_id": "<string>",
"coworld_name": "<string>",
"coworld_version": "<string>",
"variant_name": "<string>",
"job_index": 123,
"replay_url": "<string>",
"live_url": "<string>",
"error_type": "<string>",
"error": "<string>",
"failed_policy_index": 123,
"failed_agent_index": 123,
"participant_scores": [
{
"position": 1,
"score": 123
}
],
"dispatched_at": "2023-11-07T05:31:56Z",
"running_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
},
"has_newer_replay": true,
"has_older_replay": true,
"reason": {
"peak_score": 123,
"scored": true,
"margin": 123,
"first_player_name": "<string>",
"second_player_name": "<string>",
"leader_name": "<string>",
"winner_rank": 123,
"beaten_rank": 123,
"field_size": 123,
"replay_count": 123
},
"episode_number": 123,
"replay_position": 123,
"replay_total": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get league featured match
Return the single episode one featured-match lens lands on right now, or null when the lens has no match in the league’s recent competition rounds. The default lens tries 1st-vs-2nd, then the given player’s latest game, then the showcase heuristic.
curl --request GET \
--url https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match \
--header 'Authorization: Bearer <token>'import requests
url = "https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://softmax.com/api/observatory/v2/leagues/{league_id}/featured-match")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"mode": "default",
"kind": "live",
"round": {
"id": "<string>",
"round_number": 123,
"commissioner_key": "<string>",
"execution_backend": "dispatch",
"round_config": {},
"status": "pending",
"division": {
"id": "<string>",
"name": "<string>",
"level": 123,
"type": "<string>",
"hidden": true,
"league": {
"name": "<string>",
"commissioner_key": "<string>",
"id": "<string>",
"game": {
"name": "<string>",
"owner_user_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"coworld_name": "<string>",
"description": "<string>",
"notes": "<string>",
"default_league_id": "<string>",
"coworld_id": "<string>",
"canonical_coworld_id": "<string>",
"coworld_tags": [
"<string>"
]
},
"mod": {
"name": "<string>",
"owner_user_id": "<string>",
"id": "<string>",
"game": {
"name": "<string>",
"owner_user_id": "<string>",
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"coworld_name": "<string>",
"description": "<string>",
"notes": "<string>",
"default_league_id": "<string>",
"coworld_id": "<string>",
"canonical_coworld_id": "<string>",
"coworld_tags": [
"<string>"
]
},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"notes": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"logs_reporter_id": "<string>",
"handicaps": {},
"handicap_dynamic": {
"max_handicap": 0.5,
"curve": 1,
"min_entrants": 3,
"dominance_ratio_for_max": 3,
"winrate_for_max": 0.85
},
"short_name": "<string>",
"description": "<string>",
"commissioner_config": {},
"commissioner_migration_version": "<string>",
"rounds_paused_at": "2023-11-07T05:31:56Z",
"submissions_locked_at": "2023-11-07T05:31:56Z",
"settings": {},
"filler_policy_version_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"seed_policy_version_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"seed_policy_number": 123,
"rules": {},
"public": false,
"hidden": false,
"is_game_of_week": false,
"disabled_at": "2023-11-07T05:31:56Z",
"notes": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"archived_at": "2023-11-07T05:31:56Z",
"round_schedule": {},
"notes": "<string>",
"commissioner_description": {
"round_schedule": "<string>",
"round_structure": "<string>",
"leaderboard_rules": "<string>",
"next_round": "<string>",
"scoring_mechanics": "<string>",
"changelog": [
{
"date": "<string>",
"title": "<string>",
"detail": "<string>",
"category": "<string>"
}
]
}
},
"created_at": "2023-11-07T05:31:56Z",
"round_display": {},
"scheduled_by": "ladder",
"error": "<string>",
"skip_kind": "budget_refused",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
},
"episode": {
"id": "<string>",
"inspect_url": "<string>",
"status": "pending",
"policy_version_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"participants": [
{
"position": 123,
"policy_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"policy_name": "<string>",
"version": 123,
"kind": "policy",
"player_id": "<string>",
"player_name": "<string>",
"is_filler": false,
"is_seed": false
}
],
"scores": [
{
"policy_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"score": 123
}
],
"created_at": "2023-11-07T05:31:56Z",
"episode_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coworld_id": "<string>",
"coworld_name": "<string>",
"coworld_version": "<string>",
"variant_name": "<string>",
"job_index": 123,
"replay_url": "<string>",
"live_url": "<string>",
"error_type": "<string>",
"error": "<string>",
"failed_policy_index": 123,
"failed_agent_index": 123,
"participant_scores": [
{
"position": 1,
"score": 123
}
],
"dispatched_at": "2023-11-07T05:31:56Z",
"running_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
},
"has_newer_replay": true,
"has_older_replay": true,
"reason": {
"peak_score": 123,
"scored": true,
"margin": 123,
"first_player_name": "<string>",
"second_player_name": "<string>",
"leader_name": "<string>",
"winner_rank": 123,
"beaten_rank": 123,
"field_size": 123,
"replay_count": 123
},
"episode_number": 123,
"replay_position": 123,
"replay_total": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer token issued by Softmax
Path Parameters
League associated with the requested resource.
^league_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Query Parameters
Featured-match lens to evaluate.
default, showcase, closest, top-two, title, upset, blowout, mine, player, latest, live, random, step Division whose standings scope the rank lenses (1st vs 2nd, Title match, Upset).
^div_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Player featured by the 'mine' and 'player' lenses and the default chain.
^ply_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Seed for the random lens.
0 <= x <= 2147483647Episode the step lens starts from (a round episode entry ID).
100Step direction for the step lens.
newer, older Response
Successful Response
One featured-match pick: the episode a showcase lens landed on, and why.
Lens that produced this pick; the default lens resolves to one of its chain.
default, showcase, closest, top-two, title, upset, blowout, mine, player, latest, live, random, step Whether the pick is a live match or a completed replay.
live, replay Round the picked episode belongs to.
Show child attributes
Show child attributes
The picked episode.
Show child attributes
Show child attributes
Whether a newer replay exists in the window to step to.
Whether an older replay exists in the window to step to.
Structured facts behind the pick.
Show child attributes
Show child attributes
1-based position within the round's episodes, newest first, or null when unknown.
1-based position among the window's replays, newest first, or null for live picks.
Number of replays in the recent-round window.