Files
ToneAPI_backend/docs/v2.yml
T

454 lines
13 KiB
YAML

openapi: 3.0.2
info:
title: ToneAPI
version: '2.0'
contact:
name: Legonzaur
url: 'https://github.com/Legonzaur'
license:
name: The Unlicense
url: 'https://unlicense.org/'
description: |-
Stats tracking API for Titanfall 2 Northstar
All query params can be negated using `!`. Example : (`https://tone.sleepycat.date/v2/client/gamemodes?gamemode=!sns`)
tags:
- name: client
description: Routes accessibles by everyone
- name: server
description: Routes accessibles only to server owners
servers:
- url: 'https://tone.sleepycat.date/v2'
paths:
/client/hosts:
get:
summary: Your GET endpoint
tags:
- client
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
'[number] host_id':
type: string
example: Fvnkhead
examples:
Example 1:
value:
'1': Fvnkhead
'2': Legonzaur
operationId: get-client-hosts
description: An object with host ID as keys and host name as values
/client/servers:
get:
summary: List of servers
tags:
- client
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
'[string] server_name':
type: object
properties:
deaths:
type: integer
kills:
type: integer
max_distance:
type: integer
total_distance:
type: integer
host:
type: integer
examples:
Example 1:
value:
fvnkhead's 3v3:
deaths: 79810
kills: 76218
max_distance: 3733
total_distance: 42200935
host: 1
fvnkhead's 7v7:
deaths: 148609
kills: 163272
max_distance: 6578
total_distance: 113915706
host: 1
operationId: get-server-list
description: A JSON object with server names as keys and server data as values
parameters:
- $ref: '#/components/parameters/server'
- $ref: '#/components/parameters/player'
- $ref: '#/components/parameters/weapon'
- $ref: '#/components/parameters/map'
- $ref: '#/components/parameters/gamemode'
- $ref: '#/components/parameters/host'
parameters: []
/client/weapons:
get:
summary: Statistics for all weapons
tags:
- client
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
'[string] weapon_id':
type: object
properties:
deaths:
type: integer
description: Number of deaths caused by this weapon
kills:
type: integer
max_distance:
type: integer
total_distance:
type: integer
deaths_while_equipped:
type: integer
description: Number of deaths while this weapon is equipped
examples:
Example 1:
value:
autopistol:
deaths: 27
kills: 28
max_distance: 2173
total_distance: 12792
car:
deaths: 1394
kills: 1534
max_distance: 3217
total_distance: 905505
operationId: get-client-weapons
parameters:
- $ref: '#/components/parameters/server'
- $ref: '#/components/parameters/player'
- $ref: '#/components/parameters/weapon'
- $ref: '#/components/parameters/map'
- $ref: '#/components/parameters/gamemode'
- $ref: '#/components/parameters/host'
requestBody:
content: {}
description: A JSON Object with weapon IDS as keys and weapon data as value
description: A JSON Object with weapon IDs as keys and weapon data as values
parameters: []
/client/players:
get:
summary: Statistics for all players
tags:
- client
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
'[number] player_id':
type: object
properties:
deaths:
type: integer
kills:
type: integer
max_distance:
type: integer
total_distance:
type: integer
username:
type: string
examples:
Example 1:
value:
'2250125460':
username: Legonzaur
deaths: 0
kills: 0
max_kill_distance: 0
avg_kill_distance: 0
operationId: get-client-players
parameters:
- $ref: '#/components/parameters/weapon'
- $ref: '#/components/parameters/server'
- $ref: '#/components/parameters/player'
- $ref: '#/components/parameters/gamemode'
- $ref: '#/components/parameters/map'
- $ref: '#/components/parameters/host'
description: A JSON Object with player IDs as keys and player data as values
/client/maps:
get:
summary: Your GET endpoint
tags:
- client
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
'[string] map_id':
$ref: '#/components/schemas/KillData'
examples:
Example 1:
value:
lf_meadow:
deaths: 13628
kills: 11791
max_distance: 3970
total_distance: 7139763
lf_township:
deaths: 14861
kills: 14232
max_distance: 3642
total_distance: 9022513
operationId: get-client-maps
parameters:
- $ref: '#/components/parameters/host'
- $ref: '#/components/parameters/gamemode'
- $ref: '#/components/parameters/map'
- $ref: '#/components/parameters/weapon'
- $ref: '#/components/parameters/player'
- $ref: '#/components/parameters/server'
description: A JSON Object with map IDs as keys and map data as values
/client/gamemodes:
get:
summary: Your GET endpoint
tags:
- client
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
'[string] gamemode_id':
$ref: '#/components/schemas/KillData'
examples:
Example 1:
value:
ps:
deaths: 273232
kills: 286679
max_distance: 8521
total_distance: 184069789
aitdm:
deaths: 11388
kills: 12814
max_distance: 5689
total_distance: 9184028
operationId: get-client-gamemodes
description: A JSON Object with gamemodes IDs as keys and gamemodes data as values
parameters:
- $ref: '#/components/parameters/host'
- $ref: '#/components/parameters/gamemode'
- $ref: '#/components/parameters/map'
- $ref: '#/components/parameters/weapon'
- $ref: '#/components/parameters/player'
- $ref: '#/components/parameters/server'
/servers:
parameters: []
post:
tags:
- server
summary: ''
operationId: post-servers-serverId
responses:
'200':
description: OK
'403':
description: Forbidden
description: Used to test auth
security:
- Auth_Token: []
/servers/kills:
post:
tags:
- server
summary: Post kills
operationId: post-kills
responses:
'201':
description: Created
'400':
description: Bad Request
'401':
description: Unauthorized
parameters: []
security:
- Auth_Token: []
description: Allows a Northstar server to record kills on the database
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Kill'
description: ''
parameters: []
components:
schemas:
KillData:
title: Killdata
type: object
properties:
deaths:
type: integer
kills:
type: integer
max_kill_distance:
type: integer
avg_kill_distance:
type: number
Kill:
title: Kill
type: object
properties:
id:
type: integer
readOnly: true
server:
type: string
readOnly: true
tone_version:
type: string
match_id:
type: string
game_mode:
type: string
map:
type: string
game_time:
type: string
format: time
player_count:
type: integer
attacker_name:
type: string
attacker_id:
type: integer
attacker_current_weapon:
type: string
attacker_current_weapon_mods:
type: integer
attacker_weapon_1:
type: string
attacker_weapon_1_mods:
type: integer
attacker_weapon_2:
type: string
attacker_weapon_2_mods:
type: integer
attacker_weapon_3:
type: string
attacker_weapon_3_mods:
type: integer
attacker_offhand_weapon_1:
type: integer
attacker_offhand_weapon_2:
type: integer
victim_name:
type: string
victim_id:
type: integer
victim_current_weapon:
type: string
victim_current_weapon_mods:
type: integer
victim_weapon_1:
type: string
victim_weapon_1_mods:
type: integer
victim_weapon_2:
type: string
victim_weapon_2_mods:
type: integer
victim_weapon_3:
type: string
victim_weapon_3_mods:
type: integer
victim_offhand_weapon_1:
type: integer
victim_offhand_weapon_2:
type: integer
cause_of_death:
type: string
distance:
type: number
required:
- cause_of_death
securitySchemes:
Auth_Token:
type: http
scheme: bearer
parameters:
server:
name: server
in: query
required: false
schema:
type: string
example: fvnkhead's 3v3
description: Fetch data for specific server
player:
name: player
in: query
required: false
schema:
type: integer
example: 1005930844007
description: Fetch data for specific player
weapon:
name: weapon
in: query
required: false
schema:
type: string
example: epg
description: Fetch data for specific weapon
map:
name: map
in: query
required: false
schema:
type: string
example: lf_stacks
description: Fetch data for specific map
gamemode:
name: gamemode
in: query
required: false
schema:
type: string
example: aitdm
description: Fetch data for specific gamemode
host:
name: host
in: query
required: false
schema:
type: integer
example: 1
description: Fetch data for specific host
responses: {}
examples: {}