mirror of
https://github.com/fluxerapp/fluxer.git
synced 2026-09-03 05:10:25 +03:00
16353 lines
617 KiB
JSON
16353 lines
617 KiB
JSON
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"title": "Fluxer API",
|
|
"version": "1.0.0",
|
|
"description": "API for Fluxer, a free and open source instant messaging and VoIP chat app built for friends, groups, and communities.",
|
|
"contact": {"name": "Fluxer Platform AB", "email": "support@fluxer.app"},
|
|
"license": {"name": "AGPL-3.0", "url": "https://www.gnu.org/licenses/agpl-3.0.html"}
|
|
},
|
|
"servers": [{"url": "https://api.fluxer.app/v1", "description": "Production API"}],
|
|
"paths": {
|
|
"/admin/api-keys": {
|
|
"post": {
|
|
"operationId": "create_admin_api_key",
|
|
"summary": "Create admin API key",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateAdminApiKeyResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Generates a new API key for administrative operations. The key is returned only once at creation time. Includes expiration settings and access control lists (ACLs) to limit the key's permissions.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateAdminApiKeyRequest"}}}
|
|
}
|
|
},
|
|
"get": {
|
|
"operationId": "list_admin_api_keys",
|
|
"summary": "List admin API keys",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ListAdminApiKeyResponse"}}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve all API keys created by the authenticated admin. Returns metadata including creation time, last used time, and assigned permissions. The actual key material is not returned.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/api-keys/{keyId}": {
|
|
"delete": {
|
|
"operationId": "delete_admin_api_key",
|
|
"summary": "Delete admin API key",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteApiKeyResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Revokes an API key, immediately invalidating it for all future operations. This action cannot be undone.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "keyId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The keyId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/applications/list-by-guild": {
|
|
"post": {
|
|
"operationId": "admin_list_guild_applications",
|
|
"summary": "List applications installed in a guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildApplicationsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists OAuth2 applications whose bot users are members of a guild. Requires APPLICATION_LOOKUP or APPLICATION_LIST_BY_OWNER permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildApplicationsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/applications/list-by-owner": {
|
|
"post": {
|
|
"operationId": "admin_list_user_applications",
|
|
"summary": "List applications owned by a user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserApplicationsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists all applications (OAuth2 clients and bots) owned by a specific user. Requires APPLICATION_LIST_BY_OWNER permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserApplicationsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/applications/lookup": {
|
|
"post": {
|
|
"operationId": "lookup_application",
|
|
"summary": "Look up application",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupApplicationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieves complete application details including ownership, bot user, OAuth2 redirect URIs, and credential status. Requires APPLICATION_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupApplicationRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/applications/transfer-ownership": {
|
|
"post": {
|
|
"operationId": "transfer_application_ownership",
|
|
"summary": "Transfer application ownership",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationUpdateResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Transfers application ownership to another user. Used when owner is inactive or for administrative recovery. Logged to audit log. Requires APPLICATION_TRANSFER_OWNERSHIP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/TransferApplicationOwnershipRequest"}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/archives/guild": {
|
|
"post": {
|
|
"operationId": "trigger_guild_archive",
|
|
"summary": "Trigger guild archive",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminArchiveResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Initiates a data export for a guild (server). Creates an archive containing all guild data including channels, messages, members, roles, and settings.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TriggerGuildArchiveRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/archives/list": {
|
|
"post": {
|
|
"operationId": "list_archives",
|
|
"summary": "List archives",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListArchivesResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query and filter created archives by type (user or guild), subject ID, requestor, and expiration status. Admins with limited ACLs see only archives matching their permissions.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListArchivesRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/archives/user": {
|
|
"post": {
|
|
"operationId": "trigger_user_archive",
|
|
"summary": "Trigger user archive",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminArchiveResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Initiates a data export for a user. Creates an archive containing all the user's data (messages, server memberships, preferences, etc.) for export or compliance purposes.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TriggerUserArchiveRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/archives/{subjectType}/{subjectId}/{archiveId}": {
|
|
"get": {
|
|
"operationId": "get_archive_details",
|
|
"summary": "Get archive details",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetArchiveResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve metadata for a specific archive including its status, creation time, expiration, and file location. Does not return the archive contents themselves.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "subjectType",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The subjectType"
|
|
},
|
|
{
|
|
"name": "subjectId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The subjectId"
|
|
},
|
|
{
|
|
"name": "archiveId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The archiveId"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/archives/{subjectType}/{subjectId}/{archiveId}/download": {
|
|
"get": {
|
|
"operationId": "get_archive_download_url",
|
|
"summary": "Get archive download URL",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DownloadUrlResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Generate a time-limited download link to the archive file. The URL provides direct access to download the compressed archive contents.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "subjectType",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The subjectType"
|
|
},
|
|
{
|
|
"name": "subjectId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The subjectId"
|
|
},
|
|
{
|
|
"name": "archiveId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The archiveId"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/assets/purge": {
|
|
"post": {
|
|
"operationId": "purge_guild_assets",
|
|
"summary": "Purge guild assets",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PurgeGuildAssetsResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Delete and clean up all assets belonging to a guild, including icons, banners, and other media. This is a destructive operation used for cleanup during guild management or compliance actions.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PurgeGuildAssetsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/audit-logs": {
|
|
"post": {
|
|
"operationId": "list_audit_logs",
|
|
"summary": "List audit logs",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuditLogsListResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve a paginated list of audit logs with optional filtering by date range, action type, or actor. Used for tracking administrative operations and compliance auditing.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListAuditLogsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/audit-logs/search": {
|
|
"post": {
|
|
"operationId": "search_audit_logs",
|
|
"summary": "Search audit logs",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuditLogsListResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Perform a full-text search across audit logs for specific events or changes. Allows targeted queries for compliance investigations or incident response.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchAuditLogsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/avatar-hash/add": {
|
|
"post": {
|
|
"operationId": "add_avatar_hash_ban",
|
|
"summary": "Add avatar hash ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban one or more 8-char MD5-prefix avatar hashes. Avatars matching the banned hash will be rejected on upload.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanAvatarHashRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/avatar-hash/check": {
|
|
"post": {
|
|
"operationId": "check_avatar_hash_ban_status",
|
|
"summary": "Check avatar hash ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether any of the provided avatar hashes are banned.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CheckAvatarHashRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/avatar-hash/remove": {
|
|
"post": {
|
|
"operationId": "remove_avatar_hash_ban",
|
|
"summary": "Remove avatar hash ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied avatar-hash ban.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CheckAvatarHashRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/email/add": {
|
|
"post": {
|
|
"operationId": "add_email_ban",
|
|
"summary": "Add email ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban one or more email addresses from registering or creating accounts. Users attempting to use banned emails will be blocked.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanEmailRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/email/check": {
|
|
"post": {
|
|
"operationId": "check_email_ban_status",
|
|
"summary": "Check email ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether one or more email addresses are currently banned from registration. Returns the ban status and metadata.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanEmailRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/email/remove": {
|
|
"post": {
|
|
"operationId": "remove_email_ban",
|
|
"summary": "Remove email ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied email ban, allowing the address to be used for new registrations. Used for appeals or error correction.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanEmailRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/file-sha/add": {
|
|
"post": {
|
|
"operationId": "add_file_sha_ban",
|
|
"summary": "Add file SHA ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban one or more files by SHA hash. Uploads matching the banned hash will be rejected.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanFileShaRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/file-sha/bulk-add": {
|
|
"post": {
|
|
"operationId": "bulk_ban_file_shas",
|
|
"summary": "Bulk-ban file SHAs as a background job",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkJobResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enqueue a background job that bans many file SHAs at once. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkBanFileShasRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/file-sha/check": {
|
|
"post": {
|
|
"operationId": "check_file_sha_ban_status",
|
|
"summary": "Check file SHA ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether one or more file SHA hashes are currently banned.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CheckFileShaRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/file-sha/remove": {
|
|
"post": {
|
|
"operationId": "remove_file_sha_ban",
|
|
"summary": "Remove file SHA ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied file SHA ban, allowing uploads of that file again.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnbanFileShaRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/ip/add": {
|
|
"post": {
|
|
"operationId": "add_ip_ban",
|
|
"summary": "Add IP ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban one or more IP addresses from accessing the platform. Users connecting from banned IPs will be denied service. Can be applied retroactively.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanIpRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/ip/check": {
|
|
"post": {
|
|
"operationId": "check_ip_ban_status",
|
|
"summary": "Check IP ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether one or more IP addresses are currently banned. Returns the ban status and any associated metadata like reason or expiration.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanIpRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/ip/remove": {
|
|
"post": {
|
|
"operationId": "remove_ip_ban",
|
|
"summary": "Remove IP ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied IP ban, allowing traffic from those addresses again. Used for appeals or when bans were applied in error.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanIpRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/phrase/add": {
|
|
"post": {
|
|
"operationId": "add_phrase_ban",
|
|
"summary": "Add phrase ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban a phrase. Matching is case-insensitive and also normalizes common bypass tricks such as inserted whitespace, punctuation, invisible characters, and compatibility glyphs.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanPhraseRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/phrase/check": {
|
|
"post": {
|
|
"operationId": "check_phrase_ban_status",
|
|
"summary": "Check phrase ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether a phrase is currently banned.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanPhraseRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/phrase/remove": {
|
|
"post": {
|
|
"operationId": "remove_phrase_ban",
|
|
"summary": "Remove phrase ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied phrase ban, allowing messages containing that phrase again.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanPhraseRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/profile-substring/add": {
|
|
"post": {
|
|
"operationId": "add_profile_substring_ban",
|
|
"summary": "Add profile-substring ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban a substring within a specific profile field (username, global_name, nickname, bio, or pronouns). Matching reuses the phrase blocklist normalization (whitespace, punctuation, zero-width, lookalikes).",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanProfileSubstringRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/profile-substring/check": {
|
|
"post": {
|
|
"operationId": "check_profile_substring_ban_status",
|
|
"summary": "Check profile-substring ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether any of the provided substrings are banned for the given scope.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanProfileSubstringRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/profile-substring/remove": {
|
|
"post": {
|
|
"operationId": "remove_profile_substring_ban",
|
|
"summary": "Remove profile-substring ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied profile-substring ban.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanProfileSubstringRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/url-domain/add": {
|
|
"post": {
|
|
"operationId": "add_url_domain_ban",
|
|
"summary": "Add URL domain ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban an entire URL domain from being linked on the platform. All URLs under the banned domain will be blocked.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanUrlDomainRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/url-domain/check": {
|
|
"post": {
|
|
"operationId": "check_url_domain_ban_status",
|
|
"summary": "Check URL domain ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether a URL domain is currently banned from being linked.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanUrlDomainRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/url-domain/remove": {
|
|
"post": {
|
|
"operationId": "remove_url_domain_ban",
|
|
"summary": "Remove URL domain ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied URL domain ban, allowing links to that domain again.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnbanUrlDomainRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/url/add": {
|
|
"post": {
|
|
"operationId": "add_url_ban",
|
|
"summary": "Add URL ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Ban one or more URLs from being posted on the platform. Messages containing banned URLs will be blocked.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanUrlRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/url/check": {
|
|
"post": {
|
|
"operationId": "check_url_ban_status",
|
|
"summary": "Check URL ban status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether one or more URLs are currently banned from being posted.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CheckUrlBlocklistRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bans/url/remove": {
|
|
"post": {
|
|
"operationId": "remove_url_ban",
|
|
"summary": "Remove URL ban",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lift a previously applied URL ban, allowing the URL to be posted again.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnbanUrlRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/billing/guilds/{guildId}/overview": {
|
|
"get": {
|
|
"operationId": "admin_billing_guild_overview",
|
|
"summary": "Get billing overview for a guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminBillingOverviewResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve guild billing state. The current billing mirror is user-scoped, so guilds without persisted billing records return an empty overview.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The guildId"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/cancel-subscription": {
|
|
"post": {
|
|
"operationId": "admin_billing_cancel_subscription",
|
|
"summary": "Cancel a user subscription",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Set a user Stripe subscription to cancel at period end.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/cancel-subscription-now": {
|
|
"post": {
|
|
"operationId": "admin_billing_cancel_subscription_now",
|
|
"summary": "Cancel a user subscription immediately",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Cancel a user Stripe subscription immediately without issuing a refund.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/AdminBillingCancelImmediatelyRequest"}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/end-premium-grace-period": {
|
|
"post": {
|
|
"operationId": "admin_billing_end_premium_grace_period",
|
|
"summary": "End a user's premium grace period",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "End the post-cancel premium grace period for a user immediately, downgrading them and clearing premium_since. Idempotent: safe to call when not in grace. Use when investigating fraud or honoring a user request to opt out of the recovery window.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/invoices": {
|
|
"get": {
|
|
"operationId": "admin_billing_list_invoices",
|
|
"summary": "List invoices for a user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminInvoiceListResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve recent Stripe invoices for a user.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/overview": {
|
|
"get": {
|
|
"operationId": "admin_billing_overview",
|
|
"summary": "Get billing overview for a user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminBillingOverviewResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve subscription status, payment history, and Stripe payment methods for a user.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/payment-methods": {
|
|
"get": {
|
|
"operationId": "admin_billing_list_payment_methods",
|
|
"summary": "List payment methods for a user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminPaymentMethodListResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve the Stripe payment methods associated with a user.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/payments": {
|
|
"get": {
|
|
"operationId": "admin_billing_list_payments",
|
|
"summary": "List payments for a user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminPaymentListResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve the payment history stored for a user.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/reactivate-subscription": {
|
|
"post": {
|
|
"operationId": "admin_billing_reactivate_subscription",
|
|
"summary": "Reactivate a user subscription",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Remove a period-end cancellation from a user Stripe subscription.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/refund": {
|
|
"post": {
|
|
"operationId": "admin_billing_refund",
|
|
"summary": "Issue a refund for a user payment",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Issue a full or partial refund for a user payment through Stripe.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminBillingRefundRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/refund-policy-cancel-now": {
|
|
"post": {
|
|
"operationId": "admin_billing_refund_policy_cancel_now",
|
|
"summary": "Apply refund policy and cancel subscription immediately",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {"$ref": "#/components/schemas/AdminBillingRefundLatestInvoiceCancelResponse"}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Cancels a user subscription immediately and applies the support refund policy against the latest paid Stripe invoice.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {"$ref": "#/components/schemas/AdminBillingRefundLatestInvoiceCancelRequest"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/billing/users/{userId}/subscription": {
|
|
"get": {
|
|
"operationId": "admin_billing_get_subscription",
|
|
"summary": "Get subscription for a user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminSubscriptionResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve the current Stripe subscription details for a user.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{"name": "userId", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The userId"}
|
|
]
|
|
}
|
|
},
|
|
"/admin/bulk/add-guild-members": {
|
|
"post": {
|
|
"operationId": "bulk_add_guild_members",
|
|
"summary": "Bulk add guild members",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkJobResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enqueue a background job that adds multiple users to a guild. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkAddGuildMembersRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bulk/schedule-user-deletion": {
|
|
"post": {
|
|
"operationId": "schedule_bulk_user_deletion",
|
|
"summary": "Schedule bulk user deletion",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkJobResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enqueue a background job that schedules account deletions for multiple users. Returns a job_id immediately; observe progress at /admin/jobs/:job_id. Note: the worker version skips Stripe refunds, session termination, and identifier banning — apply those separately for high-risk accounts.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkScheduleUserDeletionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bulk/update-guild-features": {
|
|
"post": {
|
|
"operationId": "bulk_update_guild_features",
|
|
"summary": "Bulk update guild features",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkJobResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enqueue a background job that modifies guild features across multiple servers. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkUpdateGuildFeaturesRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bulk/update-suspicious-activity-flags": {
|
|
"post": {
|
|
"operationId": "bulk_update_suspicious_activity_flags",
|
|
"summary": "Bulk update suspicious activity flags",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkJobResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enqueue a background job that modifies suspicious activity flags for multiple users. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/BulkUpdateSuspiciousActivityFlagsRequest"}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/bulk/update-user-flags": {
|
|
"post": {
|
|
"operationId": "bulk_update_user_flags",
|
|
"summary": "Bulk update user flags",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkJobResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enqueue a background job that modifies user flags (e.g., verified, bot, system) for multiple users. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkUpdateUserFlagsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/codes/gift": {
|
|
"post": {
|
|
"operationId": "generate_gift_codes",
|
|
"summary": "Generate gift codes",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CodesResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Create one-use Plutonium gift codes with an explicit positive duration. Lifetime gifts are not supported.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GenerateGiftCodesRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/discovery/applications": {
|
|
"get": {
|
|
"operationId": "list_pending_discovery_applications",
|
|
"summary": "List all pending discovery applications",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/DiscoveryAdminPendingApplicationResponse"}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Returns every pending discovery application, enriched with guild metadata. No pagination. Requires DISCOVERY_REVIEW permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/discovery/applications/{guild_id}/approve": {
|
|
"post": {
|
|
"operationId": "approve_discovery_application",
|
|
"summary": "Approve discovery application",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryApplicationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Approve a pending discovery application. Requires DISCOVERY_REVIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "guild_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "The ID of the guild"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryAdminReviewRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/discovery/applications/{guild_id}/reject": {
|
|
"post": {
|
|
"operationId": "reject_discovery_application",
|
|
"summary": "Reject discovery application",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryApplicationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Reject a pending discovery application. Requires DISCOVERY_REVIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "guild_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "The ID of the guild"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryAdminRejectRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/discovery/guilds/{guild_id}/remove": {
|
|
"post": {
|
|
"operationId": "remove_from_discovery",
|
|
"summary": "Remove guild from discovery",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryApplicationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Remove an approved guild from discovery. Requires DISCOVERY_REMOVE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "guild_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "The ID of the guild"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryAdminRemoveRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/discovery/listed": {
|
|
"get": {
|
|
"operationId": "list_discovery_listed_guilds",
|
|
"summary": "List all guilds currently listed in discovery",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {"type": "array", "items": {"$ref": "#/components/schemas/DiscoveryAdminListedGuildResponse"}}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Returns every approved/listed discovery guild, enriched with guild metadata. No pagination. Requires DISCOVERY_REVIEW permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/gateway/memory-stats": {
|
|
"post": {
|
|
"operationId": "get_guild_memory_statistics",
|
|
"summary": "Get guild memory statistics",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemoryStatsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Returns heap and resident memory usage per guild. Requires GATEWAY_MEMORY_STATS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetProcessMemoryStatsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/gateway/reload-all": {
|
|
"post": {
|
|
"operationId": "reload_all_specified_guilds",
|
|
"summary": "Reload specified guilds",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReloadAllGuildsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Reconnects to the database and re-syncs guild state. Used for recovery after data inconsistencies. Requires GATEWAY_RELOAD_ALL permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReloadGuildsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/gateway/stats": {
|
|
"get": {
|
|
"operationId": "get_gateway_node_statistics",
|
|
"summary": "Get gateway node statistics",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NodeStatsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Returns uptime, process memory, and guild count. Used to monitor gateway health and performance. Requires GATEWAY_MEMORY_STATS permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/gateway/voice-state-counts": {
|
|
"get": {
|
|
"operationId": "get_gateway_voice_state_counts",
|
|
"summary": "Get gateway voice state counts",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/GatewayVoiceStateCountsResponse"}}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Returns active voice state counts grouped by voice region and voice server. Requires GATEWAY_MEMORY_STATS permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/guilds/audit-logs": {
|
|
"post": {
|
|
"operationId": "list_guild_audit_logs_admin",
|
|
"summary": "List guild audit logs",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildAuditLogsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Returns in-app guild audit log entries for a guild without requiring VIEW_AUDIT_LOG membership permission. Supports pagination via before/after log IDs and filtering by user_id or action_type. Requires GUILD_AUDIT_LOG_VIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildAuditLogsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/ban-member": {
|
|
"post": {
|
|
"operationId": "admin_ban_guild_member",
|
|
"summary": "Ban guild member",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Permanently bans a user from a guild. Prevents user from joining. Logged to audit log. Requires GUILD_BAN_MEMBER permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanGuildMemberRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/clear-fields": {
|
|
"post": {
|
|
"operationId": "clear_guild_fields",
|
|
"summary": "Clear guild fields",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Clears specified optional guild fields such as icon, banner, or description. Logged to audit log. Requires GUILD_UPDATE_SETTINGS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClearGuildFieldsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/delete": {
|
|
"post": {
|
|
"operationId": "admin_delete_guild",
|
|
"summary": "Delete guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuccessResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Permanently deletes a guild. Deletes all channels, messages, and settings. Irreversible operation. Logged to audit log. Requires GUILD_DELETE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteGuildRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/force-add-user": {
|
|
"post": {
|
|
"operationId": "force_add_user_to_guild",
|
|
"summary": "Force add user to guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuccessResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Forcefully adds a user to a guild. Bypasses normal invite flow for administrative account recovery. Logged to audit log. Requires GUILD_FORCE_ADD_MEMBER permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ForceAddUserToGuildRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/kick-member": {
|
|
"post": {
|
|
"operationId": "kick_guild_member",
|
|
"summary": "Kick guild member",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Temporarily removes a user from a guild. User can rejoin. Logged to audit log. Requires GUILD_KICK_MEMBER permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/KickGuildMemberRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/list-members": {
|
|
"post": {
|
|
"operationId": "admin_list_guild_members",
|
|
"summary": "List guild members",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildMembersResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists all guild members with pagination. Returns member IDs, join dates, and roles. Requires GUILD_LIST_MEMBERS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildMembersRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/lookup": {
|
|
"post": {
|
|
"operationId": "lookup_guild",
|
|
"summary": "Look up guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupGuildResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieves complete guild details including metadata, settings, and statistics. Look up by guild ID or vanity slug. Requires GUILD_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupGuildRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/reload": {
|
|
"post": {
|
|
"operationId": "reload_guild",
|
|
"summary": "Reload guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuccessResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Reloads a single guild state from database. Used to recover from corruption or sync issues. Logged to audit log. Requires GUILD_RELOAD permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReloadGuildRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/search": {
|
|
"post": {
|
|
"operationId": "search_guilds",
|
|
"summary": "Search guilds",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchGuildsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Searches guilds by name, ID, and other criteria. Supports full-text search and filtering. Requires GUILD_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchGuildsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/shutdown": {
|
|
"post": {
|
|
"operationId": "shutdown_guild",
|
|
"summary": "Shutdown guild",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuccessResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Shuts down and unloads a guild from the gateway. Guild data remains in database. Used for emergency resource cleanup. Logged to audit log. Requires GUILD_SHUTDOWN permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ShutdownGuildRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/transfer-ownership": {
|
|
"post": {
|
|
"operationId": "admin_transfer_guild_ownership",
|
|
"summary": "Transfer guild ownership",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildUpdateResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Transfers guild ownership to another user. Used when owner is inactive or for administrative recovery. Logged to audit log. Requires GUILD_TRANSFER_OWNERSHIP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TransferGuildOwnershipRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/update-features": {
|
|
"post": {
|
|
"operationId": "update_guild_features",
|
|
"summary": "Update guild features",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildUpdateResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Enables or disables guild feature flags. Modifies verification levels and community settings. Changes are logged to audit log. Requires GUILD_UPDATE_FEATURES permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateGuildFeaturesRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/update-name": {
|
|
"post": {
|
|
"operationId": "update_guild_name",
|
|
"summary": "Update guild name",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildUpdateResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Changes a guild name. Used for removing inappropriate names or correcting display issues. Logged to audit log. Requires GUILD_UPDATE_NAME permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateGuildNameRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/update-settings": {
|
|
"post": {
|
|
"operationId": "update_guild_settings",
|
|
"summary": "Update guild settings",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildUpdateResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Modifies guild configuration including description, region, language and other settings. Logged to audit log. Requires GUILD_UPDATE_SETTINGS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateGuildSettingsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/update-vanity": {
|
|
"post": {
|
|
"operationId": "update_guild_vanity",
|
|
"summary": "Update guild vanity",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildUpdateResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Updates a guild vanity URL slug. Sets custom short URL and prevents duplicate slugs. Logged to audit log. Requires GUILD_UPDATE_VANITY permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateGuildVanityRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/guilds/{guild_id}/emojis": {
|
|
"get": {
|
|
"operationId": "admin_list_guild_emojis",
|
|
"summary": "List guild emojis",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildEmojisResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists all custom emojis in a guild. Returns ID, name, and creation date. Used for asset inventory and purge operations. Requires ASSET_PURGE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "guild_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "The ID of the guild"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/guilds/{guild_id}/stickers": {
|
|
"get": {
|
|
"operationId": "admin_list_guild_stickers",
|
|
"summary": "List guild stickers",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListGuildStickersResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists all stickers in a guild. Returns ID, name, and asset information. Used for asset inventory and purge operations. Requires ASSET_PURGE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "guild_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "The ID of the guild"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/instance-config/branding-asset": {
|
|
"post": {
|
|
"operationId": "upload_instance_branding_asset",
|
|
"summary": "Upload or clear an instance branding asset",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Uploads a branding image served by the media proxy and stores its URL, or clears it when no image is provided. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BrandingAssetUploadRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/instance-config/get": {
|
|
"post": {
|
|
"operationId": "get_instance_config",
|
|
"summary": "Get instance configuration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieves instance-wide configuration including webhooks and SSO configuration. Requires INSTANCE_CONFIG_VIEW permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/instance-config/integrations/smtp/test": {
|
|
"post": {
|
|
"operationId": "test_instance_smtp_config",
|
|
"summary": "Validate SMTP configuration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceEmailSmtpTestResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Validates that an SMTP configuration can authenticate and accept a connection. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceEmailSmtpTestRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/instance-config/pending-registrations/approve": {
|
|
"post": {
|
|
"operationId": "approve_pending_registration",
|
|
"summary": "Approve a pending registration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Approves a registration waiting for manual review by removing its pending registration trait. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PendingRegistrationActionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/instance-config/pending-registrations/reject": {
|
|
"post": {
|
|
"operationId": "reject_pending_registration",
|
|
"summary": "Reject a pending registration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Rejects a registration waiting for manual review and prevents the account from logging in. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PendingRegistrationActionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/instance-config/registration-urls/create": {
|
|
"post": {
|
|
"operationId": "create_registration_url",
|
|
"summary": "Create an admin-issued registration URL",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateRegistrationUrlResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Creates a one-time-display registration URL that can be sent manually by an administrator. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateRegistrationUrlRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/instance-config/registration-urls/revoke": {
|
|
"post": {
|
|
"operationId": "revoke_registration_url",
|
|
"summary": "Revoke an admin-issued registration URL",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Revokes an admin-issued registration URL so it can no longer be used. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RegistrationUrlActionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/instance-config/update": {
|
|
"post": {
|
|
"operationId": "update_instance_config",
|
|
"summary": "Update instance configuration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Updates instance configuration settings including webhook URLs and SSO parameters. Changes apply immediately. Requires INSTANCE_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstanceConfigUpdateRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/jobs/active": {
|
|
"post": {
|
|
"operationId": "list_active_jobs",
|
|
"summary": "List active (queued + running) jobs",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ActiveJobsResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Polling endpoint for the Jobs page. Returns only currently-active jobs (queued or running) so the UI can refresh progress without scanning historical data.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/jobs/cancel": {
|
|
"post": {
|
|
"operationId": "cancel_job",
|
|
"summary": "Request cancellation of a running job",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancelJobResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Mark a job as cancel-requested. The handler must be cooperatively cancellable — it will see the flag at its next `helpers.shouldCancel()` check. Returns `{cancelled: false}` for already-terminal jobs.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancelJobRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/jobs/get": {
|
|
"post": {
|
|
"operationId": "get_job",
|
|
"summary": "Get job detail",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetJobResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Fetch a single job ledger entry with full payload, result, and progress.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetJobRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/jobs/list": {
|
|
"post": {
|
|
"operationId": "list_jobs",
|
|
"summary": "List jobs",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListJobsResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Paginated, filterable list of background jobs from the human-facing ledger. Walks back through day-buckets and applies status / task-type / requester filters in-process.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListJobsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/limit-config/get": {
|
|
"post": {
|
|
"operationId": "get_limit_config",
|
|
"summary": "Get limit configuration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LimitConfigGetResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieves rate limit configuration including message limits, upload limits, and request throttles. Shows defaults, metadata, and any modifications from defaults. Requires INSTANCE_LIMIT_CONFIG_VIEW permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/limit-config/update": {
|
|
"post": {
|
|
"operationId": "update_limit_config",
|
|
"summary": "Update limit configuration",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LimitConfigGetResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Updates rate limit configuration including message throughput, upload sizes, and request throttles. Changes apply immediately to all new operations. Requires INSTANCE_LIMIT_CONFIG_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LimitConfigUpdateRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/browse": {
|
|
"post": {
|
|
"operationId": "browse_channel_messages",
|
|
"summary": "Browse channel messages",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BrowseChannelResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Browses messages in a channel with cursor-based pagination. Returns messages in reverse chronological order. Requires MESSAGE_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BrowseChannelRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/delete": {
|
|
"post": {
|
|
"operationId": "admin_delete_message",
|
|
"summary": "Delete single message",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteMessageResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Deletes a single message permanently. Used for removing inappropriate or harmful content. Logged to audit log. Requires MESSAGE_DELETE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteMessageRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/delete-all": {
|
|
"post": {
|
|
"operationId": "delete_all_user_messages",
|
|
"summary": "Delete all user messages",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteAllUserMessagesResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Deletes all messages from a specific user across all channels. Permanent operation used for account suspension or policy violation. Requires MESSAGE_DELETE_ALL permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteAllUserMessagesRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/lookup": {
|
|
"post": {
|
|
"operationId": "lookup_message",
|
|
"summary": "Look up message details",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupMessageResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieves complete message details including content, attachments, edits, and metadata. Look up by message ID and channel. Requires MESSAGE_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupMessageRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/lookup-by-attachment": {
|
|
"post": {
|
|
"operationId": "lookup_message_by_attachment",
|
|
"summary": "Look up message by attachment",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupMessageResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Finds and retrieves message containing a specific attachment by ID. Used to locate messages with sensitive or illegal content. Requires MESSAGE_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupMessageByAttachmentRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/report-to-ncmec": {
|
|
"post": {
|
|
"operationId": "report_message_attachment_to_ncmec",
|
|
"summary": "Report an image attachment to NCMEC",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/NcmecAttachmentSubmitResultResponse"}}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Submits a specific image attachment to NCMEC, creates an audit log entry, silently disables the user, triggers one archive for the user, and schedules content deletion after the archive completes.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportAttachmentToNcmecRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/search": {
|
|
"post": {
|
|
"operationId": "search_channel_messages",
|
|
"summary": "Search channel messages",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchChannelMessagesResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Searches messages within a channel by content. Requires MESSAGE_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchChannelMessagesRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/shred": {
|
|
"post": {
|
|
"operationId": "queue_message_shred",
|
|
"summary": "Queue message shred operation",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageShredResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Queues bulk message shredding with attachment deletion. Returns job ID to track progress asynchronously. Used for large-scale content removal. Requires MESSAGE_SHRED permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageShredRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/messages/shred-status": {
|
|
"post": {
|
|
"operationId": "get_message_shred_status",
|
|
"summary": "Get message shred status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageShredStatusResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Polls status of a queued message shred operation. Returns progress percentage and whether the job is complete. Requires MESSAGE_SHRED permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageShredStatusRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/reports/list": {
|
|
"post": {
|
|
"operationId": "list_reports",
|
|
"summary": "List reports",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListReportsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists user and content reports with optional status filtering and pagination. Requires REPORT_VIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListReportsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/reports/resolve": {
|
|
"post": {
|
|
"operationId": "resolve_report",
|
|
"summary": "Resolve report",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResolveReportResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Closes and resolves a report with optional public comment. Marks report as handled and creates audit log entry. Requires REPORT_RESOLVE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResolveReportRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/reports/search": {
|
|
"post": {
|
|
"operationId": "search_reports",
|
|
"summary": "Search reports",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchReportsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Searches and filters reports by user, content, reason, and status criteria. Supports full-text search and advanced filtering. Requires REPORT_VIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchReportsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/reports/{report_id}": {
|
|
"get": {
|
|
"operationId": "get_report",
|
|
"summary": "Get report details",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportAdminResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieves detailed information about a specific report including content, reporter, and reason. Requires REPORT_VIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "report_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"type": "string"},
|
|
"description": "The report id"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/search/refresh-index": {
|
|
"post": {
|
|
"operationId": "refresh_search_index",
|
|
"summary": "Refresh search index",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshSearchIndexResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Trigger full or partial search index rebuild. Creates background job to reindex guilds and users. Returns job ID for status tracking. Requires GUILD_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshSearchIndexRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/search/refresh-status": {
|
|
"post": {
|
|
"operationId": "get_search_index_refresh_status",
|
|
"summary": "Get search index refresh status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IndexRefreshStatusResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Polls status of a search index refresh job. Returns completion percentage and current phase. Requires GUILD_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetIndexRefreshStatusRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/suspicious-email-domains/add": {
|
|
"post": {
|
|
"operationId": "add_suspicious_email_domain",
|
|
"summary": "Add suspicious email domain",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Flag an email domain as suspicious. Registration is not blocked, but new accounts using this domain are required to verify a phone number before they can act on the platform. The list itself is not exposed to users — they only see the verified-phone gate.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuspiciousEmailDomainRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/suspicious-email-domains/check": {
|
|
"post": {
|
|
"operationId": "check_suspicious_email_domain",
|
|
"summary": "Check suspicious email domain status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanCheckResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Query whether an email domain is currently flagged as suspicious.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuspiciousEmailDomainRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/suspicious-email-domains/remove": {
|
|
"post": {
|
|
"operationId": "remove_suspicious_email_domain",
|
|
"summary": "Remove suspicious email domain flag",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Remove a domain from the suspicious list. New registrations from this domain will no longer be auto-required to verify a phone number on signup.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SuspiciousEmailDomainRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/system-dm/send": {
|
|
"post": {
|
|
"operationId": "send_system_dm",
|
|
"summary": "Send system DM",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendSystemDmResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Queue a worker job that sends the same system DM content to each provided user ID. Progress is observable via the Jobs admin page (task_type=sendSystemDm). Requires SYSTEM_DM_SEND permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendSystemDmRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/system/heap-snapshot": {
|
|
"post": {
|
|
"operationId": "take_heap_snapshot",
|
|
"summary": "Take a V8 heap snapshot",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/HeapSnapshotResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Triggers a V8 heap snapshot of the current process and returns the snapshot file. Used for diagnosing memory leaks. Requires SYSTEM_HEAP_SNAPSHOT permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/users/cancel-bulk-message-deletion": {
|
|
"post": {
|
|
"operationId": "admin_cancel_bulk_message_deletion",
|
|
"summary": "Cancel bulk message deletion",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Cancel a scheduled bulk message deletion job for a user. Prevents deletion of user messages across guilds. Creates audit log entry. Requires USER_CANCEL_BULK_MESSAGE_DELETION permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CancelBulkMessageDeletionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/cancel-deletion": {
|
|
"post": {
|
|
"operationId": "cancel_account_deletion",
|
|
"summary": "Cancel account deletion",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Cancel a scheduled account deletion. User account restoration prevents data loss. Creates audit log entry. Requires USER_DELETE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DisableMfaRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/change-dob": {
|
|
"post": {
|
|
"operationId": "change_user_dob",
|
|
"summary": "Change user DOB",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Update user date of birth. May affect age-restricted content access. Creates audit log entry. Requires USER_UPDATE_DOB permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeDobRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/change-email": {
|
|
"post": {
|
|
"operationId": "change_user_email",
|
|
"summary": "Change user email",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Change user email address. New email must be valid and unique. Marks email as verified. Creates audit log entry. Requires USER_UPDATE_EMAIL permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeEmailRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/change-log": {
|
|
"post": {
|
|
"operationId": "get_user_change_log",
|
|
"summary": "Get user change log",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/ListUserChangeLogResponseSchema"}}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Retrieve complete change log history for a user. Shows all profile modifications, admin actions, and account changes with timestamps. Requires USER_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserChangeLogRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/change-username": {
|
|
"post": {
|
|
"operationId": "change_user_username",
|
|
"summary": "Change user username",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Change user username. New username must meet requirements and be unique. Creates audit log entry. Requires USER_UPDATE_USERNAME permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeUsernameRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/clear-fields": {
|
|
"post": {
|
|
"operationId": "clear_user_fields",
|
|
"summary": "Clear user fields",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Clear or reset user profile fields such as bio, avatar, or status. Creates audit log entry. Requires USER_UPDATE_PROFILE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClearUserFieldsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/delete-webauthn-credential": {
|
|
"post": {
|
|
"operationId": "delete_user_webauthn_credential",
|
|
"summary": "Delete user WebAuthn credential",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Delete a specific WebAuthn credential (passkey/security key) from a user account. Creates audit log entry. Requires USER_UPDATE_MFA permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteWebAuthnCredentialRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/disable-mfa": {
|
|
"post": {
|
|
"operationId": "disable_user_mfa",
|
|
"summary": "Disable user MFA",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Disable two-factor authentication for user account. Removes all authenticators. Creates audit log entry. Requires USER_UPDATE_MFA permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DisableMfaRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/disable-suspicious": {
|
|
"post": {
|
|
"operationId": "disable_user_suspicious",
|
|
"summary": "Disable user for suspicious activity",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Disable user account due to suspicious activity or abuse. Account is locked pending review. User cannot access services. Creates audit log entry. Requires USER_DISABLE_SUSPICIOUS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/DisableForSuspiciousActivityRequest"}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/list-dm-channels": {
|
|
"post": {
|
|
"operationId": "list_user_dm_channels",
|
|
"summary": "List user DM channels",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserDmChannelsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "List historical one-to-one DM channels for a user with cursor pagination. Requires USER_LIST_DM_CHANNELS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserDmChannelsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/list-group-dm-channels": {
|
|
"post": {
|
|
"operationId": "list_user_group_dm_channels",
|
|
"summary": "List user group DM channels",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/ListUserGroupDmChannelsResponse"}}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "List group DM channels for a user. Requires USER_LIST_DM_CHANNELS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserGroupDmChannelsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/list-guilds": {
|
|
"post": {
|
|
"operationId": "list_user_guilds",
|
|
"summary": "List user guilds",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserGuildsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "List all guilds a user is a member of. Shows roles and join dates. Requires USER_LIST_GUILDS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserGuildsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/list-relationships": {
|
|
"post": {
|
|
"operationId": "admin_list_user_relationships",
|
|
"summary": "List user relationships",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserRelationshipsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "List a user's friends, incoming and outgoing friend requests, and blocked users. Requires USER_LIST_RELATIONSHIPS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserRelationshipsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/list-sessions": {
|
|
"post": {
|
|
"operationId": "list_user_sessions",
|
|
"summary": "List user sessions",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserSessionsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "List all active user sessions across devices. Shows device info, IP, last activity, and creation time. Requires USER_LIST_SESSIONS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListUserSessionsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/list-webauthn-credentials": {
|
|
"post": {
|
|
"operationId": "list_user_webauthn_credentials",
|
|
"summary": "List user WebAuthn credentials",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnCredentialListResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "List all WebAuthn credentials (passkeys/security keys) registered for a user. Returns credential names, creation dates, and last usage. Creates audit log entry. Requires USER_UPDATE_MFA permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListWebAuthnCredentialsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/lookup": {
|
|
"post": {
|
|
"operationId": "lookup_user",
|
|
"summary": "Lookup user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupUserResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Look up detailed user profile by ID, username, email, or phone. Returns account status, permissions, and metadata. Requires USER_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LookupUserRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/me": {
|
|
"get": {
|
|
"operationId": "get_authenticated_admin_user",
|
|
"summary": "Get authenticated admin user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminUsersMeResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Get profile of currently authenticated admin user. Returns admin permissions, roles, and metadata. Requires AUTHENTICATE permission.",
|
|
"security": [{"adminApiKey": []}]
|
|
}
|
|
},
|
|
"/admin/users/remove-relationship": {
|
|
"post": {
|
|
"operationId": "remove_user_relationship",
|
|
"summary": "Remove user relationship",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Remove a single relationship row for a user. For friend and outgoing_request, the mirror entry on the other user is also removed. Dispatches RELATIONSHIP_REMOVE gateway events. Requires USER_REMOVE_RELATIONSHIP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RemoveUserRelationshipRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/remove-relationships-by-category": {
|
|
"post": {
|
|
"operationId": "remove_user_relationships_by_category",
|
|
"summary": "Remove all of a user's relationships in a category",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/RemoveUserRelationshipsResponse"}}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Bulk-remove every relationship of the chosen category (friend, incoming_request, outgoing_request, blocked) for a user. Mirror entries on the other party are removed for friend, incoming_request, and outgoing_request. Requires USER_REMOVE_RELATIONSHIP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/RemoveUserRelationshipsByCategoryRequest"}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/resend-verification-email": {
|
|
"post": {
|
|
"operationId": "admin_resend_verification_email",
|
|
"summary": "Resend verification email",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Resend the account verification email for a user. Creates audit log entry and honours email verification resend limits. Requires USER_UPDATE_EMAIL permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResendVerificationEmailRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/schedule-deletion": {
|
|
"post": {
|
|
"operationId": "schedule_account_deletion",
|
|
"summary": "Schedule account deletion",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Schedule user account for deletion after grace period. Account will be fully deleted with all content unless cancellation is executed. Creates audit log entry. Requires USER_DELETE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScheduleAccountDeletionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/search": {
|
|
"post": {
|
|
"operationId": "search_users",
|
|
"summary": "Search users",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchUsersResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Searches users by username, email, ID, last active IP, and other criteria. Supports full-text search and filtering by account status. Requires USER_LOOKUP permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchUsersRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/send-password-reset": {
|
|
"post": {
|
|
"operationId": "send_password_reset",
|
|
"summary": "Send password reset",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Send password reset email to user with reset link. User must use link within expiry window. Creates audit log entry. Requires USER_UPDATE_EMAIL permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendPasswordResetRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/set-acls": {
|
|
"post": {
|
|
"operationId": "set_user_acls",
|
|
"summary": "Set user ACLs",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Grant or revoke admin ACL permissions to user. Controls admin capabilities and panel access. Creates audit log entry. Requires ACL_SET_USER permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SetUserAclsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/set-bot-status": {
|
|
"post": {
|
|
"operationId": "set_user_bot_status",
|
|
"summary": "Set user bot status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Mark or unmark a user account as a bot. Controls bot badge visibility and API permissions. Creates audit log entry. Requires USER_UPDATE_BOT_STATUS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SetUserBotStatusRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/set-system-status": {
|
|
"post": {
|
|
"operationId": "set_user_system_status",
|
|
"summary": "Set user system status",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Mark or unmark a user as a system account. System accounts have special permissions for automated operations. Creates audit log entry. Requires USER_UPDATE_BOT_STATUS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SetUserSystemStatusRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/set-traits": {
|
|
"post": {
|
|
"operationId": "set_user_traits",
|
|
"summary": "Set user traits",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Set or update user trait attributes and profile metadata. Traits customize user display and features. Creates audit log entry. Requires USER_UPDATE_TRAITS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SetUserTraitsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/temp-ban": {
|
|
"post": {
|
|
"operationId": "temp_ban_user",
|
|
"summary": "Temp ban user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Apply temporary ban to user account for specified duration. Prevents login and guild operations. Automatically lifts after expiry. Creates audit log entry. Requires USER_TEMP_BAN permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TempBanUserRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/terminate-sessions": {
|
|
"post": {
|
|
"operationId": "terminate_user_sessions",
|
|
"summary": "Terminate user sessions",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TerminateSessionsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Terminate all active user sessions across devices. Forces user to re-authenticate on next connection. Creates audit log entry. Requires USER_UPDATE_FLAGS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TerminateSessionsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/unban": {
|
|
"post": {
|
|
"operationId": "unban_user",
|
|
"summary": "Unban user",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Immediately remove temporary ban from user account. User can log in and access guilds again. Creates audit log entry. Requires USER_TEMP_BAN permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DisableMfaRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/update-flags": {
|
|
"post": {
|
|
"operationId": "update_user_flags",
|
|
"summary": "Update user flags",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Add or remove user flags to control account features and restrictions. Flags determine verification status and special properties. Creates audit log entry. Requires USER_UPDATE_FLAGS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateUserFlagsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/update-has-verified-phone": {
|
|
"post": {
|
|
"operationId": "update_user_has_verified_phone",
|
|
"summary": "Update user phone verification flag",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Set whether a user is treated as having completed phone verification. This is the only supported path for clearing the irreversible user-facing phone verification flag.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateHasVerifiedPhoneRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/update-premium-flags": {
|
|
"post": {
|
|
"operationId": "update_user_premium_flags",
|
|
"summary": "Update user premium flags",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Add or remove premium-related flags on a user account (badge visibility, override, purchase block, etc). Creates audit log entry. Requires USER_UPDATE_FLAGS permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdatePremiumFlagsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/update-suspicious-activity-flags": {
|
|
"post": {
|
|
"operationId": "update_suspicious_activity_flags",
|
|
"summary": "Update suspicious activity flags",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Flag user as suspicious for account abuse, fraud, or policy violations. Enables enforcement actions and rate limiting. Creates audit log entry. Requires USER_UPDATE_SUSPICIOUS_ACTIVITY permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSuspiciousActivityFlagsRequest"}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/verify-email": {
|
|
"post": {
|
|
"operationId": "verify_user_email",
|
|
"summary": "Verify user email",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Manually verify user email address without requiring confirmation link. Bypasses email verification requirement. Creates audit log entry. Requires USER_UPDATE_EMAIL permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VerifyUserEmailRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/users/{user_id}/ban-avatar": {
|
|
"post": {
|
|
"operationId": "ban_user_avatar",
|
|
"summary": "Ban this user's current avatar",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanUserAvatarResponseSchema"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Reads the user's current avatar_hash, strips any animation prefix, and adds the 8-char hash to the avatar blocklist. Returns the banned hash.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "user_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "The ID of the user"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BanUserAvatarRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/diagnostics/objects": {
|
|
"get": {
|
|
"operationId": "list_voice_diagnostics_objects",
|
|
"summary": "List voice diagnostics objects",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/VoiceDiagnosticsObjectListResponse"}}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists raw voice diagnostics NDJSON S3 objects for a channel and time range. Requires VOICE_DIAGNOSTICS_VIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "channel_id",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "Channel id to query diagnostics for"
|
|
}
|
|
},
|
|
{
|
|
"name": "start_ms",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 8640000000000000,
|
|
"format": "int53",
|
|
"description": "Inclusive start timestamp in milliseconds"
|
|
}
|
|
},
|
|
{
|
|
"name": "end_ms",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 8640000000000000,
|
|
"format": "int53",
|
|
"description": "Inclusive end timestamp in milliseconds"
|
|
}
|
|
},
|
|
{
|
|
"name": "session_id",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128,
|
|
"pattern": "^[A-Za-z0-9_.:-]+$",
|
|
"description": "Optional voice diagnostics session id filter"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit_objects",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 5000,
|
|
"format": "int32",
|
|
"description": "Maximum matching S3 objects to include"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/voice/diagnostics/raw": {
|
|
"get": {
|
|
"operationId": "stream_voice_diagnostics_raw",
|
|
"summary": "Stream raw voice diagnostics",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"204": {"description": "No Content"},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Streams matching voice diagnostics NDJSON objects for local processing. Requires VOICE_DIAGNOSTICS_VIEW permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"parameters": [
|
|
{
|
|
"name": "channel_id",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "Channel id to query diagnostics for"
|
|
}
|
|
},
|
|
{
|
|
"name": "start_ms",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 8640000000000000,
|
|
"format": "int53",
|
|
"description": "Inclusive start timestamp in milliseconds"
|
|
}
|
|
},
|
|
{
|
|
"name": "end_ms",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 8640000000000000,
|
|
"format": "int53",
|
|
"description": "Inclusive end timestamp in milliseconds"
|
|
}
|
|
},
|
|
{
|
|
"name": "session_id",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128,
|
|
"pattern": "^[A-Za-z0-9_.:-]+$",
|
|
"description": "Optional voice diagnostics session id filter"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit_objects",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 5000,
|
|
"format": "int32",
|
|
"description": "Maximum matching S3 objects to include"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/admin/voice/regions/create": {
|
|
"post": {
|
|
"operationId": "create_voice_region",
|
|
"summary": "Create voice region",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateVoiceRegionResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Creates a new voice server region. Defines geographic location and performance characteristics for voice routing. Creates audit log entry. Requires VOICE_REGION_CREATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateVoiceRegionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/regions/delete": {
|
|
"post": {
|
|
"operationId": "delete_voice_region",
|
|
"summary": "Delete voice region",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteVoiceResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Deletes a voice region. Removes region from routing and reassigns active connections. Creates audit log entry. Requires VOICE_REGION_DELETE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteVoiceRegionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/regions/get": {
|
|
"post": {
|
|
"operationId": "get_voice_region",
|
|
"summary": "Get voice region",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetVoiceRegionResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Gets detailed information about a voice region including assigned servers, capacity, and server details. Requires VOICE_REGION_LIST permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetVoiceRegionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/regions/list": {
|
|
"post": {
|
|
"operationId": "list_voice_regions",
|
|
"summary": "List voice regions",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListVoiceRegionsResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists all configured voice server regions with status and server count. Shows region names, latency info, and availability. Requires VOICE_REGION_LIST permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListVoiceRegionsRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/regions/update": {
|
|
"post": {
|
|
"operationId": "update_voice_region",
|
|
"summary": "Update voice region",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateVoiceRegionResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Updates voice region settings such as latency thresholds or priority. Changes affect voice routing for new sessions. Creates audit log entry. Requires VOICE_REGION_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateVoiceRegionRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/servers/create": {
|
|
"post": {
|
|
"operationId": "create_voice_server",
|
|
"summary": "Create voice server",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateVoiceServerResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Creates and provisions a new voice server instance in a region. Configures capacity, codecs, and encryption. Creates audit log entry. Requires VOICE_SERVER_CREATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateVoiceServerRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/servers/delete": {
|
|
"post": {
|
|
"operationId": "delete_voice_server",
|
|
"summary": "Delete voice server",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteVoiceResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Decommissions and removes a voice server instance. Disconnects active sessions and migrates to other servers. Creates audit log entry. Requires VOICE_SERVER_DELETE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteVoiceServerRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/servers/get": {
|
|
"post": {
|
|
"operationId": "get_voice_server",
|
|
"summary": "Get voice server",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetVoiceServerResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Gets detailed voice server information including active connections and configuration. Requires VOICE_SERVER_LIST permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetVoiceServerRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/servers/list": {
|
|
"post": {
|
|
"operationId": "list_voice_servers",
|
|
"summary": "List voice servers",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListVoiceServersResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Lists all voice servers with connection counts and capacity. Shows server status, region assignment, and load information. Supports filtering and pagination. Requires VOICE_SERVER_LIST permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ListVoiceServersRequest"}}}
|
|
}
|
|
}
|
|
},
|
|
"/admin/voice/servers/update": {
|
|
"post": {
|
|
"operationId": "update_voice_server",
|
|
"summary": "Update voice server",
|
|
"tags": ["Admin"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateVoiceServerResponse"}}}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request - The request was malformed or contained invalid data",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Authentication is required or the token is invalid",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden - You do not have permission to perform this action",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
},
|
|
"429": {
|
|
"description": "Too Many Requests - You are being rate limited",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}},
|
|
"headers": {
|
|
"Retry-After": {
|
|
"description": "Number of seconds to wait before retrying (only on 429)",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Limit": {
|
|
"description": "The number of requests that can be made in the current window",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Remaining": {
|
|
"description": "The number of remaining requests that can be made",
|
|
"schema": {"type": "integer"}
|
|
},
|
|
"X-RateLimit-Reset": {
|
|
"description": "Unix timestamp when the rate limit resets",
|
|
"schema": {"type": "integer"}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error - An unexpected error occurred",
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}
|
|
}
|
|
},
|
|
"description": "Updates voice server configuration including capacity, region assignment, and quality settings. Changes apply to new connections. Creates audit log entry. Requires VOICE_SERVER_UPDATE permission.",
|
|
"security": [{"adminApiKey": []}],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateVoiceServerRequest"}}}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"CreateAdminApiKeyResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key_id": {"type": "string", "description": "Unique identifier for the API key"},
|
|
"key": {"type": "string", "description": "The generated API key secret (only shown once)"},
|
|
"name": {"type": "string", "description": "Display name for the API key"},
|
|
"created_at": {"type": "string", "description": "ISO 8601 timestamp when the key was created"},
|
|
"expires_at": {
|
|
"description": "ISO 8601 timestamp when the key expires, or null if no expiration",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"acls": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 115,
|
|
"description": "List of access control permissions for the key"
|
|
}
|
|
},
|
|
"required": ["key_id", "key", "name", "created_at", "expires_at", "acls"]
|
|
},
|
|
"Error": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {"$ref": "#/components/schemas/APIErrorCode"},
|
|
"message": {"type": "string", "description": "Human-readable error message"},
|
|
"errors": {
|
|
"type": "array",
|
|
"description": "Field-specific validation errors",
|
|
"items": {"$ref": "#/components/schemas/ValidationErrorItem"}
|
|
}
|
|
},
|
|
"required": ["code", "message"]
|
|
},
|
|
"APIErrorCode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ACCESS_DENIED",
|
|
"ACCOUNT_DISABLED",
|
|
"BAD_GATEWAY",
|
|
"BAD_REQUEST",
|
|
"BLUESKY_OAUTH_AUTHORIZATION_FAILED",
|
|
"BLUESKY_OAUTH_CALLBACK_FAILED",
|
|
"BLUESKY_OAUTH_NOT_ENABLED",
|
|
"BLUESKY_OAUTH_SESSION_EXPIRED",
|
|
"BLUESKY_OAUTH_STATE_INVALID",
|
|
"ACCOUNT_SCHEDULED_FOR_DELETION",
|
|
"ACCOUNT_SUSPENDED_PERMANENTLY",
|
|
"ACCOUNT_SUSPENDED_TEMPORARILY",
|
|
"ACCOUNT_SUSPICIOUS_ACTIVITY",
|
|
"ACCOUNT_TOO_NEW_FOR_GUILD",
|
|
"ACLS_MUST_BE_NON_EMPTY",
|
|
"ADMIN_API_KEY_NOT_FOUND",
|
|
"APPLICATION_NOT_FOUND",
|
|
"APPLICATION_NOT_OWNED",
|
|
"ALREADY_FRIENDS",
|
|
"AUDIT_LOG_INDEXING",
|
|
"BOTS_CANNOT_CREATE_GUILDS",
|
|
"BOTS_CANNOT_SEND_FRIEND_REQUESTS",
|
|
"BOT_ALREADY_IN_GUILD",
|
|
"BOT_APPLICATION_NOT_FOUND",
|
|
"BOT_IS_PRIVATE",
|
|
"BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED",
|
|
"BOT_USER_AUTH_SESSION_CREATION_DENIED",
|
|
"BOT_USER_GENERATION_FAILED",
|
|
"BOT_USER_NOT_FOUND",
|
|
"CALL_ALREADY_EXISTS",
|
|
"CANNOT_EDIT_OTHER_USER_MESSAGE",
|
|
"CANNOT_EXECUTE_ON_DM",
|
|
"CANNOT_BLOCK_SYSTEM_USER",
|
|
"CANNOT_MODIFY_SYSTEM_WEBHOOK",
|
|
"CANNOT_MODIFY_VOICE_STATE",
|
|
"CANNOT_REDEEM_PLUTONIUM_WITH_VISIONARY",
|
|
"CANNOT_REPORT_GUILD",
|
|
"CANNOT_REPORT_OWN_GUILD",
|
|
"CANNOT_REPORT_OWN_MESSAGE",
|
|
"CANNOT_REPORT_YOURSELF",
|
|
"CANNOT_SEND_EMPTY_MESSAGE",
|
|
"CANNOT_SEND_FRIEND_REQUEST_TO_BLOCKED_USER",
|
|
"CANNOT_SEND_FRIEND_REQUEST_TO_SELF",
|
|
"CANNOT_SEND_MESSAGES_IN_NON_TEXT_CHANNEL",
|
|
"CANNOT_SEND_MESSAGES_TO_USER",
|
|
"CANNOT_TRANSFER_OWNERSHIP_TO_BOT",
|
|
"CANNOT_SHRINK_RESERVED_SLOTS",
|
|
"CAPTCHA_REQUIRED",
|
|
"CHANNEL_INDEXING",
|
|
"COMMUNICATION_DISABLED",
|
|
"CONNECTION_ALREADY_EXISTS",
|
|
"CONNECTION_INITIATION_TOKEN_INVALID",
|
|
"CONNECTION_INVALID_IDENTIFIER",
|
|
"CONNECTION_INVALID_TYPE",
|
|
"CONNECTION_LIMIT_REACHED",
|
|
"CONNECTION_NOT_FOUND",
|
|
"CONNECTION_VERIFICATION_FAILED",
|
|
"CONFLICT",
|
|
"CONTENT_BLOCKED",
|
|
"CREATION_FAILED",
|
|
"DECRYPTION_FAILED",
|
|
"DELETION_FAILED",
|
|
"DISCOVERY_ALREADY_APPLIED",
|
|
"DISCOVERY_APPLICATION_ALREADY_REVIEWED",
|
|
"DISCOVERY_APPLICATION_NOT_FOUND",
|
|
"DISCOVERY_DESCRIPTION_REQUIRED",
|
|
"DISCOVERY_DISABLED",
|
|
"DISCOVERY_INSUFFICIENT_MEMBERS",
|
|
"DISCOVERY_INVALID_CATEGORY",
|
|
"DISCOVERY_NOT_DISCOVERABLE",
|
|
"DISCRIMINATOR_REQUIRED",
|
|
"EMAIL_SERVICE_NOT_TESTABLE",
|
|
"EMAIL_VERIFICATION_REQUIRED",
|
|
"DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED",
|
|
"FRIEND_REQUEST_EMAIL_VERIFICATION_REQUIRED",
|
|
"GUILD_CREATION_EMAIL_VERIFICATION_REQUIRED",
|
|
"GUILD_EMAIL_VERIFICATION_REQUIRED",
|
|
"MFA_EMAIL_VERIFICATION_REQUIRED",
|
|
"PROFILE_EMAIL_VERIFICATION_REQUIRED",
|
|
"PURCHASE_EMAIL_VERIFICATION_REQUIRED",
|
|
"REACTION_EMAIL_VERIFICATION_REQUIRED",
|
|
"REPORT_EMAIL_VERIFICATION_REQUIRED",
|
|
"REGISTRATION_CLOSED",
|
|
"REGISTRATION_PENDING_APPROVAL",
|
|
"REGISTRATION_REJECTED",
|
|
"REGISTRATION_URL_INVALID",
|
|
"EMPTY_ENCRYPTED_BODY",
|
|
"ENCRYPTION_FAILED",
|
|
"EU_WITHDRAWAL_WAIVER_REQUIRED",
|
|
"EXPLICIT_CONTENT_CANNOT_BE_SENT",
|
|
"FEATURE_NOT_AVAILABLE_SELF_HOSTED",
|
|
"FEATURE_TEMPORARILY_DISABLED",
|
|
"FILE_SIZE_TOO_LARGE",
|
|
"FORBIDDEN",
|
|
"FRIEND_REQUEST_BLOCKED",
|
|
"GATEWAY_TIMEOUT",
|
|
"GENERAL_ERROR",
|
|
"GONE",
|
|
"GIFT_CODE_ALREADY_REDEEMED",
|
|
"GUILD_PHONE_VERIFICATION_REQUIRED",
|
|
"GUILD_TEMPLATE_FETCH_FAILED",
|
|
"GUILD_TEMPLATE_INVALID",
|
|
"GUILD_VERIFICATION_REQUIRED",
|
|
"HANDOFF_CODE_EXPIRED",
|
|
"HARVEST_EXPIRED",
|
|
"HARVEST_FAILED",
|
|
"HARVEST_NOT_READY",
|
|
"HTTP_GET_AUTHORIZE_NOT_SUPPORTED",
|
|
"INSTANCE_VERSION_MISMATCH",
|
|
"INTERNAL_SERVER_ERROR",
|
|
"INVALID_ACLS_FORMAT",
|
|
"INVALID_API_ORIGIN",
|
|
"INVALID_AUTH_TOKEN",
|
|
"INVALID_BOT_FLAG",
|
|
"INVALID_CAPTCHA",
|
|
"INVALID_CHANNEL_TYPE_FOR_CALL",
|
|
"INVALID_CHANNEL_TYPE",
|
|
"INVALID_CLIENT",
|
|
"INVALID_CLIENT_SECRET",
|
|
"INVALID_DSA_REPORT_TARGET",
|
|
"INVALID_DSA_TICKET",
|
|
"INVALID_DSA_VERIFICATION_CODE",
|
|
"INVALID_DECRYPTED_JSON",
|
|
"INVALID_EPHEMERAL_KEY",
|
|
"INVALID_FLAGS_FORMAT",
|
|
"INVALID_IV",
|
|
"INVALID_FORM_BODY",
|
|
"INVALID_GRANT",
|
|
"INVALID_HANDOFF_CODE",
|
|
"INVALID_PACK_TYPE",
|
|
"INVALID_PERMISSIONS_INTEGER",
|
|
"INVALID_PERMISSIONS_NEGATIVE",
|
|
"INVALID_PHONE_NUMBER",
|
|
"INVALID_PHONE_VERIFICATION_CODE",
|
|
"INVALID_REDIRECT_URI",
|
|
"INVALID_REQUEST",
|
|
"INVALID_RESPONSE_TYPE_FOR_NON_BOT",
|
|
"INVALID_SCOPE",
|
|
"INVALID_STREAM_KEY_FORMAT",
|
|
"INVALID_STREAM_THUMBNAIL_PAYLOAD",
|
|
"INVALID_SUDO_TOKEN",
|
|
"INVALID_SUSPICIOUS_FLAGS_FORMAT",
|
|
"INVALID_SYSTEM_FLAG",
|
|
"INVALID_TIMESTAMP",
|
|
"INVALID_TOKEN",
|
|
"INVALID_WEBAUTHN_AUTHENTICATION_COUNTER",
|
|
"INVALID_WEBAUTHN_CREDENTIAL_COUNTER",
|
|
"INVALID_WEBAUTHN_CREDENTIAL",
|
|
"INVALID_WEBAUTHN_PUBLIC_KEY_FORMAT",
|
|
"INVITES_DISABLED",
|
|
"IP_AUTHORIZATION_REQUIRED",
|
|
"IP_AUTHORIZATION_RESEND_COOLDOWN",
|
|
"IP_AUTHORIZATION_RESEND_LIMIT_EXCEEDED",
|
|
"GLOBAL_IP_BANNED",
|
|
"GLOBAL_IP_TEMPORARILY_BANNED",
|
|
"IP_BANNED",
|
|
"RESIDENTIAL_PROXY_BLOCKED",
|
|
"TOR_BLOCKED",
|
|
"MAX_ANIMATED_EMOJIS",
|
|
"MAX_APPLICATIONS",
|
|
"MAX_BOOKMARKS",
|
|
"MAX_CATEGORY_CHANNELS",
|
|
"MAX_EMOJIS",
|
|
"MAX_FAVORITE_MEMES",
|
|
"MAX_FRIENDS",
|
|
"MAX_GROUP_DM_RECIPIENTS",
|
|
"MAX_GROUP_DMS",
|
|
"GROUP_DM_RECIPIENTS_NOT_ADDABLE",
|
|
"MAX_GUILD_CHANNELS",
|
|
"MAX_GUILD_MEMBERS",
|
|
"MAX_GUILD_ROLES",
|
|
"MAX_GUILDS",
|
|
"NEW_ACCOUNT_GUILD_JOIN_RATE_LIMITED",
|
|
"MAX_INVITES",
|
|
"MAX_PACK_EXPRESSIONS",
|
|
"MAX_PACKS",
|
|
"MAX_PINS_PER_CHANNEL",
|
|
"MESSAGE_TOTAL_ATTACHMENT_SIZE_TOO_LARGE",
|
|
"MAX_REACTIONS",
|
|
"MAX_STICKERS",
|
|
"MAX_WEBHOOKS_PER_CHANNEL",
|
|
"MAX_WEBHOOKS_PER_GUILD",
|
|
"MAX_WEBHOOKS",
|
|
"NCMEC_ALREADY_SUBMITTED",
|
|
"NCMEC_SUBMISSION_FAILED",
|
|
"MEDIA_METADATA_ERROR",
|
|
"METHOD_NOT_ALLOWED",
|
|
"MISSING_ACCESS",
|
|
"MISSING_ACL",
|
|
"MISSING_AUTHORIZATION",
|
|
"MISSING_CLIENT_SECRET",
|
|
"MISSING_EPHEMERAL_KEY",
|
|
"MISSING_IV",
|
|
"MISSING_OAUTH_FIELDS",
|
|
"MISSING_OAUTH_SCOPE",
|
|
"MISSING_PERMISSIONS",
|
|
"MISSING_REDIRECT_URI",
|
|
"NO_ACTIVE_CALL",
|
|
"NO_ACTIVE_SUBSCRIPTION",
|
|
"NOT_FOUND",
|
|
"NOT_IMPLEMENTED",
|
|
"NO_PASSKEYS_REGISTERED",
|
|
"NO_PENDING_DELETION",
|
|
"NO_USERS_WITH_FLUXERTAG_EXIST",
|
|
"NO_VISIONARY_SLOTS_AVAILABLE",
|
|
"NOT_A_BOT_APPLICATION",
|
|
"NOT_FRIENDS_WITH_USER",
|
|
"NOT_OWNER_OF_ADMIN_API_KEY",
|
|
"NSFW_CONTENT_AGE_RESTRICTED",
|
|
"NSFW_EMOJI_STICKER_BLOCKED",
|
|
"PACK_ACCESS_DENIED",
|
|
"PASSKEY_AUTHENTICATION_FAILED",
|
|
"PASSKEYS_DISABLED",
|
|
"PHONE_ADD_NOT_ELIGIBLE",
|
|
"PHONE_ALREADY_USED",
|
|
"PHONE_RATE_LIMIT_EXCEEDED",
|
|
"PHONE_VERIFICATION_REQUIRED",
|
|
"PREMIUM_PURCHASE_BLOCKED",
|
|
"PREVIEW_MUST_BE_JPEG",
|
|
"PROCESSING_FAILED",
|
|
"RATE_LIMITED",
|
|
"REDIRECT_URI_REQUIRED_FOR_NON_BOT",
|
|
"REPORT_ALREADY_RESOLVED",
|
|
"REPORT_BANNED",
|
|
"RESPONSE_VALIDATION_ERROR",
|
|
"RESOURCE_LOCKED",
|
|
"SERVICE_UNAVAILABLE",
|
|
"SESSION_TOKEN_MISMATCH",
|
|
"SINGLE_COMMUNITY_CANNOT_CREATE_GUILDS",
|
|
"SINGLE_COMMUNITY_CANNOT_DELETE",
|
|
"SINGLE_COMMUNITY_CANNOT_LEAVE",
|
|
"INSTANCE_POLICY_TRANSITION_NOT_ALLOWED",
|
|
"SLOWMODE_RATE_LIMITED",
|
|
"SMS_VERIFICATION_UNAVAILABLE",
|
|
"SSO_REQUIRED",
|
|
"STREAM_KEY_CHANNEL_MISMATCH",
|
|
"STREAM_KEY_SCOPE_MISMATCH",
|
|
"STREAM_THUMBNAIL_PAYLOAD_EMPTY",
|
|
"STRIPE_ERROR",
|
|
"STRIPE_GIFT_REDEMPTION_IN_PROGRESS",
|
|
"STRIPE_INVALID_PRODUCT",
|
|
"STRIPE_INVALID_PRODUCT_CONFIGURATION",
|
|
"STRIPE_NO_ACTIVE_SUBSCRIPTION",
|
|
"STRIPE_NO_PURCHASE_HISTORY",
|
|
"STRIPE_REFUND_OUTSIDE_WINDOW",
|
|
"STRIPE_REFUND_COOLDOWN_ACTIVE",
|
|
"STRIPE_NO_SUBSCRIPTION",
|
|
"STRIPE_PAYMENT_NOT_AVAILABLE",
|
|
"STRIPE_SUBSCRIPTION_ALREADY_CANCELING",
|
|
"STRIPE_SUBSCRIPTION_NOT_CANCELING",
|
|
"STRIPE_SUBSCRIPTION_PERIOD_END_MISSING",
|
|
"STRIPE_WEBHOOK_NOT_AVAILABLE",
|
|
"STRIPE_WEBHOOK_SIGNATURE_INVALID",
|
|
"STRIPE_WEBHOOK_SIGNATURE_MISSING",
|
|
"DIRECT_MESSAGES_DISABLED",
|
|
"DONATION_AMOUNT_INVALID",
|
|
"DONATION_MAGIC_LINK_EXPIRED",
|
|
"DONATION_MAGIC_LINK_INVALID",
|
|
"DONATION_MAGIC_LINK_USED",
|
|
"DONOR_NOT_FOUND",
|
|
"SUDO_MODE_REQUIRED",
|
|
"TAG_ALREADY_TAKEN",
|
|
"TEMPORARY_INVITE_REQUIRES_PRESENCE",
|
|
"TEST_HARNESS_DISABLED",
|
|
"TEST_HARNESS_FORBIDDEN",
|
|
"TWO_FA_NOT_ENABLED",
|
|
"TWO_FACTOR_REQUIRED",
|
|
"UNAUTHORIZED",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_ACCEPT_FRIEND_REQUESTS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_ADD_REACTIONS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_CREATE_APPLICATIONS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_CREATE_GUILDS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_JOIN_GROUP_DMS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_JOIN_ONE_ON_ONE_VOICE_CALLS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_JOIN_VOICE_CHANNELS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_MAKE_PURCHASES",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_SEND_DIRECT_MESSAGES",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_SEND_FRIEND_REQUESTS",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_SEND_MESSAGES",
|
|
"UNCLAIMED_ACCOUNT_CANNOT_SUBMIT_REPORTS",
|
|
"UNKNOWN_CHANNEL",
|
|
"UNKNOWN_EMOJI",
|
|
"UNKNOWN_FAVORITE_MEME",
|
|
"UNKNOWN_GIFT_CODE",
|
|
"UNKNOWN_GUILD",
|
|
"UNKNOWN_HARVEST",
|
|
"UNKNOWN_INVITE",
|
|
"UNKNOWN_MEMBER",
|
|
"UNKNOWN_MESSAGE",
|
|
"UNKNOWN_PACK",
|
|
"UNKNOWN_REPORT",
|
|
"UNKNOWN_ROLE",
|
|
"UNKNOWN_STICKER",
|
|
"UNKNOWN_SUSPICIOUS_FLAG",
|
|
"UNKNOWN_USER_FLAG",
|
|
"UNKNOWN_USER",
|
|
"UNKNOWN_VOICE_REGION",
|
|
"UNKNOWN_VOICE_SERVER",
|
|
"UNKNOWN_WEBAUTHN_CREDENTIAL",
|
|
"UNKNOWN_APPLICATION",
|
|
"UNKNOWN_WEBHOOK",
|
|
"UNFURL_STREAM_TOO_LARGE",
|
|
"UNSUPPORTED_RESPONSE_TYPE",
|
|
"USERNAME_NOT_AVAILABLE",
|
|
"UPDATE_FAILED",
|
|
"USER_BANNED_FROM_GUILD",
|
|
"USER_IP_BANNED_FROM_GUILD",
|
|
"USER_NOT_IN_VOICE",
|
|
"USER_OWNS_GUILDS",
|
|
"VALIDATION_ERROR",
|
|
"VOICE_CHANNEL_FULL",
|
|
"WEBAUTHN_CREDENTIAL_LIMIT_REACHED",
|
|
"AGE_VERIFICATION_ALREADY_VERIFIED",
|
|
"AGE_VERIFICATION_INVALID_CARD_TYPE"
|
|
],
|
|
"description": "Error codes returned by API operations"
|
|
},
|
|
"ValidationErrorItem": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {"type": "string", "description": "Field path that failed validation"},
|
|
"code": {"type": "string", "description": "Machine-readable validation error code"},
|
|
"message": {"type": "string", "description": "Human-readable validation error message"}
|
|
},
|
|
"required": ["path", "message"]
|
|
},
|
|
"CreateAdminApiKeyRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string", "minLength": 1, "maxLength": 100, "description": "Display name for the API key"},
|
|
"expires_in_days": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 365,
|
|
"format": "int32",
|
|
"description": "Number of days until the key expires"
|
|
},
|
|
"acls": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 115,
|
|
"description": "List of access control permissions for the key"
|
|
}
|
|
},
|
|
"required": ["name", "acls"]
|
|
},
|
|
"ListAdminApiKeyResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key_id": {"type": "string", "description": "Unique identifier for the API key"},
|
|
"name": {"type": "string", "description": "Display name for the API key"},
|
|
"created_at": {"type": "string", "description": "ISO 8601 timestamp when the key was created"},
|
|
"last_used_at": {
|
|
"description": "ISO 8601 timestamp when the key was last used, or null if never used",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"expires_at": {
|
|
"description": "ISO 8601 timestamp when the key expires, or null if no expiration",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"created_by_user_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "User ID of the admin who created this key"
|
|
},
|
|
"acls": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 115,
|
|
"description": "List of access control permissions for the key"
|
|
}
|
|
},
|
|
"required": ["key_id", "name", "created_at", "last_used_at", "expires_at", "created_by_user_id", "acls"]
|
|
},
|
|
"DeleteApiKeyResponse": {
|
|
"type": "object",
|
|
"properties": {"success": {"type": "boolean", "enum": [true]}},
|
|
"required": ["success"]
|
|
},
|
|
"ListGuildApplicationsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"applications": {"type": "array", "items": {"$ref": "#/components/schemas/ApplicationAdminResponse"}}
|
|
},
|
|
"required": ["applications"]
|
|
},
|
|
"ApplicationAdminResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier for this application"
|
|
},
|
|
"name": {"type": "string", "description": "The display name of the application"},
|
|
"owner_user_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The user ID that owns this application"
|
|
},
|
|
"owner_username": {
|
|
"description": "The username of the owner, if resolvable",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"owner_global_name": {
|
|
"description": "The display name of the owner, if set",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"owner_discriminator": {
|
|
"description": "The discriminator of the owner, if resolvable",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"bot_user_id": {
|
|
"description": "The user ID of the associated bot user, if any",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"bot_username": {"description": "The username of the bot user, if any", "nullable": true, "type": "string"},
|
|
"bot_global_name": {
|
|
"description": "The display name of the bot user, if set",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"bot_discriminator": {
|
|
"description": "The discriminator of the bot user, if any",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"bot_is_public": {"type": "boolean", "description": "Whether the bot is publicly joinable"},
|
|
"bot_require_code_grant": {
|
|
"type": "boolean",
|
|
"description": "Whether an OAuth2 code grant is required for this bot"
|
|
},
|
|
"oauth2_redirect_uris": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Registered OAuth2 redirect URIs"
|
|
},
|
|
"has_client_secret": {
|
|
"type": "boolean",
|
|
"description": "Whether a hashed client secret is stored for this application"
|
|
},
|
|
"has_bot_token": {
|
|
"type": "boolean",
|
|
"description": "Whether a hashed bot token is stored for this application"
|
|
},
|
|
"bot_token_preview": {
|
|
"description": "The preview (last few characters) of the bot token, if any",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"bot_token_created_at": {
|
|
"description": "ISO 8601 timestamp when the bot token was created",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"client_secret_created_at": {
|
|
"description": "ISO 8601 timestamp when the client secret was created",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"version": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "The optimistic locking version of the application record"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"owner_user_id",
|
|
"owner_username",
|
|
"owner_global_name",
|
|
"owner_discriminator",
|
|
"bot_user_id",
|
|
"bot_username",
|
|
"bot_global_name",
|
|
"bot_discriminator",
|
|
"bot_is_public",
|
|
"bot_require_code_grant",
|
|
"oauth2_redirect_uris",
|
|
"has_client_secret",
|
|
"has_bot_token",
|
|
"bot_token_preview",
|
|
"bot_token_created_at",
|
|
"client_secret_created_at",
|
|
"version"
|
|
]
|
|
},
|
|
"SnowflakeType": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "format": "snowflake"},
|
|
"ListGuildApplicationsRequest": {
|
|
"type": "object",
|
|
"properties": {"guild_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["guild_id"]
|
|
},
|
|
"ListUserApplicationsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"applications": {"type": "array", "items": {"$ref": "#/components/schemas/ApplicationAdminResponse"}}
|
|
},
|
|
"required": ["applications"]
|
|
},
|
|
"ListUserApplicationsRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"LookupApplicationResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"application": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/ApplicationAdminResponse"}]}
|
|
},
|
|
"required": ["application"]
|
|
},
|
|
"LookupApplicationRequest": {
|
|
"type": "object",
|
|
"properties": {"application_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["application_id"]
|
|
},
|
|
"ApplicationUpdateResponse": {
|
|
"type": "object",
|
|
"properties": {"application": {"$ref": "#/components/schemas/ApplicationAdminResponse"}},
|
|
"required": ["application"]
|
|
},
|
|
"TransferApplicationOwnershipRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"application_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"new_owner_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["application_id", "new_owner_id"]
|
|
},
|
|
"AdminArchiveResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"archive_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"subject_type": {
|
|
"type": "string",
|
|
"enum": ["user", "guild"],
|
|
"description": "Type of subject being archived"
|
|
},
|
|
"subject_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"requested_by": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"requested_at": {"type": "string"},
|
|
"started_at": {"nullable": true, "type": "string"},
|
|
"completed_at": {"nullable": true, "type": "string"},
|
|
"failed_at": {"nullable": true, "type": "string"},
|
|
"file_size": {"nullable": true, "type": "string"},
|
|
"progress_percent": {"type": "number"},
|
|
"progress_step": {"nullable": true, "type": "string"},
|
|
"error_message": {"nullable": true, "type": "string"},
|
|
"download_url_expires_at": {"nullable": true, "type": "string"},
|
|
"expires_at": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"archive_id",
|
|
"subject_type",
|
|
"subject_id",
|
|
"requested_by",
|
|
"requested_at",
|
|
"started_at",
|
|
"completed_at",
|
|
"failed_at",
|
|
"file_size",
|
|
"progress_percent",
|
|
"progress_step",
|
|
"error_message",
|
|
"download_url_expires_at",
|
|
"expires_at"
|
|
]
|
|
},
|
|
"TriggerGuildArchiveRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"include_attachments": {
|
|
"type": "boolean",
|
|
"description": "Whether to include attachment binaries in the archive"
|
|
}
|
|
},
|
|
"required": ["guild_id"]
|
|
},
|
|
"ListArchivesResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"archives": {"type": "array", "items": {"$ref": "#/components/schemas/AdminArchiveResponseSchema"}}
|
|
},
|
|
"required": ["archives"]
|
|
},
|
|
"ListArchivesRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"subject_type": {
|
|
"type": "string",
|
|
"enum": ["user", "guild", "all"],
|
|
"description": "Type of archives to list"
|
|
},
|
|
"subject_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"requested_by": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"description": "Maximum number of archives to return"
|
|
},
|
|
"include_expired": {"type": "boolean", "description": "Whether to include expired archives"}
|
|
}
|
|
},
|
|
"TriggerUserArchiveRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"include_attachments": {
|
|
"type": "boolean",
|
|
"description": "Whether to include attachment binaries in the archive"
|
|
}
|
|
},
|
|
"required": ["user_id"]
|
|
},
|
|
"GetArchiveResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"archive": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/AdminArchiveResponseSchema"}]}
|
|
},
|
|
"required": ["archive"]
|
|
},
|
|
"DownloadUrlResponseSchema": {
|
|
"type": "object",
|
|
"properties": {"downloadUrl": {"type": "string"}, "expiresAt": {"type": "string"}},
|
|
"required": ["downloadUrl", "expiresAt"]
|
|
},
|
|
"PurgeGuildAssetsResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"processed": {"type": "array", "items": {"$ref": "#/components/schemas/PurgeGuildAssetResultSchema"}},
|
|
"errors": {"type": "array", "items": {"$ref": "#/components/schemas/PurgeGuildAssetErrorSchema"}}
|
|
},
|
|
"required": ["processed", "errors"]
|
|
},
|
|
"PurgeGuildAssetResultSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Unique identifier of the asset"},
|
|
"asset_type": {
|
|
"type": "string",
|
|
"enum": ["emoji", "sticker", "unknown"],
|
|
"description": "Type of guild asset"
|
|
},
|
|
"found_in_db": {"type": "boolean", "description": "Whether the asset was found in the database"},
|
|
"guild_id": {
|
|
"description": "ID of the guild the asset belongs to",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"guild_nsfw_level": {
|
|
"description": "NSFW level of the guild the asset belongs to",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]
|
|
}
|
|
},
|
|
"required": ["id", "asset_type", "found_in_db", "guild_id", "guild_nsfw_level"]
|
|
},
|
|
"NSFWLevel": {"type": "integer", "format": "int32", "enum": [0, 3], "description": "The NSFW level of the guild"},
|
|
"PurgeGuildAssetErrorSchema": {
|
|
"type": "object",
|
|
"properties": {"id": {"$ref": "#/components/schemas/SnowflakeType"}, "error": {"type": "string"}},
|
|
"required": ["id", "error"]
|
|
},
|
|
"PurgeGuildAssetsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ids": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "List of asset IDs to purge"
|
|
}
|
|
},
|
|
"required": ["ids"]
|
|
},
|
|
"AuditLogsListResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"logs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"log_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"admin_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"admin_user": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name"]
|
|
},
|
|
"target_type": {"type": "string"},
|
|
"target_id": {
|
|
"type": "string",
|
|
"description": "The ID of the affected entity (user, channel, role, invite code, etc.)"
|
|
},
|
|
"target_user": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name"]
|
|
},
|
|
"target_guild": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {"id": {"$ref": "#/components/schemas/SnowflakeType"}, "name": {"type": "string"}},
|
|
"required": ["id", "name"]
|
|
},
|
|
"target_channel": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"nullable": true, "type": "string"},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 998, 999],
|
|
"description": "The type of the channel"
|
|
},
|
|
"guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": ["id", "name", "type", "guild_id"]
|
|
},
|
|
"related_users": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name"]
|
|
},
|
|
"patternProperties": {
|
|
"^(0|[1-9][0-9]*)$": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name"]
|
|
}
|
|
}
|
|
},
|
|
"related_guilds": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {"id": {"$ref": "#/components/schemas/SnowflakeType"}, "name": {"type": "string"}},
|
|
"required": ["id", "name"]
|
|
},
|
|
"patternProperties": {
|
|
"^(0|[1-9][0-9]*)$": {
|
|
"type": "object",
|
|
"properties": {"id": {"$ref": "#/components/schemas/SnowflakeType"}, "name": {"type": "string"}},
|
|
"required": ["id", "name"]
|
|
}
|
|
}
|
|
},
|
|
"related_channels": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"nullable": true, "type": "string"},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 998, 999],
|
|
"description": "The type of the channel"
|
|
},
|
|
"guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": ["id", "name", "type", "guild_id"]
|
|
},
|
|
"patternProperties": {
|
|
"^(0|[1-9][0-9]*)$": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"nullable": true, "type": "string"},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 998, 999],
|
|
"description": "The type of the channel"
|
|
},
|
|
"guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": ["id", "name", "type", "guild_id"]
|
|
}
|
|
}
|
|
},
|
|
"action": {"type": "string"},
|
|
"audit_log_reason": {"nullable": true, "type": "string"},
|
|
"metadata": {"type": "object", "additionalProperties": {"type": "string"}},
|
|
"created_at": {"type": "string"}
|
|
},
|
|
"required": [
|
|
"log_id",
|
|
"admin_user_id",
|
|
"admin_user",
|
|
"target_type",
|
|
"target_id",
|
|
"target_user",
|
|
"target_guild",
|
|
"target_channel",
|
|
"related_users",
|
|
"related_guilds",
|
|
"related_channels",
|
|
"action",
|
|
"audit_log_reason",
|
|
"metadata",
|
|
"created_at"
|
|
]
|
|
}
|
|
},
|
|
"total": {"type": "number"}
|
|
},
|
|
"required": ["logs", "total"]
|
|
},
|
|
"ListAuditLogsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"admin_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"target_type": {"type": "string", "description": "Filter by target entity type"},
|
|
"target_id": {
|
|
"type": "string",
|
|
"description": "Filter by target entity ID (user, channel, role, invite code, etc.)"
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"format": "int32",
|
|
"description": "Maximum number of entries to return"
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"description": "Number of entries to skip"
|
|
}
|
|
}
|
|
},
|
|
"SearchAuditLogsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {"type": "string", "description": "Search query string"},
|
|
"admin_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"target_type": {"type": "string", "description": "Filter by target entity type"},
|
|
"target_id": {
|
|
"type": "string",
|
|
"description": "Filter by target entity ID (user, channel, role, invite code, etc.)"
|
|
},
|
|
"sort_by": {
|
|
"type": "string",
|
|
"enum": ["createdAt", "relevance"],
|
|
"description": "Field to sort audit logs by"
|
|
},
|
|
"sort_order": {"type": "string", "enum": ["asc", "desc"], "description": "Sort order direction"},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"format": "int32",
|
|
"description": "Maximum number of entries to return"
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"description": "Number of entries to skip"
|
|
}
|
|
}
|
|
},
|
|
"BanAvatarHashRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hashes": {"type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 1000},
|
|
"category": {"type": "string"},
|
|
"severity": {"type": "integer", "minimum": 0, "maximum": 3, "format": "int32"},
|
|
"source_url": {"type": "string"},
|
|
"reason": {"type": "string"},
|
|
"notes": {"type": "string"}
|
|
},
|
|
"required": ["hashes"]
|
|
},
|
|
"BanCheckResponseSchema": {
|
|
"type": "object",
|
|
"properties": {"banned": {"type": "boolean"}},
|
|
"required": ["banned"]
|
|
},
|
|
"CheckAvatarHashRequest": {
|
|
"type": "object",
|
|
"properties": {"hashes": {"type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 1000}},
|
|
"required": ["hashes"]
|
|
},
|
|
"BanEmailRequest": {
|
|
"type": "object",
|
|
"properties": {"email": {"$ref": "#/components/schemas/EmailType"}},
|
|
"required": ["email"]
|
|
},
|
|
"EmailType": {"type": "string", "format": "email"},
|
|
"BanFileShaRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sha256_hex": {"type": "string", "description": "SHA-256 in hex"},
|
|
"category": {"type": "string"},
|
|
"severity": {"type": "integer", "minimum": 0, "maximum": 3, "format": "int32"},
|
|
"content_type": {"type": "string", "description": "Optional MIME type hint for observability"},
|
|
"source_url": {"type": "string"},
|
|
"notes": {"type": "string"}
|
|
},
|
|
"required": ["sha256_hex"]
|
|
},
|
|
"BulkJobResponse": {
|
|
"type": "object",
|
|
"properties": {"job_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["job_id"]
|
|
},
|
|
"BulkBanFileShasRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sha256_list": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"minItems": 1,
|
|
"maxItems": 10000,
|
|
"description": "Array of SHA-256 hex strings to ban"
|
|
}
|
|
},
|
|
"required": ["sha256_list"]
|
|
},
|
|
"CheckFileShaRequest": {
|
|
"type": "object",
|
|
"properties": {"sha256_hex": {"type": "string"}},
|
|
"required": ["sha256_hex"]
|
|
},
|
|
"UnbanFileShaRequest": {
|
|
"type": "object",
|
|
"properties": {"sha256_hex": {"type": "string"}},
|
|
"required": ["sha256_hex"]
|
|
},
|
|
"BanIpRequest": {
|
|
"type": "object",
|
|
"properties": {"ip": {"type": "string", "description": "IPv4/IPv6 address or CIDR range to ban"}},
|
|
"required": ["ip"]
|
|
},
|
|
"BanPhraseRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"phrase": {
|
|
"type": "string",
|
|
"description": "Phrase to ban. Matching is case-insensitive and also normalizes common bypass tricks such as inserted whitespace, punctuation, invisible characters, and compatibility glyphs."
|
|
}
|
|
},
|
|
"required": ["phrase"]
|
|
},
|
|
"BanProfileSubstringRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scope": {"enum": ["username", "global_name", "nickname", "bio", "pronouns"], "type": "string"},
|
|
"substrings": {"type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 1000},
|
|
"reason": {"type": "string"},
|
|
"notes": {"type": "string"}
|
|
},
|
|
"required": ["scope", "substrings"]
|
|
},
|
|
"BanUrlDomainRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {"type": "string", "description": "Domain to ban (e.g. example.com)"},
|
|
"match_subdomains": {
|
|
"type": "boolean",
|
|
"description": "If true, any subdomain rooted at this domain is also banned"
|
|
},
|
|
"category": {"type": "string", "description": "Category / source slug (defaults to \"manual\")"},
|
|
"severity": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 3,
|
|
"format": "int32",
|
|
"description": "Severity: 0 allow, 1 warn, 2 block, 3 block+report (default 2)"
|
|
},
|
|
"source_url": {"type": "string", "description": "Upstream source URL if imported from a feed"},
|
|
"notes": {"type": "string", "description": "Internal notes for audit trail"}
|
|
},
|
|
"required": ["domain"]
|
|
},
|
|
"UnbanUrlDomainRequest": {
|
|
"type": "object",
|
|
"properties": {"domain": {"type": "string", "description": "Domain to unban"}},
|
|
"required": ["domain"]
|
|
},
|
|
"BanUrlRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {"type": "string", "description": "Absolute URL to ban. Canonicalized before storage."},
|
|
"category": {"type": "string", "description": "Category / source slug (defaults to \"manual\")"},
|
|
"severity": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 3,
|
|
"format": "int32",
|
|
"description": "Severity: 0 allow, 1 warn, 2 block, 3 block+report (default 2)"
|
|
},
|
|
"source_url": {"type": "string", "description": "Upstream source URL if imported from a feed"},
|
|
"notes": {"type": "string", "description": "Internal notes for audit trail"}
|
|
},
|
|
"required": ["url"]
|
|
},
|
|
"CheckUrlBlocklistRequest": {
|
|
"type": "object",
|
|
"properties": {"url": {"type": "string", "description": "URL to check against the blocklist"}},
|
|
"required": ["url"]
|
|
},
|
|
"UnbanUrlRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {"type": "string", "description": "URL to unban (must match the canonicalized form in storage)"}
|
|
},
|
|
"required": ["url"]
|
|
},
|
|
"AdminBillingOverviewResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"subscription": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/AdminSubscriptionResponse"}]},
|
|
"payments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"checkout_session_id": {"nullable": true, "type": "string"},
|
|
"user_id": {"type": "string"},
|
|
"stripe_customer_id": {"nullable": true, "type": "string"},
|
|
"payment_intent_id": {"nullable": true, "type": "string"},
|
|
"resolved_payment_intent_id": {"nullable": true, "type": "string"},
|
|
"charge_id": {"nullable": true, "type": "string"},
|
|
"subscription_id": {"nullable": true, "type": "string"},
|
|
"invoice_id": {"nullable": true, "type": "string"},
|
|
"price_id": {"nullable": true, "type": "string"},
|
|
"product_type": {"nullable": true, "type": "string"},
|
|
"amount_cents": {"type": "number"},
|
|
"currency": {"type": "string"},
|
|
"status": {"type": "string"},
|
|
"stripe_source": {"enum": ["invoice"], "type": "string"},
|
|
"refundable_via_payment_intent": {"type": "boolean"},
|
|
"refunded_amount_cents": {"type": "number"},
|
|
"net_amount_cents": {"type": "number"},
|
|
"refunds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"amount_cents": {"type": "number"},
|
|
"currency": {"type": "string"},
|
|
"status": {"nullable": true, "type": "string"},
|
|
"reason": {"nullable": true, "type": "string"},
|
|
"created": {"type": "number"},
|
|
"payment_intent_id": {"nullable": true, "type": "string"},
|
|
"charge_id": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"amount_cents",
|
|
"currency",
|
|
"status",
|
|
"reason",
|
|
"created",
|
|
"payment_intent_id",
|
|
"charge_id"
|
|
]
|
|
}
|
|
},
|
|
"payment_method_type": {"nullable": true, "type": "string"},
|
|
"payment_method_brand": {"nullable": true, "type": "string"},
|
|
"payment_method_last4": {"nullable": true, "type": "string"},
|
|
"stripe_payment_method_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_billing_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_customer_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_terms_of_service_accepted": {"nullable": true, "type": "boolean"},
|
|
"is_gift": {"type": "boolean"},
|
|
"gift_code": {"nullable": true, "type": "string"},
|
|
"purchase_geoip_country_code": {"nullable": true, "type": "string"},
|
|
"purchase_client_country_code": {"nullable": true, "type": "string"},
|
|
"eu_withdrawal_waiver_required": {"type": "boolean"},
|
|
"eu_withdrawal_waiver_accepted": {"type": "boolean"},
|
|
"eu_withdrawal_waiver_accepted_at": {"nullable": true, "type": "string"},
|
|
"eu_withdrawal_waiver_text_version": {"nullable": true, "type": "string"},
|
|
"created_at": {"type": "string"},
|
|
"completed_at": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"checkout_session_id",
|
|
"user_id",
|
|
"stripe_customer_id",
|
|
"payment_intent_id",
|
|
"resolved_payment_intent_id",
|
|
"charge_id",
|
|
"subscription_id",
|
|
"invoice_id",
|
|
"price_id",
|
|
"product_type",
|
|
"amount_cents",
|
|
"currency",
|
|
"status",
|
|
"stripe_source",
|
|
"refundable_via_payment_intent",
|
|
"refunded_amount_cents",
|
|
"net_amount_cents",
|
|
"refunds",
|
|
"payment_method_type",
|
|
"payment_method_brand",
|
|
"payment_method_last4",
|
|
"stripe_payment_method_country_code",
|
|
"stripe_billing_country_code",
|
|
"stripe_customer_country_code",
|
|
"stripe_terms_of_service_accepted",
|
|
"is_gift",
|
|
"gift_code",
|
|
"purchase_geoip_country_code",
|
|
"purchase_client_country_code",
|
|
"eu_withdrawal_waiver_required",
|
|
"eu_withdrawal_waiver_accepted",
|
|
"eu_withdrawal_waiver_accepted_at",
|
|
"eu_withdrawal_waiver_text_version",
|
|
"created_at",
|
|
"completed_at"
|
|
]
|
|
}
|
|
},
|
|
"payment_methods": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"type": {"type": "string"},
|
|
"card_brand": {"nullable": true, "type": "string"},
|
|
"card_last4": {"nullable": true, "type": "string"},
|
|
"card_exp_month": {"nullable": true, "type": "number"},
|
|
"card_exp_year": {"nullable": true, "type": "number"},
|
|
"created": {"type": "number"}
|
|
},
|
|
"required": ["id", "type", "card_brand", "card_last4", "card_exp_month", "card_exp_year", "created"]
|
|
}
|
|
},
|
|
"stripe_customer_id": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["subscription", "payments", "payment_methods", "stripe_customer_id"]
|
|
},
|
|
"AdminSubscriptionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"status": {"type": "string"},
|
|
"current_period_start": {"nullable": true, "type": "string"},
|
|
"current_period_end": {"nullable": true, "type": "string"},
|
|
"cancel_at_period_end": {"type": "boolean"},
|
|
"cancel_at": {"nullable": true, "type": "string"},
|
|
"canceled_at": {"nullable": true, "type": "string"},
|
|
"plan_interval": {"nullable": true, "type": "string"},
|
|
"plan_amount_cents": {"nullable": true, "type": "number"},
|
|
"plan_currency": {"nullable": true, "type": "string"},
|
|
"default_payment_method_id": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"status",
|
|
"current_period_start",
|
|
"current_period_end",
|
|
"cancel_at_period_end",
|
|
"cancel_at",
|
|
"canceled_at",
|
|
"plan_interval",
|
|
"plan_amount_cents",
|
|
"plan_currency",
|
|
"default_payment_method_id"
|
|
]
|
|
},
|
|
"AdminBillingCancelImmediatelyRequest": {
|
|
"type": "object",
|
|
"properties": {"reason": {"type": "string", "minLength": 1, "maxLength": 512}}
|
|
},
|
|
"AdminInvoiceListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"invoices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"amount_due": {"type": "number"},
|
|
"amount_paid": {"type": "number"},
|
|
"currency": {"type": "string"},
|
|
"status": {"nullable": true, "type": "string"},
|
|
"created": {"type": "number"},
|
|
"billing_reason": {"nullable": true, "type": "string"},
|
|
"subscription_id": {"nullable": true, "type": "string"},
|
|
"payment_type": {"nullable": true, "type": "string"},
|
|
"payment_status": {"nullable": true, "type": "string"},
|
|
"payment_intent_id": {"nullable": true, "type": "string"},
|
|
"charge_id": {"nullable": true, "type": "string"},
|
|
"paid_at": {"nullable": true, "type": "string"},
|
|
"hosted_invoice_url": {"nullable": true, "type": "string"},
|
|
"invoice_pdf": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"amount_due",
|
|
"amount_paid",
|
|
"currency",
|
|
"status",
|
|
"created",
|
|
"billing_reason",
|
|
"subscription_id",
|
|
"payment_type",
|
|
"payment_status",
|
|
"payment_intent_id",
|
|
"charge_id",
|
|
"paid_at",
|
|
"hosted_invoice_url",
|
|
"invoice_pdf"
|
|
]
|
|
}
|
|
},
|
|
"has_more": {"type": "boolean"}
|
|
},
|
|
"required": ["invoices", "has_more"]
|
|
},
|
|
"AdminPaymentMethodListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"payment_methods": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"type": {"type": "string"},
|
|
"card_brand": {"nullable": true, "type": "string"},
|
|
"card_last4": {"nullable": true, "type": "string"},
|
|
"card_exp_month": {"nullable": true, "type": "number"},
|
|
"card_exp_year": {"nullable": true, "type": "number"},
|
|
"created": {"type": "number"}
|
|
},
|
|
"required": ["id", "type", "card_brand", "card_last4", "card_exp_month", "card_exp_year", "created"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["payment_methods"]
|
|
},
|
|
"AdminPaymentListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"payments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"checkout_session_id": {"nullable": true, "type": "string"},
|
|
"user_id": {"type": "string"},
|
|
"stripe_customer_id": {"nullable": true, "type": "string"},
|
|
"payment_intent_id": {"nullable": true, "type": "string"},
|
|
"resolved_payment_intent_id": {"nullable": true, "type": "string"},
|
|
"charge_id": {"nullable": true, "type": "string"},
|
|
"subscription_id": {"nullable": true, "type": "string"},
|
|
"invoice_id": {"nullable": true, "type": "string"},
|
|
"price_id": {"nullable": true, "type": "string"},
|
|
"product_type": {"nullable": true, "type": "string"},
|
|
"amount_cents": {"type": "number"},
|
|
"currency": {"type": "string"},
|
|
"status": {"type": "string"},
|
|
"stripe_source": {"enum": ["invoice"], "type": "string"},
|
|
"refundable_via_payment_intent": {"type": "boolean"},
|
|
"refunded_amount_cents": {"type": "number"},
|
|
"net_amount_cents": {"type": "number"},
|
|
"refunds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"amount_cents": {"type": "number"},
|
|
"currency": {"type": "string"},
|
|
"status": {"nullable": true, "type": "string"},
|
|
"reason": {"nullable": true, "type": "string"},
|
|
"created": {"type": "number"},
|
|
"payment_intent_id": {"nullable": true, "type": "string"},
|
|
"charge_id": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"amount_cents",
|
|
"currency",
|
|
"status",
|
|
"reason",
|
|
"created",
|
|
"payment_intent_id",
|
|
"charge_id"
|
|
]
|
|
}
|
|
},
|
|
"payment_method_type": {"nullable": true, "type": "string"},
|
|
"payment_method_brand": {"nullable": true, "type": "string"},
|
|
"payment_method_last4": {"nullable": true, "type": "string"},
|
|
"stripe_payment_method_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_billing_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_customer_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_terms_of_service_accepted": {"nullable": true, "type": "boolean"},
|
|
"is_gift": {"type": "boolean"},
|
|
"gift_code": {"nullable": true, "type": "string"},
|
|
"purchase_geoip_country_code": {"nullable": true, "type": "string"},
|
|
"purchase_client_country_code": {"nullable": true, "type": "string"},
|
|
"eu_withdrawal_waiver_required": {"type": "boolean"},
|
|
"eu_withdrawal_waiver_accepted": {"type": "boolean"},
|
|
"eu_withdrawal_waiver_accepted_at": {"nullable": true, "type": "string"},
|
|
"eu_withdrawal_waiver_text_version": {"nullable": true, "type": "string"},
|
|
"created_at": {"type": "string"},
|
|
"completed_at": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"checkout_session_id",
|
|
"user_id",
|
|
"stripe_customer_id",
|
|
"payment_intent_id",
|
|
"resolved_payment_intent_id",
|
|
"charge_id",
|
|
"subscription_id",
|
|
"invoice_id",
|
|
"price_id",
|
|
"product_type",
|
|
"amount_cents",
|
|
"currency",
|
|
"status",
|
|
"stripe_source",
|
|
"refundable_via_payment_intent",
|
|
"refunded_amount_cents",
|
|
"net_amount_cents",
|
|
"refunds",
|
|
"payment_method_type",
|
|
"payment_method_brand",
|
|
"payment_method_last4",
|
|
"stripe_payment_method_country_code",
|
|
"stripe_billing_country_code",
|
|
"stripe_customer_country_code",
|
|
"stripe_terms_of_service_accepted",
|
|
"is_gift",
|
|
"gift_code",
|
|
"purchase_geoip_country_code",
|
|
"purchase_client_country_code",
|
|
"eu_withdrawal_waiver_required",
|
|
"eu_withdrawal_waiver_accepted",
|
|
"eu_withdrawal_waiver_accepted_at",
|
|
"eu_withdrawal_waiver_text_version",
|
|
"created_at",
|
|
"completed_at"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": ["payments"]
|
|
},
|
|
"AdminBillingRefundRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"payment_intent_id": {"type": "string"},
|
|
"amount_cents": {
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"reason": {"type": "string", "minLength": 1, "maxLength": 512}
|
|
},
|
|
"required": ["payment_intent_id"]
|
|
},
|
|
"AdminBillingRefundLatestInvoiceCancelResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"subscription_id": {"type": "string"},
|
|
"invoice_id": {"type": "string"},
|
|
"payment_intent_id": {"nullable": true, "type": "string"},
|
|
"charge_id": {"nullable": true, "type": "string"},
|
|
"refund_policy": {"enum": ["full_refund", "prorated_refund", "cancel_only"], "type": "string"},
|
|
"refund_policy_basis": {"enum": ["support_policy", "eu_eea_withdrawal_no_waiver"], "type": "string"},
|
|
"refund_id": {"nullable": true, "type": "string"},
|
|
"refunded_amount_cents": {"type": "number"},
|
|
"invoice_amount_paid_cents": {"type": "number"},
|
|
"currency": {"type": "string"},
|
|
"cycle_elapsed_days": {"type": "number"},
|
|
"purchase_geoip_country_code": {"nullable": true, "type": "string"},
|
|
"purchase_client_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_payment_method_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_billing_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_customer_country_code": {"nullable": true, "type": "string"},
|
|
"stripe_terms_of_service_accepted": {"nullable": true, "type": "boolean"},
|
|
"eu_withdrawal_waiver_required": {"type": "boolean"},
|
|
"eu_withdrawal_waiver_accepted": {"type": "boolean"},
|
|
"eu_withdrawal_waiver_accepted_at": {"nullable": true, "type": "string"},
|
|
"eu_withdrawal_waiver_text_version": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"subscription_id",
|
|
"invoice_id",
|
|
"payment_intent_id",
|
|
"charge_id",
|
|
"refund_policy",
|
|
"refund_policy_basis",
|
|
"refund_id",
|
|
"refunded_amount_cents",
|
|
"invoice_amount_paid_cents",
|
|
"currency",
|
|
"cycle_elapsed_days",
|
|
"purchase_geoip_country_code",
|
|
"purchase_client_country_code",
|
|
"stripe_payment_method_country_code",
|
|
"stripe_billing_country_code",
|
|
"stripe_customer_country_code",
|
|
"stripe_terms_of_service_accepted",
|
|
"eu_withdrawal_waiver_required",
|
|
"eu_withdrawal_waiver_accepted",
|
|
"eu_withdrawal_waiver_accepted_at",
|
|
"eu_withdrawal_waiver_text_version"
|
|
]
|
|
},
|
|
"AdminBillingRefundLatestInvoiceCancelRequest": {
|
|
"type": "object",
|
|
"properties": {"reason": {"type": "string", "minLength": 1, "maxLength": 512}}
|
|
},
|
|
"BulkAddGuildMembersRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "List of user IDs to add as members"
|
|
}
|
|
},
|
|
"required": ["guild_id", "user_ids"]
|
|
},
|
|
"BulkScheduleUserDeletionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "List of user IDs to schedule deletion for"
|
|
},
|
|
"reason_code": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "Code indicating the reason for deletion"
|
|
},
|
|
"public_reason": {"type": "string", "description": "Public-facing reason for the deletion"},
|
|
"days_until_deletion": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 365,
|
|
"format": "int32",
|
|
"description": "Number of days until the accounts are deleted"
|
|
}
|
|
},
|
|
"required": ["user_ids", "reason_code"]
|
|
},
|
|
"BulkUpdateGuildFeaturesRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "List of guild IDs to update"
|
|
},
|
|
"add_features": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/GuildFeatureSchema"},
|
|
"maxItems": 100,
|
|
"description": "Guild features to add to all specified guilds"
|
|
},
|
|
"remove_features": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/GuildFeatureSchema"},
|
|
"maxItems": 100,
|
|
"description": "Guild features to remove from all specified guilds"
|
|
}
|
|
},
|
|
"required": ["guild_ids"]
|
|
},
|
|
"GuildFeatureSchema": {
|
|
"type": "string",
|
|
"description": "A guild feature flag Known values: ANIMATED_ICON, ANIMATED_BANNER, BANNER, CLONE_EMOJI_DISABLED, CLONE_STICKER_DISABLED, DETACHED_BANNER, INVITE_SPLASH, INVITES_DISABLED, RAID_DETECTED, TEXT_CHANNEL_FLEXIBLE_NAMES, HIDE_OWNER_CROWN, MORE_EMOJI, MORE_STICKERS, UNLIMITED_EMOJI, UNLIMITED_STICKERS, EXPRESSION_PURGE_ALLOWED, VANITY_URL, DISCOVERABLE, PARTNERED, VERIFIED, VIP_VOICE, VOICE_E2EE, UNAVAILABLE_FOR_EVERYONE, UNAVAILABLE_FOR_EVERYONE_BUT_STAFF, UNAVAILABLE_HIDDEN, VISIONARY, LARGE_GUILD_OVERRIDE, VERY_LARGE_GUILD (other values allowed)"
|
|
},
|
|
"BulkUpdateSuspiciousActivityFlagsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "List of user IDs to update"
|
|
},
|
|
"add_flags": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 32,
|
|
"description": "Suspicious activity flag names to add to all specified users"
|
|
},
|
|
"remove_flags": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 32,
|
|
"description": "Suspicious activity flag names to remove from all specified users"
|
|
}
|
|
},
|
|
"required": ["user_ids"]
|
|
},
|
|
"BulkUpdateUserFlagsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "List of user IDs to update"
|
|
},
|
|
"add_flags": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserFlags"},
|
|
"maxItems": 64,
|
|
"description": "User flags to add to all specified users"
|
|
},
|
|
"remove_flags": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserFlags"},
|
|
"maxItems": 64,
|
|
"description": "User flags to remove from all specified users"
|
|
}
|
|
},
|
|
"required": ["user_ids"]
|
|
},
|
|
"UserFlags": {
|
|
"type": "string",
|
|
"format": "int64",
|
|
"pattern": "^[0-9]+$",
|
|
"description": "A single user flag value to add or remove"
|
|
},
|
|
"CodesResponse": {
|
|
"type": "object",
|
|
"properties": {"codes": {"type": "array", "items": {"type": "string"}}},
|
|
"required": ["codes"]
|
|
},
|
|
"GenerateGiftCodesRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"count": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 100,
|
|
"format": "int32",
|
|
"description": "Number of gift codes to generate"
|
|
},
|
|
"duration_type": {
|
|
"type": "string",
|
|
"enum": ["days", "weeks", "months", "years"],
|
|
"description": "Duration unit for the generated gift codes"
|
|
},
|
|
"duration_quantity": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 3650,
|
|
"format": "int32",
|
|
"description": "Duration quantity for the selected unit. Lifetime gifts are not supported."
|
|
}
|
|
},
|
|
"required": ["count", "duration_type", "duration_quantity"]
|
|
},
|
|
"DiscoveryAdminPendingApplicationResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild ID"},
|
|
"guild_name": {"type": "string", "description": "Guild name"},
|
|
"guild_icon": {"description": "Guild icon hash", "nullable": true, "type": "string"},
|
|
"guild_owner_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild owner user ID"},
|
|
"guild_owner_username": {"description": "Guild owner username", "nullable": true, "type": "string"},
|
|
"guild_owner_global_name": {"description": "Guild owner display name", "nullable": true, "type": "string"},
|
|
"guild_owner_discriminator": {"description": "Guild owner discriminator", "nullable": true, "type": "string"},
|
|
"guild_member_count": {"type": "number", "description": "Approximate member count"},
|
|
"guild_nsfw_level": {
|
|
"description": "NSFW level of the guild",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]
|
|
},
|
|
"guild_features": {"type": "array", "items": {"type": "string"}, "description": "Guild feature flags"},
|
|
"description": {"type": "string", "description": "Discovery description"},
|
|
"category_type": {"type": "number", "description": "Discovery category type"},
|
|
"primary_language": {"description": "Primary community language", "nullable": true, "type": "string"},
|
|
"custom_tags": {"type": "array", "items": {"type": "string"}, "description": "Custom discovery tags"},
|
|
"applied_at": {"type": "string", "description": "Application timestamp"}
|
|
},
|
|
"required": [
|
|
"guild_id",
|
|
"guild_name",
|
|
"guild_icon",
|
|
"guild_owner_id",
|
|
"guild_owner_username",
|
|
"guild_owner_global_name",
|
|
"guild_owner_discriminator",
|
|
"guild_member_count",
|
|
"guild_nsfw_level",
|
|
"guild_features",
|
|
"description",
|
|
"category_type",
|
|
"primary_language",
|
|
"custom_tags",
|
|
"applied_at"
|
|
]
|
|
},
|
|
"DiscoveryApplicationResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild ID"},
|
|
"guild_nsfw_level": {
|
|
"description": "NSFW level of the guild",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]
|
|
},
|
|
"status": {"type": "string", "description": "Application status"},
|
|
"description": {"type": "string", "description": "Discovery description"},
|
|
"category_type": {"type": "number", "description": "Discovery category type"},
|
|
"primary_language": {"description": "Primary community language", "nullable": true, "type": "string"},
|
|
"custom_tags": {"type": "array", "items": {"type": "string"}, "description": "Custom discovery tags"},
|
|
"applied_at": {"type": "string", "description": "Application timestamp"},
|
|
"reviewed_at": {"description": "Review timestamp", "nullable": true, "type": "string"},
|
|
"review_reason": {"description": "Review reason (approval/rejection)", "nullable": true, "type": "string"},
|
|
"removed_at": {"description": "Removal timestamp", "nullable": true, "type": "string"},
|
|
"removal_reason": {"description": "Removal reason", "nullable": true, "type": "string"}
|
|
},
|
|
"required": ["guild_id", "status", "description", "category_type", "custom_tags", "applied_at"]
|
|
},
|
|
"DiscoveryAdminReviewRequest": {
|
|
"type": "object",
|
|
"properties": {"reason": {"type": "string", "maxLength": 500, "description": "Review reason"}}
|
|
},
|
|
"DiscoveryAdminRejectRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": {"type": "string", "minLength": 1, "maxLength": 500, "description": "Rejection reason"}
|
|
},
|
|
"required": ["reason"]
|
|
},
|
|
"DiscoveryAdminRemoveRequest": {
|
|
"type": "object",
|
|
"properties": {"reason": {"type": "string", "minLength": 1, "maxLength": 500, "description": "Removal reason"}},
|
|
"required": ["reason"]
|
|
},
|
|
"DiscoveryAdminListedGuildResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild ID"},
|
|
"guild_name": {"type": "string", "description": "Guild name"},
|
|
"guild_icon": {"description": "Guild icon hash", "nullable": true, "type": "string"},
|
|
"guild_owner_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild owner user ID"},
|
|
"guild_owner_username": {"description": "Guild owner username", "nullable": true, "type": "string"},
|
|
"guild_owner_global_name": {"description": "Guild owner display name", "nullable": true, "type": "string"},
|
|
"guild_owner_discriminator": {"description": "Guild owner discriminator", "nullable": true, "type": "string"},
|
|
"guild_member_count": {"type": "number", "description": "Approximate member count"},
|
|
"guild_nsfw_level": {
|
|
"description": "NSFW level of the guild",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]
|
|
},
|
|
"guild_features": {"type": "array", "items": {"type": "string"}, "description": "Guild feature flags"},
|
|
"description": {"type": "string", "description": "Discovery description"},
|
|
"category_type": {"type": "number", "description": "Discovery category type"},
|
|
"primary_language": {"description": "Primary community language", "nullable": true, "type": "string"},
|
|
"custom_tags": {"type": "array", "items": {"type": "string"}, "description": "Custom discovery tags"},
|
|
"applied_at": {"type": "string", "description": "Application timestamp"},
|
|
"approved_at": {"description": "Approval timestamp", "nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"guild_id",
|
|
"guild_name",
|
|
"guild_icon",
|
|
"guild_owner_id",
|
|
"guild_owner_username",
|
|
"guild_owner_global_name",
|
|
"guild_owner_discriminator",
|
|
"guild_member_count",
|
|
"guild_nsfw_level",
|
|
"guild_features",
|
|
"description",
|
|
"category_type",
|
|
"primary_language",
|
|
"custom_tags",
|
|
"applied_at",
|
|
"approved_at"
|
|
]
|
|
},
|
|
"GuildMemoryStatsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guilds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"node_id": {"type": "string"},
|
|
"guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"guild_name": {"type": "string"},
|
|
"guild_icon": {"nullable": true, "type": "string"},
|
|
"nsfw_level": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]},
|
|
"memory": {"$ref": "#/components/schemas/Int64StringType"},
|
|
"member_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"session_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"presence_count": {"$ref": "#/components/schemas/Int32Type"}
|
|
},
|
|
"required": [
|
|
"node_id",
|
|
"guild_id",
|
|
"guild_name",
|
|
"guild_icon",
|
|
"nsfw_level",
|
|
"memory",
|
|
"member_count",
|
|
"session_count",
|
|
"presence_count"
|
|
]
|
|
},
|
|
"maxItems": 1000
|
|
}
|
|
},
|
|
"required": ["guilds"]
|
|
},
|
|
"Int64StringType": {"type": "string", "format": "int64", "pattern": "^-?[0-9]+$"},
|
|
"Int32Type": {"type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32"},
|
|
"GetProcessMemoryStatsRequest": {
|
|
"type": "object",
|
|
"properties": {"limit": {"type": "integer", "minimum": 100, "maximum": 1000, "format": "int32"}}
|
|
},
|
|
"ReloadAllGuildsResponse": {
|
|
"type": "object",
|
|
"properties": {"count": {"$ref": "#/components/schemas/Int32Type"}},
|
|
"required": ["count"]
|
|
},
|
|
"ReloadGuildsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "List of guild IDs to reload"
|
|
}
|
|
},
|
|
"required": ["guild_ids"]
|
|
},
|
|
"NodeStatsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {"type": "string"},
|
|
"sessions": {"$ref": "#/components/schemas/Int32Type"},
|
|
"guilds": {"$ref": "#/components/schemas/Int32Type"},
|
|
"presences": {"$ref": "#/components/schemas/Int32Type"},
|
|
"calls": {"$ref": "#/components/schemas/Int32Type"},
|
|
"memory": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {"$ref": "#/components/schemas/Int64StringType"},
|
|
"processes": {"$ref": "#/components/schemas/Int64StringType"},
|
|
"system": {"$ref": "#/components/schemas/Int64StringType"}
|
|
},
|
|
"required": ["total", "processes", "system"]
|
|
},
|
|
"process_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"process_limit": {"$ref": "#/components/schemas/Int32Type"},
|
|
"uptime_seconds": {"$ref": "#/components/schemas/Int32Type"},
|
|
"node_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"nodes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"node_id": {"type": "string"},
|
|
"status": {"type": "string"},
|
|
"sessions": {"$ref": "#/components/schemas/Int32Type"},
|
|
"guilds": {"$ref": "#/components/schemas/Int32Type"},
|
|
"presences": {"$ref": "#/components/schemas/Int32Type"},
|
|
"calls": {"$ref": "#/components/schemas/Int32Type"},
|
|
"memory": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {"$ref": "#/components/schemas/Int64StringType"},
|
|
"processes": {"$ref": "#/components/schemas/Int64StringType"},
|
|
"system": {"$ref": "#/components/schemas/Int64StringType"}
|
|
},
|
|
"required": ["total", "processes", "system"]
|
|
},
|
|
"process_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"process_limit": {"$ref": "#/components/schemas/Int32Type"},
|
|
"uptime_seconds": {"$ref": "#/components/schemas/Int32Type"}
|
|
},
|
|
"required": [
|
|
"node_id",
|
|
"status",
|
|
"sessions",
|
|
"guilds",
|
|
"presences",
|
|
"calls",
|
|
"memory",
|
|
"process_count",
|
|
"process_limit",
|
|
"uptime_seconds"
|
|
]
|
|
},
|
|
"maxItems": 1000
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"sessions",
|
|
"guilds",
|
|
"presences",
|
|
"calls",
|
|
"memory",
|
|
"process_count",
|
|
"process_limit",
|
|
"uptime_seconds",
|
|
"node_count",
|
|
"nodes"
|
|
]
|
|
},
|
|
"GatewayVoiceStateCountsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total_voice_states": {"$ref": "#/components/schemas/Int32Type"},
|
|
"regions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string"},
|
|
"voice_state_count": {"$ref": "#/components/schemas/Int32Type"}
|
|
},
|
|
"required": ["region_id", "voice_state_count"]
|
|
},
|
|
"maxItems": 1000
|
|
},
|
|
"servers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"server_id": {"type": "string"},
|
|
"voice_state_count": {"$ref": "#/components/schemas/Int32Type"}
|
|
},
|
|
"required": ["server_id", "voice_state_count"]
|
|
},
|
|
"maxItems": 5000
|
|
}
|
|
},
|
|
"required": ["total_voice_states", "regions", "servers"]
|
|
},
|
|
"ListGuildAuditLogsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"audit_log_entries": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/GuildAuditLogEntryResponse"},
|
|
"description": "Array of audit log entries"
|
|
},
|
|
"users": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserPartialResponse"},
|
|
"description": "Users referenced in the audit log entries"
|
|
},
|
|
"webhooks": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/AuditLogWebhookResponse"},
|
|
"description": "Webhooks referenced in the audit log entries"
|
|
}
|
|
},
|
|
"required": ["audit_log_entries", "users", "webhooks"]
|
|
},
|
|
"GuildAuditLogEntryResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier for this audit log entry"
|
|
},
|
|
"action_type": {"$ref": "#/components/schemas/AuditLogActionType"},
|
|
"user_id": {
|
|
"description": "The user ID of the user who performed the action",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"target_id": {
|
|
"description": "The ID of the affected entity (user, channel, role, invite code, etc.)",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"reason": {"type": "string", "description": "The reason provided for the action"},
|
|
"options": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"type": "string", "description": "Channel ID for relevant actions"},
|
|
"count": {"type": "number", "description": "Count of items affected"},
|
|
"delete_member_days": {
|
|
"type": "string",
|
|
"description": "Number of days of messages to delete on member ban"
|
|
},
|
|
"id": {"type": "string", "description": "ID of the affected entity"},
|
|
"integration_type": {"type": "number", "description": "Type of integration"},
|
|
"message_id": {"type": "string", "description": "Message ID for relevant actions"},
|
|
"members_removed": {"type": "number", "description": "Number of members removed"},
|
|
"role_name": {"type": "string", "description": "Name of the role"},
|
|
"type": {"type": "number", "description": "Type identifier"},
|
|
"inviter_id": {"type": "string", "description": "ID of the user who created the invite"},
|
|
"max_age": {"type": "number", "description": "Maximum age of the invite in seconds"},
|
|
"max_uses": {"type": "number", "description": "Maximum number of uses for the invite"},
|
|
"temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"},
|
|
"uses": {"type": "number", "description": "Number of times the invite has been used"}
|
|
},
|
|
"description": "Additional options depending on action type"
|
|
},
|
|
"changes": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/AuditLogChangeSchema"},
|
|
"description": "Changes made to the target"
|
|
}
|
|
},
|
|
"required": ["id", "action_type"]
|
|
},
|
|
"AuditLogActionType": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [
|
|
1, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 40, 41, 42, 50, 51, 52, 60, 61, 62,
|
|
90, 91, 92, 72, 73, 74, 75
|
|
],
|
|
"description": "The type of action that occurred"
|
|
},
|
|
"AuditLogChangeSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {"type": "string", "description": "The field that changed"},
|
|
"old_value": {
|
|
"description": "Value before the change",
|
|
"nullable": true,
|
|
"oneOf": [
|
|
{"type": "string"},
|
|
{"type": "number"},
|
|
{"type": "boolean"},
|
|
{"type": "array", "items": {"type": "string"}},
|
|
{"type": "array", "items": {"type": "number"}},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"added": {"type": "array", "items": {"type": "string"}},
|
|
"removed": {"type": "array", "items": {"type": "string"}}
|
|
},
|
|
"required": ["added", "removed"]
|
|
}
|
|
]
|
|
},
|
|
"new_value": {
|
|
"description": "Value after the change",
|
|
"nullable": true,
|
|
"oneOf": [
|
|
{"type": "string"},
|
|
{"type": "number"},
|
|
{"type": "boolean"},
|
|
{"type": "array", "items": {"type": "string"}},
|
|
{"type": "array", "items": {"type": "number"}},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"added": {"type": "array", "items": {"type": "string"}},
|
|
"removed": {"type": "array", "items": {"type": "string"}}
|
|
},
|
|
"required": ["added", "removed"]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": ["key"]
|
|
},
|
|
"UserPartialResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier (snowflake) for this user"
|
|
},
|
|
"username": {"type": "string", "description": "The username of the user, not unique across the platform"},
|
|
"discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"},
|
|
"global_name": {"description": "The display name of the user, if set", "nullable": true, "type": "string"},
|
|
"avatar": {"description": "The hash of the user avatar image", "nullable": true, "type": "string"},
|
|
"avatar_color": {
|
|
"description": "The dominant avatar color of the user as an integer",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"bot": {"type": "boolean", "description": "Whether the user is a bot account"},
|
|
"system": {"type": "boolean", "description": "Whether the user is an official system user"},
|
|
"flags": {"$ref": "#/components/schemas/PublicUserFlags"},
|
|
"mention_flags": {
|
|
"$ref": "#/components/schemas/MentionReplyPreferences",
|
|
"description": "The user's account-wide reply mention preference"
|
|
}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"]
|
|
},
|
|
"PublicUserFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "The public flags on the user account"
|
|
},
|
|
"MentionReplyPreferences": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2],
|
|
"description": "Reply mention preference"
|
|
},
|
|
"AuditLogWebhookResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier for this webhook"
|
|
},
|
|
"type": {"$ref": "#/components/schemas/WebhookType"},
|
|
"guild_id": {
|
|
"description": "The guild ID this webhook belongs to",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"channel_id": {
|
|
"description": "The channel ID this webhook posts to",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"name": {"type": "string", "description": "The name of the webhook"},
|
|
"avatar_hash": {"description": "The hash of the webhook avatar", "nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "type", "name"]
|
|
},
|
|
"WebhookType": {"type": "integer", "format": "int32", "enum": [1, 2], "description": "The type of webhook"},
|
|
"ListGuildAuditLogsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {"$ref": "#/components/schemas/Int32Type"},
|
|
"before": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"after": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"action_type": {"$ref": "#/components/schemas/AuditLogActionType"}
|
|
},
|
|
"required": ["guild_id"]
|
|
},
|
|
"BanGuildMemberRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"delete_message_days": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 7,
|
|
"format": "int32",
|
|
"description": "Number of days of messages to delete from the banned user (0-7)"
|
|
},
|
|
"reason": {"description": "The reason for the ban (max 512 characters)", "nullable": true, "type": "string"},
|
|
"ban_duration_seconds": {
|
|
"type": "integer",
|
|
"format": "int53",
|
|
"description": "Duration of the ban in seconds (0 for permanent, or between 60 and 63072000 seconds for a temporary ban)"
|
|
},
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["guild_id", "user_id"]
|
|
},
|
|
"ClearGuildFieldsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"fields": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": ["icon", "banner", "splash", "embed_splash"],
|
|
"description": "Guild image field that can be cleared"
|
|
},
|
|
"maxItems": 10,
|
|
"description": "List of guild image fields to clear"
|
|
}
|
|
},
|
|
"required": ["guild_id", "fields"]
|
|
},
|
|
"SuccessResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {"type": "boolean", "enum": [true], "description": "Whether the operation succeeded"}
|
|
},
|
|
"required": ["success"]
|
|
},
|
|
"DeleteGuildRequest": {
|
|
"type": "object",
|
|
"properties": {"guild_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["guild_id"]
|
|
},
|
|
"ForceAddUserToGuildRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["user_id", "guild_id"]
|
|
},
|
|
"KickGuildMemberRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["guild_id", "user_id"]
|
|
},
|
|
"ListGuildMembersResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"members": {"type": "array", "items": {"$ref": "#/components/schemas/GuildMemberResponse"}},
|
|
"total": {"$ref": "#/components/schemas/Int32Type"},
|
|
"limit": {"$ref": "#/components/schemas/Int32Type"},
|
|
"offset": {"$ref": "#/components/schemas/Int32Type"}
|
|
},
|
|
"required": ["members", "total", "limit", "offset"]
|
|
},
|
|
"GuildMemberResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user": {"$ref": "#/components/schemas/UserPartialResponse"},
|
|
"nick": {"description": "The nickname of the member in this guild", "nullable": true, "type": "string"},
|
|
"avatar": {"description": "The hash of the member guild-specific avatar", "nullable": true, "type": "string"},
|
|
"banner": {"description": "The hash of the member guild-specific banner", "nullable": true, "type": "string"},
|
|
"accent_color": {
|
|
"description": "The accent colour of the member guild profile as an integer",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"roles": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 250,
|
|
"description": "Array of role IDs the member has"
|
|
},
|
|
"joined_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "ISO8601 timestamp of when the user joined the guild"
|
|
},
|
|
"mute": {"type": "boolean", "description": "Whether the member is muted in voice channels"},
|
|
"deaf": {"type": "boolean", "description": "Whether the member is deafened in voice channels"},
|
|
"communication_disabled_until": {
|
|
"description": "ISO8601 timestamp until which the member is timed out",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"profile_flags": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/GuildMemberProfileFlags"}]},
|
|
"mention_flags": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/MentionReplyPreferences",
|
|
"description": "Per-guild reply mention preference override; NO_PREFERENCE means inherit the user-level mention_flags."
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": ["user", "roles", "joined_at", "mute", "deaf"]
|
|
},
|
|
"GuildMemberProfileFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "Member profile flags"
|
|
},
|
|
"ListGuildMembersRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 200, "format": "int32"},
|
|
"offset": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}
|
|
},
|
|
"required": ["guild_id"]
|
|
},
|
|
"LookupGuildResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"owner_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"owner_username": {"nullable": true, "type": "string"},
|
|
"owner_global_name": {"nullable": true, "type": "string"},
|
|
"owner_discriminator": {"nullable": true, "type": "string"},
|
|
"name": {"type": "string"},
|
|
"vanity_url_code": {"nullable": true, "type": "string"},
|
|
"icon": {"nullable": true, "type": "string"},
|
|
"banner": {"nullable": true, "type": "string"},
|
|
"splash": {"nullable": true, "type": "string"},
|
|
"embed_splash": {"nullable": true, "type": "string"},
|
|
"features": {"type": "array", "items": {"type": "string"}, "maxItems": 100},
|
|
"verification_level": {"$ref": "#/components/schemas/GuildVerificationLevel"},
|
|
"mfa_level": {"$ref": "#/components/schemas/GuildMFALevel"},
|
|
"nsfw_level": {"$ref": "#/components/schemas/NSFWLevel"},
|
|
"nsfw": {"type": "boolean"},
|
|
"content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"},
|
|
"content_warning_text": {"nullable": true, "type": "string"},
|
|
"explicit_content_filter": {"$ref": "#/components/schemas/GuildExplicitContentFilter"},
|
|
"default_message_notifications": {"$ref": "#/components/schemas/DefaultMessageNotifications"},
|
|
"afk_channel_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"afk_timeout": {"$ref": "#/components/schemas/Int32Type"},
|
|
"system_channel_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"system_channel_flags": {"$ref": "#/components/schemas/SystemChannelFlags"},
|
|
"rules_channel_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"disabled_operations": {"$ref": "#/components/schemas/Int32Type"},
|
|
"member_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"nullable": true, "type": "string"},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 998, 999],
|
|
"description": "The type of the channel"
|
|
},
|
|
"position": {"$ref": "#/components/schemas/Int32Type"},
|
|
"parent_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"nsfw": {"nullable": true, "type": "boolean"},
|
|
"nsfw_override": {"nullable": true, "type": "boolean"},
|
|
"content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"},
|
|
"content_warning_text": {"nullable": true, "type": "string"},
|
|
"url": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "name", "type", "position", "parent_id", "nsfw", "url"]
|
|
},
|
|
"maxItems": 500
|
|
},
|
|
"roles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"type": "string"},
|
|
"color": {"$ref": "#/components/schemas/Int32Type"},
|
|
"position": {"$ref": "#/components/schemas/Int32Type"},
|
|
"permissions": {
|
|
"type": "string",
|
|
"format": "int64",
|
|
"pattern": "^[0-9]+$",
|
|
"description": "The role permissions bitfield"
|
|
},
|
|
"hoist": {"type": "boolean"},
|
|
"mentionable": {"type": "boolean"}
|
|
},
|
|
"required": ["id", "name", "color", "position", "permissions", "hoist", "mentionable"]
|
|
},
|
|
"maxItems": 250
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"owner_id",
|
|
"owner_username",
|
|
"owner_global_name",
|
|
"owner_discriminator",
|
|
"name",
|
|
"vanity_url_code",
|
|
"icon",
|
|
"banner",
|
|
"splash",
|
|
"embed_splash",
|
|
"features",
|
|
"verification_level",
|
|
"mfa_level",
|
|
"nsfw_level",
|
|
"explicit_content_filter",
|
|
"default_message_notifications",
|
|
"afk_channel_id",
|
|
"afk_timeout",
|
|
"system_channel_id",
|
|
"system_channel_flags",
|
|
"rules_channel_id",
|
|
"disabled_operations",
|
|
"member_count",
|
|
"channels",
|
|
"roles"
|
|
]
|
|
}
|
|
},
|
|
"required": ["guild"]
|
|
},
|
|
"GuildVerificationLevel": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4],
|
|
"description": "Required verification level for members"
|
|
},
|
|
"GuildMFALevel": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1],
|
|
"description": "Required MFA level for moderation actions"
|
|
},
|
|
"ContentWarningLevel": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1],
|
|
"description": "The content warning level for a guild, category, or channel"
|
|
},
|
|
"GuildExplicitContentFilter": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2],
|
|
"description": "Level of content filtering for explicit media"
|
|
},
|
|
"DefaultMessageNotifications": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1],
|
|
"description": "Default notification level for new members"
|
|
},
|
|
"SystemChannelFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "System channel message flags"
|
|
},
|
|
"LookupGuildRequest": {
|
|
"type": "object",
|
|
"properties": {"guild_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["guild_id"]
|
|
},
|
|
"ReloadGuildRequest": {
|
|
"type": "object",
|
|
"properties": {"guild_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["guild_id"]
|
|
},
|
|
"SearchGuildsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guilds": {"type": "array", "items": {"$ref": "#/components/schemas/GuildAdminResponse"}},
|
|
"total": {"type": "number"}
|
|
},
|
|
"required": ["guilds", "total"]
|
|
},
|
|
"GuildAdminResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier for this guild"
|
|
},
|
|
"name": {"type": "string", "description": "The name of the guild"},
|
|
"features": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/GuildFeatureSchema"},
|
|
"maxItems": 100,
|
|
"description": "Array of guild feature flags"
|
|
},
|
|
"owner_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the guild owner"},
|
|
"owner_username": {"description": "The username of the guild owner", "nullable": true, "type": "string"},
|
|
"owner_global_name": {
|
|
"description": "The display name of the guild owner, if set",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"owner_discriminator": {
|
|
"description": "The discriminator of the guild owner",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"icon": {"description": "The hash of the guild icon", "nullable": true, "type": "string"},
|
|
"banner": {"description": "The hash of the guild banner", "nullable": true, "type": "string"},
|
|
"member_count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "The number of members in the guild"
|
|
},
|
|
"nsfw_level": {"$ref": "#/components/schemas/NSFWLevel"},
|
|
"nsfw": {"type": "boolean", "description": "Whether the guild is flagged as adult content"},
|
|
"content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"},
|
|
"content_warning_text": {
|
|
"description": "Custom content warning text shown before entry",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"approximate_member_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"approximate_presence_count": {"$ref": "#/components/schemas/Int32Type"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"features",
|
|
"owner_id",
|
|
"owner_username",
|
|
"owner_global_name",
|
|
"owner_discriminator",
|
|
"icon",
|
|
"banner",
|
|
"member_count"
|
|
]
|
|
},
|
|
"SearchGuildsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {"type": "string"},
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 200, "format": "int32"},
|
|
"offset": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}
|
|
}
|
|
},
|
|
"ShutdownGuildRequest": {
|
|
"type": "object",
|
|
"properties": {"guild_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["guild_id"]
|
|
},
|
|
"GuildUpdateResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"type": "string"},
|
|
"features": {"type": "array", "items": {"type": "string"}, "maxItems": 100},
|
|
"owner_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"icon": {"nullable": true, "type": "string"},
|
|
"banner": {"nullable": true, "type": "string"},
|
|
"member_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"nsfw_level": {"$ref": "#/components/schemas/NSFWLevel"},
|
|
"nsfw": {"type": "boolean"},
|
|
"content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"},
|
|
"content_warning_text": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "name", "features", "owner_id", "icon", "banner", "member_count"]
|
|
}
|
|
},
|
|
"required": ["guild"]
|
|
},
|
|
"TransferGuildOwnershipRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"new_owner_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["guild_id", "new_owner_id"]
|
|
},
|
|
"UpdateGuildFeaturesRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"add_features": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/GuildFeatureSchema"},
|
|
"maxItems": 100,
|
|
"description": "Guild features to add"
|
|
},
|
|
"remove_features": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/GuildFeatureSchema"},
|
|
"maxItems": 100,
|
|
"description": "Guild features to remove"
|
|
}
|
|
},
|
|
"required": ["guild_id"]
|
|
},
|
|
"UpdateGuildNameRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"type": "string", "description": "New name for the guild"}
|
|
},
|
|
"required": ["guild_id", "name"]
|
|
},
|
|
"UpdateGuildSettingsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"verification_level": {
|
|
"$ref": "#/components/schemas/GuildVerificationLevel",
|
|
"description": "Required verification level for guild members"
|
|
},
|
|
"mfa_level": {
|
|
"$ref": "#/components/schemas/GuildMFALevel",
|
|
"description": "Required MFA level for moderators"
|
|
},
|
|
"nsfw_level": {"$ref": "#/components/schemas/NSFWLevel", "description": "NSFW content level for the guild"},
|
|
"nsfw": {"type": "boolean", "description": "Whether the guild is flagged as adult content"},
|
|
"content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"},
|
|
"content_warning_text": {
|
|
"description": "Custom content warning text shown before entry",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"explicit_content_filter": {
|
|
"$ref": "#/components/schemas/GuildExplicitContentFilter",
|
|
"description": "Explicit content filter level"
|
|
},
|
|
"default_message_notifications": {
|
|
"$ref": "#/components/schemas/DefaultMessageNotifications",
|
|
"description": "Default notification setting for new members"
|
|
},
|
|
"disabled_operations": {"$ref": "#/components/schemas/GuildOperations"}
|
|
},
|
|
"required": ["guild_id"]
|
|
},
|
|
"GuildOperations": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "Bitmask of disabled guild operations"
|
|
},
|
|
"UpdateGuildVanityRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"vanity_url_code": {
|
|
"description": "New vanity URL code, or null to remove",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["guild_id", "vanity_url_code"]
|
|
},
|
|
"ListGuildEmojisResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"emojis": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"type": "string"},
|
|
"animated": {"type": "boolean"},
|
|
"creator_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"media_url": {"type": "string"}
|
|
},
|
|
"required": ["id", "name", "animated", "creator_id", "media_url"]
|
|
},
|
|
"maxItems": 500
|
|
}
|
|
},
|
|
"required": ["guild_id", "emojis"]
|
|
},
|
|
"ListGuildStickersResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"stickers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"name": {"type": "string"},
|
|
"animated": {"type": "boolean"},
|
|
"creator_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"media_url": {"type": "string"}
|
|
},
|
|
"required": ["id", "name", "animated", "creator_id", "media_url"]
|
|
},
|
|
"maxItems": 500
|
|
}
|
|
},
|
|
"required": ["guild_id", "stickers"]
|
|
},
|
|
"InstanceConfigResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sso": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"type": "boolean"},
|
|
"enforced": {"type": "boolean"},
|
|
"display_name": {"nullable": true, "type": "string"},
|
|
"issuer": {"nullable": true, "type": "string"},
|
|
"authorization_url": {"nullable": true, "type": "string"},
|
|
"token_url": {"nullable": true, "type": "string"},
|
|
"userinfo_url": {"nullable": true, "type": "string"},
|
|
"jwks_url": {"nullable": true, "type": "string"},
|
|
"client_id": {"nullable": true, "type": "string"},
|
|
"client_secret_set": {"type": "boolean"},
|
|
"scope": {"nullable": true, "type": "string"},
|
|
"allowed_domains": {"type": "array", "items": {"type": "string"}, "maxItems": 100},
|
|
"auto_provision": {"type": "boolean"},
|
|
"redirect_uri": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"enforced",
|
|
"display_name",
|
|
"issuer",
|
|
"authorization_url",
|
|
"token_url",
|
|
"userinfo_url",
|
|
"jwks_url",
|
|
"client_id",
|
|
"client_secret_set",
|
|
"scope",
|
|
"allowed_domains",
|
|
"auto_provision",
|
|
"redirect_uri"
|
|
]
|
|
},
|
|
"gateway_rollout": {"$ref": "#/components/schemas/GatewayRolloutConfigSchema"},
|
|
"registration": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {"type": "string", "enum": ["open", "approval", "closed"], "description": "Registration mode"},
|
|
"admin_registration_urls_enabled": {"type": "boolean"},
|
|
"urls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"label": {"nullable": true, "type": "string"},
|
|
"created_by_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"created_at": {"type": "string", "format": "date-time"},
|
|
"expires_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"max_uses": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53"
|
|
},
|
|
"use_count": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"},
|
|
"revoked_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"approval_required": {"type": "boolean"},
|
|
"last_used_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"last_used_by_user_id": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"label",
|
|
"created_by_user_id",
|
|
"created_at",
|
|
"expires_at",
|
|
"max_uses",
|
|
"use_count",
|
|
"revoked_at",
|
|
"approval_required",
|
|
"last_used_at",
|
|
"last_used_by_user_id"
|
|
]
|
|
}
|
|
},
|
|
"pending_registrations": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "integer", "minimum": 0, "maximum": 9999, "format": "int32"},
|
|
"global_name": {"nullable": true, "type": "string"},
|
|
"email": {"nullable": true, "type": "string"},
|
|
"requested_at": {"type": "string", "format": "date-time"},
|
|
"registration_url_id": {"nullable": true, "type": "string"},
|
|
"client_ip": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"user_id",
|
|
"username",
|
|
"discriminator",
|
|
"global_name",
|
|
"email",
|
|
"requested_at",
|
|
"registration_url_id",
|
|
"client_ip"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": ["mode", "admin_registration_urls_enabled", "urls", "pending_registrations"]
|
|
},
|
|
"self_hosted": {"type": "boolean"},
|
|
"app_public": {
|
|
"type": "object",
|
|
"properties": {
|
|
"branding": {
|
|
"type": "object",
|
|
"properties": {
|
|
"product_name": {"type": "string"},
|
|
"icon_url": {"nullable": true, "type": "string"},
|
|
"symbol_url": {"nullable": true, "type": "string"},
|
|
"logo_url": {"nullable": true, "type": "string"},
|
|
"wordmark_url": {"nullable": true, "type": "string"},
|
|
"favicon_url": {"nullable": true, "type": "string"},
|
|
"theme_color": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"product_name",
|
|
"icon_url",
|
|
"symbol_url",
|
|
"logo_url",
|
|
"wordmark_url",
|
|
"favicon_url",
|
|
"theme_color"
|
|
]
|
|
},
|
|
"setup": {
|
|
"type": "object",
|
|
"properties": {"configured": {"type": "boolean"}},
|
|
"required": ["configured"]
|
|
},
|
|
"legal": {
|
|
"type": "object",
|
|
"properties": {
|
|
"terms_url": {"nullable": true, "type": "string"},
|
|
"privacy_url": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["terms_url", "privacy_url"]
|
|
},
|
|
"registration": {
|
|
"type": "object",
|
|
"properties": {"collect_date_of_birth": {"type": "boolean"}},
|
|
"required": ["collect_date_of_birth"]
|
|
}
|
|
},
|
|
"required": ["branding", "setup", "legal", "registration"]
|
|
},
|
|
"policy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"single_community_enabled": {"type": "boolean"},
|
|
"single_community_guild_id": {"nullable": true, "type": "string"},
|
|
"direct_messages_disabled": {"type": "boolean"},
|
|
"direct_messages_locked": {"type": "boolean"},
|
|
"premium_mode": {"enum": ["mirror", "everyone"], "type": "string"},
|
|
"services": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gif_enabled": {"nullable": true, "type": "boolean"},
|
|
"youtube_enabled": {"nullable": true, "type": "boolean"},
|
|
"bluesky_enabled": {"nullable": true, "type": "boolean"}
|
|
},
|
|
"required": ["gif_enabled", "youtube_enabled", "bluesky_enabled"]
|
|
},
|
|
"services_resolved": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gif_enabled": {"type": "boolean"},
|
|
"youtube_enabled": {"type": "boolean"},
|
|
"bluesky_enabled": {"type": "boolean"}
|
|
},
|
|
"required": ["gif_enabled", "youtube_enabled", "bluesky_enabled"]
|
|
},
|
|
"services_available": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gif": {"type": "boolean"},
|
|
"youtube": {"type": "boolean"},
|
|
"bluesky": {"type": "boolean"}
|
|
},
|
|
"required": ["gif", "youtube", "bluesky"]
|
|
}
|
|
},
|
|
"required": [
|
|
"single_community_enabled",
|
|
"single_community_guild_id",
|
|
"direct_messages_disabled",
|
|
"direct_messages_locked",
|
|
"premium_mode",
|
|
"services",
|
|
"services_resolved",
|
|
"services_available"
|
|
]
|
|
},
|
|
"integrations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gif": {
|
|
"type": "object",
|
|
"properties": {"klipy_api_key_set": {"type": "boolean"}, "effective_available": {"type": "boolean"}},
|
|
"required": ["klipy_api_key_set", "effective_available"]
|
|
},
|
|
"youtube": {
|
|
"type": "object",
|
|
"properties": {"api_key_set": {"type": "boolean"}, "effective_available": {"type": "boolean"}},
|
|
"required": ["api_key_set", "effective_available"]
|
|
},
|
|
"captcha": {
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {"nullable": true, "enum": ["hcaptcha", "turnstile", "none"], "type": "string"},
|
|
"effective_provider": {"enum": ["hcaptcha", "turnstile", "none"], "type": "string"},
|
|
"hcaptcha_site_key": {"nullable": true, "type": "string"},
|
|
"hcaptcha_secret_key_set": {"type": "boolean"},
|
|
"turnstile_site_key": {"nullable": true, "type": "string"},
|
|
"turnstile_secret_key_set": {"type": "boolean"},
|
|
"effective_enabled": {"type": "boolean"}
|
|
},
|
|
"required": [
|
|
"provider",
|
|
"effective_provider",
|
|
"hcaptcha_site_key",
|
|
"hcaptcha_secret_key_set",
|
|
"turnstile_site_key",
|
|
"turnstile_secret_key_set",
|
|
"effective_enabled"
|
|
]
|
|
},
|
|
"email": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"nullable": true, "type": "boolean"},
|
|
"effective_enabled": {"type": "boolean"},
|
|
"provider": {"nullable": true, "enum": ["smtp", "none"], "type": "string"},
|
|
"effective_provider": {"enum": ["smtp", "none"], "type": "string"},
|
|
"from_email": {"nullable": true, "type": "string"},
|
|
"from_name": {"nullable": true, "type": "string"},
|
|
"smtp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"host": {"nullable": true, "type": "string"},
|
|
"port": {"nullable": true, "type": "integer", "minimum": 1, "maximum": 65535, "format": "int32"},
|
|
"username": {"nullable": true, "type": "string"},
|
|
"password_set": {"type": "boolean"},
|
|
"secure": {"nullable": true, "type": "boolean"}
|
|
},
|
|
"required": ["host", "port", "username", "password_set", "secure"]
|
|
},
|
|
"disable_new_ip_authorization": {"type": "boolean"},
|
|
"effective_disable_new_ip_authorization": {"type": "boolean"}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"effective_enabled",
|
|
"provider",
|
|
"effective_provider",
|
|
"from_email",
|
|
"from_name",
|
|
"smtp",
|
|
"disable_new_ip_authorization",
|
|
"effective_disable_new_ip_authorization"
|
|
]
|
|
},
|
|
"bluesky": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"nullable": true, "type": "boolean"},
|
|
"effective_enabled": {"type": "boolean"},
|
|
"client_name": {"nullable": true, "type": "string"},
|
|
"client_uri": {"nullable": true, "type": "string"},
|
|
"logo_uri": {"nullable": true, "type": "string"},
|
|
"tos_uri": {"nullable": true, "type": "string"},
|
|
"policy_uri": {"nullable": true, "type": "string"},
|
|
"key_count": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"effective_enabled",
|
|
"client_name",
|
|
"client_uri",
|
|
"logo_uri",
|
|
"tos_uri",
|
|
"policy_uri",
|
|
"key_count"
|
|
]
|
|
}
|
|
},
|
|
"required": ["gif", "youtube", "captcha", "email", "bluesky"]
|
|
},
|
|
"media": {
|
|
"type": "object",
|
|
"properties": {
|
|
"attachment_decay": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"nullable": true, "type": "boolean"},
|
|
"min_size_mb": {"nullable": true, "type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"max_size_mb": {"nullable": true, "type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"max_eligible_size_mb": {"nullable": true, "type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"min_lifetime_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"max_lifetime_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"curve": {"nullable": true, "type": "number", "minimum": 0, "maximum": 1},
|
|
"renew_threshold_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"renew_window_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"effective": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"type": "boolean"},
|
|
"min_size_mb": {"type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"max_size_mb": {"type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"max_eligible_size_mb": {"type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"min_lifetime_days": {
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"max_lifetime_days": {
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"curve": {"type": "number", "minimum": 0, "maximum": 1},
|
|
"renew_threshold_days": {
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"renew_window_days": {
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"min_size_mb",
|
|
"max_size_mb",
|
|
"max_eligible_size_mb",
|
|
"min_lifetime_days",
|
|
"max_lifetime_days",
|
|
"curve",
|
|
"renew_threshold_days",
|
|
"renew_window_days"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"min_size_mb",
|
|
"max_size_mb",
|
|
"max_eligible_size_mb",
|
|
"min_lifetime_days",
|
|
"max_lifetime_days",
|
|
"curve",
|
|
"renew_threshold_days",
|
|
"renew_window_days",
|
|
"effective"
|
|
]
|
|
}
|
|
},
|
|
"required": ["attachment_decay"]
|
|
}
|
|
},
|
|
"required": [
|
|
"sso",
|
|
"gateway_rollout",
|
|
"registration",
|
|
"self_hosted",
|
|
"app_public",
|
|
"policy",
|
|
"integrations",
|
|
"media"
|
|
]
|
|
},
|
|
"GatewayRolloutConfigSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_rollout_percentage": {"type": "number", "minimum": 0, "maximum": 100},
|
|
"session_rollout_mode": {"enum": ["modulo", "random"], "type": "string"},
|
|
"guild_rollout_percentage": {"type": "number", "minimum": 0, "maximum": 100},
|
|
"rpc_request_timeout_ms": {"type": "integer", "minimum": 1000, "maximum": 60000, "format": "int32"},
|
|
"max_concurrent_session_starts": {"type": "integer", "minimum": 1, "maximum": 10000, "format": "int32"},
|
|
"max_concurrent_guild_starts": {"type": "integer", "minimum": 1, "maximum": 10000, "format": "int32"},
|
|
"gateway_dispatch_relay_shards": {"type": "integer", "minimum": 1, "maximum": 10000, "format": "int32"},
|
|
"gateway_dispatch_relay_max_queue": {"type": "integer", "minimum": 0, "maximum": 1000000, "format": "int32"},
|
|
"voice_e2ee_scope": {"enum": ["guild_feature_only", "platform_wide"], "type": "string"},
|
|
"voice_reconciliation_v3_percentage": {"type": "number", "minimum": 0, "maximum": 100},
|
|
"voice_reconciliation_v3_interval_ms": {
|
|
"type": "integer",
|
|
"minimum": 500,
|
|
"maximum": 60000,
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"BrandingAssetUploadRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {"enum": ["icon", "symbol", "logo", "wordmark", "favicon"], "type": "string"},
|
|
"image": {"nullable": true, "type": "string", "maxLength": 16000000}
|
|
},
|
|
"required": ["kind"]
|
|
},
|
|
"InstanceEmailSmtpTestResponse": {
|
|
"type": "object",
|
|
"properties": {"ok": {"type": "boolean"}, "error": {"nullable": true, "type": "string"}},
|
|
"required": ["ok", "error"]
|
|
},
|
|
"InstanceEmailSmtpTestRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"host": {"type": "string", "minLength": 1, "maxLength": 255},
|
|
"port": {"type": "integer", "minimum": 1, "maximum": 65535, "format": "int32"},
|
|
"username": {"type": "string", "minLength": 1, "maxLength": 320},
|
|
"password": {"type": "string", "minLength": 1, "maxLength": 4096},
|
|
"secure": {"type": "boolean"}
|
|
},
|
|
"required": ["host", "port", "username", "password"]
|
|
},
|
|
"PendingRegistrationActionRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"CreateRegistrationUrlResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"registration_url": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string"},
|
|
"label": {"nullable": true, "type": "string"},
|
|
"created_by_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"created_at": {"type": "string", "format": "date-time"},
|
|
"expires_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"max_uses": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53"
|
|
},
|
|
"use_count": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"},
|
|
"revoked_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"approval_required": {"type": "boolean"},
|
|
"last_used_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"last_used_by_user_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"label",
|
|
"created_by_user_id",
|
|
"created_at",
|
|
"expires_at",
|
|
"max_uses",
|
|
"use_count",
|
|
"revoked_at",
|
|
"approval_required",
|
|
"last_used_at",
|
|
"last_used_by_user_id"
|
|
]
|
|
},
|
|
"code": {"type": "string"},
|
|
"url": {"type": "string"}
|
|
},
|
|
"required": ["registration_url", "code", "url"]
|
|
},
|
|
"CreateRegistrationUrlRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {"nullable": true, "type": "string", "minLength": 1, "maxLength": 120},
|
|
"expires_at": {"nullable": true, "type": "string", "format": "date-time"},
|
|
"max_uses": {"nullable": true, "type": "integer", "minimum": 1, "maximum": 1000000, "format": "int32"},
|
|
"approval_required": {"type": "boolean"}
|
|
}
|
|
},
|
|
"RegistrationUrlActionRequest": {"type": "object", "properties": {"id": {"type": "string"}}, "required": ["id"]},
|
|
"InstanceConfigUpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gateway_rollout": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/GatewayRolloutConfigUpdateRequest"}]
|
|
},
|
|
"registration": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {"type": "string", "enum": ["open", "approval", "closed"], "description": "Registration mode"},
|
|
"admin_registration_urls_enabled": {"type": "boolean"}
|
|
}
|
|
},
|
|
"sso": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"type": "boolean"},
|
|
"enforced": {"type": "boolean"},
|
|
"display_name": {"nullable": true, "type": "string"},
|
|
"issuer": {"nullable": true, "type": "string"},
|
|
"authorization_url": {"nullable": true, "type": "string"},
|
|
"token_url": {"nullable": true, "type": "string"},
|
|
"userinfo_url": {"nullable": true, "type": "string"},
|
|
"jwks_url": {"nullable": true, "type": "string"},
|
|
"client_id": {"nullable": true, "type": "string"},
|
|
"client_secret": {"nullable": true, "type": "string"},
|
|
"scope": {"nullable": true, "type": "string"},
|
|
"allowed_domains": {"type": "array", "items": {"type": "string"}, "maxItems": 100},
|
|
"auto_provision": {"type": "boolean"}
|
|
}
|
|
},
|
|
"app_public": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"branding": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"product_name": {"type": "string", "minLength": 1, "maxLength": 80},
|
|
"icon_url": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"symbol_url": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"logo_url": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"wordmark_url": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"favicon_url": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"theme_color": {"nullable": true, "type": "string", "maxLength": 64}
|
|
}
|
|
},
|
|
"setup": {"nullable": true, "type": "object", "properties": {"configured": {"type": "boolean"}}},
|
|
"legal": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"terms_url": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"privacy_url": {"nullable": true, "type": "string", "maxLength": 2048}
|
|
}
|
|
},
|
|
"registration": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {"collect_date_of_birth": {"type": "boolean"}}
|
|
}
|
|
}
|
|
},
|
|
"integrations": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"gif": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {"klipy_api_key": {"nullable": true, "type": "string", "maxLength": 4096}}
|
|
},
|
|
"youtube": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {"api_key": {"nullable": true, "type": "string", "maxLength": 4096}}
|
|
},
|
|
"captcha": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {"nullable": true, "enum": ["hcaptcha", "turnstile", "none"], "type": "string"},
|
|
"hcaptcha_site_key": {"nullable": true, "type": "string", "maxLength": 4096},
|
|
"hcaptcha_secret_key": {"nullable": true, "type": "string", "maxLength": 4096},
|
|
"turnstile_site_key": {"nullable": true, "type": "string", "maxLength": 4096},
|
|
"turnstile_secret_key": {"nullable": true, "type": "string", "maxLength": 4096}
|
|
}
|
|
},
|
|
"email": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"nullable": true, "type": "boolean"},
|
|
"provider": {"nullable": true, "enum": ["smtp", "none"], "type": "string"},
|
|
"from_email": {"nullable": true, "type": "string", "maxLength": 320},
|
|
"from_name": {"nullable": true, "type": "string", "maxLength": 120},
|
|
"smtp": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"host": {"nullable": true, "type": "string", "maxLength": 255},
|
|
"port": {"nullable": true, "type": "integer", "minimum": 1, "maximum": 65535, "format": "int32"},
|
|
"username": {"nullable": true, "type": "string", "maxLength": 320},
|
|
"password": {"nullable": true, "type": "string", "maxLength": 4096},
|
|
"secure": {"nullable": true, "type": "boolean"}
|
|
}
|
|
},
|
|
"disable_new_ip_authorization": {"nullable": true, "type": "boolean"}
|
|
}
|
|
},
|
|
"bluesky": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"nullable": true, "type": "boolean"},
|
|
"client_name": {"nullable": true, "type": "string", "maxLength": 120},
|
|
"client_uri": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"logo_uri": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"tos_uri": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"policy_uri": {"nullable": true, "type": "string", "maxLength": 2048},
|
|
"keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kid": {"type": "string", "minLength": 1, "maxLength": 255},
|
|
"private_key": {"nullable": true, "type": "string", "maxLength": 10000}
|
|
},
|
|
"required": ["kid"]
|
|
},
|
|
"maxItems": 8
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"media": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"attachment_decay": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {"nullable": true, "type": "boolean"},
|
|
"min_size_mb": {"nullable": true, "type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"max_size_mb": {"nullable": true, "type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"max_eligible_size_mb": {"nullable": true, "type": "number", "minimum": 0, "exclusiveMinimum": true},
|
|
"min_lifetime_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"max_lifetime_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"curve": {"nullable": true, "type": "number", "minimum": 0, "maximum": 1},
|
|
"renew_threshold_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
},
|
|
"renew_window_days": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"policy": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"single_community_enabled": {"type": "boolean"},
|
|
"single_community_name": {"type": "string", "minLength": 1, "maxLength": 100},
|
|
"direct_messages_disabled": {"type": "boolean"},
|
|
"premium_mode": {"enum": ["mirror", "everyone"], "type": "string"},
|
|
"services": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"gif_enabled": {"nullable": true, "type": "boolean"},
|
|
"youtube_enabled": {"nullable": true, "type": "boolean"},
|
|
"bluesky_enabled": {"nullable": true, "type": "boolean"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"GatewayRolloutConfigUpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_rollout_percentage": {"type": "number", "minimum": 0, "maximum": 100},
|
|
"session_rollout_mode": {"enum": ["modulo", "random"], "type": "string"},
|
|
"guild_rollout_percentage": {"type": "number", "minimum": 0, "maximum": 100},
|
|
"rpc_request_timeout_ms": {"type": "integer", "minimum": 1000, "maximum": 60000, "format": "int32"},
|
|
"max_concurrent_session_starts": {"type": "integer", "minimum": 1, "maximum": 10000, "format": "int32"},
|
|
"max_concurrent_guild_starts": {"type": "integer", "minimum": 1, "maximum": 10000, "format": "int32"},
|
|
"gateway_dispatch_relay_shards": {"type": "integer", "minimum": 1, "maximum": 10000, "format": "int32"},
|
|
"gateway_dispatch_relay_max_queue": {"type": "integer", "minimum": 0, "maximum": 1000000, "format": "int32"},
|
|
"voice_e2ee_scope": {"enum": ["guild_feature_only", "platform_wide"], "type": "string"},
|
|
"voice_reconciliation_v3_percentage": {"type": "number", "minimum": 0, "maximum": 100},
|
|
"voice_reconciliation_v3_interval_ms": {
|
|
"type": "integer",
|
|
"minimum": 500,
|
|
"maximum": 60000,
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"ActiveJobsResponseSchema": {
|
|
"type": "object",
|
|
"properties": {"jobs": {"type": "array", "items": {"$ref": "#/components/schemas/JobLedgerEntrySchema"}}},
|
|
"required": ["jobs"]
|
|
},
|
|
"JobLedgerEntrySchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"task_type": {"type": "string"},
|
|
"status": {"enum": ["queued", "running", "succeeded", "failed", "cancelled", "deadletter"], "type": "string"},
|
|
"progress_current": {"nullable": true, "type": "number"},
|
|
"progress_total": {"nullable": true, "type": "number"},
|
|
"progress_message": {"nullable": true, "type": "string"},
|
|
"error_message": {"nullable": true, "type": "string"},
|
|
"created_at": {"type": "string", "description": "ISO 8601"},
|
|
"started_at": {"nullable": true, "type": "string"},
|
|
"completed_at": {"nullable": true, "type": "string"},
|
|
"requested_by_user_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"audit_log_reason": {"nullable": true, "type": "string"},
|
|
"jet_stream_lane": {"nullable": true, "type": "string"},
|
|
"jet_stream_seq": {"nullable": true, "type": "string"},
|
|
"attempts": {"type": "integer", "format": "int53"},
|
|
"max_attempts": {"type": "integer", "format": "int53"},
|
|
"run_at": {"nullable": true, "type": "string"},
|
|
"cancel_requested": {"type": "boolean"},
|
|
"context_link": {"nullable": true, "type": "string"},
|
|
"payload": {"description": "JSON-encoded original payload", "nullable": true, "type": "string"},
|
|
"result": {"description": "JSON-encoded result, if any", "nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"job_id",
|
|
"task_type",
|
|
"status",
|
|
"progress_current",
|
|
"progress_total",
|
|
"progress_message",
|
|
"error_message",
|
|
"created_at",
|
|
"started_at",
|
|
"completed_at",
|
|
"requested_by_user_id",
|
|
"audit_log_reason",
|
|
"jet_stream_lane",
|
|
"jet_stream_seq",
|
|
"attempts",
|
|
"max_attempts",
|
|
"run_at",
|
|
"cancel_requested",
|
|
"context_link",
|
|
"payload",
|
|
"result"
|
|
]
|
|
},
|
|
"CancelJobResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cancelled": {
|
|
"type": "boolean",
|
|
"description": "True if a cancel request was recorded; false if the job was already terminal."
|
|
}
|
|
},
|
|
"required": ["cancelled"]
|
|
},
|
|
"CancelJobRequest": {
|
|
"type": "object",
|
|
"properties": {"job_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["job_id"]
|
|
},
|
|
"GetJobResponseSchema": {
|
|
"type": "object",
|
|
"properties": {"job": {"$ref": "#/components/schemas/JobLedgerEntrySchema"}},
|
|
"required": ["job"]
|
|
},
|
|
"GetJobRequest": {
|
|
"type": "object",
|
|
"properties": {"job_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["job_id"]
|
|
},
|
|
"ListJobsResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"jobs": {"type": "array", "items": {"$ref": "#/components/schemas/JobLedgerEntrySchema"}},
|
|
"next_cursor": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"bucket_day": {"type": "string"},
|
|
"created_at": {"type": "string"},
|
|
"job_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["bucket_day", "created_at", "job_id"]
|
|
}
|
|
},
|
|
"required": ["jobs", "next_cursor"]
|
|
},
|
|
"ListJobsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 200, "format": "int32", "description": "Page size"},
|
|
"cursor": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bucket_day": {"type": "string"},
|
|
"created_at": {"type": "string"},
|
|
"job_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["bucket_day", "created_at", "job_id"],
|
|
"description": "Cursor returned by a previous page"
|
|
},
|
|
"max_lookback_days": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 60,
|
|
"format": "int32",
|
|
"description": "How many days back to scan"
|
|
},
|
|
"status": {
|
|
"enum": ["queued", "running", "succeeded", "failed", "cancelled", "deadletter"],
|
|
"type": "string",
|
|
"description": "Filter by job status"
|
|
},
|
|
"task_type": {"type": "string", "description": "Filter by task type"},
|
|
"requested_by_user_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
}
|
|
},
|
|
"LimitConfigGetResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit_config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"traitDefinitions": {"type": "array", "items": {"type": "string"}},
|
|
"rules": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "minLength": 1, "description": "Unique rule identifier"},
|
|
"filters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"traits": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "Trait filters that must match for the rule to apply"
|
|
},
|
|
"guildFeatures": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "Guild feature flags required for the rule to apply"
|
|
}
|
|
},
|
|
"description": "Optional filters that scope the rule"
|
|
},
|
|
"limits": {
|
|
"type": "object",
|
|
"additionalProperties": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"},
|
|
"description": "Per-limit key values"
|
|
},
|
|
"modifiedFields": {"type": "array", "items": {"type": "string"}}
|
|
},
|
|
"required": ["id", "limits"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["traitDefinitions", "rules"]
|
|
},
|
|
"limit_config_json": {"type": "string"},
|
|
"self_hosted": {"type": "boolean"},
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": {"type": "object", "additionalProperties": {"type": "number"}}
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {"type": "string"},
|
|
"label": {"type": "string"},
|
|
"description": {"type": "string"},
|
|
"category": {"type": "string"},
|
|
"scope": {"type": "string"},
|
|
"isToggle": {"type": "boolean"},
|
|
"unit": {"enum": ["bytes", "count"], "type": "string"},
|
|
"min": {"type": "number"},
|
|
"max": {"type": "number"}
|
|
},
|
|
"required": ["key", "label", "description", "category", "scope", "isToggle"]
|
|
}
|
|
},
|
|
"categories": {"type": "object", "additionalProperties": {"type": "string"}},
|
|
"limit_keys": {"type": "array", "items": {"type": "string"}},
|
|
"bounds": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {"min": {"type": "number"}, "max": {"type": "number"}},
|
|
"required": ["min", "max"]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"limit_config",
|
|
"limit_config_json",
|
|
"self_hosted",
|
|
"defaults",
|
|
"metadata",
|
|
"categories",
|
|
"limit_keys"
|
|
]
|
|
},
|
|
"NonNegativeSafeIntegerType": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"},
|
|
"LimitConfigUpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit_config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"traitDefinitions": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "Trait definitions used by rules"
|
|
},
|
|
"rules": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "minLength": 1, "description": "Unique rule identifier"},
|
|
"filters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"traits": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "Trait filters that must match for the rule to apply"
|
|
},
|
|
"guildFeatures": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "Guild feature flags required for the rule to apply"
|
|
}
|
|
},
|
|
"description": "Optional filters that scope the rule"
|
|
},
|
|
"limits": {
|
|
"type": "object",
|
|
"additionalProperties": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"},
|
|
"description": "Per-limit key values"
|
|
}
|
|
},
|
|
"required": ["id", "limits"]
|
|
},
|
|
"description": "Limit rules"
|
|
}
|
|
},
|
|
"required": ["rules"],
|
|
"description": "New limit configuration snapshot"
|
|
}
|
|
},
|
|
"required": ["limit_config"]
|
|
},
|
|
"BrowseChannelResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"messages": {"type": "array", "items": {"$ref": "#/components/schemas/AdminMessageSchema"}, "maxItems": 100},
|
|
"message_responses": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageResponseSchema"},
|
|
"maxItems": 100
|
|
},
|
|
"has_more": {"type": "boolean"}
|
|
},
|
|
"required": ["messages", "has_more"]
|
|
},
|
|
"AdminMessageSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"channel_name": {"nullable": true, "type": "string"},
|
|
"channel_nsfw": {"nullable": true, "type": "boolean"},
|
|
"channel_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"channel_content_warning_text": {"nullable": true, "type": "string"},
|
|
"guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"guild_name": {"nullable": true, "type": "string"},
|
|
"guild_nsfw_level": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]},
|
|
"guild_nsfw": {"nullable": true, "type": "boolean"},
|
|
"guild_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"guild_content_warning_text": {"nullable": true, "type": "string"},
|
|
"author_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"author_username": {"type": "string"},
|
|
"author_global_name": {"nullable": true, "type": "string"},
|
|
"author_discriminator": {"type": "string"},
|
|
"author_avatar": {"nullable": true, "type": "string"},
|
|
"content": {"type": "string"},
|
|
"timestamp": {"type": "string"},
|
|
"attachments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"filename": {"type": "string"},
|
|
"url": {"type": "string"},
|
|
"nsfw": {"nullable": true, "type": "boolean"},
|
|
"content_type": {"nullable": true, "type": "string"},
|
|
"width": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"height": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"size": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}]},
|
|
"ncmec_status": {
|
|
"type": "string",
|
|
"enum": ["not_submitted", "submitted", "failed"],
|
|
"description": "NCMEC submission status"
|
|
},
|
|
"ncmec_report_id": {"nullable": true, "type": "string"},
|
|
"ncmec_failure_reason": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"filename",
|
|
"url",
|
|
"nsfw",
|
|
"content_type",
|
|
"width",
|
|
"height",
|
|
"ncmec_status",
|
|
"ncmec_report_id",
|
|
"ncmec_failure_reason"
|
|
]
|
|
},
|
|
"maxItems": 10
|
|
},
|
|
"user_prior_ncmec_report_ids": {"type": "array", "items": {"type": "string"}, "maxItems": 100}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"channel_id",
|
|
"channel_name",
|
|
"channel_nsfw",
|
|
"guild_id",
|
|
"guild_name",
|
|
"guild_nsfw_level",
|
|
"author_id",
|
|
"author_username",
|
|
"author_global_name",
|
|
"author_discriminator",
|
|
"author_avatar",
|
|
"content",
|
|
"timestamp",
|
|
"attachments"
|
|
]
|
|
},
|
|
"MessageResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier (snowflake) for this message"
|
|
},
|
|
"channel_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The ID of the channel this message was sent in"
|
|
},
|
|
"author": {"$ref": "#/components/schemas/UserPartialResponse"},
|
|
"webhook_id": {
|
|
"description": "The ID of the webhook that sent this message",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 19],
|
|
"description": "The type of message"
|
|
},
|
|
"flags": {"$ref": "#/components/schemas/MessageFlags"},
|
|
"content": {"type": "string", "description": "The text content of the message"},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The ISO 8601 timestamp of when the message was created"
|
|
},
|
|
"edited_timestamp": {
|
|
"description": "The ISO 8601 timestamp of when the message was last edited",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"pinned": {"type": "boolean", "description": "Whether the message is pinned"},
|
|
"mention_everyone": {"type": "boolean", "description": "Whether the message mentions @everyone"},
|
|
"tts": {"type": "boolean", "description": "Whether the message was sent as text-to-speech"},
|
|
"mentions": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserPartialResponse"},
|
|
"description": "The users mentioned in the message"
|
|
},
|
|
"mention_roles": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "The role IDs mentioned in the message"
|
|
},
|
|
"mention_channels": {
|
|
"description": "Channels mentioned in the message that are visible to @everyone",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}
|
|
},
|
|
"users": {
|
|
"description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserPartialResponse"}
|
|
},
|
|
"embeds": {
|
|
"description": "The embeds attached to the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageEmbedResponse"}
|
|
},
|
|
"attachments": {
|
|
"description": "The files attached to the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}
|
|
},
|
|
"stickers": {
|
|
"description": "The stickers sent with the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageStickerResponse"}
|
|
},
|
|
"nsfw_emojis": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "IDs of custom emojis in this message that are classified as NSFW"
|
|
},
|
|
"reactions": {
|
|
"description": "The reactions on the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageReactionResponse"}
|
|
},
|
|
"message_reference": {
|
|
"description": "Reference data for replies or forwards",
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The ID of the channel containing the referenced message"
|
|
},
|
|
"message_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The ID of the referenced message"
|
|
},
|
|
"guild_id": {
|
|
"description": "The ID of the guild containing the referenced message",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"type": {"$ref": "#/components/schemas/MessageReferenceType"}
|
|
},
|
|
"required": ["channel_id", "message_id", "type"]
|
|
},
|
|
"message_snapshots": {
|
|
"description": "Snapshots of forwarded messages",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}
|
|
},
|
|
"nonce": {
|
|
"description": "A client-provided value for message deduplication",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"call": {
|
|
"description": "Call information if this message represents a call",
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"participants": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "The user IDs of participants in the call"
|
|
},
|
|
"ended_timestamp": {
|
|
"description": "The ISO 8601 timestamp of when the call ended",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": ["participants"]
|
|
},
|
|
"referenced_message": {
|
|
"description": "The message that this message is replying to or forwarding",
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier (snowflake) for this message"
|
|
},
|
|
"channel_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The ID of the channel this message was sent in"
|
|
},
|
|
"author": {"$ref": "#/components/schemas/UserPartialResponse"},
|
|
"webhook_id": {
|
|
"description": "The ID of the webhook that sent this message",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 19],
|
|
"description": "The type of message"
|
|
},
|
|
"flags": {"$ref": "#/components/schemas/MessageFlags"},
|
|
"content": {"type": "string", "description": "The text content of the message"},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The ISO 8601 timestamp of when the message was created"
|
|
},
|
|
"edited_timestamp": {
|
|
"description": "The ISO 8601 timestamp of when the message was last edited",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"pinned": {"type": "boolean", "description": "Whether the message is pinned"},
|
|
"mention_everyone": {"type": "boolean", "description": "Whether the message mentions @everyone"},
|
|
"tts": {"type": "boolean", "description": "Whether the message was sent as text-to-speech"},
|
|
"mentions": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserPartialResponse"},
|
|
"description": "The users mentioned in the message"
|
|
},
|
|
"mention_roles": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "The role IDs mentioned in the message"
|
|
},
|
|
"mention_channels": {
|
|
"description": "Channels mentioned in the message that are visible to @everyone",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}
|
|
},
|
|
"users": {
|
|
"description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserPartialResponse"}
|
|
},
|
|
"embeds": {
|
|
"description": "The embeds attached to the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageEmbedResponse"}
|
|
},
|
|
"attachments": {
|
|
"description": "The files attached to the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}
|
|
},
|
|
"stickers": {
|
|
"description": "The stickers sent with the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageStickerResponse"}
|
|
},
|
|
"nsfw_emojis": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"description": "IDs of custom emojis in this message that are classified as NSFW"
|
|
},
|
|
"reactions": {
|
|
"description": "The reactions on the message",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageReactionResponse"}
|
|
},
|
|
"message_reference": {
|
|
"description": "Reference data for replies or forwards",
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The ID of the channel containing the referenced message"
|
|
},
|
|
"message_id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The ID of the referenced message"
|
|
},
|
|
"guild_id": {
|
|
"description": "The ID of the guild containing the referenced message",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"type": {"$ref": "#/components/schemas/MessageReferenceType"}
|
|
},
|
|
"required": ["channel_id", "message_id", "type"]
|
|
},
|
|
"message_snapshots": {
|
|
"description": "Snapshots of forwarded messages",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}
|
|
},
|
|
"nonce": {
|
|
"description": "A client-provided value for message deduplication",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"call": {
|
|
"description": "Call information if this message represents a call",
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"participants": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"description": "The user IDs of participants in the call"
|
|
},
|
|
"ended_timestamp": {
|
|
"description": "The ISO 8601 timestamp of when the call ended",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": ["participants"]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"channel_id",
|
|
"author",
|
|
"type",
|
|
"flags",
|
|
"content",
|
|
"timestamp",
|
|
"pinned",
|
|
"mention_everyone",
|
|
"tts",
|
|
"mentions",
|
|
"mention_roles"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"channel_id",
|
|
"author",
|
|
"type",
|
|
"flags",
|
|
"content",
|
|
"timestamp",
|
|
"pinned",
|
|
"mention_everyone",
|
|
"tts",
|
|
"mentions",
|
|
"mention_roles"
|
|
]
|
|
},
|
|
"MessageFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "Message flags bitfield"
|
|
},
|
|
"MessageChannelMentionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the mentioned channel"},
|
|
"name": {"type": "string", "description": "The name of the mentioned channel"},
|
|
"type": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "The type of the mentioned channel"
|
|
}
|
|
},
|
|
"required": ["id", "name", "type"]
|
|
},
|
|
"MessageEmbedResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "The type of embed (e.g., rich, image, video, gifv, article, link)"
|
|
},
|
|
"url": {"description": "The URL of the embed", "nullable": true, "type": "string", "format": "uri"},
|
|
"title": {"description": "The title of the embed", "nullable": true, "type": "string"},
|
|
"color": {
|
|
"description": "The color code of the embed sidebar",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"timestamp": {
|
|
"description": "The ISO 8601 timestamp of the embed content",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"description": {"description": "The description of the embed", "nullable": true, "type": "string"},
|
|
"author": {
|
|
"description": "The author information of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}]
|
|
},
|
|
"image": {
|
|
"description": "The image of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"thumbnail": {
|
|
"description": "The thumbnail of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"footer": {
|
|
"description": "The footer of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedFooterResponse"}]
|
|
},
|
|
"fields": {
|
|
"description": "The fields of the embed",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/EmbedFieldResponse"}
|
|
},
|
|
"provider": {
|
|
"description": "The provider of the embed (e.g., YouTube, Twitter)",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}]
|
|
},
|
|
"video": {
|
|
"description": "The video of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"audio": {
|
|
"description": "The audio of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"html": {
|
|
"description": "Sanitized oEmbed HTML for trusted specialized embed renderers",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"html_width": {
|
|
"description": "The preferred width of sanitized oEmbed HTML",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"html_height": {
|
|
"description": "The preferred height of sanitized oEmbed HTML",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"nsfw": {"description": "Whether the embed is flagged as NSFW", "nullable": true, "type": "boolean"},
|
|
"children": {
|
|
"description": "Internal nested embeds generated by unfurlers",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageEmbedChildResponse"},
|
|
"maxItems": 1
|
|
}
|
|
},
|
|
"required": ["type"]
|
|
},
|
|
"EmbedAuthorResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string", "description": "The name of the author"},
|
|
"url": {"description": "The URL of the author", "nullable": true, "type": "string", "format": "uri"},
|
|
"icon_url": {
|
|
"description": "The URL of the author icon",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"proxy_icon_url": {
|
|
"description": "The proxied URL of the author icon",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uri"
|
|
}
|
|
},
|
|
"required": ["name"]
|
|
},
|
|
"EmbedMediaResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {"type": "string", "description": "The URL of the media"},
|
|
"proxy_url": {
|
|
"description": "The proxied URL of the media",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"content_type": {"description": "The MIME type of the media", "nullable": true, "type": "string"},
|
|
"content_hash": {"description": "The hash of the media content", "nullable": true, "type": "string"},
|
|
"width": {
|
|
"description": "The width of the media in pixels",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"height": {
|
|
"description": "The height of the media in pixels",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"description": {"description": "The description of the media", "nullable": true, "type": "string"},
|
|
"placeholder": {
|
|
"description": "The base64 encoded placeholder image for lazy loading",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"duration": {
|
|
"description": "The duration of the media in seconds",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"flags": {"$ref": "#/components/schemas/EmbedMediaFlags"}
|
|
},
|
|
"required": ["url", "flags"]
|
|
},
|
|
"EmbedMediaFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "The bitwise flags for this media"
|
|
},
|
|
"EmbedFooterResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {"type": "string", "description": "The footer text"},
|
|
"icon_url": {
|
|
"description": "The URL of the footer icon",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"proxy_icon_url": {
|
|
"description": "The proxied URL of the footer icon",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "uri"
|
|
}
|
|
},
|
|
"required": ["text"]
|
|
},
|
|
"EmbedFieldResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string", "description": "The name of the field"},
|
|
"value": {"type": "string", "description": "The value of the field"},
|
|
"inline": {"type": "boolean", "description": "Whether the field should be displayed inline"}
|
|
},
|
|
"required": ["name", "value", "inline"]
|
|
},
|
|
"MessageEmbedChildResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "The type of embed (e.g., rich, image, video, gifv, article, link)"
|
|
},
|
|
"url": {"description": "The URL of the embed", "nullable": true, "type": "string", "format": "uri"},
|
|
"title": {"description": "The title of the embed", "nullable": true, "type": "string"},
|
|
"color": {
|
|
"description": "The color code of the embed sidebar",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"timestamp": {
|
|
"description": "The ISO 8601 timestamp of the embed content",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"description": {"description": "The description of the embed", "nullable": true, "type": "string"},
|
|
"author": {
|
|
"description": "The author information of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}]
|
|
},
|
|
"image": {
|
|
"description": "The image of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"thumbnail": {
|
|
"description": "The thumbnail of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"footer": {
|
|
"description": "The footer of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedFooterResponse"}]
|
|
},
|
|
"fields": {
|
|
"description": "The fields of the embed",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/EmbedFieldResponse"}
|
|
},
|
|
"provider": {
|
|
"description": "The provider of the embed (e.g., YouTube, Twitter)",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}]
|
|
},
|
|
"video": {
|
|
"description": "The video of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"audio": {
|
|
"description": "The audio of the embed",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}]
|
|
},
|
|
"html": {
|
|
"description": "Sanitized oEmbed HTML for trusted specialized embed renderers",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"html_width": {
|
|
"description": "The preferred width of sanitized oEmbed HTML",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"html_height": {
|
|
"description": "The preferred height of sanitized oEmbed HTML",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"nsfw": {"description": "Whether the embed is flagged as NSFW", "nullable": true, "type": "boolean"}
|
|
},
|
|
"required": ["type"]
|
|
},
|
|
"MessageAttachmentResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier for this attachment"
|
|
},
|
|
"filename": {"type": "string", "description": "The name of the attached file"},
|
|
"title": {"description": "The title of the attachment", "nullable": true, "type": "string"},
|
|
"description": {"description": "The description of the attachment", "nullable": true, "type": "string"},
|
|
"content_type": {"description": "The MIME type of the attachment", "nullable": true, "type": "string"},
|
|
"content_hash": {"description": "The hash of the attachment content", "nullable": true, "type": "string"},
|
|
"size": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"description": "The size of the attachment in bytes"
|
|
},
|
|
"url": {"description": "The URL of the attachment", "nullable": true, "type": "string"},
|
|
"proxy_url": {"description": "The proxied URL of the attachment", "nullable": true, "type": "string"},
|
|
"width": {
|
|
"description": "The width of the attachment in pixels (for images/videos)",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"height": {
|
|
"description": "The height of the attachment in pixels (for images/videos)",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"placeholder": {
|
|
"description": "The base64 encoded placeholder image for lazy loading",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"},
|
|
"nsfw": {"description": "Whether the attachment is flagged as NSFW", "nullable": true, "type": "boolean"},
|
|
"duration": {
|
|
"description": "The duration of the media in seconds",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/Int32Type"}]
|
|
},
|
|
"waveform": {"description": "The base64 encoded audio waveform data", "nullable": true, "type": "string"},
|
|
"expires_at": {
|
|
"description": "The ISO 8601 timestamp when the attachment URL expires",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"expired": {"description": "Whether the attachment URL has expired", "nullable": true, "type": "boolean"}
|
|
},
|
|
"required": ["id", "filename", "size", "flags"]
|
|
},
|
|
"MessageAttachmentFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "Attachment flags"
|
|
},
|
|
"MessageStickerResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)$",
|
|
"description": "The unique identifier of the sticker"
|
|
},
|
|
"name": {"type": "string", "description": "The name of the sticker"},
|
|
"animated": {"type": "boolean", "description": "Whether the sticker is animated"},
|
|
"nsfw": {"type": "boolean", "description": "Whether this sticker is classified as NSFW"}
|
|
},
|
|
"required": ["id", "name", "animated"]
|
|
},
|
|
"MessageReactionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"emoji": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"description": "The ID of the custom emoji (null for Unicode emojis)",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the emoji (or Unicode character for standard emojis)"
|
|
},
|
|
"animated": {"description": "Whether the emoji is animated", "nullable": true, "type": "boolean"}
|
|
},
|
|
"required": ["name"],
|
|
"description": "The emoji used for the reaction"
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "The total number of times this reaction has been used"
|
|
},
|
|
"me": {
|
|
"description": "Whether the current user has reacted with this emoji",
|
|
"nullable": true,
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": ["emoji", "count"]
|
|
},
|
|
"MessageReferenceType": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1],
|
|
"description": "The type of message reference"
|
|
},
|
|
"MessageSnapshotResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {"description": "The text content of the snapshot", "nullable": true, "type": "string"},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The ISO 8601 timestamp of when the original message was created"
|
|
},
|
|
"edited_timestamp": {
|
|
"description": "The ISO 8601 timestamp of when the original message was last edited",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"mentions": {
|
|
"description": "The user IDs mentioned in the snapshot",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"mention_roles": {
|
|
"description": "The role IDs mentioned in the snapshot",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"mention_channels": {
|
|
"description": "Channels mentioned in the snapshot that are visible to @everyone",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}
|
|
},
|
|
"embeds": {
|
|
"description": "The embeds included in the snapshot",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageEmbedResponse"}
|
|
},
|
|
"attachments": {
|
|
"description": "The attachments included in the snapshot",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}
|
|
},
|
|
"stickers": {
|
|
"description": "The stickers included in the snapshot",
|
|
"nullable": true,
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageStickerResponse"}
|
|
},
|
|
"type": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 19],
|
|
"description": "The type of message"
|
|
},
|
|
"flags": {"$ref": "#/components/schemas/MessageFlags"}
|
|
},
|
|
"required": ["timestamp", "type", "flags"]
|
|
},
|
|
"BrowseChannelRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"before": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"after": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}
|
|
},
|
|
"required": ["channel_id"]
|
|
},
|
|
"DeleteMessageResponse": {
|
|
"type": "object",
|
|
"properties": {"success": {"type": "boolean", "enum": [true]}},
|
|
"required": ["success"]
|
|
},
|
|
"DeleteMessageRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"message_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["channel_id", "message_id"]
|
|
},
|
|
"DeleteAllUserMessagesResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {"type": "boolean", "enum": [true]},
|
|
"dry_run": {"type": "boolean"},
|
|
"channel_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"message_count": {"$ref": "#/components/schemas/Int32Type"},
|
|
"job_id": {"type": "string"}
|
|
},
|
|
"required": ["success", "dry_run", "channel_count", "message_count"]
|
|
},
|
|
"DeleteAllUserMessagesRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}, "dry_run": {"type": "boolean"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"LookupMessageResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"messages": {"type": "array", "items": {"$ref": "#/components/schemas/AdminMessageSchema"}, "maxItems": 100},
|
|
"message_responses": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageResponseSchema"},
|
|
"maxItems": 100
|
|
},
|
|
"message_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": ["messages", "message_id"]
|
|
},
|
|
"LookupMessageRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"message_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"context_limit": {"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}
|
|
},
|
|
"required": ["channel_id", "message_id"]
|
|
},
|
|
"LookupMessageByAttachmentRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"attachment_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"filename": {"type": "string"},
|
|
"context_limit": {"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}
|
|
},
|
|
"required": ["channel_id", "attachment_id", "filename"]
|
|
},
|
|
"NcmecAttachmentSubmitResultResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {"type": "boolean", "enum": [true]},
|
|
"ncmec_report_id": {"type": "string"},
|
|
"audit_log_reason": {"type": "string"}
|
|
},
|
|
"required": ["success", "ncmec_report_id", "audit_log_reason"]
|
|
},
|
|
"ReportAttachmentToNcmecRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"message_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"attachment_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"filename": {"type": "string"},
|
|
"source_report_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"reporter_full_name": {"type": "string", "minLength": 1, "maxLength": 200},
|
|
"confirmed_viewed": {"type": "boolean", "enum": [true]}
|
|
},
|
|
"required": ["channel_id", "message_id", "attachment_id", "filename", "reporter_full_name", "confirmed_viewed"]
|
|
},
|
|
"SearchChannelMessagesResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"messages": {"type": "array", "items": {"$ref": "#/components/schemas/AdminMessageSchema"}, "maxItems": 100},
|
|
"message_responses": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/MessageResponseSchema"},
|
|
"maxItems": 100
|
|
},
|
|
"total": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}
|
|
},
|
|
"required": ["messages", "total"]
|
|
},
|
|
"SearchChannelMessagesRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"query": {"type": "string", "minLength": 1, "maxLength": 200},
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}
|
|
},
|
|
"required": ["channel_id", "query"]
|
|
},
|
|
"MessageShredResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {"type": "boolean", "enum": [true]},
|
|
"job_id": {"type": "string"},
|
|
"requested": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}
|
|
},
|
|
"required": ["success", "job_id"]
|
|
},
|
|
"MessageShredRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"message_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["channel_id", "message_id"]
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000
|
|
}
|
|
},
|
|
"required": ["user_id", "entries"]
|
|
},
|
|
"MessageShredStatusResponse": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {"status": {"type": "string", "enum": ["not_found"]}},
|
|
"required": ["status"]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["in_progress", "completed", "failed"],
|
|
"description": "Current message shred job status"
|
|
},
|
|
"requested": {"$ref": "#/components/schemas/Int32Type"},
|
|
"total": {"$ref": "#/components/schemas/Int32Type"},
|
|
"processed": {"$ref": "#/components/schemas/Int32Type"},
|
|
"skipped": {"$ref": "#/components/schemas/Int32Type"},
|
|
"started_at": {"type": "string"},
|
|
"completed_at": {"type": "string"},
|
|
"failed_at": {"type": "string"},
|
|
"error": {"type": "string"}
|
|
},
|
|
"required": ["status", "requested", "total", "processed", "skipped"]
|
|
}
|
|
]
|
|
},
|
|
"MessageShredStatusRequest": {
|
|
"type": "object",
|
|
"properties": {"job_id": {"type": "string"}},
|
|
"required": ["job_id"]
|
|
},
|
|
"ListReportsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reports": {"type": "array", "items": {"$ref": "#/components/schemas/ReportAdminResponseSchema"}}
|
|
},
|
|
"required": ["reports"]
|
|
},
|
|
"ReportAdminResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"report_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"reporter_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"reporter_tag": {"nullable": true, "type": "string"},
|
|
"reporter_username": {"nullable": true, "type": "string"},
|
|
"reporter_global_name": {"nullable": true, "type": "string"},
|
|
"reporter_discriminator": {"nullable": true, "type": "string"},
|
|
"reporter_email": {"nullable": true, "type": "string"},
|
|
"reporter_full_legal_name": {"nullable": true, "type": "string"},
|
|
"reporter_country_of_residence": {"nullable": true, "type": "string"},
|
|
"reported_at": {"type": "string"},
|
|
"status": {"$ref": "#/components/schemas/ReportStatus"},
|
|
"report_type": {"$ref": "#/components/schemas/ReportType"},
|
|
"category": {"nullable": true, "type": "string"},
|
|
"additional_info": {"nullable": true, "type": "string"},
|
|
"reported_user_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"reported_user_tag": {"nullable": true, "type": "string"},
|
|
"reported_user_username": {"nullable": true, "type": "string"},
|
|
"reported_user_global_name": {"nullable": true, "type": "string"},
|
|
"reported_user_discriminator": {"nullable": true, "type": "string"},
|
|
"reported_user_avatar_hash": {"nullable": true, "type": "string"},
|
|
"reported_guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"reported_guild_name": {"nullable": true, "type": "string"},
|
|
"reported_guild_icon_hash": {"nullable": true, "type": "string"},
|
|
"reported_message_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"reported_channel_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"reported_channel_name": {"nullable": true, "type": "string"},
|
|
"reported_channel_nsfw": {"nullable": true, "type": "boolean"},
|
|
"reported_guild_invite_code": {"nullable": true, "type": "string"},
|
|
"reported_guild_nsfw_level": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]},
|
|
"reported_guild_nsfw": {"nullable": true, "type": "boolean"},
|
|
"reported_guild_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"reported_guild_content_warning_text": {"nullable": true, "type": "string"},
|
|
"reported_channel_nsfw_override": {"nullable": true, "type": "boolean"},
|
|
"reported_channel_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"reported_channel_content_warning_text": {"nullable": true, "type": "string"},
|
|
"reported_channel_effective_nsfw": {"nullable": true, "type": "boolean"},
|
|
"reported_channel_effective_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"reported_channel_effective_content_warning_text": {"nullable": true, "type": "string"},
|
|
"resolved_at": {"nullable": true, "type": "string"},
|
|
"resolved_by_admin_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"public_comment": {"nullable": true, "type": "string"},
|
|
"mutual_dm_channel_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"message_context": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"channel_nsfw": {"nullable": true, "type": "boolean"},
|
|
"channel_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"channel_content_warning_text": {"nullable": true, "type": "string"},
|
|
"guild_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"guild_nsfw_level": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]},
|
|
"guild_nsfw": {"nullable": true, "type": "boolean"},
|
|
"guild_content_warning_level": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/ContentWarningLevel"}]
|
|
},
|
|
"guild_content_warning_text": {"nullable": true, "type": "string"},
|
|
"content": {"type": "string"},
|
|
"timestamp": {"type": "string"},
|
|
"attachments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"filename": {"type": "string"},
|
|
"url": {"type": "string"},
|
|
"nsfw": {"nullable": true, "type": "boolean"},
|
|
"content_type": {"nullable": true, "type": "string"},
|
|
"width": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"height": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"size": {
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}]
|
|
},
|
|
"ncmec_status": {
|
|
"type": "string",
|
|
"enum": ["not_submitted", "submitted", "failed"],
|
|
"description": "NCMEC submission status"
|
|
},
|
|
"ncmec_report_id": {"nullable": true, "type": "string"},
|
|
"ncmec_failure_reason": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"filename",
|
|
"url",
|
|
"nsfw",
|
|
"content_type",
|
|
"width",
|
|
"height",
|
|
"ncmec_status",
|
|
"ncmec_report_id",
|
|
"ncmec_failure_reason"
|
|
]
|
|
}
|
|
},
|
|
"author_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"author_username": {"type": "string"},
|
|
"author_global_name": {"nullable": true, "type": "string"},
|
|
"author_discriminator": {"type": "string"},
|
|
"author_avatar": {"nullable": true, "type": "string"},
|
|
"user_prior_ncmec_report_ids": {"type": "array", "items": {"type": "string"}, "maxItems": 100}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"channel_id",
|
|
"channel_nsfw",
|
|
"guild_id",
|
|
"guild_nsfw_level",
|
|
"content",
|
|
"timestamp",
|
|
"attachments",
|
|
"author_id",
|
|
"author_username",
|
|
"author_global_name",
|
|
"author_discriminator",
|
|
"author_avatar"
|
|
]
|
|
}
|
|
},
|
|
"message_responses": {"type": "array", "items": {"$ref": "#/components/schemas/MessageResponseSchema"}}
|
|
},
|
|
"required": [
|
|
"report_id",
|
|
"reporter_id",
|
|
"reporter_tag",
|
|
"reporter_username",
|
|
"reporter_global_name",
|
|
"reporter_discriminator",
|
|
"reporter_email",
|
|
"reporter_full_legal_name",
|
|
"reporter_country_of_residence",
|
|
"reported_at",
|
|
"status",
|
|
"report_type",
|
|
"category",
|
|
"additional_info",
|
|
"reported_user_id",
|
|
"reported_user_tag",
|
|
"reported_user_username",
|
|
"reported_user_global_name",
|
|
"reported_user_discriminator",
|
|
"reported_user_avatar_hash",
|
|
"reported_guild_id",
|
|
"reported_guild_name",
|
|
"reported_guild_icon_hash",
|
|
"reported_message_id",
|
|
"reported_channel_id",
|
|
"reported_channel_name",
|
|
"reported_channel_nsfw",
|
|
"reported_guild_invite_code",
|
|
"reported_guild_nsfw_level",
|
|
"resolved_at",
|
|
"resolved_by_admin_id",
|
|
"public_comment"
|
|
]
|
|
},
|
|
"ReportStatus": {"type": "integer", "format": "int32", "enum": [0, 1], "description": "The status of the report"},
|
|
"ReportType": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"enum": [0, 1, 2],
|
|
"description": "The type of entity being reported"
|
|
},
|
|
"ListReportsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {"$ref": "#/components/schemas/ReportStatus"},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"format": "int32",
|
|
"description": "Maximum number of reports to return"
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"description": "Number of reports to skip"
|
|
}
|
|
}
|
|
},
|
|
"ResolveReportResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"report_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"status": {"$ref": "#/components/schemas/ReportStatus"},
|
|
"resolved_at": {"nullable": true, "type": "string"},
|
|
"public_comment": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["report_id", "status", "resolved_at", "public_comment"]
|
|
},
|
|
"ResolveReportRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"report_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"public_comment": {"type": "string", "description": "Public comment to include with the resolution"}
|
|
},
|
|
"required": ["report_id"]
|
|
},
|
|
"SearchReportsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reports": {"type": "array", "items": {"$ref": "#/components/schemas/ReportAdminResponseSchema"}},
|
|
"total": {"type": "number"},
|
|
"offset": {"type": "number"},
|
|
"limit": {"type": "number"}
|
|
},
|
|
"required": ["reports", "total", "offset", "limit"]
|
|
},
|
|
"SearchReportsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {"type": "string", "description": "Search query string"},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"format": "int32",
|
|
"description": "Maximum number of entries to return"
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991,
|
|
"format": "int53",
|
|
"description": "Number of entries to skip"
|
|
},
|
|
"reporter_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"status": {"$ref": "#/components/schemas/ReportStatus"},
|
|
"report_type": {"$ref": "#/components/schemas/ReportType"},
|
|
"category": {"type": "string", "description": "Filter by report category"},
|
|
"reported_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"reported_guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"reported_channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"guild_context_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"resolved_by_admin_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"sort_by": {
|
|
"type": "string",
|
|
"enum": ["createdAt", "reportedAt", "resolvedAt"],
|
|
"description": "Field to sort reports by"
|
|
},
|
|
"sort_order": {"type": "string", "enum": ["asc", "desc"], "description": "Sort order direction"}
|
|
}
|
|
},
|
|
"RefreshSearchIndexResponse": {
|
|
"type": "object",
|
|
"properties": {"success": {"type": "boolean", "enum": [true]}, "job_id": {"type": "string"}},
|
|
"required": ["success", "job_id"]
|
|
},
|
|
"RefreshSearchIndexRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"index_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"guilds",
|
|
"users",
|
|
"reports",
|
|
"audit_logs",
|
|
"channel_messages",
|
|
"guild_members",
|
|
"favorite_memes",
|
|
"discovery"
|
|
],
|
|
"description": "Type of search index to refresh"
|
|
},
|
|
"guild_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"}
|
|
},
|
|
"required": ["index_type"]
|
|
},
|
|
"IndexRefreshStatusResponse": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {"status": {"type": "string", "enum": ["not_found"], "description": "Job was not found"}},
|
|
"required": ["status"]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["in_progress", "completed", "failed"],
|
|
"description": "Current status of the index refresh job"
|
|
},
|
|
"index_type": {"type": "string", "description": "Type of index being refreshed"},
|
|
"total": {"type": "number", "description": "Total number of items to index"},
|
|
"indexed": {"type": "number", "description": "Number of items indexed so far"},
|
|
"started_at": {"type": "string", "description": "ISO 8601 timestamp when the job started"},
|
|
"completed_at": {"type": "string", "description": "ISO 8601 timestamp when the job completed"},
|
|
"failed_at": {"type": "string", "description": "ISO 8601 timestamp when the job failed"},
|
|
"error": {"type": "string", "description": "Error message if the job failed"}
|
|
},
|
|
"required": ["status", "index_type"]
|
|
}
|
|
]
|
|
},
|
|
"GetIndexRefreshStatusRequest": {
|
|
"type": "object",
|
|
"properties": {"job_id": {"type": "string", "description": "ID of the index refresh job to check"}},
|
|
"required": ["job_id"]
|
|
},
|
|
"SuspiciousEmailDomainRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 253,
|
|
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-.]*\\.[a-zA-Z]{2,}$",
|
|
"description": "Email domain to flag as suspicious (e.g. mail.ru). Registrants from this domain will be required to verify a phone number."
|
|
}
|
|
},
|
|
"required": ["domain"]
|
|
},
|
|
"SendSystemDmResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"recipient_count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "Number of recipients the worker job was queued to deliver to"
|
|
}
|
|
},
|
|
"required": ["recipient_count"]
|
|
},
|
|
"SendSystemDmRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 4000,
|
|
"description": "Message content to send to each recipient"
|
|
},
|
|
"user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"minItems": 1,
|
|
"maxItems": 10000,
|
|
"description": "Recipient user IDs. Each receives the same content as a system DM."
|
|
}
|
|
},
|
|
"required": ["content", "user_ids"]
|
|
},
|
|
"HeapSnapshotResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {"type": "boolean", "enum": [true]},
|
|
"filename": {"type": "string", "description": "Name of the heap snapshot file"},
|
|
"size_bytes": {"type": "number", "description": "Size of the heap snapshot in bytes"}
|
|
},
|
|
"required": ["success", "filename", "size_bytes"]
|
|
},
|
|
"UserMutationResponse": {
|
|
"type": "object",
|
|
"properties": {"user": {"$ref": "#/components/schemas/UserAdminResponseSchema"}},
|
|
"required": ["user"]
|
|
},
|
|
"UserAdminResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"$ref": "#/components/schemas/Int32Type"},
|
|
"global_name": {"nullable": true, "type": "string"},
|
|
"bot": {"type": "boolean"},
|
|
"system": {"type": "boolean"},
|
|
"flags": {"$ref": "#/components/schemas/UserFlags"},
|
|
"premium_flags": {"$ref": "#/components/schemas/PremiumFlags"},
|
|
"avatar": {"nullable": true, "type": "string"},
|
|
"banner": {"nullable": true, "type": "string"},
|
|
"bio": {"nullable": true, "type": "string"},
|
|
"pronouns": {"nullable": true, "type": "string"},
|
|
"accent_color": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"email": {"nullable": true, "type": "string"},
|
|
"email_verified": {"type": "boolean"},
|
|
"email_bounced": {"type": "boolean"},
|
|
"has_verified_phone": {"type": "boolean"},
|
|
"date_of_birth": {"nullable": true, "type": "string"},
|
|
"locale": {"nullable": true, "type": "string"},
|
|
"premium_type": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"premium_since": {"nullable": true, "type": "string"},
|
|
"premium_until": {"nullable": true, "type": "string"},
|
|
"premium_grace_ends_at": {"nullable": true, "type": "string"},
|
|
"premium_lifetime_sequence": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"suspicious_activity_flags": {"$ref": "#/components/schemas/SuspiciousActivityFlags"},
|
|
"temp_banned_until": {"nullable": true, "type": "string"},
|
|
"pending_deletion_at": {"nullable": true, "type": "string"},
|
|
"pending_bulk_message_deletion_at": {"nullable": true, "type": "string"},
|
|
"deletion_reason_code": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"deletion_public_reason": {"nullable": true, "type": "string"},
|
|
"acls": {"type": "array", "items": {"type": "string"}, "maxItems": 100},
|
|
"traits": {"type": "array", "items": {"type": "string"}, "maxItems": 100},
|
|
"has_totp": {"type": "boolean"},
|
|
"authenticator_types": {"type": "array", "items": {"$ref": "#/components/schemas/Int32Type"}, "maxItems": 10},
|
|
"last_active_at": {"nullable": true, "type": "string"},
|
|
"last_active_ip": {"nullable": true, "type": "string"},
|
|
"last_active_ip_reverse": {"nullable": true, "type": "string"},
|
|
"last_active_location": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"username",
|
|
"discriminator",
|
|
"global_name",
|
|
"bot",
|
|
"system",
|
|
"flags",
|
|
"premium_flags",
|
|
"avatar",
|
|
"banner",
|
|
"bio",
|
|
"pronouns",
|
|
"accent_color",
|
|
"email",
|
|
"email_verified",
|
|
"email_bounced",
|
|
"has_verified_phone",
|
|
"date_of_birth",
|
|
"locale",
|
|
"premium_type",
|
|
"premium_since",
|
|
"premium_until",
|
|
"premium_grace_ends_at",
|
|
"premium_lifetime_sequence",
|
|
"suspicious_activity_flags",
|
|
"temp_banned_until",
|
|
"pending_deletion_at",
|
|
"pending_bulk_message_deletion_at",
|
|
"deletion_reason_code",
|
|
"deletion_public_reason",
|
|
"acls",
|
|
"traits",
|
|
"has_totp",
|
|
"authenticator_types",
|
|
"last_active_at",
|
|
"last_active_ip",
|
|
"last_active_ip_reverse",
|
|
"last_active_location"
|
|
]
|
|
},
|
|
"PremiumFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "A single premium flag value to add or remove"
|
|
},
|
|
"SuspiciousActivityFlags": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"description": "Bitmask of suspicious activity flags that triggered the disable"
|
|
},
|
|
"CancelBulkMessageDeletionRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"DisableMfaRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"ChangeDobRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"date_of_birth": {"type": "string", "description": "New date of birth in YYYY-MM-DD format"}
|
|
},
|
|
"required": ["user_id", "date_of_birth"]
|
|
},
|
|
"ChangeEmailRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"email": {"$ref": "#/components/schemas/EmailType"}
|
|
},
|
|
"required": ["user_id", "email"]
|
|
},
|
|
"ListUserChangeLogResponseSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"event_id": {"type": "string"},
|
|
"field": {"type": "string"},
|
|
"old_value": {"nullable": true, "type": "string"},
|
|
"new_value": {"nullable": true, "type": "string"},
|
|
"reason": {"nullable": true, "type": "string"},
|
|
"actor_user_id": {"nullable": true, "type": "string"},
|
|
"event_at": {"type": "string"}
|
|
},
|
|
"required": ["event_id", "field", "old_value", "new_value", "reason", "actor_user_id", "event_at"]
|
|
},
|
|
"maxItems": 200
|
|
},
|
|
"next_page_token": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["entries", "next_page_token"]
|
|
},
|
|
"ListUserChangeLogRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"format": "int32",
|
|
"description": "Maximum number of entries to return"
|
|
},
|
|
"page_token": {"type": "string", "description": "Pagination token for the next page of results"}
|
|
},
|
|
"required": ["user_id"]
|
|
},
|
|
"ChangeUsernameRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"$ref": "#/components/schemas/UsernameType"},
|
|
"discriminator": {"$ref": "#/components/schemas/DiscriminatorType"}
|
|
},
|
|
"required": ["user_id", "username"]
|
|
},
|
|
"UsernameType": {"type": "string", "minLength": 1, "maxLength": 32, "pattern": "^[a-zA-Z0-9_]+$"},
|
|
"DiscriminatorType": {"type": "string", "pattern": "^\\d{1,4}$"},
|
|
"ClearUserFieldsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"fields": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": ["avatar", "banner", "bio", "pronouns", "global_name"],
|
|
"description": "User profile field that can be cleared"
|
|
},
|
|
"maxItems": 10,
|
|
"description": "List of profile fields to clear"
|
|
}
|
|
},
|
|
"required": ["user_id", "fields"]
|
|
},
|
|
"DeleteWebAuthnCredentialRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"credential_id": {"type": "string", "description": "ID of the WebAuthn credential to delete"}
|
|
},
|
|
"required": ["user_id", "credential_id"]
|
|
},
|
|
"DisableForSuspiciousActivityRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"flags": {"$ref": "#/components/schemas/SuspiciousActivityFlags"}
|
|
},
|
|
"required": ["user_id", "flags"]
|
|
},
|
|
"ListUserDmChannelsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"channel_type": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"channel_nsfw": {"nullable": true, "type": "boolean"},
|
|
"guild_nsfw_level": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]},
|
|
"recipient_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 100
|
|
},
|
|
"recipients": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"},
|
|
"avatar": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name", "avatar"]
|
|
},
|
|
"maxItems": 100
|
|
},
|
|
"last_message_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"is_open": {"type": "boolean"},
|
|
"name": {"nullable": true, "type": "string"},
|
|
"icon": {"nullable": true, "type": "string"},
|
|
"owner_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": [
|
|
"channel_id",
|
|
"channel_type",
|
|
"channel_nsfw",
|
|
"guild_nsfw_level",
|
|
"recipient_ids",
|
|
"recipients",
|
|
"last_message_id",
|
|
"is_open",
|
|
"name",
|
|
"icon",
|
|
"owner_id"
|
|
]
|
|
},
|
|
"maxItems": 200
|
|
}
|
|
},
|
|
"required": ["channels"]
|
|
},
|
|
"ListUserDmChannelsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"before": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"after": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 200,
|
|
"format": "int32",
|
|
"description": "Maximum number of DM channels to return"
|
|
}
|
|
},
|
|
"required": ["user_id"]
|
|
},
|
|
"ListUserGroupDmChannelsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"channel_type": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
|
|
"channel_nsfw": {"nullable": true, "type": "boolean"},
|
|
"guild_nsfw_level": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/NSFWLevel"}]},
|
|
"recipient_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 100
|
|
},
|
|
"recipients": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"},
|
|
"avatar": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name", "avatar"]
|
|
},
|
|
"maxItems": 100
|
|
},
|
|
"last_message_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]},
|
|
"is_open": {"type": "boolean"},
|
|
"name": {"nullable": true, "type": "string"},
|
|
"icon": {"nullable": true, "type": "string"},
|
|
"owner_id": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}
|
|
},
|
|
"required": [
|
|
"channel_id",
|
|
"channel_type",
|
|
"channel_nsfw",
|
|
"guild_nsfw_level",
|
|
"recipient_ids",
|
|
"recipients",
|
|
"last_message_id",
|
|
"is_open",
|
|
"name",
|
|
"icon",
|
|
"owner_id"
|
|
]
|
|
},
|
|
"maxItems": 500
|
|
}
|
|
},
|
|
"required": ["channels"]
|
|
},
|
|
"ListUserGroupDmChannelsRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"ListUserGuildsResponse": {
|
|
"type": "object",
|
|
"properties": {"guilds": {"type": "array", "items": {"$ref": "#/components/schemas/GuildAdminResponse"}}},
|
|
"required": ["guilds"]
|
|
},
|
|
"ListUserGuildsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"before": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"after": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 200, "format": "int32"},
|
|
"with_counts": {"type": "boolean"}
|
|
},
|
|
"required": ["user_id"]
|
|
},
|
|
"ListUserRelationshipsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"friends": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/AdminRelationshipEntrySchema"},
|
|
"maxItems": 10000
|
|
},
|
|
"incoming_requests": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/AdminRelationshipEntrySchema"},
|
|
"maxItems": 10000
|
|
},
|
|
"outgoing_requests": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/AdminRelationshipEntrySchema"},
|
|
"maxItems": 10000
|
|
},
|
|
"blocked": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/AdminRelationshipEntrySchema"},
|
|
"maxItems": 10000
|
|
}
|
|
},
|
|
"required": ["friends", "incoming_requests", "outgoing_requests", "blocked"]
|
|
},
|
|
"AdminRelationshipEntrySchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"category": {"$ref": "#/components/schemas/RelationshipCategoryEnum"},
|
|
"nickname": {"nullable": true, "type": "string"},
|
|
"since": {"nullable": true, "type": "string"},
|
|
"target": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"username": {"type": "string"},
|
|
"discriminator": {"type": "string"},
|
|
"global_name": {"nullable": true, "type": "string"},
|
|
"avatar": {"nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "username", "discriminator", "global_name", "avatar"]
|
|
}
|
|
},
|
|
"required": ["target_user_id", "category", "nickname", "since", "target"]
|
|
},
|
|
"RelationshipCategoryEnum": {
|
|
"enum": ["friend", "incoming_request", "outgoing_request", "blocked"],
|
|
"type": "string"
|
|
},
|
|
"ListUserRelationshipsRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"ListUserSessionsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sessions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_id_hash": {"type": "string", "description": "Hashed session identifier (base64url)"},
|
|
"created_at": {"type": "string", "description": "ISO timestamp when the session was created"},
|
|
"approx_last_used_at": {
|
|
"type": "string",
|
|
"description": "ISO timestamp of the session last usage (approximate)"
|
|
},
|
|
"client_ip": {"type": "string", "description": "Client IP address"},
|
|
"client_ip_reverse": {
|
|
"description": "Reverse DNS hostname for the client IP (PTR), if available",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"client_os": {
|
|
"description": "Client operating system, if detected",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"client_platform": {"description": "Client platform, if detected", "nullable": true, "type": "string"},
|
|
"client_location": {
|
|
"description": "Approximate geo location label for the client IP, if available",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"deleted_at": {
|
|
"description": "ISO timestamp when the session was terminated, or null if still active",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"session_id_hash",
|
|
"created_at",
|
|
"approx_last_used_at",
|
|
"client_ip",
|
|
"client_ip_reverse",
|
|
"client_os",
|
|
"client_platform",
|
|
"client_location",
|
|
"deleted_at"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": ["sessions"]
|
|
},
|
|
"ListUserSessionsRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"WebAuthnCredentialListResponse": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/WebAuthnCredentialResponse"}
|
|
},
|
|
"WebAuthnCredentialResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "The credential ID"},
|
|
"name": {"type": "string", "description": "User-assigned name for the credential"},
|
|
"created_at": {"type": "string", "description": "When the credential was registered"},
|
|
"last_used_at": {"description": "When the credential was last used", "nullable": true, "type": "string"}
|
|
},
|
|
"required": ["id", "name", "created_at", "last_used_at"]
|
|
},
|
|
"ListWebAuthnCredentialsRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"LookupUserResponse": {
|
|
"type": "object",
|
|
"properties": {"users": {"type": "array", "items": {"$ref": "#/components/schemas/UserAdminResponseSchema"}}},
|
|
"required": ["users"]
|
|
},
|
|
"LookupUserRequest": {
|
|
"oneOf": [
|
|
{"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"user_ids": {"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100}
|
|
},
|
|
"required": ["user_ids"]
|
|
}
|
|
]
|
|
},
|
|
"AdminUsersMeResponse": {
|
|
"type": "object",
|
|
"properties": {"user": {"$ref": "#/components/schemas/UserAdminResponseSchema"}},
|
|
"required": ["user"]
|
|
},
|
|
"RemoveUserRelationshipRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"target_user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"category": {
|
|
"enum": ["friend", "incoming_request", "outgoing_request", "blocked"],
|
|
"type": "string",
|
|
"description": "Which relationship to remove. Friend and outgoing_request also remove the mirror entry on the target user."
|
|
}
|
|
},
|
|
"required": ["user_id", "target_user_id", "category"]
|
|
},
|
|
"RemoveUserRelationshipsResponse": {
|
|
"type": "object",
|
|
"properties": {"removed_count": {"$ref": "#/components/schemas/Int32Type"}},
|
|
"required": ["removed_count"]
|
|
},
|
|
"RemoveUserRelationshipsByCategoryRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"category": {
|
|
"enum": ["friend", "incoming_request", "outgoing_request", "blocked"],
|
|
"type": "string",
|
|
"description": "Category of relationships to remove for this user"
|
|
}
|
|
},
|
|
"required": ["user_id", "category"]
|
|
},
|
|
"ResendVerificationEmailRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"ScheduleAccountDeletionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"reason_code": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 2147483647,
|
|
"format": "int32",
|
|
"description": "Code indicating the reason for deletion"
|
|
},
|
|
"public_reason": {"type": "string", "description": "Public-facing reason for the deletion"},
|
|
"days_until_deletion": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 365,
|
|
"format": "int32",
|
|
"description": "Number of days until the account is deleted"
|
|
}
|
|
},
|
|
"required": ["user_id", "reason_code"]
|
|
},
|
|
"SearchUsersResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"users": {"type": "array", "items": {"$ref": "#/components/schemas/UserAdminResponseSchema"}},
|
|
"total": {"type": "number"}
|
|
},
|
|
"required": ["users", "total"]
|
|
},
|
|
"SearchUsersRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {"type": "string"},
|
|
"email": {"type": "string"},
|
|
"last_active_ip": {"type": "string"},
|
|
"limit": {"type": "integer", "minimum": 1, "maximum": 200, "format": "int32"},
|
|
"offset": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}
|
|
}
|
|
},
|
|
"SendPasswordResetRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"SetUserAclsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"acls": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "List of access control permissions to assign"
|
|
}
|
|
},
|
|
"required": ["user_id", "acls"]
|
|
},
|
|
"SetUserBotStatusRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"bot": {"type": "boolean", "description": "Whether the user should be marked as a bot"}
|
|
},
|
|
"required": ["user_id", "bot"]
|
|
},
|
|
"SetUserSystemStatusRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"system": {"type": "boolean", "description": "Whether the user should be marked as a system user"}
|
|
},
|
|
"required": ["user_id", "system"]
|
|
},
|
|
"SetUserTraitsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"traits": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "List of traits to assign to the user"
|
|
}
|
|
},
|
|
"required": ["user_id", "traits"]
|
|
},
|
|
"TempBanUserRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"duration_hours": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 8760,
|
|
"format": "int32",
|
|
"description": "Duration of the ban in hours. Use 0 for a permanent ban (until manually unbanned)."
|
|
},
|
|
"reason": {"type": "string", "description": "Reason for the temporary ban"}
|
|
},
|
|
"required": ["user_id", "duration_hours"]
|
|
},
|
|
"TerminateSessionsResponse": {
|
|
"type": "object",
|
|
"properties": {"terminated_count": {"$ref": "#/components/schemas/Int32Type"}},
|
|
"required": ["terminated_count"]
|
|
},
|
|
"TerminateSessionsRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"UpdateUserFlagsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"add_flags": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserFlags"},
|
|
"maxItems": 64,
|
|
"description": "User flags to add"
|
|
},
|
|
"remove_flags": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/UserFlags"},
|
|
"maxItems": 64,
|
|
"description": "User flags to remove"
|
|
}
|
|
},
|
|
"required": ["user_id"]
|
|
},
|
|
"UpdateHasVerifiedPhoneRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"has_verified_phone": {
|
|
"type": "boolean",
|
|
"description": "Whether the user should be treated as having completed phone verification"
|
|
}
|
|
},
|
|
"required": ["user_id", "has_verified_phone"]
|
|
},
|
|
"UpdatePremiumFlagsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"add_flags": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/PremiumFlags"},
|
|
"maxItems": 64,
|
|
"description": "Premium flags to add"
|
|
},
|
|
"remove_flags": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/PremiumFlags"},
|
|
"maxItems": 64,
|
|
"description": "Premium flags to remove"
|
|
}
|
|
},
|
|
"required": ["user_id"]
|
|
},
|
|
"UpdateSuspiciousActivityFlagsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_id": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"flags": {"$ref": "#/components/schemas/SuspiciousActivityFlags"}
|
|
},
|
|
"required": ["user_id", "flags"]
|
|
},
|
|
"VerifyUserEmailRequest": {
|
|
"type": "object",
|
|
"properties": {"user_id": {"$ref": "#/components/schemas/SnowflakeType"}},
|
|
"required": ["user_id"]
|
|
},
|
|
"BanUserAvatarResponseSchema": {
|
|
"type": "object",
|
|
"properties": {"hash_short": {"type": "string"}},
|
|
"required": ["hash_short"]
|
|
},
|
|
"BanUserAvatarRequest": {
|
|
"type": "object",
|
|
"properties": {"reason": {"type": "string"}, "notes": {"type": "string"}}
|
|
},
|
|
"VoiceDiagnosticsObjectListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bucket": {"type": "string", "description": "Diagnostics S3 bucket"},
|
|
"objects": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {"type": "string", "description": "S3 object key"},
|
|
"session_id": {"type": "string", "description": "Voice diagnostics session id"},
|
|
"start_ns": {
|
|
"type": "string",
|
|
"description": "First client event timestamp in the object, in nanoseconds"
|
|
},
|
|
"end_ns": {
|
|
"type": "string",
|
|
"description": "Last client event timestamp in the object, in nanoseconds"
|
|
},
|
|
"last_modified": {
|
|
"description": "S3 object last-modified timestamp",
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": ["key", "session_id", "start_ns", "end_ns", "last_modified"]
|
|
},
|
|
"description": "Matching diagnostics objects"
|
|
}
|
|
},
|
|
"required": ["bucket", "objects"]
|
|
},
|
|
"CreateVoiceRegionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "Unique identifier for the voice region"},
|
|
"name": {"type": "string", "description": "Display name of the voice region"},
|
|
"emoji": {"type": "string", "description": "Emoji representing the region"},
|
|
"latitude": {"type": "number", "description": "Geographic latitude coordinate"},
|
|
"longitude": {"type": "number", "description": "Geographic longitude coordinate"},
|
|
"is_default": {"type": "boolean", "description": "Whether this is the default region"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this region is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this region"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this region"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this region"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the region was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the region was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"emoji",
|
|
"latitude",
|
|
"longitude",
|
|
"is_default",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
],
|
|
"description": "Created voice region"
|
|
}
|
|
},
|
|
"required": ["region"]
|
|
},
|
|
"CreateVoiceRegionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "Unique identifier for the voice region"},
|
|
"name": {"type": "string", "description": "Display name of the voice region"},
|
|
"emoji": {"type": "string", "description": "Emoji representing the region"},
|
|
"latitude": {"type": "number", "description": "Geographic latitude coordinate"},
|
|
"longitude": {"type": "number", "description": "Geographic longitude coordinate"},
|
|
"is_default": {"type": "boolean", "description": "Whether this is the default region"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this region is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this region"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this region"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this region"
|
|
}
|
|
},
|
|
"required": ["id", "name", "emoji", "latitude", "longitude"]
|
|
},
|
|
"DeleteVoiceResponse": {
|
|
"type": "object",
|
|
"properties": {"success": {"type": "boolean", "description": "Whether the deletion was successful"}},
|
|
"required": ["success"]
|
|
},
|
|
"DeleteVoiceRegionRequest": {
|
|
"type": "object",
|
|
"properties": {"id": {"type": "string", "description": "ID of the voice region to delete"}},
|
|
"required": ["id"]
|
|
},
|
|
"GetVoiceRegionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region": {
|
|
"description": "Voice region details or null if not found",
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "Unique identifier for the voice region"},
|
|
"name": {"type": "string", "description": "Display name of the voice region"},
|
|
"emoji": {"type": "string", "description": "Emoji representing the region"},
|
|
"latitude": {"type": "number", "description": "Geographic latitude coordinate"},
|
|
"longitude": {"type": "number", "description": "Geographic longitude coordinate"},
|
|
"is_default": {"type": "boolean", "description": "Whether this is the default region"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this region is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this region"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this region"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this region"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the region was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the region was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"servers": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/VoiceServerAdminResponse"},
|
|
"description": "Voice servers in this region"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"emoji",
|
|
"latitude",
|
|
"longitude",
|
|
"is_default",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
]
|
|
}
|
|
},
|
|
"required": ["region"]
|
|
},
|
|
"VoiceServerAdminResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region this server belongs to"},
|
|
"server_id": {"type": "string", "description": "Unique identifier for the voice server"},
|
|
"endpoint": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Client signal WebSocket endpoint URL for the voice server"
|
|
},
|
|
"latitude": {
|
|
"description": "Optional geographic latitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"longitude": {
|
|
"description": "Optional geographic longitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"is_active": {"type": "boolean", "description": "Whether the server is currently active"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this server is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this server"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this server"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this server"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the server was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the server was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"region_id",
|
|
"server_id",
|
|
"endpoint",
|
|
"latitude",
|
|
"longitude",
|
|
"is_active",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
]
|
|
},
|
|
"GetVoiceRegionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "ID of the voice region to retrieve"},
|
|
"include_servers": {"type": "boolean", "description": "Whether to include voice servers in the response"}
|
|
},
|
|
"required": ["id"]
|
|
},
|
|
"ListVoiceRegionsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"regions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "Unique identifier for the voice region"},
|
|
"name": {"type": "string", "description": "Display name of the voice region"},
|
|
"emoji": {"type": "string", "description": "Emoji representing the region"},
|
|
"latitude": {"type": "number", "description": "Geographic latitude coordinate"},
|
|
"longitude": {"type": "number", "description": "Geographic longitude coordinate"},
|
|
"is_default": {"type": "boolean", "description": "Whether this is the default region"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this region is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this region"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this region"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this region"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the region was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the region was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"servers": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/VoiceServerAdminResponse"},
|
|
"description": "Voice servers in this region"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"emoji",
|
|
"latitude",
|
|
"longitude",
|
|
"is_default",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
]
|
|
},
|
|
"description": "List of voice regions"
|
|
}
|
|
},
|
|
"required": ["regions"]
|
|
},
|
|
"ListVoiceRegionsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"include_servers": {"type": "boolean", "description": "Whether to include voice servers in the response"}
|
|
}
|
|
},
|
|
"UpdateVoiceRegionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "Unique identifier for the voice region"},
|
|
"name": {"type": "string", "description": "Display name of the voice region"},
|
|
"emoji": {"type": "string", "description": "Emoji representing the region"},
|
|
"latitude": {"type": "number", "description": "Geographic latitude coordinate"},
|
|
"longitude": {"type": "number", "description": "Geographic longitude coordinate"},
|
|
"is_default": {"type": "boolean", "description": "Whether this is the default region"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this region is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this region"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this region"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this region"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the region was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the region was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"emoji",
|
|
"latitude",
|
|
"longitude",
|
|
"is_default",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
],
|
|
"description": "Updated voice region"
|
|
}
|
|
},
|
|
"required": ["region"]
|
|
},
|
|
"UpdateVoiceRegionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "description": "Unique identifier for the voice region"},
|
|
"name": {"type": "string", "description": "Display name of the voice region"},
|
|
"emoji": {"type": "string", "description": "Emoji representing the region"},
|
|
"latitude": {"type": "number", "description": "Geographic latitude coordinate"},
|
|
"longitude": {"type": "number", "description": "Geographic longitude coordinate"},
|
|
"is_default": {"type": "boolean", "description": "Whether this is the default region"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this region is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this region"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this region"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this region"
|
|
}
|
|
},
|
|
"required": ["id"]
|
|
},
|
|
"CreateVoiceServerResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"server": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region this server belongs to"},
|
|
"server_id": {"type": "string", "description": "Unique identifier for the voice server"},
|
|
"endpoint": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Client signal WebSocket endpoint URL for the voice server"
|
|
},
|
|
"latitude": {
|
|
"description": "Optional geographic latitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"longitude": {
|
|
"description": "Optional geographic longitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"is_active": {"type": "boolean", "description": "Whether the server is currently active"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this server is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this server"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this server"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this server"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the server was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the server was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"region_id",
|
|
"server_id",
|
|
"endpoint",
|
|
"latitude",
|
|
"longitude",
|
|
"is_active",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
],
|
|
"description": "Created voice server"
|
|
}
|
|
},
|
|
"required": ["server"]
|
|
},
|
|
"CreateVoiceServerRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region this server belongs to"},
|
|
"server_id": {"type": "string", "description": "Unique identifier for the voice server"},
|
|
"endpoint": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Client signal WebSocket endpoint URL for the voice server"
|
|
},
|
|
"api_key": {"type": "string", "description": "API key for authenticating with the voice server"},
|
|
"api_secret": {"type": "string", "description": "API secret for authenticating with the voice server"},
|
|
"latitude": {
|
|
"description": "Optional geographic latitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"longitude": {
|
|
"description": "Optional geographic longitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"is_active": {"type": "boolean", "description": "Whether the server is currently active"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this server is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this server"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this server"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this server"
|
|
}
|
|
},
|
|
"required": ["region_id", "server_id", "endpoint", "api_key", "api_secret"]
|
|
},
|
|
"DeleteVoiceServerRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region the server belongs to"},
|
|
"server_id": {"type": "string", "description": "ID of the voice server to delete"}
|
|
},
|
|
"required": ["region_id", "server_id"]
|
|
},
|
|
"GetVoiceServerResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"server": {
|
|
"description": "Voice server details or null if not found",
|
|
"nullable": true,
|
|
"allOf": [{"$ref": "#/components/schemas/VoiceServerAdminResponse"}]
|
|
}
|
|
},
|
|
"required": ["server"]
|
|
},
|
|
"GetVoiceServerRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region the server belongs to"},
|
|
"server_id": {"type": "string", "description": "ID of the voice server to retrieve"}
|
|
},
|
|
"required": ["region_id", "server_id"]
|
|
},
|
|
"ListVoiceServersResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"servers": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/VoiceServerAdminResponse"},
|
|
"description": "List of voice servers"
|
|
}
|
|
},
|
|
"required": ["servers"]
|
|
},
|
|
"ListVoiceServersRequest": {
|
|
"type": "object",
|
|
"properties": {"region_id": {"type": "string", "description": "ID of the region to list servers for"}},
|
|
"required": ["region_id"]
|
|
},
|
|
"UpdateVoiceServerResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"server": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region this server belongs to"},
|
|
"server_id": {"type": "string", "description": "Unique identifier for the voice server"},
|
|
"endpoint": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Client signal WebSocket endpoint URL for the voice server"
|
|
},
|
|
"latitude": {
|
|
"description": "Optional geographic latitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"longitude": {
|
|
"description": "Optional geographic longitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"is_active": {"type": "boolean", "description": "Whether the server is currently active"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this server is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this server"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this server"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this server"
|
|
},
|
|
"created_at": {
|
|
"description": "ISO 8601 timestamp when the server was created",
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"description": "ISO 8601 timestamp when the server was last updated",
|
|
"nullable": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"region_id",
|
|
"server_id",
|
|
"endpoint",
|
|
"latitude",
|
|
"longitude",
|
|
"is_active",
|
|
"vip_only",
|
|
"required_guild_features",
|
|
"allowed_guild_ids",
|
|
"allowed_user_ids",
|
|
"created_at",
|
|
"updated_at"
|
|
],
|
|
"description": "Updated voice server"
|
|
}
|
|
},
|
|
"required": ["server"]
|
|
},
|
|
"UpdateVoiceServerRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_id": {"type": "string", "description": "ID of the region this server belongs to"},
|
|
"server_id": {"type": "string", "description": "Unique identifier for the voice server"},
|
|
"endpoint": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "Client signal WebSocket endpoint URL for the voice server"
|
|
},
|
|
"api_key": {"type": "string", "description": "API key for authenticating with the voice server"},
|
|
"api_secret": {"type": "string", "description": "API secret for authenticating with the voice server"},
|
|
"latitude": {
|
|
"description": "Optional geographic latitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"longitude": {
|
|
"description": "Optional geographic longitude override for this server",
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"is_active": {"type": "boolean", "description": "Whether the server is currently active"},
|
|
"vip_only": {"type": "boolean", "description": "Whether this server is restricted to VIP users"},
|
|
"required_guild_features": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"maxItems": 100,
|
|
"description": "Guild features required to use this server"
|
|
},
|
|
"allowed_guild_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "Guild IDs explicitly allowed to use this server"
|
|
},
|
|
"allowed_user_ids": {
|
|
"type": "array",
|
|
"items": {"$ref": "#/components/schemas/SnowflakeType"},
|
|
"maxItems": 1000,
|
|
"description": "User IDs explicitly allowed to use this server"
|
|
}
|
|
},
|
|
"required": ["region_id", "server_id"]
|
|
}
|
|
},
|
|
"securitySchemes": {
|
|
"botToken": {
|
|
"type": "apiKey",
|
|
"in": "header",
|
|
"name": "Authorization",
|
|
"description": "Bot token: `Authorization: Bot <token>`. This is the primary authentication method for bot applications."
|
|
},
|
|
"oauth2Token": {
|
|
"type": "oauth2",
|
|
"description": "OAuth2 access token: `Authorization: Bearer <token>`.",
|
|
"flows": {
|
|
"authorizationCode": {
|
|
"authorizationUrl": "/oauth2/authorize",
|
|
"tokenUrl": "/oauth2/token",
|
|
"scopes": {
|
|
"identify": "Read basic user identity information.",
|
|
"email": "Read the user email address.",
|
|
"guilds": "Read guild membership information for the current user.",
|
|
"connections": "Read linked third-party account connections for the current user.",
|
|
"bot": "Add a bot user to a guild."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"bearerToken": {
|
|
"type": "http",
|
|
"scheme": "bearer",
|
|
"description": "Bearer-form token: `Authorization: Bearer <token>`. Use `oauth2Token` when a route requires OAuth2 scopes."
|
|
},
|
|
"sessionToken": {
|
|
"type": "apiKey",
|
|
"in": "header",
|
|
"name": "Authorization",
|
|
"description": "User session token from login: `Authorization: <token>` (no prefix). Prefer a bot account over user tokens where possible."
|
|
},
|
|
"adminApiKey": {
|
|
"type": "apiKey",
|
|
"in": "header",
|
|
"name": "Authorization",
|
|
"description": "Admin API key: `Authorization: Admin <token>`. Only valid for `/admin/*` endpoints."
|
|
}
|
|
}
|
|
},
|
|
"tags": [{"name": "Admin", "description": "Administrative operations for instance management"}]
|
|
}
|