636 lines
15 KiB
YAML
636 lines
15 KiB
YAML
basePath: /api/v1
|
|
definitions:
|
|
Error:
|
|
properties:
|
|
error:
|
|
type: string
|
|
type: object
|
|
Map:
|
|
properties:
|
|
display_name:
|
|
type: string
|
|
game_id:
|
|
type: integer
|
|
id:
|
|
type: integer
|
|
thumbnail:
|
|
type: integer
|
|
type: object
|
|
PagedResponse-Map:
|
|
properties:
|
|
data:
|
|
description: Data contains the actual response payload
|
|
items:
|
|
$ref: '#/definitions/Map'
|
|
type: array
|
|
pagination:
|
|
allOf:
|
|
- $ref: '#/definitions/Pagination'
|
|
description: Pagination contains information about paging
|
|
type: object
|
|
PagedResponse-Rank:
|
|
properties:
|
|
data:
|
|
description: Data contains the actual response payload
|
|
items:
|
|
$ref: '#/definitions/Rank'
|
|
type: array
|
|
pagination:
|
|
allOf:
|
|
- $ref: '#/definitions/Pagination'
|
|
description: Pagination contains information about paging
|
|
type: object
|
|
PagedResponse-Time:
|
|
properties:
|
|
data:
|
|
description: Data contains the actual response payload
|
|
items:
|
|
$ref: '#/definitions/Time'
|
|
type: array
|
|
pagination:
|
|
allOf:
|
|
- $ref: '#/definitions/Pagination'
|
|
description: Pagination contains information about paging
|
|
type: object
|
|
PagedResponse-User:
|
|
properties:
|
|
data:
|
|
description: Data contains the actual response payload
|
|
items:
|
|
$ref: '#/definitions/User'
|
|
type: array
|
|
pagination:
|
|
allOf:
|
|
- $ref: '#/definitions/Pagination'
|
|
description: Pagination contains information about paging
|
|
type: object
|
|
PagedTotalResponse-Time:
|
|
properties:
|
|
data:
|
|
description: Data contains the actual response payload
|
|
items:
|
|
$ref: '#/definitions/Time'
|
|
type: array
|
|
pagination:
|
|
allOf:
|
|
- $ref: '#/definitions/PaginationWithTotal'
|
|
description: Pagination contains information about paging
|
|
type: object
|
|
Pagination:
|
|
properties:
|
|
page:
|
|
description: Current page number
|
|
type: integer
|
|
page_size:
|
|
description: Number of items per page
|
|
type: integer
|
|
type: object
|
|
PaginationWithTotal:
|
|
properties:
|
|
page:
|
|
description: Current page number
|
|
type: integer
|
|
page_size:
|
|
description: Number of items per page
|
|
type: integer
|
|
total_items:
|
|
description: Total number of items across all pages
|
|
type: integer
|
|
total_pages:
|
|
description: Total number of pages
|
|
type: integer
|
|
type: object
|
|
Rank:
|
|
properties:
|
|
game_id:
|
|
type: integer
|
|
id:
|
|
type: integer
|
|
mode_id:
|
|
type: integer
|
|
rank:
|
|
type: number
|
|
skill:
|
|
type: number
|
|
style_id:
|
|
type: integer
|
|
updated_at:
|
|
type: string
|
|
user:
|
|
$ref: '#/definitions/User'
|
|
type: object
|
|
Response-Map:
|
|
properties:
|
|
data:
|
|
allOf:
|
|
- $ref: '#/definitions/Map'
|
|
description: Data contains the actual response payload
|
|
type: object
|
|
Response-Rank:
|
|
properties:
|
|
data:
|
|
allOf:
|
|
- $ref: '#/definitions/Rank'
|
|
description: Data contains the actual response payload
|
|
type: object
|
|
Response-Time:
|
|
properties:
|
|
data:
|
|
allOf:
|
|
- $ref: '#/definitions/Time'
|
|
description: Data contains the actual response payload
|
|
type: object
|
|
Response-User:
|
|
properties:
|
|
data:
|
|
allOf:
|
|
- $ref: '#/definitions/User'
|
|
description: Data contains the actual response payload
|
|
type: object
|
|
Response-array_TimePlacement:
|
|
properties:
|
|
data:
|
|
description: Data contains the actual response payload
|
|
items:
|
|
$ref: '#/definitions/TimePlacement'
|
|
type: array
|
|
type: object
|
|
Time:
|
|
properties:
|
|
date:
|
|
type: string
|
|
game_id:
|
|
type: integer
|
|
has_bot:
|
|
type: boolean
|
|
id:
|
|
type: string
|
|
map:
|
|
$ref: '#/definitions/Map'
|
|
mode_id:
|
|
type: integer
|
|
style_id:
|
|
type: integer
|
|
time:
|
|
type: integer
|
|
user:
|
|
$ref: '#/definitions/User'
|
|
type: object
|
|
TimePlacement:
|
|
properties:
|
|
id:
|
|
type: string
|
|
placement:
|
|
type: integer
|
|
type: object
|
|
User:
|
|
properties:
|
|
id:
|
|
type: integer
|
|
muted:
|
|
type: boolean
|
|
state_id:
|
|
type: integer
|
|
username:
|
|
type: string
|
|
type: object
|
|
info:
|
|
contact: {}
|
|
description: |-
|
|
Obtain an api key at https://dev.strafes.net
|
|
Requires Data:Read permission
|
|
title: StrafesNET Data API
|
|
version: "1.0"
|
|
paths:
|
|
/map:
|
|
get:
|
|
description: Get a list of maps
|
|
parameters:
|
|
- default: 10
|
|
description: Page size (max 100)
|
|
in: query
|
|
maximum: 100
|
|
minimum: 1
|
|
name: page_size
|
|
type: integer
|
|
- default: 1
|
|
description: Page number
|
|
in: query
|
|
minimum: 1
|
|
name: page_number
|
|
type: integer
|
|
- in: query
|
|
name: game_id
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/PagedResponse-Map'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: List maps
|
|
tags:
|
|
- maps
|
|
/map/{id}:
|
|
get:
|
|
description: Get a specific map by its ID
|
|
parameters:
|
|
- description: Map ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/Response-Map'
|
|
"404":
|
|
description: Map not found
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get map by ID
|
|
tags:
|
|
- maps
|
|
/rank:
|
|
get:
|
|
description: Get a list of ranks with pagination and filtering
|
|
parameters:
|
|
- default: 10
|
|
description: Page size (max 100)
|
|
in: query
|
|
maximum: 100
|
|
minimum: 1
|
|
name: page_size
|
|
type: integer
|
|
- default: 1
|
|
description: Page number
|
|
in: query
|
|
minimum: 1
|
|
name: page_number
|
|
type: integer
|
|
- default: 1
|
|
description: 'Sort by (1: rank asc, 2: skill)'
|
|
enum:
|
|
- 1
|
|
- 2
|
|
in: query
|
|
maximum: 2
|
|
minimum: 1
|
|
name: sort_by
|
|
type: integer
|
|
- in: query
|
|
name: game_id
|
|
type: integer
|
|
- in: query
|
|
name: mode_id
|
|
type: integer
|
|
- in: query
|
|
name: style_id
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/PagedResponse-Rank'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: List ranks
|
|
tags:
|
|
- ranks
|
|
/time:
|
|
get:
|
|
description: Get a list of times
|
|
parameters:
|
|
- default: 10
|
|
description: Page size (max 100)
|
|
in: query
|
|
maximum: 100
|
|
minimum: 1
|
|
name: page_size
|
|
type: integer
|
|
- default: 1
|
|
description: Page number
|
|
in: query
|
|
minimum: 1
|
|
name: page_number
|
|
type: integer
|
|
- in: query
|
|
name: game_id
|
|
type: integer
|
|
- in: query
|
|
name: map_id
|
|
type: integer
|
|
- in: query
|
|
name: mode_id
|
|
type: integer
|
|
- in: query
|
|
name: style_id
|
|
type: integer
|
|
- in: query
|
|
name: user_id
|
|
type: integer
|
|
- default: "0"
|
|
description: Sort field (time ASC, time DESC, date ASC, date DESC)
|
|
enum:
|
|
- "0"
|
|
- "1"
|
|
- "2"
|
|
- "3"
|
|
in: query
|
|
name: sort_by
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/PagedTotalResponse-Time'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: List times
|
|
tags:
|
|
- times
|
|
/time/{id}:
|
|
get:
|
|
description: Get a specific time by its ID
|
|
parameters:
|
|
- description: Time ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/Response-Time'
|
|
"404":
|
|
description: Time not found
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get time by ID
|
|
tags:
|
|
- times
|
|
/time/{id}/bot:
|
|
get:
|
|
description: Get a HTTP 302 Redirect to the download url for the bot replay
|
|
of a time by its ID if it exists
|
|
parameters:
|
|
- description: Time ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
responses:
|
|
"302":
|
|
description: Found
|
|
headers:
|
|
Location:
|
|
description: Redirect URL
|
|
type: string
|
|
"404":
|
|
description: Time does not have a Bot
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get redirect to bot download url by time ID
|
|
tags:
|
|
- times
|
|
/time/placement:
|
|
get:
|
|
description: |-
|
|
Get placement information for multiple times
|
|
Invalid or not found time IDs are omitted in the response
|
|
parameters:
|
|
- collectionFormat: csv
|
|
description: Comma-separated array of time IDs (25 Limit)
|
|
in: query
|
|
items:
|
|
format: int64
|
|
type: integer
|
|
name: ids
|
|
required: true
|
|
type: array
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/Response-array_TimePlacement'
|
|
"400":
|
|
description: Invalid request
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get placement batch
|
|
tags:
|
|
- times
|
|
/time/worldrecord:
|
|
get:
|
|
description: |-
|
|
Get a list of world records sorted by most recent
|
|
NOTE: World records are recalutated once every hour and this endpoint is not realtime
|
|
parameters:
|
|
- default: 10
|
|
description: Page size (max 100)
|
|
in: query
|
|
maximum: 100
|
|
minimum: 1
|
|
name: page_size
|
|
type: integer
|
|
- default: 1
|
|
description: Page number
|
|
in: query
|
|
minimum: 1
|
|
name: page_number
|
|
type: integer
|
|
- in: query
|
|
name: game_id
|
|
type: integer
|
|
- in: query
|
|
name: map_id
|
|
type: integer
|
|
- in: query
|
|
name: mode_id
|
|
type: integer
|
|
- in: query
|
|
name: style_id
|
|
type: integer
|
|
- in: query
|
|
name: user_id
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/PagedResponse-Time'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get world records
|
|
tags:
|
|
- times
|
|
/user:
|
|
get:
|
|
description: Get a list of users
|
|
parameters:
|
|
- default: 10
|
|
description: Page size (max 100)
|
|
in: query
|
|
maximum: 100
|
|
minimum: 1
|
|
name: page_size
|
|
type: integer
|
|
- default: 1
|
|
description: Page number
|
|
in: query
|
|
minimum: 1
|
|
name: page_number
|
|
type: integer
|
|
- in: query
|
|
name: state_id
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/PagedResponse-User'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: List users
|
|
tags:
|
|
- users
|
|
/user/{id}:
|
|
get:
|
|
description: Get a specific user by their ID
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/Response-User'
|
|
"404":
|
|
description: User not found
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get user by ID
|
|
tags:
|
|
- users
|
|
/user/{id}/rank:
|
|
get:
|
|
description: Get a specific rank for a user by their ID
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
- in: query
|
|
name: game_id
|
|
required: true
|
|
type: integer
|
|
- in: query
|
|
name: mode_id
|
|
required: true
|
|
type: integer
|
|
- in: query
|
|
name: style_id
|
|
required: true
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/Response-Rank'
|
|
"404":
|
|
description: User not found
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
default:
|
|
description: General error response
|
|
schema:
|
|
$ref: '#/definitions/Error'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get rank by user ID
|
|
tags:
|
|
- users
|
|
securityDefinitions:
|
|
ApiKeyAuth:
|
|
in: header
|
|
name: X-API-Key
|
|
type: apiKey
|
|
swagger: "2.0"
|