695 lines
19 KiB
YAML
695 lines
19 KiB
YAML
openapi: 3.0.2
|
|
x-stoplight:
|
|
id: gr7tm5a03g740
|
|
info:
|
|
title: OpenAPI
|
|
version: '1.0'
|
|
servers:
|
|
- url: 'http://localhost:3000/v1'
|
|
tags:
|
|
- name: player
|
|
description: Everything about players
|
|
- name: server
|
|
description: Everything about servers
|
|
- name: weapon
|
|
description: Everything about weapons
|
|
- name: map
|
|
description: Everything about maps
|
|
paths:
|
|
/weapons/:
|
|
get:
|
|
summary: List Weapons
|
|
tags:
|
|
- weapon
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Weapon'
|
|
operationId: get-weapon-list
|
|
description: ''
|
|
put:
|
|
summary: ''
|
|
operationId: put-weapons
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WeaponID'
|
|
'201':
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WeaponID'
|
|
security:
|
|
- server_token: []
|
|
/maps/:
|
|
get:
|
|
summary: List Maps
|
|
tags:
|
|
- map
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Map'
|
|
operationId: get-map-list
|
|
put:
|
|
summary: ''
|
|
operationId: put-maps
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MapID'
|
|
'201':
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MapID'
|
|
security:
|
|
- server_token: []
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: string
|
|
example: mp_angel_city
|
|
/players:
|
|
get:
|
|
summary: List Players
|
|
tags:
|
|
- player
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Player'
|
|
operationId: get-player-list
|
|
'/players/{playerId}':
|
|
parameters:
|
|
- $ref: '#/components/parameters/playerId'
|
|
get:
|
|
summary: Get Player report
|
|
tags:
|
|
- player
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/Player-report'
|
|
'404':
|
|
description: User Not Found
|
|
operationId: get-player-report
|
|
description: Retrieve the information of the player with the matching id
|
|
/servers/:
|
|
get:
|
|
summary: Get Server list
|
|
tags:
|
|
- server
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Server'
|
|
operationId: get-server-list
|
|
post:
|
|
summary: ''
|
|
operationId: post-servers
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
description: Register a new server
|
|
'/servers/{serverId}':
|
|
parameters:
|
|
- $ref: '#/components/parameters/serverId'
|
|
get:
|
|
summary: Get Server report
|
|
tags:
|
|
- server
|
|
operationId: get-server-report
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/Server-report'
|
|
'/server/{serverId}/players':
|
|
get:
|
|
summary: List Players for Server
|
|
tags:
|
|
- server
|
|
- player
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TopPlayers'
|
|
operationId: get-player-list-for-server
|
|
parameters:
|
|
- $ref: '#/components/parameters/serverId'
|
|
'/servers/{serverId}/kills':
|
|
post:
|
|
summary: Post kills
|
|
tags:
|
|
- server
|
|
operationId: post-kills
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
'401':
|
|
description: Unauthorized
|
|
parameters: []
|
|
security:
|
|
- server_token: []
|
|
description: Allows a Northstar server to record kills on the database
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Kill'
|
|
description: ''
|
|
parameters:
|
|
- $ref: '#/components/parameters/serverId'
|
|
'/servers/{serverId}/weapons':
|
|
get:
|
|
summary: Get Weapon report for server
|
|
tags:
|
|
- server
|
|
- weapon
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedWeapon'
|
|
operationId: get-weapons-report-for-server
|
|
parameters: []
|
|
x-internal: false
|
|
parameters:
|
|
- $ref: '#/components/parameters/serverId'
|
|
'/servers/{serverId}/players/{playerId}':
|
|
parameters:
|
|
- $ref: '#/components/parameters/playerId'
|
|
- $ref: '#/components/parameters/serverId'
|
|
get:
|
|
summary: Get Player report for Server
|
|
tags:
|
|
- server
|
|
- player
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/Player-server-report'
|
|
'404':
|
|
description: Not Found
|
|
operationId: get-player-on-server
|
|
components:
|
|
schemas:
|
|
Player:
|
|
title: Player
|
|
x-stoplight:
|
|
id: be41fcacb2693
|
|
type: object
|
|
properties:
|
|
id:
|
|
$ref: '#/components/schemas/PlayerID'
|
|
name:
|
|
type: string
|
|
example: Legonzaur
|
|
opt-out:
|
|
type: boolean
|
|
default: false
|
|
description: 'If set to true, kills and deaths about this user won''t be sent to the database'
|
|
hide_TOS:
|
|
type: boolean
|
|
default: false
|
|
description: 'If set to true, TOS will be hidden when player joins a server'
|
|
required:
|
|
- id
|
|
Weapon:
|
|
title: Weapon
|
|
x-stoplight:
|
|
id: 7zc6t20eh3pcc
|
|
type: object
|
|
properties:
|
|
id:
|
|
$ref: '#/components/schemas/WeaponID'
|
|
name:
|
|
type: string
|
|
example: Kraber
|
|
description:
|
|
type: string
|
|
image:
|
|
type: string
|
|
format: uri
|
|
example: 'https://static.wikia.nocookie.net/titanfall_gamepedia/images/8/8b/Icon_kraber.png'
|
|
required:
|
|
- id
|
|
Map:
|
|
title: Map
|
|
x-stoplight:
|
|
id: hoh2m6pr6gli7
|
|
type: object
|
|
properties:
|
|
id:
|
|
$ref: '#/components/schemas/MapID'
|
|
name:
|
|
type: string
|
|
example: Angel City
|
|
description:
|
|
type: string
|
|
image:
|
|
type: string
|
|
format: uri
|
|
example: 'https://media.contentapi.ea.com/content/dam/eacom/en-us/common/articles-tf2-welcome-header.jpg.adapt.320w.jpg'
|
|
required:
|
|
- id
|
|
Server:
|
|
title: Server
|
|
x-stoplight:
|
|
id: hjfwmi2ae419o
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
example: 1
|
|
name:
|
|
type: string
|
|
example: fvnknoots 7v7
|
|
description:
|
|
type: string
|
|
Kill:
|
|
title: Kill
|
|
x-stoplight:
|
|
id: a9q2tvsts3z32
|
|
type: object
|
|
x-examples:
|
|
Example 1:
|
|
id: 0
|
|
server: string
|
|
tone_version: ks_3.0.0
|
|
match_id: 1cde15ee
|
|
game_mode: tdm
|
|
map: string
|
|
game_time: 385.417
|
|
player_count: 1
|
|
attacker_name: Legonzaur
|
|
attacker_id: 0
|
|
attacker_current_weapon: rspn101
|
|
attacker_current_weapon_mods: 0
|
|
attacker_weapon_1: rspn101
|
|
attacker_weapon_1_mods: 0
|
|
attacker_weapon_2: autopistol
|
|
attacker_weapon_2_mods: 0
|
|
attacker_weapon_3: defender
|
|
attacker_weapon_3_mods: 0
|
|
attacker_offhand_weapon_1: 0
|
|
attacker_offhand_weapon_2: 8
|
|
victim_name: Legonzaur
|
|
victim_id: 0
|
|
victim_current_weapon: rspn101
|
|
victim_current_weapon_mods: 0
|
|
victim_weapon_1: rspn101
|
|
victim_weapon_1_mods: 0
|
|
victim_weapon_2: autopistol
|
|
victim_weapon_2_mods: 0
|
|
victim_weapon_3: defender
|
|
victim_weapon_3_mods: 0
|
|
victim_offhand_weapon_1: 0
|
|
victim_offhand_weapon_2: 8
|
|
cause_of_death: frag_grenade
|
|
distance: 0
|
|
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
|
|
PlayerID:
|
|
title: PlayerId
|
|
x-stoplight:
|
|
id: 9icavmq5bgsqp
|
|
type: integer
|
|
WeaponID:
|
|
title: WeaponID
|
|
x-stoplight:
|
|
id: p92aomkxku2po
|
|
type: string
|
|
maxLength: 50
|
|
MapID:
|
|
title: MapID
|
|
x-stoplight:
|
|
id: zoazw8eoi7qwr
|
|
type: string
|
|
maxLength: 50
|
|
PrefferredServer:
|
|
title: PrefferredServer
|
|
x-stoplight:
|
|
id: xok1i1668gx6o
|
|
type: object
|
|
properties:
|
|
server:
|
|
$ref: '#/components/schemas/Server'
|
|
killCount:
|
|
type: integer
|
|
example: 4988
|
|
deathCount:
|
|
type: integer
|
|
example: 4671
|
|
PrefferedWeapon:
|
|
title: PrefferedWeapon
|
|
x-stoplight:
|
|
id: b52mxxdsbv1wx
|
|
type: object
|
|
properties:
|
|
weapon:
|
|
$ref: '#/components/schemas/Weapon'
|
|
killCount:
|
|
type: integer
|
|
deathCount:
|
|
type: integer
|
|
PrefferedMap:
|
|
title: PrefferedMap
|
|
x-stoplight:
|
|
id: 17kjfi5wu6f4h
|
|
type: object
|
|
properties:
|
|
map:
|
|
$ref: '#/components/schemas/Map'
|
|
killCount:
|
|
type: integer
|
|
deathCount:
|
|
type: integer
|
|
TopPlayers:
|
|
title: TopPlayers
|
|
x-stoplight:
|
|
id: rsl4jqpvwunah
|
|
type: object
|
|
properties:
|
|
player:
|
|
$ref: '#/components/schemas/Player'
|
|
kill_count:
|
|
type: integer
|
|
death_count:
|
|
type: integer
|
|
securitySchemes:
|
|
server_token:
|
|
name: API Key
|
|
type: apiKey
|
|
in: header
|
|
description: ''
|
|
parameters:
|
|
serverId:
|
|
name: serverId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
playerId:
|
|
name: playerId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
Server-report:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
server:
|
|
$ref: '#/components/schemas/Server'
|
|
total_kills:
|
|
type: integer
|
|
first_record:
|
|
type: string
|
|
format: date-time
|
|
last_record:
|
|
type: string
|
|
format: date-time
|
|
most_used_weapons:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedWeapon'
|
|
preffered_maps:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedMap'
|
|
top_players:
|
|
type: array
|
|
maxItems: 5
|
|
items:
|
|
$ref: '#/components/schemas/TopPlayers'
|
|
Player-server-report:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
player:
|
|
$ref: '#/components/schemas/Player'
|
|
server:
|
|
$ref: '#/components/schemas/Server'
|
|
total_kills:
|
|
type: integer
|
|
description: Number of kills of the user in this server
|
|
total_deaths:
|
|
type: integer
|
|
description: Number of deaths of the user in this server
|
|
first_record:
|
|
type: string
|
|
format: date-time
|
|
last_record:
|
|
type: string
|
|
format: date-time
|
|
most_used_weapons:
|
|
type: array
|
|
maxItems: 5
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedWeapon'
|
|
preferred_maps:
|
|
type: array
|
|
maxItems: 5
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedMap'
|
|
furthest_kill_distance:
|
|
type: number
|
|
average_kill_distance:
|
|
type: number
|
|
examples:
|
|
Example 1:
|
|
value:
|
|
player:
|
|
id: 0
|
|
name: Legonzaur
|
|
opt-out: false
|
|
hide_TOS: false
|
|
server:
|
|
id: '1'
|
|
name: fvnknoots 7v7
|
|
total_kills: 9865
|
|
total_deaths: 9954
|
|
first_record: '2019-08-24T14:15:22Z'
|
|
last_record: '2019-08-24T14:15:22Z'
|
|
most_used_weapons:
|
|
- weapon:
|
|
id: 0
|
|
internal: mp_weapon_sniper
|
|
name: Kraber
|
|
description: string
|
|
image: 'https://static.wikia.nocookie.net/titanfall_gamepedia/images/8/8b/Icon_kraber.png'
|
|
killCount: 0
|
|
deathCount: 0
|
|
preferred_maps:
|
|
- map:
|
|
id: 0
|
|
internal: mp_angel_city
|
|
name: Angel City
|
|
description: string
|
|
image: 'https://media.contentapi.ea.com/content/dam/eacom/en-us/common/articles-tf2-welcome-header.jpg.adapt.320w.jpg'
|
|
killCount: 0
|
|
deathCount: 0
|
|
furthest_kill_distance: 0
|
|
average_kill_distance: 0
|
|
Player-report:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
player:
|
|
$ref: '#/components/schemas/Player'
|
|
preferred_servers:
|
|
type: array
|
|
maxItems: 5
|
|
items:
|
|
$ref: '#/components/schemas/PrefferredServer'
|
|
total_kills:
|
|
type: integer
|
|
description: Number of kills of the user in the entire database
|
|
total_deaths:
|
|
type: integer
|
|
description: Number of kills of the user in the entire database
|
|
first_record:
|
|
type: string
|
|
format: date-time
|
|
last_record:
|
|
type: string
|
|
format: date-time
|
|
most_used_weapons:
|
|
type: array
|
|
maxItems: 5
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedWeapon'
|
|
preferred_maps:
|
|
type: array
|
|
maxItems: 5
|
|
items:
|
|
$ref: '#/components/schemas/PrefferedMap'
|
|
furthest_kill_distance:
|
|
type: number
|
|
average_kill_distance:
|
|
type: number
|
|
examples:
|
|
Example 1:
|
|
value:
|
|
player:
|
|
id: 0
|
|
name: Legonzaur
|
|
opt-out: false
|
|
hide_TOS: false
|
|
preferred_servers:
|
|
- server:
|
|
id: '1'
|
|
name: fvnknoots 7v7
|
|
killCount: 4988
|
|
deathCount: 4671
|
|
total_kills: 0
|
|
total_deaths: 0
|
|
first_record: '2019-08-24T14:15:22Z'
|
|
last_record: '2019-08-24T14:15:22Z'
|
|
most_used_weapons:
|
|
- weapon:
|
|
id: 0
|
|
internal: mp_weapon_sniper
|
|
name: Kraber
|
|
description: string
|
|
image: 'https://static.wikia.nocookie.net/titanfall_gamepedia/images/8/8b/Icon_kraber.png'
|
|
killCount: 0
|
|
deathCount: 0
|
|
preferred_maps:
|
|
- map:
|
|
id: 0
|
|
internal: mp_angel_city
|
|
name: Angel City
|
|
description: string
|
|
image: 'https://media.contentapi.ea.com/content/dam/eacom/en-us/common/articles-tf2-welcome-header.jpg.adapt.320w.jpg'
|
|
killCount: 0
|
|
deathCount: 0
|
|
furthest_kill_distance: 0
|
|
average_kill_distance: 0
|
|
examples: {}
|