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."