rcpd/swat-codegen/openapi.yaml

1932 lines
66 KiB
YAML
Raw Normal View History

2024-11-03 15:35:53 +11:00
openapi: 3.0.1
info:
title: SWAT Aftermath - RCPD Service
description: "Rank code manager service for storing rank codes, generating rank\
\ codes, earning titles, etc. The back end for RPCD 3.0"
version: 0.24.3
servers:
- url: https://swataftermath.com:9443/
tags:
- name: Account Resource
description: Resource for management of RCPD accounts
- name: Accounts Resource
description: Resource for retrieving multiple accounts.
- name: Rank Code Resource
description: Resource for saving and retrieving rank codes and builds.
- name: Unlocks Resource
description: Resource for retrieving the maximum rank unlocked for each SWAT build
element.
- name: Open API Resource
description: Resource that provides the Open API documentation for this service.
paths:
/account/{username}:
get:
tags:
- Account Resource
summary: Get RCPD account.
description: "Get the specified RCPD account if it exists. Auth token is optional\
\ for this resource. If provided, and you are the owner of the account, you\
\ will see all information for the account."
operationId: getAccount
parameters:
- name: username
in: path
description: The username of the RCPD account you wish to retrieve. The username
is case sensitive.
required: true
schema:
type: string
example: teller55
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The requested RCPD account.
content:
application/json:
schema:
$ref: "#/components/schemas/AccountResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
put:
tags:
- Account Resource
summary: Update properties of the specified account
description: "Update certain fields of an RCPD account. This is a partial PUT\
\ operation, where only the fields you want to update must be provided."
operationId: updateAccount
parameters:
- name: username
in: path
description: The username of the RCPD account you wish to update. The username
is case sensitive.
required: true
schema:
type: string
example: teller55
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AccountUpdateRequest"
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"403":
description: You are not allowed to perform the requested action.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: The request body was invalid and could not be processed
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationErrorResponse"
security:
- SWAT-Token: []
/account:
get:
tags:
- Account Resource
summary: Get default RCPD account.
description: Get the default RCPD account for this user.
operationId: getDefaultAccount
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The requested RCPD account.
content:
application/json:
schema:
$ref: "#/components/schemas/AccountResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
post:
tags:
- Account Resource
summary: Create a new RPCD account
description: "Create a new RPCD account with the given username, and owned by\
\ the user of the provided token."
operationId: newAccount
requestBody:
description: The details of the RPCD account to create.
content:
application/json:
schema:
$ref: "#/components/schemas/AccountCreationRequest"
required: true
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"201":
description: The RCPD account has been created.
headers:
Location:
description: The URL of the newly-created RCPD account.
style: simple
schema:
type: uri
example: /account/Teller55
"400":
description: The request did not include a request body.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"409":
description: The username is already registered.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: The request body was invalid and could not be processed
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationErrorResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/{username}/set-default:
post:
tags:
- Account Resource
summary: Set default account for user
description: Set the default RCPD account for this user. Must be an account
this user owns.
operationId: setDefaultAccount
parameters:
- name: username
in: path
description: The username of the RCPD account to set as the default account
for this user. The username is case sensitive.
required: true
schema:
type: string
example: teller55
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"204":
description: The account has successfully been set to be the default account.
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"403":
description: You are not allowed to perform the requested action.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/accounts/active-count:
get:
tags:
- Accounts Resource
summary: Get number of active players.
description: Get the number of active RCPD users. Active means somebody who
has logged in or done things on their account recently.
operationId: countActiveAccounts
responses:
"500":
description: Something went wrong when processing the request.
content:
text/plain:
schema:
$ref: "#/components/schemas/ErrorResponse"
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
text/plain:
schema:
$ref: "#/components/schemas/ErrorResponse"
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The number of active RCPD users.
content:
text/plain:
example: 47
/accounts:
get:
tags:
- Accounts Resource
summary: Get users' accounts.
description: Get all the RCPD accounts owned by this user.
operationId: getAccounts
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: A list of RCPD account summaries.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/AccountSummaryResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/accounts/leaderboard:
get:
tags:
- Accounts Resource
summary: Get the leaderboard
description: "Get accounts on the leaderboard, ordered by account rank and points."
operationId: getLeaderboard
parameters:
- name: limit
in: query
description: The maximum number of accounts to be returned.
schema:
type: integer
format: int32
default: 30
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The leaderboard accounts.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/AccountSummaryResponse"
/accounts/search:
get:
tags:
- Accounts Resource
summary: Search for accounts.
description: "Search for any accounts matching the provided username. The results\
\ will include both partial matches, and sound-alike matches. (IE if you search\
\ for John, the results will include Jon)"
operationId: searchAccounts
parameters:
- name: searchName
in: query
description: The partial or sound-alike username to search for.
required: true
schema:
type: string
example: teller
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: A list of RCPD account summaries whose usernames match the
provided search query.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/AccountSummaryResponse"
"400":
description: Username to search for was not provided. Includes if the provided
query param is blank.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/account/rank-code/{rankCode}:
delete:
tags:
- Rank Code Resource
summary: Delete saved build for default account.
description: Delete a saved build on the user's default account.
operationId: deleteSavedBuild
parameters:
- name: rankCode
in: path
description: "The SWAT: Aftermath hero build rank code that identifies the\
\ saved build to be deleted."
required: true
schema:
type: string
example: 1522-4120-7272-0500
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"204":
description: The request was executed successfully. The build is deleted
if it existed.
"400":
description: The provided rank code is invalid.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/{username}/rank-code/{rankCode}:
delete:
tags:
- Rank Code Resource
summary: Delete saved build for specified account.
description: Delete a saved build on the specified account. The user must own
the account.
operationId: deleteSavedBuild_1
parameters:
- name: username
in: path
description: The RCPD account to delete the saved build from. The username
is case sensitive.
required: true
schema:
type: string
example: teller55
- name: rankCode
in: path
description: "The SWAT: Aftermath hero build rank code that identifies the\
\ saved build to be deleted."
required: true
schema:
type: string
example: 1522-4120-7272-0500
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"204":
description: The request was executed successfully. The build is deleted
if it existed.
"400":
description: The provided rank code is invalid.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"403":
description: You are not allowed to perform the requested action.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/generate:
post:
tags:
- Rank Code Resource
summary: Generate a rank code for default account.
description: Generate a SWAT rank code using the default RCPD account for this
user.
operationId: generate
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BuildRequest"
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: "The generated rank code, along with the details of the hero\
\ build, including any medals or titles."
content:
application/json:
schema:
$ref: "#/components/schemas/HeroBuildResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/{username}/generate:
post:
tags:
- Rank Code Resource
summary: Generate a rank code for specified account.
description: Generate a SWAT rank code using the specified RCPD account. The
account must be owned by the user.
operationId: generate_1
parameters:
- name: username
in: path
description: The RCPD account to get saved builds for. The username is case
sensitive.
required: true
schema:
type: string
example: teller55
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BuildRequest"
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: "The generated rank code, along with the details of the hero\
\ build, including any medals or titles."
content:
application/json:
schema:
$ref: "#/components/schemas/HeroBuildResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"403":
description: You are not allowed to perform the requested action.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/saved-builds:
get:
tags:
- Rank Code Resource
summary: Get saved builds for default account.
description: Get the saved builds for the default RCPD account.
operationId: getSavedBuilds
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The saved builds.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/HeroBuildResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/{username}/saved-builds:
get:
tags:
- Rank Code Resource
summary: Get saved builds for account.
description: "Get the saved builds for the specified RCPD account. If the account\
\ is not owned by the user, or no token is provided, a public view of the\
\ saved builds will be returned."
operationId: getSavedBuilds_1
parameters:
- name: username
in: path
description: The RCPD account to get saved builds for. The username is case
sensitive.
required: true
schema:
type: string
example: teller55
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The saved builds.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/HeroBuildResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/rank-code:
post:
tags:
- Rank Code Resource
summary: Save a rank code to the default account
description: "Save a rank code, along with an optional name for this build.\
\ This will be saved to the default account for this user."
operationId: saveRankCode
requestBody:
description: The rank code and optional build name.
content:
application/json:
schema:
$ref: "#/components/schemas/RankCodeRequest"
required: true
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: "The saved build, plus any other saved builds that have had\
\ medals or titles updated as a result of the new build being saved. If\
\ the build that was saved had earned any medals or titles, then all saved\
\ builds with the same class/trait/specialization combination will be\
\ updated and returned. This avoids the scenario of earning a medal/title\
\ on one build, and then earning the same medal/title on another build\
\ with the same class/trait/specialization combination which shares the\
\ new medal/title."
content:
application/json:
schema:
minItems: 1
type: array
items:
$ref: "#/components/schemas/HeroBuildResponse"
"400":
description: The provided rank code is invalid.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: The request body was invalid and could not be processed
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationErrorResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/{username}/rank-code:
post:
tags:
- Rank Code Resource
summary: Save a rank code to the specified account
description: "Save a rank code, along with an optional name for this build,\
\ to the specified RCPD account."
operationId: saveRankCode_1
parameters:
- name: username
in: path
description: The RCPD account to save this rank code to. The username is case
sensitive.
required: true
schema:
type: string
example: teller55
requestBody:
description: The rank code and optional build name.
content:
application/json:
schema:
$ref: "#/components/schemas/RankCodeRequest"
required: true
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: "The saved build, plus any other saved builds that have had\
\ medals or titles updated as a result of the new build being saved. If\
\ the build that was saved had earned any medals or titles, then all saved\
\ builds with the same class/trait/specialization combination will be\
\ updated and returned. This avoids the scenario of earning a medal/title\
\ on one build, and then earning the same medal/title on another build\
\ with the same class/trait/specialization combination which shares the\
\ new medal/title."
content:
application/json:
schema:
minItems: 1
type: array
items:
$ref: "#/components/schemas/HeroBuildResponse"
"400":
description: The provided rank code is invalid.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"403":
description: You are not allowed to perform the requested action.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: The request body was invalid and could not be processed
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationErrorResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/unlocks:
get:
tags:
- Unlocks Resource
summary: Get unlocks for default account.
description: Get the currently unlocked rank for each SWAT build element for
the user's default account.
operationId: getUnlocks
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The maximum unlocked rank of each element of a SWAT build.
content:
application/json:
schema:
$ref: "#/components/schemas/UnlocksResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/account/{username}/unlocks:
get:
tags:
- Unlocks Resource
summary: Get unlocks for specified account.
description: Get the currently unlocked rank for each SWAT build element for
the specified RCPD account. The account must be owned by the user.
operationId: getUnlocks_1
parameters:
- name: username
in: path
description: The RCPD account to retrieve the unlocks for. The username is
case sensitive.
required: true
schema:
type: string
example: teller55
responses:
"500":
description: Something went wrong when processing the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"502":
description: A dependent service or database had an error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"200":
description: The maximum unlocked rank of each element of a SWAT build.
content:
application/json:
schema:
$ref: "#/components/schemas/UnlocksResponse"
"401":
description: "Authorization header is not present, or token is invalid or\
\ expired."
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"503":
description: The security infrastructure cannot currently handle the request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"403":
description: You are not allowed to perform the requested action.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- SWAT-Token: []
/openapi.{type}:
get:
tags:
- Open API Resource
description: Get the Open API documentation in JSON or YAML format.
operationId: getOpenApiSpec
parameters:
- name: type
in: path
description: The extension type of the Open API documentation file. Must be
either yaml or json.
required: true
schema:
pattern: json|yaml
type: string
enum:
- yaml
- json
example: yaml
responses:
"200":
description: The Open API documentation in JSON or YAML format.
content:
application/json: {}
application/yml: {}
/openapi/{file}:
get:
tags:
- Open API Resource
description: "Retrieve a file required for the Swagger UI. It is recommended\
\ to retrieve the index.html file, and allow the index.html file to retrieve\
\ the assets it needs."
operationId: getFile
parameters:
- name: file
in: path
description: The file to retrieve.
required: true
schema:
type: string
example: index.html
responses:
"200":
description: The requested file.
content:
image/png: {}
text/css: {}
text/html: {}
text/javascript: {}
text/plain: {}
"404":
description: The requested file was not found.
content:
text/plain: {}
"415":
description: The requested file format is not a format supported by this
resource.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
components:
schemas:
ErrorResponse:
type: object
properties:
reference:
type: string
description: A unique reference for your error. Provide this to the admins
to help track down your issue.
example: kcog4koca5xhiegavarp
message:
type: string
description: A message describing the error that occurred.
example: An error occurred.
serviceName:
type: string
description: The name of this service. Will always be rcpd-service.
example: rcpd-service
description: "Response indicating an error has occurred, with a unique reference\
\ and a description of the error."
AccountResponse:
title: Account Response
type: object
properties:
username:
type: string
description: The username of this RCPD account.
example: Teller55
icon:
type: integer
description: An integer representing the icon (display picture) for the
account.
format: int32
example: 0
description:
type: string
description: A public message for the account that will be displayed on
the leaderboard and to people viewing the account.
nullable: true
example: Swat season 2 lets go!
squad:
type: string
description: The group/clan this account belongs to.
nullable: true
example: XLR8
note:
type: string
description: A private note for this account. Only visible to the account
owner.
nullable: true
example: My super secret plan for winning every EXT game.
rank:
maximum: 11
minimum: 1
type: integer
description: The account rank as an integer.
format: int32
example: 1
points:
type: integer
description: The amount of points this account has earned through titles.
format: int64
example: 100
leaderboardRanking:
type: integer
description: "The rank of this account amongst all RCPD accounts, based\
\ on the number of points this account has earned. Will be null if the\
\ account is inactive."
format: int32
nullable: true
example: 10
honorGuard:
type: boolean
description: Whether this account has joined the honor guard.
example: true
titles:
$ref: "#/components/schemas/AccountTitlesResponse"
corrupt:
type: boolean
description: "Whether this account has used a code generator to save generated\
\ rank codes, rather than earning codes solely through playing SWAT: Aftermath."
example: false
lastActive:
type: integer
description: "The last time this account was active (logged in to, saved\
\ a build, generated a build, etc.) represented as milliseconds from epoch."
format: int64
example: 1695474479000
active:
type: boolean
description: Whether this account has been logged into or done anything
recently.
description: A response containing information about an RCPD account.
AccountTitlesResponse:
title: Account Titles Response
type: object
properties:
valiantMartyr:
type: boolean
description: Whether this account has won a Nightmare game.
citySavior:
type: boolean
description: Whether this account has won an Extinction game.
livingLegend:
type: boolean
description: "Whether this account has unlocked all classes, guns, armors,\
\ traits, and specializations to rank 12."
monsterSlayer:
minimum: 0
type: integer
description: Requires killing Megazilla on multiple hero builds.
format: int32
vigilantHero:
minimum: 0
type: integer
description: Requires completing a Nightmare or Extinction game without
dying on multiple hero builds.
format: int32
coreElite:
minimum: 0
type: integer
description: Requires earning an Impressive title on multiple hero builds.
format: int32
loneRanger:
minimum: 0
type: integer
description: Requires winning solo Nightmare games with multiple classes.
format: int32
hardenedVeteran:
maximum: 1
minimum: 0
type: integer
description: "Requires winning Nightmare games with different player counts.\
\ Solo games do not count. You must win with every possible other player\
\ combination, IE 2 players, 3 players, 4 players, etc."
format: int32
renownedVeteran:
maximum: 2
minimum: 0
type: integer
description: "Requires winning Extinction games with different player counts.\
\ IE, win with 2 players, win with 3 players, etc. 7/8 combinations are\
\ required for tier 1, all 8 combinations are required for tier 2."
format: int32
highlyDecorated:
maximum: 2
minimum: 0
type: integer
description: "Requires earning all medals except KEY on one build for multiple\
\ classes. 10 classes required for tier 1, 12 classes required for tier\
\ 2."
format: int32
keyMaster:
maximum: 2
minimum: 0
type: integer
description: "Requires earning KEY on multiple classes. 10 classes required\
\ for tier 1, 12 classes required for tier 2."
format: int32
swatCenturion:
minimum: 0
type: integer
description: Requires winning Nightmare with different unique builds.
format: int32
infiniteLegion:
minimum: 0
type: integer
description: Requires winning Extinction with different unique builds.
format: int32
allSniperWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Sniper combination.
format: int32
allMedicWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Medic combination.
format: int32
allTacticianWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Tactician combination.
format: int32
allPsychologistWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Psychologist combination.
format: int32
allMaverickWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Maverick combination.
format: int32
allHeavyOrdnanceWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Heavy Ordnance combination.
format: int32
allDemolitionWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Demolitions combination.
format: int32
allCyborgWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Cyborg combination.
format: int32
allPyrotechnicianWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Pyrotechnician combination.
format: int32
allWatchmanWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Watchman combination.
format: int32
allTechOpsWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Tech Ops combination.
format: int32
allUmbrellaCloneWins:
maximum: 2
minimum: 0
type: integer
description: Requires winning Nightmare and/or Extinction with every unique
Umbrella Clone combination.
format: int32
description: "A response including all the titles this account has earned. For\
\ the integer properties, a value of 0 means the title is unearned; 1 or higher\
\ means the title is earned, and indicates the level of that title."
AccountCreationRequest:
required:
- username
type: object
properties:
username:
maxLength: 15
minLength: 3
type: string
description: The username of the new RCPD account. This must be the same
as the name used in Warcraft III.
example: Teller55
description: The username for the new RCPD account.
ValidationErrorResponse:
type: object
properties:
reference:
type: string
description: A unique reference for your error. Provide this to the admins
to help track down your issue.
example: kcog4koca5xhiegavarp
message:
type: string
description: A message describing the error that occurred.
example: An error occurred.
errors:
type: object
additionalProperties:
type: array
description: "The properties for the given request that were invalid,\
\ along with all the reasons why each property was invalid."
example:
username:
- must not be blank
- size must be between 3 and 15
items:
type: string
description: "The properties for the given request that were invalid,\
\ along with all the reasons why each property was invalid."
example: "{\"username\":[\"must not be blank\",\"size must be between\
\ 3 and 15\"]}"
description: "The properties for the given request that were invalid, along\
\ with all the reasons why each property was invalid."
example:
username:
- must not be blank
- size must be between 3 and 15
serviceName:
type: string
description: The name of this service. Will always be rcpd-service.
example: rcpd-service
description: "Response indicating the request was invalid, along with the validation\
\ errors."
AccountUpdateRequest:
title: Account Update Request
type: object
properties:
icon:
maximum: 11
minimum: 0
type: integer
description: The integer that represents the display icon for the account.
format: int32
example: 0
description:
maxLength: 255
minLength: 0
type: string
description: The description that will be displayed for this account.
example: I am the best SWAT player ever!
squad:
maxLength: 32
minLength: 0
type: string
description: The squad/clan this account belongs to.
example: XLR8
note:
maxLength: 255
minLength: 0
type: string
description: A private note for this account that only the account owner
can see.
example: This is my private note for my eyes only.
description: "A request to update various things on an account. All parameters\
\ are optional. To delete a value, provide an empty string. This will delete\
\ the value in the database."
AccountSummaryResponse:
type: object
properties:
username:
type: string
description: The username of this RCPD account.
example: Teller55
icon:
type: integer
description: An integer representing the icon (display picture) for the
account.
format: int32
example: 0
description:
type: string
description: A public message for the account that will be displayed on
the leaderboard and to people viewing the account.
nullable: true
example: Swat season 2 lets go!
squad:
type: string
description: The group/clan this account belongs to.
nullable: true
example: XLR8
rank:
maximum: 11
minimum: 1
type: integer
description: The account rank as an integer.
format: int32
example: 1
corrupt:
type: boolean
description: "Whether this account has used a code generator to save generated\
\ rank codes, rather than earning codes solely through playing SWAT: Aftermath."
example: false
active:
type: boolean
description: Whether this account has been logged into or done anything
recently.
lastActive:
type: integer
description: "The last time this account was active (logged in to, saved\
\ a build, generated a build, etc.) represented as milliseconds from epoch."
format: int64
example: 1695474479000
honorGuard:
type: boolean
description: Whether this account has joined the honor guard.
example: true
description: An RCPD account summary.
HeroBuildResponse:
title: Hero Build Response
type: object
properties:
rankCode:
type: string
description: "The SWAT: Aftermath rank code for this build, which can be\
\ used in a game of SWAT: Aftermath to load this build. Will not be included\
\ for public view."
nullable: true
example: 6595-0027-2041-6700
swatClass:
type: string
description: The class of this build. http://redscull.com/swat/readmeafterclasses.html
example: Sniper
enum:
- Sniper
- Medic
- Tactician
- Psychologist
- Maverick
- HeavyOrdnance
- Demolitions
- Cyborg
- Pyrotechnician
- Watchman
- TechOps
- UmbrellaClone
gun:
type: string
description: The gun used by this build. http://redscull.com/swat/readmeafterweapons.html
example: SniperRifle
enum:
- AssaultRifle
- SniperRifle
- Chaingun
- RocketLauncher
- Flamethrower
- LaserRifle
- GatlingLaser
- Pistols
armor:
type: string
description: The armor used by this build. http://redscull.com/swat/readmeafterarmor.html
example: Light
enum:
- Light
- Medium
- Heavy
- Advanced
trait:
type: string
description: The trait used by this build. http://redscull.com/swat/readmeaftertraits.html
example: Dragoon
enum:
- Skilled
- Gifted
- Survivalist
- Dragoon
- Acrobat
- SwiftLearner
- Healer
- FlowerChild
- ChemReliant
- RadResistant
- Gadgeteer
- Prowler
- Energizer
- PackRat
- Engineer
- Reckless
specialization:
type: string
description: The specialization used by this build. http://redscull.com/swat/readmeafterspecs.html
example: Weaponry
enum:
- Weaponry
- PowerArmor
- EnergyCells
- Cybernetics
- Triage
- Chemistry
- Leadership
- Robotics
- Espionage
talent:
type: string
description: The talent used by this build. Only included if the build's
rank is 9 or higher. http://redscull.com/swat/readmeaftertalents.html
nullable: true
example: Tinkering
enum:
- Courage
- Wiring
- Running
- Spotting
- Toughness
- Tinkering
- Hacking
rank:
maximum: 12
minimum: 1
type: integer
description: The rank of this build. http://redscull.com/swat/readmeafterrank.html
format: int32
example: 1
maxRank:
maximum: 12
minimum: 3
type: integer
description: "The maximum rank this build can achieve, determined by the\
\ highest difficulty this build has beaten. http://redscull.com/swat/readmeafterrank.html"
format: int32
example: 3
key:
type: boolean
description: Whether this build has earned the Key to the City medal. http://redscull.com/swat/readmeafterrank.html#medals
moh:
type: boolean
description: Whether this build has earned the Medal of Honor medal. http://redscull.com/swat/readmeafterrank.html#medals
pcc:
type: boolean
description: Whether this build has earned the Police Combat Cross medal.
http://redscull.com/swat/readmeafterrank.html#medals
cob:
type: boolean
description: Whether this build has earned the Commendation Bar medal. http://redscull.com/swat/readmeafterrank.html#medals
lsa:
type: boolean
description: Whether this build has earned the Life Saving Award medal.
http://redscull.com/swat/readmeafterrank.html#medals
rem:
maximum: 3
minimum: 0
type: integer
description: "Whether this build has earned the Recognition for Exceptional\
\ Merit medal, and what level. http://redscull.com/swat/readmeafterrank.html#medals"
format: int32
example: 0
honorGuard:
type: boolean
description: Whether this build is an honor guard build.
nightmare:
type: boolean
description: Whether this build has beaten Nightmare difficulty. http://redscull.com/swat/readmeafterobjectives.html
Will not be included for public view.
extinction:
type: boolean
description: Whether this build has beaten Extinction difficulty. http://redscull.com/swat/readmeafterobjectives.html
Will not be included for public view.
megazilla:
type: boolean
description: Whether this build has helped to kill Megazilla. http://redscull.com/swat/readmeafterobjectives.html#megazilla
Will not be included for public view.
deathless:
type: boolean
description: Whether this build has completed Nightmare or Extinction difficulty
without dying. Will not be included for public view.
impressive:
type: boolean
description: Whether this build has participated in a game that earned a
Medal of Honor while already having a Medal of Honor. http://redscull.com/swat/readmeafterrank.html#medals
Will not be included for public view.
solo:
type: boolean
description: Whether this build has beaten a solo Nightmare game. http://redscull.com/swat/readmeafterobjectives.html
Will not be included for public view.
buildName:
type: string
description: An optional name used to identify this build.
nullable: true
example: hacking psy
description: "A response object describing a SWAT hero, including rank code\
\ and build name."
BuildRequest:
title: Build Request
required:
- armor
- gun
- specialization
- swatClass
- talent
- trait
type: object
properties:
swatClass:
type: string
description: The class of this SWAT hero.
writeOnly: true
example: Psychologist
enum:
- Sniper
- Medic
- Tactician
- Psychologist
- Maverick
- HeavyOrdnance
- Demolitions
- Cyborg
- Pyrotechnician
- Watchman
- TechOps
- UmbrellaClone
gun:
type: string
description: The gun this SWAT hero uses.
writeOnly: true
example: AssaultRifle
enum:
- AssaultRifle
- SniperRifle
- Chaingun
- RocketLauncher
- Flamethrower
- LaserRifle
- GatlingLaser
- Pistols
armor:
type: string
description: The armor this SWAT hero uses.
writeOnly: true
example: Medium
enum:
- Light
- Medium
- Heavy
- Advanced
trait:
type: string
description: The trait of this SWAT hero.
writeOnly: true
example: Healer
enum:
- Skilled
- Gifted
- Survivalist
- Dragoon
- Acrobat
- SwiftLearner
- Healer
- FlowerChild
- ChemReliant
- RadResistant
- Gadgeteer
- Prowler
- Energizer
- PackRat
- Engineer
- Reckless
specialization:
type: string
description: The specialization of this SWAT hero.
writeOnly: true
example: Triage
enum:
- Weaponry
- PowerArmor
- EnergyCells
- Cybernetics
- Triage
- Chemistry
- Leadership
- Robotics
- Espionage
talent:
type: string
description: The talent of this SWAT hero.
writeOnly: true
example: Hacking
enum:
- Courage
- Wiring
- Running
- Spotting
- Toughness
- Tinkering
- Hacking
rank:
maximum: 12
minimum: 1
type: integer
description: "The rank of this SWAT hero. Will be capped at the lowest rank\
\ part of the build. For example, if the requested talent is only available\
\ at rank 4, the build will be capped to rank 4, even if the requested\
\ rank is higher. This parameter is optional; if not specified, the build\
\ will be generated at the highest possible rank."
format: int32
example: 10
spoof:
maxLength: 15
minLength: 3
type: string
description: "The name to generate this rank code for, different to the\
\ account's name. If this name is provided, the rank code will be capped\
\ at rank 11, and not include any medals."
example: teller55
description: A request containing all the parts for a SWAT hero.
RankCodeRequest:
title: Rank Code Request
required:
- rankCode
type: object
properties:
rankCode:
maxLength: 19
minLength: 16
type: string
description: "The SWAT: Aftermath rank code to save. Must be either 16 or\
\ 19 characters in length."
example: 6595-0027-2041-6700
buildName:
maxLength: 32
minLength: 0
type: string
description: An optional name for this build.
example: Solo HO
description: A rank code and optional build name to save.
UnlocksResponse:
title: Unlocks Response
type: object
properties:
swatClasses:
type: object
additionalProperties:
type: integer
format: int32
guns:
type: object
additionalProperties:
type: integer
format: int32
armor:
type: object
additionalProperties:
type: integer
format: int32
traits:
type: object
additionalProperties:
type: integer
format: int32
specializations:
type: object
additionalProperties:
type: integer
format: int32
talents:
type: object
additionalProperties:
type: integer
format: int32
description: "The maximum rank achieved for every part of a SWAT hero; classes,\
\ guns, armors, traits, specializations, and talents. The keys for each map\
\ can be found by viewing the request schema for the /account/generate endpoint."