Files
public-api/docs/swagger.yaml
itzaname e3435419a6
All checks were successful
continuous-integration/drone/push Build is passing
Fix user rank docs
2025-06-22 21:58:41 -04:00

484 lines
11 KiB
YAML

basePath: /api/v1
definitions:
Error:
properties:
error:
type: string
type: object
Map:
properties:
creator:
type: string
date:
type: string
display_name:
type: string
game_id:
type: integer
id:
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
Pagination:
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
Time:
properties:
date:
type: string
game_id:
type: integer
has_bot:
type: boolean
id:
type: integer
map:
$ref: '#/definitions/Map'
mode_id:
type: integer
style_id:
type: integer
time:
type: integer
user:
$ref: '#/definitions/User'
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: gameId
type: integer
- in: query
name: modeId
type: integer
- in: query
name: styleId
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/PagedResponse-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
/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: gameId
type: integer
- in: query
name: modeId
type: integer
- in: query
name: styleId
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"