{ "openapi": "3.1.0", "security": [], "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": { "/.well-known/fluxer": { "get": { "operationId": "get_well_known_fluxer", "summary": "Get instance discovery document", "tags": ["Instance"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WellKnownFluxerResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 the instance discovery document including API endpoints, feature flags, and limits. This is the canonical discovery endpoint for all Fluxer clients." } }, "/applications/@me": { "get": { "operationId": "get_current_user_applications", "summary": "Get current bot application", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationsMeResponse"}}} }, "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/ThrottledError"}}}, "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 the application associated with the authenticated bot, including its owner and bot profile. Requires a valid bot token.", "security": [{"botToken": []}] } }, "/attachments/refresh-urls": { "post": { "operationId": "refresh_attachment_urls", "summary": "Refresh attachment URLs", "tags": ["Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshAttachmentUrlsResponse"}}} }, "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/ThrottledError"}}}, "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": "Reissues the expiring signature on attachment URLs. Returns one entry per requested URL, in the order they were requested, each pairing the URL exactly as it was sent with a freshly signed copy. A URL that is not an attachment URL of this instance is returned unchanged. No membership or existence check is performed.", "security": [{"botToken": []}, {"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshAttachmentUrlsRequest"}}} } } }, "/auth/authorize-ip": { "post": { "operationId": "authorize_ip_address", "summary": "Authorize IP address", "tags": ["Auth"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Verify and authorize a new IP address using the confirmation code sent via email. Completes IP authorization flow.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthorizeIpRequest"}}} } } }, "/auth/email-revert": { "post": { "operationId": "revert_email_change", "summary": "Revert email change", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthLoginResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Revert a pending email change using the verification token sent to the old email. Returns authentication token after successful revert.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailRevertRequest"}}} } } }, "/auth/forgot": { "post": { "operationId": "forgot_password", "summary": "Forgot password", "tags": ["Auth"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Initiate password reset process by email. A password reset link will be sent to the user's email address. Requires a solved captcha challenge (X-Captcha-Token).", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ForgotPasswordRequest"}}} } } }, "/auth/handoff/complete": { "post": { "operationId": "complete_handoff", "summary": "Complete handoff", "tags": ["Auth"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Complete the handoff process and authenticate on the target device using the handoff code.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffCompleteRequest"}}} } } }, "/auth/handoff/initiate": { "post": { "operationId": "initiate_handoff", "summary": "Initiate handoff", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffInitiateResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Start a handoff session to transfer authentication between devices. Returns a handoff code for device linking." } }, "/auth/handoff/{code}": { "delete": { "operationId": "cancel_handoff", "summary": "Cancel handoff", "tags": ["Auth"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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 an ongoing handoff session. The handoff code will no longer be valid for authentication.", "parameters": [ { "name": "code", "in": "path", "required": true, "schema": {"description": "The handoff code", "type": "string"}, "description": "The handoff code" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffCancelRequest"}}} } } }, "/auth/handoff/{code}/info": { "get": { "operationId": "get_handoff_info", "summary": "Get handoff info", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffInfoResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 device and location information about a pending handoff request. Non-destructive – the code remains valid after this call.", "parameters": [ { "name": "code", "in": "path", "required": true, "schema": {"description": "The handoff code", "type": "string"}, "description": "The handoff code" } ] } }, "/auth/handoff/{code}/status": { "get": { "operationId": "get_handoff_status", "summary": "Get handoff status", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffStatusResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Check the status of a handoff session. Returns whether the handoff has been completed or is still pending.", "parameters": [ { "name": "code", "in": "path", "required": true, "schema": {"description": "The handoff code", "type": "string"}, "description": "The handoff code" } ] }, "post": { "operationId": "get_handoff_status_with_secret", "summary": "Get handoff status with secret", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffStatusResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Check the status of a handoff session using the poll secret from initiation. Returns the authentication token once the handoff is complete and the presented secret matches.", "parameters": [ { "name": "code", "in": "path", "required": true, "schema": {"description": "The handoff code", "type": "string"}, "description": "The handoff code" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HandoffStatusRequest"}}} } } }, "/auth/ip-authorization/poll": { "get": { "operationId": "poll_ip_authorization", "summary": "Poll IP authorization", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IpAuthorizationPollResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Poll the status of an IP authorization request. Use the ticket parameter to check if verification has been completed.", "parameters": [ { "name": "ticket", "in": "query", "required": true, "schema": {"description": "The IP authorization ticket", "type": "string"}, "description": "The IP authorization ticket" } ] } }, "/auth/ip-authorization/resend": { "post": { "operationId": "resend_ip_authorization", "summary": "Resend IP authorization", "tags": ["Auth"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Request a new IP authorization verification code to be sent via email. Use if the original code was lost or expired.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaTicketRequest"}}} } } }, "/auth/login": { "post": { "operationId": "login_user", "summary": "Login account", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthLoginResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Authenticate with email and password. Returns authentication token if credentials are valid and MFA is not required. If MFA is enabled, returns a ticket for MFA verification. Requires a solved captcha challenge (X-Captcha-Token).", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginRequest"}}} } } }, "/auth/login/mfa/totp": { "post": { "operationId": "login_with_totp", "summary": "Login with TOTP", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Complete login by verifying TOTP code during multi-factor authentication. Requires the MFA ticket from initial login attempt.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaTotpRequest"}}} } } }, "/auth/login/mfa/webauthn": { "post": { "operationId": "login_with_webauthn_mfa", "summary": "Login with WebAuthn MFA", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Complete login by verifying WebAuthn response during MFA. Requires the MFA ticket from initial login attempt.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnMfaRequest"}}} } } }, "/auth/login/mfa/webauthn/authentication-options": { "post": { "operationId": "get_webauthn_mfa_options", "summary": "Get WebAuthn MFA options", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnAuthenticationOptionsResponse"}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 WebAuthn challenge and options for multi-factor authentication. Requires the MFA ticket from initial login.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaTicketRequest"}}} } } }, "/auth/logout": { "post": { "operationId": "logout_user", "summary": "Logout account", "tags": ["Auth"], "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/ThrottledError"}}}, "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": "Invalidate the current authentication token and end the session. The auth token in the Authorization header will no longer be valid. A bot token has no session to end, so the call answers 204 and the token stays valid.", "security": [{"botToken": []}, {"sessionToken": []}] } }, "/auth/origin-handoff": { "post": { "operationId": "create_origin_handoff", "summary": "Create origin handoff", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OriginHandoffCreateResponse"}}} }, "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/ThrottledError"}}}, "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": "Store encrypted client state for up to two minutes so another first-party web origin can redeem it once. The receiving origin must present the nonce whose SHA-256 digest is sent here.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OriginHandoffCreateRequest"}}} } } }, "/auth/origin-handoff/redeem": { "post": { "operationId": "redeem_origin_handoff", "summary": "Redeem origin handoff", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OriginHandoffRedeemResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Return the encrypted client state stored by create origin handoff and delete it in the same step. A wrong nonce also consumes the handoff. On the official instance the request must come from a first-party web origin.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OriginHandoffRedeemRequest"}}} } } }, "/auth/passkey-bridge": { "post": { "operationId": "start_passkey_bridge_login", "summary": "Start passkey bridge sign in", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeStartResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Start a sign in or two-factor ceremony for a passkey that belongs to the paired first-party origin. Only available on the official instance from the new origin.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeLoginStartRequest"}}} } } }, "/auth/passkey-bridge/{ceremony_id}/cancel": { "post": { "operationId": "cancel_passkey_bridge", "summary": "Cancel passkey bridge", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeFinishResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 passkey bridge ceremony that has not completed.", "parameters": [ { "name": "ceremony_id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Identifier of the passkey ceremony" }, "description": "Identifier of the passkey ceremony" } ] } }, "/auth/passkey-bridge/{ceremony_id}/complete": { "post": { "operationId": "complete_passkey_bridge", "summary": "Complete passkey bridge", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeFinishResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Verify the WebAuthn response for a pending passkey bridge ceremony. A failed verification leaves the ceremony pending so it can be retried.", "parameters": [ { "name": "ceremony_id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Identifier of the passkey ceremony" }, "description": "Identifier of the passkey ceremony" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeCompleteRequest"}}} } } }, "/auth/passkey-bridge/{ceremony_id}/options": { "post": { "operationId": "get_passkey_bridge_options", "summary": "Get passkey bridge options", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeOptionsResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 WebAuthn authentication options for a pending passkey bridge ceremony. The request must come from the origin that runs the ceremony.", "parameters": [ { "name": "ceremony_id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Identifier of the passkey ceremony" }, "description": "Identifier of the passkey ceremony" } ] } }, "/auth/passkey-bridge/{ceremony_id}/redeem": { "post": { "operationId": "redeem_passkey_bridge_login", "summary": "Redeem passkey bridge sign in", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeLoginRedeemResponse"}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Redeem a finished sign in or two-factor passkey bridge ceremony once. Requires the nonce kept by the starting page and the completion code handed back when the ceremony finished.", "parameters": [ { "name": "ceremony_id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Identifier of the passkey ceremony" }, "description": "Identifier of the passkey ceremony" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeRedeemRequest"}}} } } }, "/auth/register": { "post": { "operationId": "register_account", "summary": "Register account", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthRegisterResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 a new user account with email and password. Requires a solved captcha challenge (X-Captcha-Token). User account is created but must verify email before logging in.", "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RegisterRequest"}}} } } }, "/auth/reset": { "post": { "operationId": "reset_password", "summary": "Reset password", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthLoginResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Complete the password reset flow using the token from the reset email. Returns authentication token after successful password reset.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResetPasswordRequest"}}} } } }, "/auth/reset/{token}": { "get": { "operationId": "validate_reset_password_token", "summary": "Validate reset password token", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/ValidateResetPasswordTokenResponse"}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Check whether a password reset token is valid and unexpired before allowing the user to submit a new password. Does not consume the token.", "parameters": [ { "name": "token", "in": "path", "required": true, "schema": {"description": "Password reset token from email", "type": "string"}, "description": "Password reset token from email" } ] } }, "/auth/sessions": { "get": { "operationId": "list_auth_sessions", "summary": "List auth sessions", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthSessionsResponse"}}} }, "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/ThrottledError"}}}, "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 active authentication sessions for the current user. Requires authentication.", "security": [{"sessionToken": []}] } }, "/auth/sessions/logout": { "post": { "operationId": "logout_all_sessions", "summary": "Logout all sessions", "tags": ["Auth"], "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/ThrottledError"}}}, "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": "Invalidate all active authentication sessions for the current user. Requires sudo mode verification for security.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/LogoutAuthSessionsWithVerificationRequest"}} } } } }, "/auth/sso/complete": { "post": { "operationId": "complete_sso", "summary": "Complete SSO", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SsoCompleteResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Complete the SSO authentication flow with the authorization code from the SSO provider. Returns authentication token and user information.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SsoCompleteRequest"}}} } } }, "/auth/sso/start": { "post": { "operationId": "start_sso", "summary": "Start SSO", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SsoStartResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Initiate a new Single Sign-On (SSO) session. Returns a session URL to be completed with SSO provider credentials.", "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SsoStartRequest"}}} } } }, "/auth/sso/status": { "get": { "operationId": "get_sso_status", "summary": "Get SSO status", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SsoStatusResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 status of the SSO authentication session without authentication required." } }, "/auth/username-suggestions": { "post": { "operationId": "get_username_suggestions", "summary": "Get username suggestions", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UsernameSuggestionsResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 username suggestions based on a provided global name for new account registration.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UsernameSuggestionsRequest"}}} } } }, "/auth/verify": { "post": { "operationId": "verify_email", "summary": "Verify email", "tags": ["Auth"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Verify user email address using the code sent during registration. Email verification is required before the account becomes fully usable.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VerifyEmailRequest"}}} } } }, "/auth/verify/resend": { "post": { "operationId": "resend_verification_email", "summary": "Resend verification email", "tags": ["Auth"], "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/ThrottledError"}}}, "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": "Request a new email verification code to be sent. Requires authentication. Use this if the original verification email was lost or expired.", "security": [{"sessionToken": []}] } }, "/auth/webauthn/authenticate": { "post": { "operationId": "authenticate_with_webauthn", "summary": "Authenticate with WebAuthn", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Complete passwordless login using WebAuthn (biometrics or security key). Returns authentication token on success.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnAuthenticateRequest"}}} } } }, "/auth/webauthn/authentication-options": { "post": { "operationId": "get_webauthn_authentication_options", "summary": "Get WebAuthn authentication options", "tags": ["Auth"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnAuthenticationOptionsResponse"}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 WebAuthn authentication challenge and options for passwordless login with biometrics or security keys." } }, "/channels/messages/bulk": { "post": { "operationId": "bulk_list_channel_messages", "summary": "List messages from multiple channels", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkMessageFetchResponse"}}} }, "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/ThrottledError"}}}, "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": "Fetches bounded message windows from multiple channels in one request. Each entry uses the same pagination semantics as the single-channel message list endpoint.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkMessageFetchRequest"}}} } } }, "/channels/{channel_id}": { "get": { "operationId": "get_channel", "summary": "Fetch a channel", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelResponse"}}} }, "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/ThrottledError"}}}, "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 the channel object including metadata, member list, and settings. Requires the user to be a member of the channel with view permissions.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] }, "patch": { "operationId": "update_channel", "summary": "Update channel settings", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelResponse"}}} }, "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/ThrottledError"}}}, "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 channel properties such as name, description, topic, nsfw flag, and slowmode. Requires management permissions in the channel.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelUpdateRequestBody"}}} } }, "delete": { "operationId": "delete_channel", "summary": "Delete a channel", "tags": ["Channels"], "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/ThrottledError"}}}, "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 removes a channel and all its content. Only server administrators or the channel owner can delete channels. When `delete_messages` is set on a group DM, the caller's authored messages in the group are deleted before leaving and sudo mode verification is required.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "silent", "in": "query", "required": false, "schema": { "description": "Whether to suppress the system message when leaving a group DM", "default": "false", "type": "string" }, "description": "Whether to suppress the system message when leaving a group DM" }, { "name": "delete_messages", "in": "query", "required": false, "schema": { "description": "When leaving a group DM, also delete all messages the caller has sent in the channel", "default": "false", "type": "string" }, "description": "When leaving a group DM, also delete all messages the caller has sent in the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/channels/{channel_id}/attachments": { "post": { "operationId": "request_presigned_message_attachment_uploads", "summary": "Request presigned attachment upload URLs", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/PresignedAttachmentUploadResponse"}} } }, "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/ThrottledError"}}}, "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 presigned upload URLs for message attachments in the target channel. Small files (<=10MB) return a singlepart PUT URL; larger files return a multipart plan (upload_id + per-part URLs) that the client should complete via the matching /attachments/complete endpoint. Requires message send and attachment permissions in guild channels.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PresignedAttachmentUploadRequest"}}} } } }, "/channels/{channel_id}/attachments/complete": { "post": { "operationId": "complete_multipart_message_attachment_uploads", "summary": "Finalize multipart attachment uploads", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/CompleteMultipartAttachmentUploadResponse"}} } }, "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/ThrottledError"}}}, "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": "Finalizes one or more multipart attachment uploads. Called after all chunks have been PUT to their presigned URLs. The server lists the uploaded parts and issues S3 CompleteMultipartUpload. Returns the finalized upload keys, which can be referenced in a subsequent message create request.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/CompleteMultipartAttachmentUploadRequest"}} } } } }, "/channels/{channel_id}/call": { "get": { "operationId": "get_call_eligibility", "summary": "Get call eligibility status", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CallEligibilityResponse"}}} }, "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/ThrottledError"}}}, "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": "Checks whether a call can be initiated in the channel and if there is an active call. Returns ringable status and silent mode flag.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] }, "patch": { "operationId": "update_call_region", "summary": "Update call region", "tags": ["Channels"], "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/ThrottledError"}}}, "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 the voice server region for an active call to optimise latency and connection quality.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CallUpdateBodySchema"}}} } } }, "/channels/{channel_id}/call/end": { "post": { "operationId": "end_call", "summary": "End call session", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Terminates an active voice call in the channel. Records the call end state for all participants.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/call/ring": { "post": { "operationId": "ring_call_recipients", "summary": "Ring call recipients", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Sends ringing notifications to specified users in a call. If no recipients are specified, rings all channel members.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CallRingBodySchema"}}} } } }, "/channels/{channel_id}/call/stop-ringing": { "post": { "operationId": "stop_ringing_call_recipients", "summary": "Stop ringing call recipients", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Stops ringing notifications for specified users in a call. Allows callers to stop notifying users who have declined or not responded.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CallRingBodySchema"}}} } } }, "/channels/{channel_id}/follower-stats": { "get": { "operationId": "get_channel_follower_stats", "summary": "Get announcement channel follower stats", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelFollowerStatsResponse"}}} }, "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/ThrottledError"}}}, "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 how many channels and distinct guilds follow an announcement channel. Requires View Channel on the announcement channel.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/followers": { "post": { "operationId": "follow_channel", "summary": "Follow an announcement channel", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FollowedChannelResponse"}}} }, "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/ThrottledError"}}}, "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": "Follows an announcement channel into a text channel. Creates a channel follower webhook in the target channel that receives every message published in the announcement channel. Requires Manage Webhooks in the target channel and View Channel on the announcement channel.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelFollowRequest"}}} } } }, "/channels/{channel_id}/invites": { "post": { "operationId": "create_channel_invite", "summary": "Create channel invite", "tags": ["Invites"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InviteMetadataResponseSchema"}}} }, "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/ThrottledError"}}}, "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 invite for the specified channel with optional parameters such as maximum age, maximum uses, and temporary membership settings. The authenticated user must have permission to create invites for the channel. Returns the created invite with full metadata including usage statistics.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelInviteCreateRequest"}}} } }, "get": { "operationId": "list_channel_invites", "summary": "List channel invites", "tags": ["Invites"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InviteMetadataListResponse"}}} }, "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/ThrottledError"}}}, "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 all currently active invites for the specified channel, including invite codes, creators, expiration times, and usage statistics. The authenticated user must have permission to manage invites for the channel. Returns an array of invite metadata objects.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/messages": { "get": { "operationId": "list_messages", "summary": "List messages in a channel", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageListResponse"}}} }, "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/ThrottledError"}}}, "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 a paginated list of messages from a channel. User must have permission to view the channel. Supports pagination via limit, before, after, and around parameters. Returns messages in reverse chronological order (newest first).", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "limit", "in": "query", "required": false, "schema": { "description": "Number of messages to return (1-100, default 50)", "default": "50", "type": "string" }, "description": "Number of messages to return (1-100, default 50)" }, { "name": "before", "in": "query", "required": false, "schema": { "description": "Get messages before this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get messages before this message ID" }, { "name": "after", "in": "query", "required": false, "schema": { "description": "Get messages after this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get messages after this message ID" }, { "name": "around", "in": "query", "required": false, "schema": { "description": "Get messages around this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get messages around this message ID" } ] }, "post": { "operationId": "send_message", "summary": "Send a message", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "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/ThrottledError"}}}, "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": "Sends a new message to a channel. Requires permission to send messages in the target channel. Supports text content, embeds, attachments (multipart), and mentions. Returns the created message object with full details.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MessageRequestSchema"}}, "multipart/form-data": {"schema": {"$ref": "#/components/schemas/MessageRequestSchema"}} } } } }, "/channels/{channel_id}/messages/ack": { "delete": { "operationId": "clear_channel_read_state", "summary": "Clear channel read state", "tags": ["Channels", "Messages"], "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/ThrottledError"}}}, "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": "Deprecated. Has no effect on the read state. Returns 204 No Content.", "deprecated": true, "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/messages/bulk-delete": { "post": { "operationId": "bulk_delete_messages", "summary": "Bulk delete messages", "tags": ["Channels", "Messages"], "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/ThrottledError"}}}, "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 multiple messages at once. Requires moderation or admin permissions. Commonly used for message cleanup. Messages from different authors can be deleted together. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkDeleteMessagesRequest"}}} } } }, "/channels/{channel_id}/messages/bulk-delete-mine": { "post": { "operationId": "bulk_delete_my_messages_in_channel", "summary": "Bulk delete my messages in channel", "tags": ["Channels", "Messages"], "responses": { "202": {"description": "Success"}, "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/ThrottledError"}}}, "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 every message the caller has authored in the specified channel. Requires sudo mode verification. Returns 202 Accepted once matching messages have been removed.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/channels/{channel_id}/messages/pins": { "get": { "operationId": "list_pinned_messages", "summary": "List pinned messages", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelPinsResponse"}}} }, "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/ThrottledError"}}}, "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 a paginated list of messages pinned in a channel. User must have permission to view the channel. Supports pagination via limit and before parameters. Returns pinned messages with their pin timestamps.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "limit", "in": "query", "required": false, "schema": { "description": "Maximum number of pinned messages to return (1-50)", "type": "integer", "minimum": 1, "maximum": 50 }, "description": "Maximum number of pinned messages to return (1-50)" }, { "name": "before", "in": "query", "required": false, "schema": {"description": "Get pinned messages before this timestamp", "type": "string"}, "description": "Get pinned messages before this timestamp" } ] } }, "/channels/{channel_id}/messages/purge": { "post": { "operationId": "purge_personal_notes_messages", "summary": "Purge all messages in personal notes", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessagePurgeResponse"}}} }, "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/ThrottledError"}}}, "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 every message in the caller's personal notes channel. Only allowed on the authenticated user's DM_PERSONAL_NOTES channel. Returns the total number of deleted messages.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/messages/{message_id}": { "get": { "operationId": "get_message", "summary": "Fetch a message", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "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/ThrottledError"}}}, "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 a specific message by ID. User must have permission to view the channel and the message must exist. Returns full message details including content, author, reactions, and attachments.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] }, "patch": { "operationId": "edit_message", "summary": "Edit a message", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "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/ThrottledError"}}}, "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 an existing message. Only the message author can edit messages (or admins with proper permissions). Supports updating content, embeds, and attachments. Returns the updated message object. Maintains original message ID and timestamps.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MessageUpdateRequestSchema"}}, "multipart/form-data": {"schema": {"$ref": "#/components/schemas/MessageUpdateRequestSchema"}} } } }, "delete": { "operationId": "delete_message", "summary": "Delete a message", "tags": ["Channels", "Messages"], "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/ThrottledError"}}}, "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 message permanently. Only the message author can delete messages (or admins/moderators with proper permissions). Cannot be undone. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/channels/{channel_id}/messages/{message_id}/ack": { "post": { "operationId": "acknowledge_message", "summary": "Acknowledge a message", "tags": ["Channels", "Messages"], "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/ThrottledError"}}}, "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": "Marks a message as read and records acknowledgement state. Only available for regular user accounts. Updates mention count if provided. Returns 204 No Content on success.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageAckRequest"}}} } } }, "/channels/{channel_id}/messages/{message_id}/attachments/{attachment_id}": { "delete": { "operationId": "delete_message_attachment", "summary": "Delete a message attachment", "tags": ["Channels", "Messages"], "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/ThrottledError"}}}, "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": "Removes a specific attachment from a message while keeping the message intact. Only the message author can remove attachments (or admins/moderators). Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "attachment_id", "in": "path", "required": true, "schema": {"description": "The ID of the attachment", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the attachment" } ] } }, "/channels/{channel_id}/messages/{message_id}/crosspost": { "post": { "operationId": "crosspost_message", "summary": "Publish a message to following channels", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "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/ThrottledError"}}}, "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": "Publishes a message in an announcement channel to every channel that follows it. The author needs Send Messages. Anyone else needs Send Messages and Manage Messages. Only default messages that are not replies, forwards or copies can be published, and each message can be published once. Copies are delivered asynchronously. Publishing is limited per channel (10 in a row, then one every 6 minutes) and per community (30 in a row, then one every 2 minutes). Returns the updated message with the CROSSPOSTED flag set.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/channels/{channel_id}/messages/{message_id}/crosspost-source": { "get": { "operationId": "get_message_crosspost_source", "summary": "Get the source community of a published message copy", "tags": ["Channels", "Messages"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CrosspostSourceResponse"}}} }, "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/ThrottledError"}}}, "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 the public profile of the community a message copy was published from. Works on copies delivered to a following channel and on the system message posted when a channel starts following. Needs the same access as fetching the message. The response holds the community name, icon, banner, badge features, approximate counts and whether it can be joined through discovery.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/channels/{channel_id}/messages/{message_id}/memes": { "post": { "operationId": "create_meme_from_message", "summary": "Create meme from message", "tags": ["Saved Media"], "responses": { "201": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FavoriteMemeResponse"}}} }, "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/ThrottledError"}}}, "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": "Saves a message attachment as a favorite meme.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateFavoriteMemeBodySchema"}}} } } }, "/channels/{channel_id}/messages/{message_id}/reactions": { "delete": { "operationId": "remove_all_reactions", "summary": "Remove all reactions from message", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes all emoji reactions from a message, regardless of emoji type or user. All reactions are permanently deleted. Requires moderator or higher permissions. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/channels/{channel_id}/messages/{message_id}/reactions/{emoji}": { "get": { "operationId": "list_reaction_users", "summary": "List users who reacted with emoji", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReactionUsersListResponse"}}} }, "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/ThrottledError"}}}, "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 a paginated list of users who reacted to a message with a specific emoji. Supports pagination via limit and after parameters. Returns user objects for each reaction.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "emoji", "in": "path", "required": true, "schema": {"description": "The emoji identifier", "type": "string"}, "description": "The emoji identifier" }, { "name": "limit", "in": "query", "required": false, "schema": { "description": "Maximum number of users to return (1-100)", "type": "integer", "minimum": 1, "maximum": 100 }, "description": "Maximum number of users to return (1-100)" }, { "name": "after", "in": "query", "required": false, "schema": {"description": "Get users after this user ID", "$ref": "#/components/schemas/SnowflakeType"}, "description": "Get users after this user ID" } ] }, "delete": { "operationId": "remove_all_reactions_for_emoji", "summary": "Remove all reactions with emoji", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes all emoji reactions of a specific type from a message. All users' reactions with that emoji are deleted. Requires moderator or higher permissions. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "emoji", "in": "path", "required": true, "schema": {"description": "The emoji identifier", "type": "string"}, "description": "The emoji identifier" } ] } }, "/channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me": { "put": { "operationId": "add_reaction", "summary": "Add reaction to message", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Adds an emoji reaction to a message. Each user can react once with each emoji. Cannot be used from unclaimed accounts outside personal notes. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "emoji", "in": "path", "required": true, "schema": {"description": "The emoji identifier", "type": "string"}, "description": "The emoji identifier" }, { "name": "session_id", "in": "query", "required": false, "schema": {"description": "The session ID for synchronization", "type": "string"}, "description": "The session ID for synchronization" } ] }, "delete": { "operationId": "remove_own_reaction", "summary": "Remove own reaction from message", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes your own emoji reaction from a message. Returns 204 No Content on success. Has no effect if you haven't reacted with that emoji.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "emoji", "in": "path", "required": true, "schema": {"description": "The emoji identifier", "type": "string"}, "description": "The emoji identifier" }, { "name": "session_id", "in": "query", "required": false, "schema": {"description": "The session ID for synchronization", "type": "string"}, "description": "The session ID for synchronization" } ] } }, "/channels/{channel_id}/messages/{message_id}/reactions/{emoji}/users": { "get": { "operationId": "list_reaction_users_v2", "summary": "List users who reacted with emoji", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReactionUsersPageResponse"}}} }, "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/ThrottledError"}}}, "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 a paginated list of users who reacted to a message with a specific emoji. The response body includes pagination metadata, including the next cursor, so clients do not need to infer it from returned users.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "emoji", "in": "path", "required": true, "schema": {"description": "The emoji identifier", "type": "string"}, "description": "The emoji identifier" }, { "name": "limit", "in": "query", "required": false, "schema": { "description": "Maximum number of users to return (1-100)", "type": "integer", "minimum": 1, "maximum": 100 }, "description": "Maximum number of users to return (1-100)" }, { "name": "after", "in": "query", "required": false, "schema": {"description": "Get users after this user ID", "$ref": "#/components/schemas/SnowflakeType"}, "description": "Get users after this user ID" } ] } }, "/channels/{channel_id}/messages/{message_id}/reactions/{emoji}/{target_id}": { "delete": { "operationId": "remove_reaction", "summary": "Remove reaction from message", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes a specific user's emoji reaction from a message. Requires moderator or higher permissions to remove reactions from other users. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "emoji", "in": "path", "required": true, "schema": {"description": "The emoji identifier", "type": "string"}, "description": "The emoji identifier" }, { "name": "target_id", "in": "path", "required": true, "schema": {"description": "The ID of the target user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the target user" }, { "name": "session_id", "in": "query", "required": false, "schema": {"description": "The session ID for synchronization", "type": "string"}, "description": "The session ID for synchronization" } ] } }, "/channels/{channel_id}/permissions/{overwrite_id}": { "put": { "operationId": "set_channel_permission_overwrite", "summary": "Set permission overwrite for channel", "tags": ["Channels"], "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/ThrottledError"}}}, "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 or updates permission overrides for a role or user in the channel. Allows fine-grained control over who can view, send messages, or manage the channel.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "overwrite_id", "in": "path", "required": true, "schema": { "description": "The ID of the permission overwrite", "$ref": "#/components/schemas/SnowflakeType" }, "description": "The ID of the permission overwrite" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PermissionOverwriteCreateRequest"}}} } }, "delete": { "operationId": "delete_channel_permission_overwrite", "summary": "Delete permission overwrite", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes a permission override from a role or user in the channel, restoring default permissions. Requires channel management rights.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "overwrite_id", "in": "path", "required": true, "schema": { "description": "The ID of the permission overwrite", "$ref": "#/components/schemas/SnowflakeType" }, "description": "The ID of the permission overwrite" } ] } }, "/channels/{channel_id}/pins/ack": { "post": { "operationId": "acknowledge_pins", "summary": "Acknowledge new pin notifications", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Marks all new pin notifications in a channel as acknowledged. Clears the notification badge for pinned messages. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/pins/{message_id}": { "put": { "operationId": "pin_message", "summary": "Pin a message", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Pins a message to the channel. Requires permission to manage pins (typically moderator or higher). Pinned messages are highlighted and searchable. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] }, "delete": { "operationId": "unpin_message", "summary": "Unpin a message", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Unpins a message from the channel. Requires permission to manage pins. The message remains in the channel but is no longer highlighted. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/channels/{channel_id}/recipients/{user_id}": { "put": { "operationId": "add_group_dm_recipient", "summary": "Add recipient to group DM", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Adds a user to a group direct message channel. The requesting user must be a member of the group DM. Requires a solved captcha challenge (X-Captcha-Token).", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] }, "delete": { "operationId": "remove_group_dm_recipient", "summary": "Remove recipient from group DM", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes a user from a group direct message channel. The requesting user must be a member with appropriate permissions. When the caller removes themself with `delete_messages`, their authored messages in the group are deleted before leaving and sudo mode verification is required.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" }, { "name": "silent", "in": "query", "required": false, "schema": { "description": "Whether to suppress the system message when leaving a group DM", "default": "false", "type": "string" }, "description": "Whether to suppress the system message when leaving a group DM" }, { "name": "delete_messages", "in": "query", "required": false, "schema": { "description": "When leaving a group DM, also delete all messages the caller has sent in the channel", "default": "false", "type": "string" }, "description": "When leaving a group DM, also delete all messages the caller has sent in the channel" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/channels/{channel_id}/rtc-regions": { "get": { "operationId": "list_rtc_regions", "summary": "List RTC regions", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RtcRegionListResponse"}}} }, "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/ThrottledError"}}}, "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 available voice and video calling regions for the channel, used to optimise connection quality. Requires membership with call permissions.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/slowmode": { "get": { "operationId": "get_channel_slowmode_state", "summary": "Fetch slowmode state", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelSlowmodeStateResponse"}}} }, "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/ThrottledError"}}}, "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 the current slowmode rate-limit state for the calling user in this channel, including the configured interval and the time at which they are next allowed to send a message. Lets clients restore slowmode countdowns across devices without relying on local persistence.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/typing": { "post": { "operationId": "indicate_typing", "summary": "Indicate typing activity", "tags": ["Channels", "Messages"], "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/ThrottledError"}}}, "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": "Notifies other users in the channel that you are actively typing. Typing indicators typically expire after a short period (usually 10 seconds). Returns 204 No Content. Commonly called repeatedly while the user is composing a message.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/channels/{channel_id}/webhooks": { "get": { "operationId": "list_channel_webhooks", "summary": "List channel webhooks", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookListResponse"}}} }, "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/ThrottledError"}}}, "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 a list of all webhooks configured in the specified channel. Requires the user to have appropriate permissions to view webhooks in the channel.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] }, "post": { "operationId": "create_webhook", "summary": "Create webhook", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookCreateResponse"}}} }, "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/ThrottledError"}}}, "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 webhook in the specified channel with the provided name and optional avatar. Returns the newly created webhook object including its ID and token.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookCreateRequest"}}} } } }, "/discovery/categories": { "get": { "operationId": "list_discovery_categories", "summary": "List discovery categories", "tags": ["Discovery"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryCategoryListResponse"}}} }, "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/ThrottledError"}}}, "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 the list of available discovery categories.", "security": [{"botToken": []}, {"sessionToken": []}] } }, "/discovery/guilds": { "get": { "operationId": "search_discovery_guilds", "summary": "Search discoverable guilds", "tags": ["Discovery"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryGuildListResponse"}}} }, "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/ThrottledError"}}}, "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": "Search for guilds listed in the discovery directory.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "query", "in": "query", "required": false, "schema": {"description": "Search query", "type": "string", "maxLength": 100}, "description": "Search query" }, { "name": "category", "in": "query", "required": false, "schema": {"description": "Filter by category", "type": "integer", "minimum": 0, "maximum": 8}, "description": "Filter by category" }, { "name": "language", "in": "query", "required": false, "schema": {"description": "Filter by primary community language", "type": "string"}, "description": "Filter by primary community language" }, { "name": "tag", "in": "query", "required": false, "schema": {"description": "Filter by a specific custom tag", "type": "string", "maxLength": 30}, "description": "Filter by a specific custom tag" }, { "name": "sort_by", "in": "query", "required": false, "schema": { "description": "Sort order", "type": "string", "enum": ["member_count", "online_count", "relevance"] }, "description": "Sort order" }, { "name": "limit", "in": "query", "required": false, "schema": { "default": 24, "description": "Number of results to return", "type": "integer", "minimum": 1, "maximum": 48 }, "description": "Number of results to return" }, { "name": "offset", "in": "query", "required": false, "schema": { "default": 0, "description": "Pagination offset", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "description": "Pagination offset" } ] } }, "/discovery/guilds/{guild_id}/join": { "post": { "operationId": "join_discovery_guild", "summary": "Join a discoverable guild", "tags": ["Discovery"], "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/ThrottledError"}}}, "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": "Join a guild that is listed in discovery without needing an invite.", "security": [{"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/donations/checkout": { "post": { "operationId": "create_donation_checkout", "summary": "Create donation checkout session", "tags": ["Donations"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DonationCheckoutResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 Stripe checkout session for a one-time or recurring donation.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DonationCheckoutRequest"}}} } } }, "/donations/manage": { "get": { "operationId": "manage_donation", "summary": "Open donation management link", "tags": ["Donations"], "responses": { "302": {"description": "Success"}, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Checks the magic link token without consuming it and redirects to the donation management confirmation page.", "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string", "minLength": 64, "maxLength": 64, "description": "Magic link token for donor authentication" }, "description": "Magic link token for donor authentication" } ] }, "post": { "operationId": "redeem_donation_magic_link", "summary": "Redeem donation management link", "tags": ["Donations"], "responses": { "302": {"description": "Success"}, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Consumes the magic link token and redirects to the Stripe billing portal.", "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string", "minLength": 64, "maxLength": 64, "description": "Magic link token for donor authentication" }, "description": "Magic link token for donor authentication" } ] } }, "/donations/request-link": { "post": { "operationId": "request_donation_magic_link", "summary": "Request donation management link", "tags": ["Donations"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Sends a magic link email to the provided address for managing recurring donations.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DonationRequestLinkRequest"}}} } } }, "/emojis/{emoji_id}/metadata": { "get": { "operationId": "get_emoji_metadata", "summary": "Get emoji metadata", "tags": ["Emojis"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiMetadataResponse"}}} }, "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/ThrottledError"}}}, "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": "Lookup minimal metadata for a custom emoji by id, including whether the source guild allows the in-app one-click clone shortcut. Does not require membership in the source guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "emoji_id", "in": "path", "required": true, "schema": {"description": "The ID of the emoji", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the emoji" } ] } }, "/emojis/{emoji_id}/source": { "get": { "operationId": "get_emoji_source", "summary": "Get emoji source guild", "tags": ["Emojis"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/GuildExpressionSourceGuildResponse"}} } }, "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/ThrottledError"}}}, "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": "Lookup the public presentation of the guild a custom emoji belongs to. Returned when the guild is discoverable or the caller is a member of it. Returns an unknown guild error when the guild is private and the caller is not a member, or when the guild is unavailable.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "emoji_id", "in": "path", "required": true, "schema": {"description": "The ID of the emoji", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the emoji" } ] } }, "/experiments": { "get": { "operationId": "get_experiments", "summary": "Get the experiment assignments", "tags": ["Experiments"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ExperimentAssignmentsResponse"}}} }, "304": {"description": "Not Modified"}, "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/ThrottledError"}}}, "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 the polling cadence and every experiment assignment resolved for the authenticated user from the instance configuration. Clients revalidate with If-None-Match and receive 304 when nothing changed.", "security": [{"sessionToken": []}, {"botToken": []}] } }, "/gateway/bot": { "get": { "operationId": "get_gateway_bot", "summary": "Get gateway information", "tags": ["Gateway"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GatewayBotResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 gateway connection information and recommended shard count for establishing WebSocket connections." } }, "/gifs/featured": { "get": { "operationId": "get_featured_gifs", "summary": "Get featured GIFs", "tags": ["GIFs"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifFeaturedResponse"}}} }, "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/ThrottledError"}}}, "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 currently featured GIFs and category tags from the active provider.", "security": [{"sessionToken": []}], "parameters": [ { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/gifs/register-share": { "post": { "operationId": "register_gifs_share", "summary": "Register a GIF share", "tags": ["GIFs"], "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/ThrottledError"}}}, "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": "Notifies the active GIF provider that the caller is sharing one of its GIFs.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifRegisterShareRequest"}}} } } }, "/gifs/search": { "get": { "operationId": "search_gifs", "summary": "Search GIFs", "tags": ["GIFs"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifListResponse"}}} }, "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/ThrottledError"}}}, "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 the active GIF provider for GIFs matching the given query. The provider name is returned in the X-Fluxer-GIF-Provider response header so clients can adapt without refetching .well-known.", "security": [{"sessionToken": []}], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": {"description": "The search query", "type": "string"}, "description": "The search query" }, { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/gifs/suggest": { "get": { "operationId": "get_gifs_search_suggestions", "summary": "Get GIF search suggestions", "tags": ["GIFs"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifSearchSuggestionsResponse"}}} }, "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/ThrottledError"}}}, "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 search-term suggestions from the active GIF provider for the given partial query.", "security": [{"sessionToken": []}], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": {"description": "The search query", "type": "string"}, "description": "The search query" }, { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/gifs/trending": { "get": { "operationId": "get_trending_gifs", "summary": "Get trending GIFs", "tags": ["GIFs"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifListResponse"}}} }, "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/ThrottledError"}}}, "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 trending GIFs from the active provider.", "security": [{"sessionToken": []}], "parameters": [ { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/gifts/{code}": { "get": { "operationId": "get_gift_code", "summary": "Get gift code", "tags": ["Gifts"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GiftCodeResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 information about a gift code, including sender details and premium entitlements.", "parameters": [ { "name": "code", "in": "path", "required": true, "schema": {"description": "The gift code", "type": "string"}, "description": "The gift code" } ] } }, "/gifts/{code}/redeem": { "post": { "operationId": "redeem_gift_code", "summary": "Redeem gift code", "tags": ["Gifts"], "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/ThrottledError"}}}, "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": "Redeems a gift code for the authenticated user, applying premium benefits.", "security": [{"sessionToken": []}], "parameters": [ { "name": "code", "in": "path", "required": true, "schema": {"description": "The gift code", "type": "string"}, "description": "The gift code" } ] } }, "/guilds": { "post": { "operationId": "create_guild", "summary": "Create guild", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildResponse"}}} }, "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/ThrottledError"}}}, "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": "Only claimed, email-verified non-bot users can create guilds. A self-hosted instance can restrict creation to admins and users granted the feature_guild_create limit.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildCreateRequest"}}} } } }, "/guilds/{guild_id}": { "get": { "operationId": "get_guild", "summary": "Get guild information", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildResponse"}}} }, "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/ThrottledError"}}}, "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": "User must be a member of the guild to access this endpoint. Requires guilds OAuth scope if using bearer token.", "security": [{"botToken": []}, {"oauth2Token": ["guilds"]}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] }, "patch": { "operationId": "update_guild", "summary": "Update guild settings", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildResponse"}}} }, "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/ThrottledError"}}}, "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": "Requires manage_guild permission. Updates guild name, description, icon, banner, and other configuration options.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildUpdateRequest"}}} } } }, "/guilds/{guild_id}/audit-logs": { "get": { "operationId": "list_guild_audit_logs", "summary": "List guild audit logs", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildAuditLogListResponse"}}} }, "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/ThrottledError"}}}, "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 guild audit logs. Requires view_audit_logs permission. Returns guild activity history with pagination and action filtering.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "limit", "in": "query", "required": false, "schema": { "description": "Maximum number of audit log entries to return (1-100)", "maximum": 100, "$ref": "#/components/schemas/Int32Type" }, "description": "Maximum number of audit log entries to return (1-100)" }, { "name": "before", "in": "query", "required": false, "schema": { "description": "Get entries before this audit log entry ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get entries before this audit log entry ID" }, { "name": "after", "in": "query", "required": false, "schema": { "description": "Get entries after this audit log entry ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get entries after this audit log entry ID" }, { "name": "user_id", "in": "query", "required": false, "schema": { "description": "Filter entries by the user who performed the action", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Filter entries by the user who performed the action" }, { "name": "action_type", "in": "query", "required": false, "schema": { "description": "Filter entries by the type of action", "$ref": "#/components/schemas/AuditLogActionTypeInput" }, "description": "Filter entries by the type of action" } ] } }, "/guilds/{guild_id}/bans": { "get": { "operationId": "list_guild_bans", "summary": "List guild bans", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildBanListResponse"}}} }, "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/ThrottledError"}}}, "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 guild bans. Requires ban_members permission. Returns all banned users for the guild including ban reasons and expiry times.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/guilds/{guild_id}/bans/{user_id}": { "put": { "operationId": "ban_guild_member", "summary": "Ban guild member", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 guild member. Requires ban_members permission. Prevents user from joining; optionally deletes recent messages and sets ban expiry duration.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildBanCreateRequest"}}} } }, "delete": { "operationId": "unban_guild_member", "summary": "Unban guild member", "tags": ["Guilds"], "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/ThrottledError"}}}, "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": "Unban guild member. Requires ban_members permission. Removes ban and allows user to rejoin the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] } }, "/guilds/{guild_id}/channels": { "get": { "operationId": "list_guild_channels", "summary": "List guild channels", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelListResponse"}}} }, "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/ThrottledError"}}}, "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 guild channels. Returns all channels in the guild that the user has access to view.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] }, "post": { "operationId": "create_guild_channel", "summary": "Create guild channel", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelResponse"}}} }, "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/ThrottledError"}}}, "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 guild channel. Requires manage_channels permission. Creates a new text, voice, or category channel in the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelCreateRequest"}}} } }, "patch": { "operationId": "update_guild_channel_positions", "summary": "Update channel positions", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 channel positions. Requires manage_channels permission. Reorders channels and optionally changes parent categories and permission locks.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelPositionUpdateRequest"}}} } } }, "/guilds/{guild_id}/delete": { "post": { "operationId": "delete_guild", "summary": "Delete guild", "tags": ["Guilds"], "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/ThrottledError"}}}, "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": "Only guild owner can delete. Requires sudo mode verification (MFA). Permanently deletes the guild and all associated data.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildDeleteRequest"}}} } } }, "/guilds/{guild_id}/discovery": { "post": { "operationId": "apply_for_discovery", "summary": "Apply for guild discovery", "tags": ["Discovery"], "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/ThrottledError"}}}, "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": "Submit a discovery application for a guild. Requires MANAGE_GUILD permission.", "security": [{"sessionToken": []}, {"botToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryApplicationRequest"}}} } }, "patch": { "operationId": "edit_discovery_application", "summary": "Edit discovery application", "tags": ["Discovery"], "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/ThrottledError"}}}, "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 the description or category of an existing discovery application. Requires MANAGE_GUILD permission.", "security": [{"sessionToken": []}, {"botToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryApplicationPatchRequest"}}} } }, "delete": { "operationId": "withdraw_discovery_application", "summary": "Withdraw discovery application", "tags": ["Discovery"], "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/ThrottledError"}}}, "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": "Withdraw a discovery application or remove a guild from discovery. Requires MANAGE_GUILD permission.", "security": [{"sessionToken": []}, {"botToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] }, "get": { "operationId": "get_discovery_status", "summary": "Get discovery status", "tags": ["Discovery"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveryStatusResponse"}}} }, "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/ThrottledError"}}}, "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 the current discovery status and eligibility of a guild. Requires MANAGE_GUILD permission.", "security": [{"sessionToken": []}, {"botToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/guilds/{guild_id}/emojis": { "post": { "operationId": "create_guild_emoji", "summary": "Create guild emoji", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiResponse"}}} }, "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/ThrottledError"}}}, "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 guild emoji. Requires manage_emojis permission. Uploads and registers a new custom emoji for the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiCreateRequest"}}} } }, "get": { "operationId": "list_guild_emojis", "summary": "List guild emojis", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiWithUserListResponse"}}} }, "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/ThrottledError"}}}, "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 guild emojis. Returns all custom emojis for the guild including metadata about creators and timestamps.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/guilds/{guild_id}/emojis/bulk": { "post": { "operationId": "bulk_create_guild_emojis", "summary": "Bulk create guild emojis", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiBulkCreateResponse"}}} }, "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/ThrottledError"}}}, "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 create guild emojis. Requires manage_emojis permission. Creates multiple emojis in a single request for efficiency.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiBulkCreateRequest"}}} } } }, "/guilds/{guild_id}/emojis/clone": { "post": { "operationId": "clone_guild_emoji", "summary": "Clone guild emoji", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiResponse"}}} }, "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/ThrottledError"}}}, "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": "Clone an existing emoji into this guild by referencing its id. Copies the source image server-side, so the client does not need to re-upload it. Requires manage_emojis permission in the target guild, and the source guild must permit cloning.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiCloneRequest"}}} } } }, "/guilds/{guild_id}/emojis/{emoji_id}": { "patch": { "operationId": "update_guild_emoji", "summary": "Update guild emoji", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiResponse"}}} }, "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/ThrottledError"}}}, "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 guild emoji. Requires manage_emojis permission. Renames or updates properties of an existing emoji.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "emoji_id", "in": "path", "required": true, "schema": {"description": "The ID of the emoji", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the emoji" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildEmojiUpdateRequest"}}} } }, "delete": { "operationId": "delete_guild_emoji", "summary": "Delete guild emoji", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 guild emoji. Requires manage_emojis permission. Removes a custom emoji from the guild; optionally purges all references.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "emoji_id", "in": "path", "required": true, "schema": {"description": "The ID of the emoji", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the emoji" }, { "name": "purge", "in": "query", "required": false, "schema": { "description": "Whether to also purge the asset from storage", "default": "false", "type": "string" }, "description": "Whether to also purge the asset from storage" } ] } }, "/guilds/{guild_id}/invites": { "get": { "operationId": "list_guild_invites", "summary": "List guild invites", "tags": ["Invites"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InviteMetadataListResponse"}}} }, "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/ThrottledError"}}}, "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 all currently active invites across all channels in the specified guild, including invite codes, creators, expiration times, and usage statistics. The authenticated user must have permission to manage invites for the guild. Returns an array of invite metadata objects.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/guilds/{guild_id}/members": { "get": { "operationId": "list_guild_members", "summary": "List guild members", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberListResponse"}}} }, "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/ThrottledError"}}}, "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 guild members. Supports pagination with limit and after cursor. Returns member information for the specified guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "limit", "in": "query", "required": false, "schema": { "default": 1, "description": "Maximum number of members to return (1-1000, default 1)", "type": "integer", "minimum": 1, "maximum": 1000 }, "description": "Maximum number of members to return (1-1000, default 1)" }, { "name": "after", "in": "query", "required": false, "schema": { "description": "Get members after this user ID for pagination", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get members after this user ID for pagination" } ] } }, "/guilds/{guild_id}/members-search": { "post": { "operationId": "search_guild_members", "summary": "Search guild members", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberSearchResponse"}}} }, "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/ThrottledError"}}}, "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": "Search and filter guild members with pagination support.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberSearchRequest"}}} } } }, "/guilds/{guild_id}/members/@me": { "get": { "operationId": "get_current_guild_member", "summary": "Get current user guild member", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberResponse"}}} }, "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/ThrottledError"}}}, "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 current user guild member. Returns the member information for the authenticated user in the specified guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] }, "patch": { "operationId": "update_current_guild_member", "summary": "Update current user guild member", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberResponse"}}} }, "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/ThrottledError"}}}, "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 current user guild member. User can modify their own nickname within the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MyGuildMemberUpdateRequest"}}} } } }, "/guilds/{guild_id}/members/{user_id}": { "get": { "operationId": "get_guild_member", "summary": "Get guild member by user ID", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberResponse"}}} }, "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/ThrottledError"}}}, "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 guild member by user ID. Returns member information including roles, nickname, and join date for the specified user in the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] }, "patch": { "operationId": "update_guild_member", "summary": "Update guild member", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberResponse"}}} }, "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/ThrottledError"}}}, "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 guild member. Requires manage_members permission. Can modify member nickname, voice state, and other member properties.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildMemberUpdateRequest"}}} } }, "delete": { "operationId": "remove_guild_member", "summary": "Remove guild member", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 guild member. Requires kick_members permission. Removes the specified user from the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] } }, "/guilds/{guild_id}/members/{user_id}/roles/{role_id}": { "put": { "operationId": "add_guild_member_role", "summary": "Add role to guild member", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 role to guild member. Requires manage_roles permission. Grants the specified role to the user in the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "role_id", "in": "path", "required": true, "schema": {"description": "The ID of the role", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] }, "delete": { "operationId": "remove_guild_member_role", "summary": "Remove role from guild member", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 role from guild member. Requires manage_roles permission. Revokes the specified role from the user in the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "role_id", "in": "path", "required": true, "schema": {"description": "The ID of the role", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" }, { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] } }, "/guilds/{guild_id}/roles": { "get": { "operationId": "list_guild_roles", "summary": "List guild roles", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRoleListResponse"}}} }, "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/ThrottledError"}}}, "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 guild roles. Requires guilds OAuth scope if using bearer token. Returns all roles defined in the guild including their permissions and settings.", "security": [{"botToken": []}, {"oauth2Token": ["guilds"]}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] }, "post": { "operationId": "create_guild_role", "summary": "Create guild role", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRoleResponse"}}} }, "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/ThrottledError"}}}, "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 guild role. Requires manage_roles permission. Creates a new role with specified name, permissions, and color.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRoleCreateRequest"}}} } }, "patch": { "operationId": "update_guild_role_positions", "summary": "Update role positions", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 role positions. Requires manage_roles permission. Reorders roles to change their hierarchy and permission precedence.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRolePositionsRequest"}}} } } }, "/guilds/{guild_id}/roles/hoist-positions": { "patch": { "operationId": "update_role_hoist_positions", "summary": "Update role hoist positions", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 role hoist positions. Requires manage_roles permission. Sets the display priority for hoisted (separated) roles in the member list.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRoleHoistPositionsRequest"}}} } }, "delete": { "operationId": "reset_role_hoist_positions", "summary": "Reset role hoist positions", "tags": ["Guilds"], "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/ThrottledError"}}}, "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": "Reset role hoist positions. Requires manage_roles permission. Clears all hoist position assignments for roles in the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/guilds/{guild_id}/roles/{role_id}": { "patch": { "operationId": "update_guild_role", "summary": "Update guild role", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRoleResponse"}}} }, "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/ThrottledError"}}}, "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 guild role. Requires manage_roles permission. Modifies role name, permissions, color, and other settings.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "role_id", "in": "path", "required": true, "schema": {"description": "The ID of the role", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildRoleUpdateRequest"}}} } }, "delete": { "operationId": "delete_guild_role", "summary": "Delete guild role", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 guild role. Requires manage_roles permission. Permanently removes the role from the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "role_id", "in": "path", "required": true, "schema": {"description": "The ID of the role", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" } ] } }, "/guilds/{guild_id}/stickers": { "post": { "operationId": "create_guild_sticker", "summary": "Create guild sticker", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerResponse"}}} }, "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/ThrottledError"}}}, "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 guild sticker. Requires manage_emojis permission. Uploads a new sticker with name, description, and tags.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerCreateRequest"}}} } }, "get": { "operationId": "list_guild_stickers", "summary": "List guild stickers", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerWithUserListResponse"}} } }, "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/ThrottledError"}}}, "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 guild stickers. Returns all custom stickers for the guild including metadata about creators, descriptions, and tags.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/guilds/{guild_id}/stickers/bulk": { "post": { "operationId": "bulk_create_guild_stickers", "summary": "Bulk create guild stickers", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerBulkCreateResponse"}}} }, "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/ThrottledError"}}}, "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 create guild stickers. Requires manage_emojis permission. Creates multiple stickers in a single request for efficiency.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerBulkCreateRequest"}}} } } }, "/guilds/{guild_id}/stickers/clone": { "post": { "operationId": "clone_guild_sticker", "summary": "Clone guild sticker", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerResponse"}}} }, "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/ThrottledError"}}}, "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": "Clone an existing sticker into this guild by referencing its id. Copies the source image server-side, so the client does not need to re-upload it. Requires manage_emojis permission in the target guild, and the source guild must permit cloning.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerCloneRequest"}}} } } }, "/guilds/{guild_id}/stickers/{sticker_id}": { "patch": { "operationId": "update_guild_sticker", "summary": "Update guild sticker", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerResponse"}}} }, "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/ThrottledError"}}}, "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 guild sticker. Requires manage_emojis permission. Updates sticker name, description, or tags.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "sticker_id", "in": "path", "required": true, "schema": {"description": "The ID of the sticker", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the sticker" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerUpdateRequest"}}} } }, "delete": { "operationId": "delete_guild_sticker", "summary": "Delete guild sticker", "tags": ["Guilds"], "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/ThrottledError"}}}, "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 guild sticker. Requires manage_emojis permission. Removes a sticker from the guild; optionally purges all references.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "sticker_id", "in": "path", "required": true, "schema": {"description": "The ID of the sticker", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the sticker" }, { "name": "purge", "in": "query", "required": false, "schema": { "description": "Whether to also purge the asset from storage", "default": "false", "type": "string" }, "description": "Whether to also purge the asset from storage" } ] } }, "/guilds/{guild_id}/transfer-ownership": { "post": { "operationId": "transfer_guild_ownership", "summary": "Transfer guild ownership", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildResponse"}}} }, "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/ThrottledError"}}}, "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": "Transfer guild ownership. Only current owner can transfer. Requires sudo mode verification (MFA). Transfers all guild permissions to a new owner.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": {"$ref": "#/components/schemas/GuildTransferOwnershipWithVerificationRequest"} } } } } }, "/guilds/{guild_id}/vanity-url": { "get": { "operationId": "get_guild_vanity_url", "summary": "Get guild vanity URL", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildVanityURLResponse"}}} }, "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/ThrottledError"}}}, "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 the custom invite code for the guild if configured.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] }, "patch": { "operationId": "update_guild_vanity_url", "summary": "Update guild vanity URL", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildVanityURLUpdateResponse"}}} }, "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/ThrottledError"}}}, "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": "Requires manage_guild permission. Sets or removes a custom invite code.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildVanityURLUpdateRequest"}}} } } }, "/guilds/{guild_id}/webhooks": { "get": { "operationId": "list_guild_webhooks", "summary": "List guild webhooks", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookListResponse"}}} }, "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/ThrottledError"}}}, "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 a list of all webhooks configured in the specified guild. Requires the user to have appropriate permissions to view webhooks in the guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/harvest-downloads/{harvestId}": { "get": { "operationId": "download_data_harvest_archive", "summary": "Download data harvest archive", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/zip": {"schema": {"$ref": "#/components/schemas/HarvestArchiveResponse"}}} }, "206": { "description": "Success", "content": {"application/zip": {"schema": {"$ref": "#/components/schemas/HarvestArchiveResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 a completed data harvest archive. Authorised by a signed, expiring token rather than a session, so the link works from the harvest completion email. Only active when presigned harvest downloads are disabled.", "parameters": [ { "name": "harvestId", "in": "path", "required": true, "schema": {"description": "The ID of the harvest request", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the harvest request" } ] } }, "/invites/{invite_code}": { "get": { "operationId": "get_invite", "summary": "Get invite information", "tags": ["Invites"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InviteResponseSchema"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Fetches detailed information about an invite using its code, including the guild or channel it belongs to and metadata such as expiration and usage limits. This endpoint does not require authentication and does not consume the invite.", "parameters": [ { "name": "invite_code", "in": "path", "required": true, "schema": {"description": "The unique invite code", "type": "string"}, "description": "The unique invite code" } ] }, "post": { "operationId": "accept_invite", "summary": "Accept invite", "tags": ["Invites"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InviteResponseSchema"}}} }, "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/ThrottledError"}}}, "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": "Accepts an invite using its code, adding the authenticated user to the corresponding guild or other entity. The invite usage count is incremented, and if it reaches its maximum usage limit or expiration, the invite is automatically revoked. Returns the accepted invite details.", "security": [{"sessionToken": []}], "parameters": [ { "name": "invite_code", "in": "path", "required": true, "schema": {"description": "The unique invite code", "type": "string"}, "description": "The unique invite code" } ] }, "delete": { "operationId": "delete_invite", "summary": "Delete invite", "tags": ["Invites"], "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/ThrottledError"}}}, "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 an invite by its code, preventing any further usage. The authenticated user must have permission to manage invites for the guild or channel associated with the invite. This action can be logged in the audit log if an X-Audit-Log-Reason header is provided.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "invite_code", "in": "path", "required": true, "schema": {"description": "The unique invite code", "type": "string"}, "description": "The unique invite code" } ] } }, "/ip": { "get": { "operationId": "get_client_geolocation", "summary": "Get client geolocation", "tags": ["Geolocation"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GeolocationResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Resolves the approximate location of the requesting client from its IP address, together with the locations where age restricted content is gated or unavailable." } }, "/klipy/featured": { "get": { "operationId": "get_featured_klipy", "summary": "Get featured GIFs (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifFeaturedResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/featured.", "security": [{"sessionToken": []}], "parameters": [ { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/klipy/register-share": { "post": { "operationId": "register_klipy_share", "summary": "Register a GIF share (deprecated alias)", "tags": ["GIFs (Deprecated)"], "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/register-share.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifRegisterShareRequest"}}} } } }, "/klipy/search": { "get": { "operationId": "search_klipy", "summary": "Search GIFs (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifListResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/search.", "security": [{"sessionToken": []}], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": {"description": "The search query", "type": "string"}, "description": "The search query" }, { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/klipy/suggest": { "get": { "operationId": "get_klipy_search_suggestions", "summary": "Get GIF search suggestions (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifSearchSuggestionsResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/suggest.", "security": [{"sessionToken": []}], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": {"description": "The search query", "type": "string"}, "description": "The search query" }, { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/klipy/trending-gifs": { "get": { "operationId": "get_trending_klipy", "summary": "Get trending GIFs (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifListResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/trending.", "security": [{"sessionToken": []}], "parameters": [ { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/oauth2/@me": { "get": { "operationId": "get_current_user_oauth2", "summary": "Get current OAuth2 user", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuth2MeResponse"}}} }, "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/ThrottledError"}}}, "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 current authorization details for a valid OAuth2 bearer token. Includes OAuth2 metadata and user details when identify is present.", "security": [{"oauth2Token": []}] } }, "/oauth2/@me/authorizations": { "get": { "operationId": "list_user_oauth2_authorizations", "summary": "List user OAuth2 authorizations", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/OAuth2AuthorizationsListResponse"}} } }, "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/ThrottledError"}}}, "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 third-party applications the user has authorized. Shows granted scopes and authorization metadata. Allows user to review and manage delegated access.", "security": [{"sessionToken": []}] } }, "/oauth2/@me/authorizations/revoke": { "post": { "operationId": "bulk_delete_user_oauth2_authorizations", "summary": "Bulk revoke OAuth2 authorizations", "tags": ["OAuth2"], "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/ThrottledError"}}}, "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 user authorizations for multiple third-party applications. Immediately invalidates all tokens issued to those applications.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/OAuth2AuthorizationsBulkRevokeRequest"}} } } } }, "/oauth2/@me/authorizations/{applicationId}": { "delete": { "operationId": "delete_user_oauth2_authorization", "summary": "Revoke OAuth2 authorization", "tags": ["OAuth2"], "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/ThrottledError"}}}, "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 user authorization for a third-party application. Immediately invalidates all tokens issued to that application. User regains control of delegated access.", "security": [{"sessionToken": []}], "parameters": [ { "name": "applicationId", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ] } }, "/oauth2/applications": { "post": { "operationId": "create_oauth_application", "summary": "Create OAuth2 application", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationResponse"}}} }, "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/ThrottledError"}}}, "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 bot-backed OAuth2 application (client). Requires a solved captcha challenge (X-Captcha-Token). Returns client credentials including ID and secret. Application can be used for authorization flows and API access.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationCreateRequest"}}} } } }, "/oauth2/applications/@me": { "get": { "operationId": "get_oauth_applications_me", "summary": "Get current applications endpoint", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuth2ApplicationsMeResponse"}}} }, "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/ThrottledError"}}}, "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": "For user tokens, lists all OAuth2 applications owned by the authenticated user. For bot tokens, returns the bot application object.", "security": [{"botToken": []}, {"sessionToken": []}] } }, "/oauth2/applications/{id}": { "get": { "operationId": "get_oauth_application", "summary": "Get application", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationResponse"}}} }, "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/ThrottledError"}}}, "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 details of a specific OAuth2 application owned by the user. Returns full application configuration and credentials.", "security": [{"sessionToken": []}], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ] }, "patch": { "operationId": "update_oauth_application", "summary": "Update application", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationResponse"}}} }, "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/ThrottledError"}}}, "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 OAuth2 application configuration such as name, description, and redirect URIs. Does not rotate credentials.", "security": [{"sessionToken": []}], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationUpdateRequest"}}} } }, "delete": { "operationId": "delete_oauth_application", "summary": "Delete application", "tags": ["OAuth2"], "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/ThrottledError"}}}, "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 an OAuth2 application. Requires sudo mode authentication. Invalidates all issued tokens and revokes all user authorizations.", "security": [{"sessionToken": []}], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/oauth2/applications/{id}/bot": { "patch": { "operationId": "update_bot_profile", "summary": "Update bot profile", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BotProfileResponse"}}} }, "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/ThrottledError"}}}, "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 bot profile information such as name, avatar, and status. Changes apply to the bot account associated with this OAuth2 application.", "security": [{"sessionToken": []}], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BotProfileUpdateRequest"}}} } } }, "/oauth2/applications/{id}/bot/reset-token": { "post": { "operationId": "reset_bot_token", "summary": "Reset bot token", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BotTokenResetResponse"}}} }, "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/ThrottledError"}}}, "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": "Rotates the bot token for an OAuth2 application. Requires sudo mode authentication. Invalidates all previously issued bot tokens. Used for security rotation and compromise mitigation.", "security": [{"sessionToken": []}], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/oauth2/applications/{id}/client-secret/reset": { "post": { "operationId": "reset_client_secret", "summary": "Reset client secret", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationResponse"}}} }, "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/ThrottledError"}}}, "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": "Rotates the client secret for an OAuth2 application. Requires sudo mode authentication. Essential security operation for protecting client credentials. Existing access tokens remain valid.", "security": [{"sessionToken": []}], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/oauth2/applications/{id}/public": { "get": { "operationId": "get_public_application", "summary": "Get public application", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationPublicResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 public information about an OAuth2 application without authentication. Allows clients to discover application metadata before initiating authorization.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": {"description": "The ID of the application", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the application" } ] } }, "/oauth2/authorize/consent": { "post": { "operationId": "provide_oauth2_consent", "summary": "Grant OAuth2 consent", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuth2ConsentResponse"}}} }, "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/ThrottledError"}}}, "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": "User grants permission for an OAuth2 application to access authorized scopes. Used in authorization code flow to complete the authorization process after user review.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthorizeConsentRequest"}}} } } }, "/oauth2/introspect": { "post": { "operationId": "introspect_oauth2_token", "summary": "Introspect OAuth2 token", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuth2IntrospectResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Verifies token validity and retrieves metadata. Returns active status, scope, expiration, and user information. Client authentication via authorization header or client credentials.", "requestBody": { "required": true, "content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/IntrospectRequestForm"}}} } } }, "/oauth2/token": { "post": { "operationId": "exchange_oauth2_token", "summary": "Exchange OAuth2 token", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuth2TokenResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Exchanges authorization code or other grant type for access tokens. Supports authorization code, refresh token, and client credentials flows. Client authentication via authorization header or client credentials.", "requestBody": { "required": true, "content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/TokenRequest"}}} } } }, "/oauth2/token/revoke": { "post": { "operationId": "revoke_oauth2_token", "summary": "Revoke OAuth2 token", "tags": ["OAuth2"], "responses": { "200": {"description": "Success"}, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 access or refresh token, immediately invalidating it. Client authentication required via authorization header or client credentials. Returns 200 on success.", "requestBody": { "required": true, "content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/RevokeRequestForm"}}} } } }, "/oauth2/userinfo": { "get": { "operationId": "get_oauth2_userinfo", "summary": "Get OAuth2 user information", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuth2UserInfoResponse"}}} }, "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/ThrottledError"}}}, "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 authenticated user information using a valid access token. Requires identify scope and supports email scope for email fields.", "security": [{"oauth2Token": ["identify"]}] } }, "/premium/cancel-pending-subscription-change": { "post": { "operationId": "cancel_pending_subscription_change", "summary": "Cancel pending subscription billing cycle change", "tags": ["Premium"], "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/ThrottledError"}}}, "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 the authenticated user's pending premium billing cycle change without cancelling the active subscription.", "security": [{"sessionToken": []}] } }, "/premium/cancel-subscription": { "post": { "operationId": "cancel_subscription", "summary": "Cancel subscription", "tags": ["Premium"], "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/ThrottledError"}}}, "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 the authenticated user's premium subscription at the end of the current billing period.", "security": [{"sessionToken": []}] } }, "/premium/change-subscription": { "post": { "operationId": "change_subscription_billing_cycle", "summary": "Change subscription billing cycle", "tags": ["Premium"], "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/ThrottledError"}}}, "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": "Switches the authenticated user between monthly and yearly billing for their active premium subscription.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSubscriptionRequest"}}} } } }, "/premium/current-subscription-price": { "get": { "operationId": "get_current_subscription_price", "summary": "Get current subscription price", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/CurrentSubscriptionPriceResponse"}} } }, "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/ThrottledError"}}}, "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 the exact price the authenticated user is being billed for their active Stripe subscription, including whether they are on a grandfathered legacy rate.", "security": [{"sessionToken": []}] } }, "/premium/customer-portal": { "post": { "operationId": "create_customer_portal", "summary": "Create customer portal", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlResponse"}}} }, "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/ThrottledError"}}}, "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 session URL for the authenticated user to manage their Stripe subscription via the customer portal.", "security": [{"sessionToken": []}] } }, "/premium/grace/end": { "post": { "operationId": "end_premium_grace_period", "summary": "End premium grace period now", "tags": ["Premium"], "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/ThrottledError"}}}, "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": "Ends the post-cancel grace period immediately, downgrading the user from premium and clearing premium_since. Idempotent and safe to call when not in grace; returns success in either case. Use this when the user explicitly opts out of the 3-day recovery window.", "security": [{"sessionToken": []}] } }, "/premium/perks-disabled": { "patch": { "operationId": "set_premium_perks_disabled", "summary": "Set premium perks disabled", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PremiumStateResponse"}}} }, "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/ThrottledError"}}}, "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 disables or restores premium perks for the authenticated user while preserving actual subscription and billing state.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/UpdatePremiumPerksDisabledRequest"}} } } } }, "/premium/price-ids": { "get": { "operationId": "get_price_ids", "summary": "Get Stripe price IDs", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PriceIdsResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 Stripe price IDs for premium subscriptions based on geographic location.", "parameters": [ { "name": "country_code", "in": "query", "required": false, "schema": { "description": "Two-letter country code for regional pricing. Only used when the server cannot geolocate the request; otherwise the request GeoIP country wins.", "type": "string" }, "description": "Two-letter country code for regional pricing. Only used when the server cannot geolocate the request; otherwise the request GeoIP country wins." } ] } }, "/premium/reactivate-subscription": { "post": { "operationId": "reactivate_subscription", "summary": "Reactivate subscription", "tags": ["Premium"], "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/ThrottledError"}}}, "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": "Reactivates a previously cancelled premium subscription for the authenticated user.", "security": [{"sessionToken": []}] } }, "/premium/refund-eligibility": { "get": { "operationId": "get_self_serve_refund_eligibility", "summary": "Get self-serve refund eligibility", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/SelfServeRefundEligibilityResponse"}} } }, "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/ThrottledError"}}}, "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 whether the authenticated user can self-serve refund their most recent purchase, including the refund window and cooldown timestamps.", "security": [{"sessionToken": []}] } }, "/premium/refund-latest": { "post": { "operationId": "self_serve_refund_latest_purchase", "summary": "Refund latest purchase", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SelfServeRefundResponse"}}} }, "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/ThrottledError"}}}, "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": "Refunds the authenticated user's most recent paid invoice if it is within 3 days and the user is not in a 30-day cooldown. If the invoice was tied to a subscription, the subscription is cancelled immediately.", "security": [{"sessionToken": []}] } }, "/premium/state": { "get": { "operationId": "get_premium_state", "summary": "Get premium state", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PremiumStateResponse"}}} }, "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/ThrottledError"}}}, "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 the authenticated user actual premium entitlement, effective perk state, and mirrored billing data. When Stripe is enabled, missing payment-method mirror data may be repaired lazily.", "security": [{"sessionToken": []}], "parameters": [ { "name": "country_code", "in": "query", "required": false, "schema": { "description": "Two-letter country code for regional pricing. Only used when the server cannot geolocate the request; otherwise the request GeoIP country wins.", "type": "string" }, "description": "Two-letter country code for regional pricing. Only used when the server cannot geolocate the request; otherwise the request GeoIP country wins." } ] } }, "/premium/store": { "get": { "operationId": "get_store_billing_context", "summary": "Get in-app purchase context", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoreBillingContextResponse"}}} }, "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/ThrottledError"}}}, "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 the account token and the App Store and Google Play products the mobile apps may sell, plus the reason a new subscription is blocked, if any.", "security": [{"sessionToken": []}] } }, "/premium/store/app-store/transactions": { "post": { "operationId": "claim_app_store_transaction", "summary": "Claim App Store transaction", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StorePurchaseClaimResponse"}}} }, "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/ThrottledError"}}}, "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": "Verifies a StoreKit 2 signed transaction, links the purchase to the authenticated account and applies it. Calling it again for the same purchase returns the same result. Finish the transaction after a 200 or a 400 or 403 error. Leave it unfinished after a 429, a 5xx or a network failure.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimAppStoreTransactionRequest"}}} } } }, "/premium/store/google-play/purchases": { "post": { "operationId": "claim_google_play_purchase", "summary": "Claim Google Play purchase", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StorePurchaseClaimResponse"}}} }, "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/ThrottledError"}}}, "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": "Verifies a Google Play purchase token, links the purchase to the authenticated account, acknowledges it and applies it. Calling it again for the same purchase returns the same result.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimGooglePlayPurchaseRequest"}}} } } }, "/premium/store/purchases": { "get": { "operationId": "list_store_purchases", "summary": "List in-app purchases", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StorePurchaseListResponse"}}} }, "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/ThrottledError"}}}, "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 the App Store and Google Play purchases linked to the authenticated account.", "security": [{"sessionToken": []}] } }, "/premium/store/purchases/{purchase_id}": { "delete": { "operationId": "release_store_purchase", "summary": "Release in-app subscription", "tags": ["Premium"], "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/ThrottledError"}}}, "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": "Unlinks an App Store or Google Play subscription from the authenticated account so another account can claim it. Requires sudo mode.", "security": [{"sessionToken": []}], "parameters": [ { "name": "purchase_id", "in": "path", "required": true, "schema": {"description": "The ID of the store purchase", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the store purchase" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/premium/switch-to-list-price": { "post": { "operationId": "switch_subscription_to_list_price", "summary": "Switch subscription to the current list price", "tags": ["Premium"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SwitchToListPriceResponse"}}} }, "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/ThrottledError"}}}, "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": "Moves the authenticated user's grandfathered premium subscription down to the current list price for the same currency and billing cycle, effective at the end of the current billing period. The target price is resolved on the server and the switch is refused unless it lowers the amount charged.", "security": [{"sessionToken": []}] } }, "/premium/visionary/rejoin": { "post": { "operationId": "rejoin_visionary_guild", "summary": "Rejoin visionary guild", "tags": ["Premium"], "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/ThrottledError"}}}, "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": "Adds the authenticated user back to the visionary community guild after premium re-subscription.", "security": [{"sessionToken": []}] } }, "/read-states/ack": { "post": { "operationId": "ack_read_states", "summary": "Acknowledge read states", "tags": ["Read States"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReadStateAckResponse"}}} }, "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/ThrottledError"}}}, "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": "Applies one or more read-state acknowledgements and returns the authoritative read states after the write.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReadStateAckRequest"}}} } } }, "/read-states/ack-bulk": { "post": { "operationId": "ack_bulk_messages", "summary": "Mark channels as read", "tags": ["Read States"], "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/ThrottledError"}}}, "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": "Marks multiple channels as read for the authenticated user in bulk.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReadStateAckBulkRequest"}}} } } }, "/reports/dsa": { "post": { "operationId": "create_dsa_report", "summary": "Create DSA report", "tags": ["Reports"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 DSA complaint report with verified email for Digital Services Act compliance.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DsaReportRequest"}}} } } }, "/reports/dsa/email/send": { "post": { "operationId": "send_dsa_report_email", "summary": "Send DSA report email", "tags": ["Reports"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OkResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 DSA (Digital Services Act) report submission by sending verification email to reporter.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DsaReportEmailSendRequest"}}} } } }, "/reports/dsa/email/verify": { "post": { "operationId": "verify_dsa_report_email", "summary": "Verify DSA report email", "tags": ["Reports"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TicketResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Verifies the DSA report email and creates a report ticket for legal compliance.", "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DsaReportEmailVerifyRequest"}}} } } }, "/reports/guild": { "post": { "operationId": "report_guild", "summary": "Report guild", "tags": ["Reports"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportResponse"}}} }, "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/ThrottledError"}}}, "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 report about a guild to moderators for policy violation review.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportGuildRequest"}}} } } }, "/reports/message": { "post": { "operationId": "report_message", "summary": "Report message", "tags": ["Reports"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportResponse"}}} }, "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/ThrottledError"}}}, "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 report about a message to moderators for content violation review. The reporter must be able to access the channel and target message.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportMessageRequest"}}} } } }, "/reports/user": { "post": { "operationId": "report_user", "summary": "Report user", "tags": ["Reports"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportResponse"}}} }, "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/ThrottledError"}}}, "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 report about a user to moderators for content violation or behaviour review.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportUserRequest"}}} } } }, "/search/messages": { "post": { "operationId": "search_messages", "summary": "Search messages", "tags": ["Search"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageSearchResponse"}}} }, "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/ThrottledError"}}}, "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 for messages across guilds and channels accessible to the authenticated user. Bots must supply a context guild or channel and may only use the current scope.", "security": [{"botToken": []}, {"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GlobalSearchMessagesRequest"}}} } } }, "/stickers/{sticker_id}/metadata": { "get": { "operationId": "get_sticker_metadata", "summary": "Get sticker metadata", "tags": ["Stickers"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildStickerMetadataResponse"}}} }, "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/ThrottledError"}}}, "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": "Lookup minimal metadata for a custom sticker by id, including whether the source guild allows the in-app one-click clone shortcut. Does not require membership in the source guild.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "sticker_id", "in": "path", "required": true, "schema": {"description": "The ID of the sticker", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the sticker" } ] } }, "/stickers/{sticker_id}/source": { "get": { "operationId": "get_sticker_source", "summary": "Get sticker source guild", "tags": ["Stickers"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/GuildExpressionSourceGuildResponse"}} } }, "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/ThrottledError"}}}, "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": "Lookup the public presentation of the guild a custom sticker belongs to. Returned when the guild is discoverable or the caller is a member of it. Returns an unknown guild error when the guild is private and the caller is not a member, or when the guild is unavailable.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "sticker_id", "in": "path", "required": true, "schema": {"description": "The ID of the sticker", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the sticker" } ] } }, "/streams/{stream_key}/preview": { "get": { "operationId": "get_stream_preview", "summary": "Get stream preview image", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": {"image/*": {"schema": {"$ref": "#/components/schemas/StreamPreviewResponse"}}} }, "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/ThrottledError"}}}, "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 the current preview thumbnail for a stream. Returns the image with no-store cache headers to ensure freshness.", "security": [{"sessionToken": []}], "parameters": [ { "name": "stream_key", "in": "path", "required": true, "schema": {"description": "The stream key", "type": "string"}, "description": "The stream key" } ] }, "post": { "operationId": "upload_stream_preview", "summary": "Upload stream preview image", "tags": ["Channels"], "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/ThrottledError"}}}, "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 custom thumbnail image for the stream. The image is scanned for content policy violations and stored securely.", "security": [{"sessionToken": []}], "parameters": [ { "name": "stream_key", "in": "path", "required": true, "schema": {"description": "The stream key", "type": "string"}, "description": "The stream key" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StreamPreviewUploadBodySchema"}}} } }, "delete": { "operationId": "delete_stream_preview", "summary": "Delete stream preview image", "tags": ["Channels"], "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/ThrottledError"}}}, "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": "Removes the thumbnail preview for a stream. Used when the owner opts into \"hide preview\" so viewers no longer see a stale thumbnail.", "security": [{"sessionToken": []}], "parameters": [ { "name": "stream_key", "in": "path", "required": true, "schema": {"description": "The stream key", "type": "string"}, "description": "The stream key" } ] } }, "/streams/{stream_key}/preview/upload-url": { "post": { "operationId": "create_stream_preview_upload_url", "summary": "Create stream preview upload URL", "tags": ["Channels"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/StreamPreviewUploadUrlResponseSchema"}} } }, "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/ThrottledError"}}}, "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 reusable PUT upload URL for updating the current thumbnail image for the stream.", "security": [{"sessionToken": []}], "parameters": [ { "name": "stream_key", "in": "path", "required": true, "schema": {"description": "The stream key", "type": "string"}, "description": "The stream key" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StreamPreviewUploadUrlBodySchema"}}} } } }, "/streams/{stream_key}/stream": { "patch": { "operationId": "update_stream_region", "summary": "Update stream region", "tags": ["Channels"], "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/ThrottledError"}}}, "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 the media server region for an active stream. Used to optimise bandwidth and latency for streaming.", "security": [{"sessionToken": []}], "parameters": [ { "name": "stream_key", "in": "path", "required": true, "schema": {"description": "The stream key", "type": "string"}, "description": "The stream key" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StreamUpdateBodySchema"}}} } } }, "/stripe/checkout/gift": { "post": { "operationId": "create_gift_checkout_session", "summary": "Create gift checkout session", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlResponse"}}} }, "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/ThrottledError"}}}, "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 checkout session for purchasing premium gifts to send to other users.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateCheckoutSessionRequest"}}} } } }, "/stripe/checkout/subscription": { "post": { "operationId": "create_checkout_session", "summary": "Create checkout session", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlResponse"}}} }, "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/ThrottledError"}}}, "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 Stripe checkout session for user subscription purchases.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateCheckoutSessionRequest"}}} } } }, "/stripe/checkout/subscription/preapproval": { "post": { "operationId": "create_localized_card_preapproval_session", "summary": "Create localized card preapproval session", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlResponse"}}} }, "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/ThrottledError"}}}, "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 Stripe Checkout setup-mode session to preapprove a local card before continuing to paid localized checkout.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateCheckoutSessionRequest"}}} } } }, "/stripe/checkout/subscription/preapproval/continue": { "post": { "operationId": "continue_localized_card_preapproval_session", "summary": "Continue localized card preapproval session", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/LocalizedCardPreapprovalContinueResponse"}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Checks the status of a localized card preapproval flow and returns the paid Stripe Checkout URL when it is ready.", "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/LocalizedCardPreapprovalContinueRequest"}} } } } }, "/stripe/webhook": { "post": { "operationId": "process_stripe_webhook", "summary": "Process Stripe webhook", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookReceivedResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Handles incoming Stripe webhook events for payment processing and subscription management." } }, "/tenor/featured": { "get": { "operationId": "get_featured_tenor", "summary": "Get featured GIFs (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifFeaturedResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/featured.", "security": [{"sessionToken": []}], "parameters": [ { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/tenor/register-share": { "post": { "operationId": "register_tenor_share", "summary": "Register a GIF share (deprecated alias)", "tags": ["GIFs (Deprecated)"], "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/register-share.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifRegisterShareRequest"}}} } } }, "/tenor/search": { "get": { "operationId": "search_tenor", "summary": "Search GIFs (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifListResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/search.", "security": [{"sessionToken": []}], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": {"description": "The search query", "type": "string"}, "description": "The search query" }, { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/tenor/suggest": { "get": { "operationId": "get_tenor_search_suggestions", "summary": "Get GIF search suggestions (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifSearchSuggestionsResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/suggest.", "security": [{"sessionToken": []}], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": {"description": "The search query", "type": "string"}, "description": "The search query" }, { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/tenor/trending-gifs": { "get": { "operationId": "get_trending_tenor", "summary": "Get trending GIFs (deprecated alias)", "tags": ["GIFs (Deprecated)"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GifListResponse"}}} }, "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/ThrottledError"}}}, "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": "Use /gifs/* instead - these vendor-specific paths are deprecated and will be removed. Routes to the active provider; identical behaviour to /gifs/trending.", "security": [{"sessionToken": []}], "parameters": [ { "name": "locale", "in": "query", "required": false, "schema": {"default": "en-US", "$ref": "#/components/schemas/Locale"}, "description": "The locale code for the user interface language" } ] } }, "/unfurl": { "post": { "operationId": "debug_unfurl", "summary": "Debug URL unfurl", "tags": ["Debug"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnfurlResponse"}}} }, "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/ThrottledError"}}}, "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": "Resolves a single URL through the unfurler without reading from the unfurl cache.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnfurlRequest"}}} } } }, "/users/@me": { "get": { "operationId": "get_current_user", "summary": "Get current user profile", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} }, "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/ThrottledError"}}}, "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 the current authenticated user's profile information, including account details and settings. OAuth2 bearer tokens require identify scope, and email is returned only when the email scope is also present. Bearer tokens receive a reduced response: sensitive fields such as MFA status, authenticator types, ACLs, traits, premium billing details, and password metadata are omitted. Session and bot tokens return the full user object with all private fields.", "security": [{"botToken": []}, {"oauth2Token": ["identify"]}, {"sessionToken": []}] }, "patch": { "operationId": "update_current_user", "summary": "Update current user profile", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} }, "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/ThrottledError"}}}, "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 the authenticated user's profile information such as username, avatar, and bio. Requires sudo mode verification for security-sensitive changes. Only default users can modify their own profile.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/UserUpdateWithVerificationRequest"}} } } } }, "/users/@me/age-verification": { "post": { "operationId": "create_age_verification_session", "summary": "Create age verification session", "tags": ["Billing"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlResponse"}}} }, "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/ThrottledError"}}}, "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 Stripe checkout session in setup mode to verify the user holds a credit card for UK adult age verification.", "security": [{"sessionToken": []}] } }, "/users/@me/applications": { "get": { "operationId": "list_user_applications", "summary": "List user applications", "tags": ["OAuth2"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApplicationListResponse"}}} }, "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/ThrottledError"}}}, "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 OAuth2 applications owned by the authenticated user. Includes application credentials, metadata, and configuration.", "security": [{"sessionToken": []}] } }, "/users/@me/authorized-ips": { "delete": { "operationId": "forget_authorized_ips", "summary": "Forget authorized IPs for current user", "tags": ["Users"], "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/ThrottledError"}}}, "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 all authorized IP addresses for the current user. After calling this endpoint, the user will be required to re-authorize any new IP addresses they log in from. Requires sudo mode verification.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/channels": { "get": { "operationId": "list_private_channels", "summary": "List private channels", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelListResponse"}}} }, "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/ThrottledError"}}}, "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 all private channels (direct messages) accessible to the current user. Returns list of channel objects with metadata including recipient information.", "security": [{"botToken": []}, {"sessionToken": []}] }, "post": { "operationId": "create_private_channel", "summary": "Create private channel", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelResponse"}}} }, "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/ThrottledError"}}}, "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 private channel (direct message) between the current user and one or more recipients. Group DM creation requires a solved captcha challenge (X-Captcha-Token). Returns the newly created channel object.", "security": [{"botToken": []}, {"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreatePrivateChannelRequest"}}} } } }, "/users/@me/channels/messages/preload": { "post": { "operationId": "preload_messages_for_channels_alt", "summary": "Preload messages for channels (alternative)", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PreloadMessagesResponse"}}} }, "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/ThrottledError"}}}, "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": "Alternative endpoint to preload and cache messages for multiple channels to improve performance when opening those channels. Returns preloaded message data for the specified channels.", "security": [{"botToken": []}, {"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PreloadMessagesRequest"}}} } } }, "/users/@me/channels/{channel_id}/pin": { "put": { "operationId": "pin_direct_message_channel", "summary": "Pin direct message channel", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Pins a private message channel for the current user. Pinned channels appear at the top of the channel list for easy access.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] }, "delete": { "operationId": "unpin_direct_message_channel", "summary": "Unpin direct message channel", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Unpins a private message channel for the current user. The channel will return to its normal position in the channel list based on activity.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ] } }, "/users/@me/connections": { "get": { "operationId": "list_connections", "summary": "List user connections", "tags": ["Connections"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionListResponse"}}} }, "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/ThrottledError"}}}, "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 all external service connections for the authenticated user.", "security": [{"oauth2Token": ["connections"]}, {"sessionToken": []}] }, "post": { "operationId": "initiate_connection", "summary": "Initiate connection", "tags": ["Connections"], "responses": { "201": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionVerificationResponse"}}} }, "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/ThrottledError"}}}, "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 new external service connection and returns verification instructions. No database record is created until verification succeeds.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateConnectionRequest"}}} } } }, "/users/@me/connections/bluesky/authorize": { "post": { "operationId": "authorize_bluesky_connection", "summary": "Start Bluesky OAuth flow", "tags": ["Connections"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BlueskyAuthorizeResponse"}}} }, "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/ThrottledError"}}}, "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 the Bluesky OAuth2 authorisation flow and returns a URL to redirect the user to.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BlueskyAuthorizeRequest"}}} } } }, "/users/@me/connections/reorder": { "patch": { "operationId": "reorder_connections", "summary": "Reorder connections", "tags": ["Connections"], "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/ThrottledError"}}}, "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 the display order of multiple connections in a single operation.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReorderConnectionsRequest"}}} } } }, "/users/@me/connections/verify": { "post": { "operationId": "verify_and_create_connection", "summary": "Verify and create connection", "tags": ["Connections"], "responses": { "201": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionResponse"}}} }, "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/ThrottledError"}}}, "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": "Verifies the external service connection using the initiation token and creates the connection record on success.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VerifyAndCreateConnectionRequest"}}} } } }, "/users/@me/connections/{type}/{connection_id}": { "patch": { "operationId": "update_connection", "summary": "Update connection", "tags": ["Connections"], "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/ThrottledError"}}}, "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 visibility and sort order settings for an external service connection.", "security": [{"sessionToken": []}], "parameters": [ { "name": "type", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/ConnectionType"}, "description": "The type of external connection" }, { "name": "connection_id", "in": "path", "required": true, "schema": {"type": "string", "description": "The unique identifier of the connection"}, "description": "The unique identifier of the connection" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateConnectionRequest"}}} } }, "delete": { "operationId": "delete_connection", "summary": "Delete connection", "tags": ["Connections"], "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/ThrottledError"}}}, "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": "Removes an external service connection from the authenticated user's profile.", "security": [{"sessionToken": []}], "parameters": [ { "name": "type", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/ConnectionType"}, "description": "The type of external connection" }, { "name": "connection_id", "in": "path", "required": true, "schema": {"type": "string", "description": "The unique identifier of the connection"}, "description": "The unique identifier of the connection" } ] } }, "/users/@me/delete": { "post": { "operationId": "delete_current_user_account", "summary": "Delete current user account", "tags": ["Users"], "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/ThrottledError"}}}, "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 the current user's account and all associated data. Requires sudo mode verification. This action is irreversible and will remove all user data, messages, and connections.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/disable": { "post": { "operationId": "disable_current_user_account", "summary": "Disable current user account", "tags": ["Users"], "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/ThrottledError"}}}, "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 disables the current user's account. Requires sudo mode verification. The account can be re-enabled by logging in again. User data is preserved but the account will be inaccessible during the disabled period.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/email-change/apply": { "post": { "operationId": "apply_email_change", "summary": "Apply a verified email change", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} }, "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/ThrottledError"}}}, "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": "Applies a previously verified email_token to the current user's account. Requires sudo mode verification (password for users without MFA, MFA proof for users with MFA). Returns the updated private user object. This is a dedicated alternative to PATCH /users/@me that cannot accidentally drag in unrelated profile edits.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeApplyRequest"}}} } } }, "/users/@me/email-change/bounced/request-new": { "post": { "operationId": "request_bounced_email_replacement", "summary": "Request replacement email for bounced address", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeRequestNewResponse"}}} }, "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/ThrottledError"}}}, "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": "Starts a dedicated bounced-email recovery flow. Sends a verification code to the replacement email without requiring verification of the old bounced email address.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeBouncedRequestNewRequest"}} } } } }, "/users/@me/email-change/bounced/resend-new": { "post": { "operationId": "resend_bounced_email_replacement_code", "summary": "Resend replacement email code", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Resends the verification code for the bounced-email recovery flow to the replacement email address.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeTicketRequest"}}} } } }, "/users/@me/email-change/bounced/verify-new": { "post": { "operationId": "verify_bounced_email_replacement", "summary": "Verify replacement email for bounced address", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} }, "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/ThrottledError"}}}, "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": "Completes bounced-email recovery by verifying the replacement email code, and updating the account email.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeBouncedVerifyNewRequest"}} } } } }, "/users/@me/email-change/request-new": { "post": { "operationId": "request_new_email_address", "summary": "Request new email address", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeRequestNewResponse"}}} }, "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/ThrottledError"}}}, "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": "Requests to change email to a new address. Requires proof of original email verification. Sends confirmation code to new email address for verification.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeRequestNewRequest"}}} } } }, "/users/@me/email-change/resend-new": { "post": { "operationId": "resend_new_email_confirmation", "summary": "Resend new email confirmation", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Resends a confirmation code to the new email address during the email change process. Use this if the new email confirmation was not received. Requires valid email change ticket.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeTicketRequest"}}} } } }, "/users/@me/email-change/resend-original": { "post": { "operationId": "resend_original_email_confirmation", "summary": "Resend original email confirmation", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Resends a confirmation code to the user's original email address during the email change process. Use this if the original confirmation email was not received. Requires valid email change ticket.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeTicketRequest"}}} } } }, "/users/@me/email-change/start": { "post": { "operationId": "start_email_change", "summary": "Start email change", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeStartResponse"}}} }, "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/ThrottledError"}}}, "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 an email change process. Generates a ticket for verifying the original email address before requesting a new email. Returns ticket for use in subsequent email change steps.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmptyBodyRequest"}}} } } }, "/users/@me/email-change/verify-new": { "post": { "operationId": "verify_new_email_address", "summary": "Verify new email address", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailTokenResponse"}}} }, "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/ThrottledError"}}}, "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": "Completes the email change process by verifying the new email address with a confirmation code. Returns an email token that confirms the email change. After this step, the user may need to re-authenticate.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeVerifyNewRequest"}}} } } }, "/users/@me/email-change/verify-original": { "post": { "operationId": "verify_original_email_address", "summary": "Verify original email address", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeVerifyOriginalResponse"}} } }, "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/ThrottledError"}}}, "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": "Verifies ownership of the original email address by validating a confirmation code sent to that address. Must be completed before requesting a new email address. Returns proof token for use in new email request.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailChangeVerifyOriginalRequest"}}} } } }, "/users/@me/entrance-sound-selections": { "put": { "operationId": "set_entrance_sound_selection", "summary": "Set the active entrance sound for a scope", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Assigns one of the user's library sounds to a scope (global, guilds, dms, or guild:). Pass sound_id null to clear.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundSelectionRequest"}}} } } }, "/users/@me/entrance-sounds": { "get": { "operationId": "list_entrance_sounds", "summary": "List the user's entrance sound library", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundLibraryResponse"}}} }, "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/ThrottledError"}}}, "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 the saved entrance sounds owned by the user plus the per-scope active selections.", "security": [{"sessionToken": []}] }, "post": { "operationId": "upload_entrance_sound", "summary": "Upload an entrance sound", "tags": ["Users"], "responses": { "201": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundResponse"}}} }, "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/ThrottledError"}}}, "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 short audio clip to the user's entrance sound library. Validates format, duration, and size server-side.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundUploadRequest"}}} } } }, "/users/@me/entrance-sounds/{sound_id}": { "patch": { "operationId": "rename_entrance_sound", "summary": "Rename an entrance sound", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundResponse"}}} }, "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/ThrottledError"}}}, "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 the display label for a sound in the user's library. Audio bytes are unchanged.", "security": [{"sessionToken": []}], "parameters": [ {"name": "sound_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundRenameRequest"}}} } }, "delete": { "operationId": "delete_entrance_sound", "summary": "Delete an entrance sound", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Removes the sound from the library and clears any per-scope selections that pointed at it.", "security": [{"sessionToken": []}], "parameters": [ {"name": "sound_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] } }, "/users/@me/favorite-gifs/resolve": { "post": { "operationId": "resolve_gif_urls", "summary": "Resolve GIF URLs to proxy entries", "tags": ["Saved Media"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResolveGifUrlsResponse"}}} }, "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/ThrottledError"}}}, "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": "Resolves a batch of GIF URLs into entries containing signed media proxy URLs, suitable for storing as URL-only favorite GIFs.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResolveGifUrlsBodySchema"}}} } } }, "/users/@me/gifts": { "get": { "operationId": "list_user_gifts", "summary": "List user gifts", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GiftCodeMetadataListResponse"}}} }, "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/ThrottledError"}}}, "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 gift codes created by the authenticated user.", "security": [{"sessionToken": []}] } }, "/users/@me/guilds": { "get": { "operationId": "list_guilds", "summary": "List current user guilds", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildListResponse"}}} }, "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/ThrottledError"}}}, "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": "Requires guilds OAuth scope if using bearer token. Returns all guilds the user is a member of.", "security": [{"botToken": []}, {"oauth2Token": ["guilds"]}, {"sessionToken": []}], "parameters": [ { "name": "before", "in": "query", "required": false, "schema": {"description": "Get guilds before this guild ID", "$ref": "#/components/schemas/SnowflakeType"}, "description": "Get guilds before this guild ID" }, { "name": "after", "in": "query", "required": false, "schema": {"description": "Get guilds after this guild ID", "$ref": "#/components/schemas/SnowflakeType"}, "description": "Get guilds after this guild ID" }, { "name": "limit", "in": "query", "required": false, "schema": { "default": 200, "description": "Maximum number of guilds to return (1-200)", "type": "integer", "minimum": 1, "maximum": 200 }, "description": "Maximum number of guilds to return (1-200)" }, { "name": "with_counts", "in": "query", "required": false, "schema": { "description": "Include approximate member and presence counts", "default": "false", "type": "string" }, "description": "Include approximate member and presence counts" } ] } }, "/users/@me/guilds/@me/settings": { "patch": { "operationId": "update_dm_notification_settings", "summary": "Update DM notification settings", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGuildSettingsResponse"}}} }, "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/ThrottledError"}}}, "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 the user's notification settings for direct messages and group DMs. Controls how DM notifications are handled.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGuildSettingsUpdateRequest"}}} } } }, "/users/@me/guilds/{guild_id}": { "delete": { "operationId": "leave_guild", "summary": "Leave guild", "tags": ["Guilds"], "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/ThrottledError"}}}, "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": "Removes the current user from the specified guild membership. When `delete_messages` is true, the caller's authored messages in the guild are deleted before leaving; that path requires sudo mode verification.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "delete_messages", "in": "query", "required": false, "schema": { "description": "Also delete every message the caller has authored in the guild before leaving", "default": "false", "type": "string" }, "description": "Also delete every message the caller has authored in the guild before leaving" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/guilds/{guild_id}/messages/bulk-delete-mine": { "post": { "operationId": "bulk_delete_my_messages_in_guild", "summary": "Bulk delete my messages in guild", "tags": ["Guilds"], "responses": { "202": {"description": "Success"}, "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/ThrottledError"}}}, "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 every message the caller has authored across all channels of the specified guild. Caller must be a member of the guild and pass sudo mode verification.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/guilds/{guild_id}/settings": { "patch": { "operationId": "update_guild_settings_for_user", "summary": "Update guild settings for user", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGuildSettingsResponse"}}} }, "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/ThrottledError"}}}, "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 the user's settings for a specific guild, such as notification preferences and visibility settings. Guild-specific settings override default settings.", "security": [{"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"description": "The ID of the guild", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserGuildSettingsUpdateRequest"}}} } } }, "/users/@me/harvest": { "post": { "operationId": "request_data_harvest", "summary": "Request data harvest", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HarvestCreationResponseSchema"}}} }, "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/ThrottledError"}}}, "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": "Requests a data harvest of all user data and content. Initiates an asynchronous process to compile and prepare all data for download in a portable format. Returns harvest ID and status.", "security": [{"sessionToken": []}] } }, "/users/@me/harvest/filtered": { "post": { "operationId": "request_filtered_data_harvest", "summary": "Request filtered data harvest", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HarvestCreationResponseSchema"}}} }, "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/ThrottledError"}}}, "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": "Requests a data harvest with the same optional scope and date-range filters offered by the bulk-delete endpoint. Settings, memberships, and other non-message data are always included; the filter only constrains which messages end up in the archive. Returns harvest ID and status.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HarvestSelfDataRequest"}}} } } }, "/users/@me/harvest/latest": { "get": { "operationId": "get_latest_data_harvest", "summary": "Get latest data harvest", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/HarvestStatusResponseSchemaNullable"}} } }, "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/ThrottledError"}}}, "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 the status of the most recent data harvest request. Returns null if no harvest has been requested yet. Shows progress and estimated completion time.", "security": [{"sessionToken": []}] } }, "/users/@me/harvest/{harvestId}": { "get": { "operationId": "get_data_harvest_status", "summary": "Get data harvest status", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HarvestStatusResponseSchema"}}} }, "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/ThrottledError"}}}, "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 status information for a specific data harvest. Shows progress, completion status, and other metadata about the harvest request.", "security": [{"sessionToken": []}], "parameters": [ { "name": "harvestId", "in": "path", "required": true, "schema": {"description": "The ID of the harvest request", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the harvest request" } ] } }, "/users/@me/harvest/{harvestId}/download": { "get": { "operationId": "get_data_harvest_download_url", "summary": "Get data harvest download URL", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HarvestDownloadUrlResponse"}}} }, "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/ThrottledError"}}}, "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 the download URL for a completed data harvest. The URL is temporary and expires after a set time. Can only be accessed for completed harvests.", "security": [{"sessionToken": []}], "parameters": [ { "name": "harvestId", "in": "path", "required": true, "schema": {"description": "The ID of the harvest request", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the harvest request" } ] } }, "/users/@me/memes": { "get": { "operationId": "list_favorite_memes", "summary": "List favorite memes", "tags": ["Saved Media"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FavoriteMemeListResponse"}}} }, "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/ThrottledError"}}}, "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 all memes saved as favorites by the authenticated user.", "security": [{"sessionToken": []}] }, "post": { "operationId": "create_meme_from_url", "summary": "Create meme from URL", "tags": ["Saved Media"], "responses": { "201": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FavoriteMemeResponse"}}} }, "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/ThrottledError"}}}, "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": "Saves a new meme to favorites from a provided URL.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/CreateFavoriteMemeFromUrlBodySchema"}} } } } }, "/users/@me/memes/{meme_id}": { "get": { "operationId": "get_favorite_meme", "summary": "Get favorite meme", "tags": ["Saved Media"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FavoriteMemeResponse"}}} }, "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/ThrottledError"}}}, "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 a specific favorite meme by ID.", "security": [{"sessionToken": []}], "parameters": [ { "name": "meme_id", "in": "path", "required": true, "schema": {"description": "The ID of the favorite meme", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the favorite meme" } ] }, "patch": { "operationId": "update_favorite_meme", "summary": "Update favorite meme", "tags": ["Saved Media"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FavoriteMemeResponse"}}} }, "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/ThrottledError"}}}, "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 details of a favorite meme.", "security": [{"sessionToken": []}], "parameters": [ { "name": "meme_id", "in": "path", "required": true, "schema": {"description": "The ID of the favorite meme", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the favorite meme" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateFavoriteMemeBodySchema"}}} } }, "delete": { "operationId": "delete_favorite_meme", "summary": "Delete favorite meme", "tags": ["Saved Media"], "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/ThrottledError"}}}, "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": "Removes a favorite meme from the authenticated user's collection.", "security": [{"sessionToken": []}], "parameters": [ { "name": "meme_id", "in": "path", "required": true, "schema": {"description": "The ID of the favorite meme", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the favorite meme" } ] } }, "/users/@me/mentions": { "get": { "operationId": "list_mentions_for_current_user", "summary": "List mentions for current user", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageListResponse"}}} }, "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/ThrottledError"}}}, "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 messages where the current user was mentioned. Supports filtering by role mentions, everyone mentions, and specific guilds. Returns paginated list of messages.", "security": [{"sessionToken": []}], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "description": "Maximum number of mentions to return (1-100, default 25)", "default": "25", "type": "string" }, "description": "Maximum number of mentions to return (1-100, default 25)" }, { "name": "roles", "in": "query", "required": false, "schema": {"description": "Whether to include role mentions", "default": "false", "type": "string"}, "description": "Whether to include role mentions" }, { "name": "everyone", "in": "query", "required": false, "schema": {"description": "Whether to include @everyone mentions", "default": "false", "type": "string"}, "description": "Whether to include @everyone mentions" }, { "name": "guilds", "in": "query", "required": false, "schema": {"description": "Whether to include guild mentions", "default": "false", "type": "string"}, "description": "Whether to include guild mentions" }, { "name": "before", "in": "query", "required": false, "schema": { "description": "Get mentions before this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get mentions before this message ID" } ] } }, "/users/@me/mentions/read": { "post": { "operationId": "mark_mentions_read", "summary": "Mark mentions read", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Removes multiple messages from the current user's recent mention history. Does not delete the original messages.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkMentionsReadRequest"}}} } } }, "/users/@me/mentions/{message_id}": { "delete": { "operationId": "delete_mention", "summary": "Delete mention", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Removes a mention from the current user's mention history. Does not delete the original message, only removes it from the user's personal mention list.", "security": [{"sessionToken": []}], "parameters": [ { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/users/@me/messages/bulk-delete-mine": { "post": { "operationId": "bulk_delete_my_messages", "summary": "Delete my messages with optional filters", "tags": ["Users"], "responses": { "202": {"description": "Success"}, "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/ThrottledError"}}}, "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 deletes messages the caller has authored, subject to optional date-range and per-context filters (DMs, group DMs, guilds, with optional guild exclusions; or an inaccessible-only mode for contexts the caller is no longer a member of). Requires sudo mode verification. The deletion runs asynchronously; the caller receives a system DM with totals when it completes.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkDeleteSelfMessagesRequest"}}} } } }, "/users/@me/messages/delete": { "post": { "operationId": "request_bulk_message_deletion", "summary": "Request bulk message deletion", "tags": ["Users"], "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/ThrottledError"}}}, "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 bulk deletion of all messages sent by the current user. Requires sudo mode verification. The deletion process is asynchronous and may take time to complete. User data remains intact.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } }, "delete": { "operationId": "cancel_bulk_message_deletion", "summary": "Cancel bulk message deletion", "tags": ["Users"], "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/ThrottledError"}}}, "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 an in-progress bulk message deletion request. Can only be used if the deletion has not yet completed. Returns success status.", "security": [{"sessionToken": []}] } }, "/users/@me/mfa/backup-codes": { "post": { "operationId": "get_backup_codes_mfa", "summary": "Get backup codes for multi-factor authentication", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesResponse"}}} }, "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/ThrottledError"}}}, "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 and retrieve new backup codes for account recovery. Requires sudo mode verification. Old codes are invalidated.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesRequest"}}} } } }, "/users/@me/mfa/backup-codes/challenge": { "post": { "operationId": "start_backup_codes_challenge", "summary": "Start backup codes challenge", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesChallengeStartResponse"}} } }, "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/ThrottledError"}}}, "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 the challenge required to view existing backup codes. Sends a verification code to the user's email address. Returns a ticket for use in the remaining challenge steps.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmptyBodyRequest"}}} } } }, "/users/@me/mfa/backup-codes/challenge/regenerate": { "post": { "operationId": "regenerate_backup_codes_challenge", "summary": "Regenerate backup codes with a verified challenge", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesResponse"}}} }, "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/ThrottledError"}}}, "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": "Replaces the account backup codes using the proof token from a verified backup codes challenge. Old codes are invalidated.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesChallengeRegenerateRequest"}} } } } }, "/users/@me/mfa/backup-codes/challenge/resend": { "post": { "operationId": "resend_backup_codes_challenge", "summary": "Resend backup codes challenge code", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Resends the verification code for a backup codes challenge. Use if the original code was not received. Requires a valid backup codes challenge ticket.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesChallengeResendRequest"}} } } } }, "/users/@me/mfa/backup-codes/challenge/verify": { "post": { "operationId": "verify_backup_codes_challenge", "summary": "Verify backup codes challenge code", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesChallengeVerifyResponse"}} } }, "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/ThrottledError"}}}, "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": "Verifies the email code sent during a backup codes challenge and returns the existing backup codes along with a proof token. The code is consumed on success and the proof token authorizes regeneration on the same ticket.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesChallengeVerifyRequest"}} } } } }, "/users/@me/mfa/totp/disable": { "post": { "operationId": "disable_totp_mfa", "summary": "Disable TOTP multi-factor authentication", "tags": ["Users"], "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/ThrottledError"}}}, "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 TOTP multi-factor authentication on the current account. Requires sudo mode verification for security.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DisableTotpRequest"}}} } } }, "/users/@me/mfa/totp/enable": { "post": { "operationId": "enable_totp_mfa", "summary": "Enable TOTP multi-factor authentication", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MfaBackupCodesResponse"}}} }, "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/ThrottledError"}}}, "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": "Enable time-based one-time password (TOTP) MFA on the current account. Returns backup codes for account recovery. Requires sudo mode verification.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EnableMfaTotpRequest"}}} } } }, "/users/@me/mfa/webauthn/credentials": { "get": { "operationId": "list_webauthn_credentials", "summary": "List WebAuthn credentials", "tags": ["Users"], "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/ThrottledError"}}}, "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 registered WebAuthn credentials (security keys, biometric devices) for the current user. Requires authentication.", "security": [{"sessionToken": []}] }, "post": { "operationId": "register_webauthn_credential", "summary": "Register WebAuthn credential", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Complete registration of a new WebAuthn credential (security key or biometric device) using a challenge created after sudo mode verification.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnRegisterRequest"}}} } } }, "/users/@me/mfa/webauthn/credentials/registration-options": { "post": { "operationId": "get_webauthn_registration_options", "summary": "Get WebAuthn registration options", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnChallengeResponse"}}} }, "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/ThrottledError"}}}, "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 challenge and options to register a new WebAuthn credential. Requires sudo mode verification.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/mfa/webauthn/credentials/{credential_id}": { "patch": { "operationId": "update_webauthn_credential", "summary": "Update WebAuthn credential", "tags": ["Users"], "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/ThrottledError"}}}, "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 the name or settings of a registered WebAuthn credential. Requires sudo mode verification.", "security": [{"sessionToken": []}], "parameters": [ { "name": "credential_id", "in": "path", "required": true, "schema": {"description": "The ID of the WebAuthn credential", "type": "string"}, "description": "The ID of the WebAuthn credential" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnCredentialUpdateRequest"}}} } }, "delete": { "operationId": "delete_webauthn_credential", "summary": "Delete WebAuthn credential", "tags": ["Users"], "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/ThrottledError"}}}, "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 registered WebAuthn credential from the current account. Requires sudo mode verification for security.", "security": [{"sessionToken": []}], "parameters": [ { "name": "credential_id", "in": "path", "required": true, "schema": {"description": "The ID of the WebAuthn credential", "type": "string"}, "description": "The ID of the WebAuthn credential" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/users/@me/mfa/webauthn/migration": { "get": { "operationId": "get_webauthn_migration", "summary": "Get pending passkey update", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyMigrationResponse"}}} }, "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/ThrottledError"}}}, "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": "Return the passkey this session can update to the new domain after using it within the last five minutes, or null.", "security": [{"sessionToken": []}] }, "post": { "operationId": "complete_webauthn_migration", "summary": "Complete passkey update", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Register the replacement passkey under the name of the pending one. The old passkey stops appearing in lists and is removed together with its replacement.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyMigrationCompleteRequest"}}} } } }, "/users/@me/mfa/webauthn/migration/registration-options": { "post": { "operationId": "get_webauthn_migration_registration_options", "summary": "Get passkey update registration options", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnChallengeResponse"}}} }, "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/ThrottledError"}}}, "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 registration options for the passkey that replaces the pending one. Requires a pending passkey update for this session.", "security": [{"sessionToken": []}] } }, "/users/@me/mfa/webauthn/two-factor": { "put": { "operationId": "set_webauthn_two_factor", "summary": "Set WebAuthn two-factor authentication", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnTwoFactorResponse"}}} }, "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/ThrottledError"}}}, "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": "Choose whether registered passkeys are required as a second factor when signing in with email and password. Enabling requires at least one registered credential and mints backup codes when the account has none. Requires sudo mode verification.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnTwoFactorRequest"}}} } } }, "/users/@me/mobile-devices": { "post": { "operationId": "register_mobile_push_device", "summary": "Register mobile push device", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RegisterMobileDeviceResponse"}}} }, "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/ThrottledError"}}}, "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": "Registers a mobile push device for APNs, Firebase Cloud Messaging, or UnifiedPush. A Web Push registration sends the endpoint URL with encryption_key and auth_secret. A raw registration sends the platform push token with no keys.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RegisterMobileDeviceRequest"}}} } }, "get": { "operationId": "list_mobile_push_devices", "summary": "List mobile push devices", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MobileDevicesListResponse"}}} }, "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/ThrottledError"}}}, "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 mobile push device registrations for the current user.", "security": [{"sessionToken": []}] } }, "/users/@me/mobile-devices/unregister": { "post": { "operationId": "unregister_mobile_push_device", "summary": "Unregister mobile push device", "tags": ["Users"], "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/ThrottledError"}}}, "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 registered mobile push device using the platform token known by the client.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnregisterMobileDeviceRequest"}}} } } }, "/users/@me/mobile-devices/{device_id}": { "delete": { "operationId": "delete_mobile_push_device", "summary": "Delete mobile push device", "tags": ["Users"], "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/ThrottledError"}}}, "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 registered mobile push device by device ID.", "security": [{"sessionToken": []}], "parameters": [ { "name": "device_id", "in": "path", "required": true, "schema": {"description": "The ID of the mobile push device", "type": "string"}, "description": "The ID of the mobile push device" } ] } }, "/users/@me/notes": { "get": { "operationId": "list_current_user_notes", "summary": "List current user notes", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserNotesRecordResponse"}}} }, "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/ThrottledError"}}}, "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 all notes the current user has written about other users. Returns a record of user IDs to notes. These are private notes visible only to the authenticated user.", "security": [{"sessionToken": []}] } }, "/users/@me/notes/{target_id}": { "get": { "operationId": "get_note_on_user", "summary": "Get note on user", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserNoteResponse"}}} }, "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/ThrottledError"}}}, "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 a specific note the current user has written about another user. Returns the note text and metadata. These are private notes visible only to the authenticated user.", "security": [{"sessionToken": []}], "parameters": [ { "name": "target_id", "in": "path", "required": true, "schema": {"description": "The ID of the target user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the target user" } ] }, "put": { "operationId": "set_note_on_user", "summary": "Set note on user", "tags": ["Users"], "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/ThrottledError"}}}, "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 or updates a private note on another user. The note is visible only to the authenticated user. Send null or empty string to delete an existing note.", "security": [{"sessionToken": []}], "parameters": [ { "name": "target_id", "in": "path", "required": true, "schema": {"description": "The ID of the target user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the target user" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserNoteUpdateRequest"}}} } } }, "/users/@me/passkey-bridge": { "post": { "operationId": "start_passkey_bridge_sudo", "summary": "Start passkey bridge sudo verification", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeStartResponse"}}} }, "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/ThrottledError"}}}, "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": "Start a sudo verification ceremony for a passkey that belongs to the paired first-party origin. Only available on the official instance from the new origin.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeSudoStartRequest"}}} } } }, "/users/@me/passkey-bridge/{ceremony_id}/redeem": { "post": { "operationId": "redeem_passkey_bridge_sudo", "summary": "Redeem passkey bridge sudo verification", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeSudoRedeemResponse"}} } }, "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/ThrottledError"}}}, "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": "Redeem a finished sudo passkey bridge ceremony once for a sudo mode token. Requires the nonce kept by the starting page and the completion code handed back when the ceremony finished.", "security": [{"sessionToken": []}], "parameters": [ { "name": "ceremony_id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Identifier of the passkey ceremony" }, "description": "Identifier of the passkey ceremony" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasskeyBridgeRedeemRequest"}}} } } }, "/users/@me/password-change/complete": { "post": { "operationId": "complete_password_change", "summary": "Complete password change", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasswordChangeCompleteResponse"}}} }, "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/ThrottledError"}}}, "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": "Completes the password change after email verification. Requires the verification proof and new password. Invalidates all existing sessions and returns the replacement session token.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasswordChangeCompleteRequest"}}} } } }, "/users/@me/password-change/resend": { "post": { "operationId": "resend_password_change_code", "summary": "Resend password change verification code", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Resends the verification code for a password change. Use if the original code was not received. Requires a valid password change ticket.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasswordChangeTicketRequest"}}} } } }, "/users/@me/password-change/start": { "post": { "operationId": "start_password_change", "summary": "Start password change", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasswordChangeStartResponse"}}} }, "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/ThrottledError"}}}, "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 password change process. Sends a verification code to the user's email address. Returns a ticket for use in subsequent password change steps.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmptyBodyRequest"}}} } } }, "/users/@me/password-change/verify": { "post": { "operationId": "verify_password_change_code", "summary": "Verify password change code", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasswordChangeVerifyResponse"}}} }, "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/ThrottledError"}}}, "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": "Verifies the email code sent during password change. Returns a proof token needed to complete the password change.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PasswordChangeVerifyRequest"}}} } } }, "/users/@me/preload-messages": { "post": { "operationId": "preload_messages_for_channels", "summary": "Preload messages for channels", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PreloadMessagesResponse"}}} }, "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/ThrottledError"}}}, "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": "Preloads and caches messages for multiple channels to improve performance when opening those channels. Returns preloaded message data for the specified channels.", "security": [{"botToken": []}, {"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PreloadMessagesRequest"}}} } } }, "/users/@me/premium/reset": { "post": { "operationId": "reset_current_user_premium_state", "summary": "Reset current user premium state", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Staff-only endpoint that clears premium status and related premium metadata for the current user account.", "security": [{"sessionToken": []}] } }, "/users/@me/push/rotate": { "post": { "operationId": "rotate_push_subscription", "summary": "Rotate a push notification subscription", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PushSubscribeResponse"}}} }, "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/ThrottledError"}}}, "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": "Replaces an existing push subscription whose endpoint has been rotated by the browser (pushsubscriptionchange). Deletes the row keyed by the old endpoint and inserts a new one for the new endpoint.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PushRotateRequest"}}} } } }, "/users/@me/push/subscribe": { "post": { "operationId": "subscribe_to_push_notifications", "summary": "Subscribe to push notifications", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PushSubscribeResponse"}}} }, "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/ThrottledError"}}}, "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": "Registers a new push notification subscription for the current user. Takes push endpoint and encryption keys from a Web Push API subscription. Returns subscription ID for future reference.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PushSubscribeRequest"}}} } } }, "/users/@me/push/subscriptions": { "get": { "operationId": "list_push_subscriptions", "summary": "List push subscriptions", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PushSubscriptionsListResponse"}}} }, "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/ThrottledError"}}}, "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 all push notification subscriptions for the current user, including subscription IDs and user agent information for each subscription.", "security": [{"sessionToken": []}] } }, "/users/@me/push/subscriptions/{subscription_id}": { "delete": { "operationId": "unsubscribe_from_push_notifications", "summary": "Unsubscribe from push notifications", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Unregisters a push notification subscription for the current user. Push notifications will no longer be sent to this subscription endpoint.", "security": [{"sessionToken": []}], "parameters": [ { "name": "subscription_id", "in": "path", "required": true, "schema": {"description": "The ID of the push subscription", "type": "string"}, "description": "The ID of the push subscription" } ] } }, "/users/@me/relationships": { "get": { "operationId": "list_user_relationships", "summary": "List user relationships", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelationshipListResponse"}}} }, "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/ThrottledError"}}}, "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 all relationships for the current user, including friends, friend requests (incoming and outgoing), and blocked users. Returns list of relationship objects with type and metadata.", "security": [{"sessionToken": []}] }, "post": { "operationId": "send_friend_request_by_tag", "summary": "Send friend request by tag", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelationshipResponse"}}} }, "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/ThrottledError"}}}, "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": "Sends a friend request to a user identified by username tag (username#discriminator). Returns the new relationship object. Can fail if user not found or request already sent.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FriendRequestByTagRequest"}}} } } }, "/users/@me/relationships/bulk-ignore": { "post": { "operationId": "bulk_ignore_friend_requests", "summary": "Bulk ignore friend requests", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/BulkIgnoreFriendRequestsResponse"}} } }, "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/ThrottledError"}}}, "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": "Ignores (removes) multiple incoming friend requests at once. Optionally filters by sender account age to target requests from new accounts.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkIgnoreFriendRequestsRequest"}}} } } }, "/users/@me/relationships/{user_id}": { "post": { "operationId": "send_friend_request", "summary": "Send friend request", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelationshipResponse"}}} }, "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/ThrottledError"}}}, "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": "Sends a friend request to a user identified by user ID. Returns the new relationship object. Can fail if user not found or request already sent.", "security": [{"sessionToken": []}], "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FriendRequestCreateRequest"}}} } }, "put": { "operationId": "accept_or_update_friend_request", "summary": "Accept or update friend request", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelationshipResponse"}}} }, "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/ThrottledError"}}}, "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": "Accepts a pending incoming friend request from a user or updates the relationship type. Can also be used to change friend relationship to blocked status. Returns updated relationship object.", "security": [{"sessionToken": []}], "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelationshipTypePutRequest"}}} } }, "delete": { "operationId": "remove_relationship", "summary": "Remove relationship", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Removes a relationship with another user by ID. Removes friends, cancels friend requests (incoming or outgoing), or unblocks a blocked user depending on current relationship type.", "security": [{"sessionToken": []}], "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] }, "patch": { "operationId": "update_relationship_nickname", "summary": "Update relationship nickname", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RelationshipResponse"}}} }, "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/ThrottledError"}}}, "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 the nickname associated with a relationship (friend or blocked user). Nicknames are personal labels that override the user's display name in the current user's view. Returns updated relationship object.", "security": [{"sessionToken": []}], "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/RelationshipNicknameUpdateRequest"}} } } } }, "/users/@me/saved-messages": { "get": { "operationId": "list_saved_messages", "summary": "List saved messages", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SavedMessageEntryListResponse"}}} }, "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/ThrottledError"}}}, "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 all messages saved by the current user. Messages are saved privately for easy reference. Returns paginated list of saved messages with metadata.", "security": [{"sessionToken": []}], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "description": "Maximum number of saved messages to return (1-100, default 25)", "default": "25", "type": "string" }, "description": "Maximum number of saved messages to return (1-100, default 25)" }, { "name": "before", "in": "query", "required": false, "schema": { "description": "Get saved messages before this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Get saved messages before this message ID" } ] }, "post": { "operationId": "save_message", "summary": "Save message", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Saves a message for the current user. Saved messages can be accessed later from the saved messages list. Messages are saved privately.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SaveMessageRequest"}}} } } }, "/users/@me/saved-messages/{message_id}": { "delete": { "operationId": "unsave_message", "summary": "Unsave message", "tags": ["Users"], "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/ThrottledError"}}}, "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": "Removes a message from the current user's saved messages. Does not delete the original message, only removes it from the user's saved collection.", "security": [{"sessionToken": []}], "parameters": [ { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/users/@me/settings": { "get": { "operationId": "get_current_user_settings", "summary": "Get current user settings", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserSettingsResponse"}}} }, "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/ThrottledError"}}}, "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 the current user's settings and preferences, including notification settings, privacy options, and display preferences. Only accessible to the authenticated user.", "security": [{"sessionToken": []}] }, "patch": { "operationId": "update_current_user_settings", "summary": "Update current user settings", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserSettingsResponse"}}} }, "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/ThrottledError"}}}, "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 the current user's settings and preferences. Allows modification of notification settings, privacy options, display preferences, and other user-configurable options. Returns updated settings.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserSettingsUpdateRequest"}}} } } }, "/users/@me/settings/voice-activity-sharing": { "put": { "operationId": "update_voice_activity_sharing_default", "summary": "Update voice activity sharing default and apply to all friends", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} }, "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/ThrottledError"}}}, "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": "Sets the default share_voice_activity flag for the current user and rewrites every existing friend relationship to the new value. Dispatches RELATIONSHIP_UPDATE to both parties of each friendship plus USER_UPDATE and USER_SETTINGS_UPDATE for the caller. Enforces a 24-hour cooldown tracked via the user's last_voice_activity_sharing_change_at field. Returns the updated user.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/VoiceActivitySharingUpdateRequest"}} } } } }, "/users/@me/sudo/mfa-methods": { "get": { "operationId": "list_sudo_mfa_methods", "summary": "List sudo multi-factor authentication methods", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoMfaMethodsResponse"}}} }, "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/ThrottledError"}}}, "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 available MFA methods for sudo mode verification (TOTP, WebAuthn). Requires authentication.", "security": [{"sessionToken": []}] } }, "/users/@me/sudo/webauthn/authentication-options": { "post": { "operationId": "get_sudo_webauthn_authentication_options", "summary": "Get sudo WebAuthn authentication options", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebAuthnChallengeResponse"}}} }, "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/ThrottledError"}}}, "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 WebAuthn challenge for sudo mode verification using a registered security key or biometric device.", "security": [{"sessionToken": []}] } }, "/users/@me/terms-acceptance": { "post": { "operationId": "accept_updated_terms", "summary": "Accept updated terms of service and privacy policy", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} }, "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/ThrottledError"}}}, "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": "Records that the user has read and agreed to the current terms of service and privacy policy. Returns the updated private user object.", "security": [{"sessionToken": []}], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmptyBodyRequest"}}} } } }, "/users/@me/themes": { "post": { "operationId": "create_theme", "summary": "Create theme", "tags": ["Themes"], "responses": { "201": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThemeCreateResponse"}}} }, "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/ThrottledError"}}}, "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 custom theme with CSS styling that can be shared with other users.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThemeCreateRequest"}}} } } }, "/users/check-tag": { "get": { "operationId": "check_username_tag_availability", "summary": "Check username tag availability", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTagCheckResponse"}}} }, "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/ThrottledError"}}}, "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": "Checks if a username and discriminator combination is available for registration. Returns whether the tag is taken by another user.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "username", "in": "query", "required": true, "schema": {"description": "The username to check", "$ref": "#/components/schemas/UsernameType"}, "description": "The username to check" }, { "name": "discriminator", "in": "query", "required": true, "schema": {"description": "The discriminator to check", "$ref": "#/components/schemas/DiscriminatorType"}, "description": "The discriminator to check" } ] } }, "/users/{target_id}/profile": { "get": { "operationId": "get_user_profile", "summary": "Get user profile", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserProfileFullResponse"}}} }, "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/ThrottledError"}}}, "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 profile information for a user, including bio, custom status, and badges. Optionally includes mutual friends and mutual guilds if requested. May respect privacy settings.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "target_id", "in": "path", "required": true, "schema": {"description": "The ID of the target user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the target user" }, { "name": "guild_id", "in": "query", "required": false, "schema": { "description": "Optional guild ID for guild-specific profile", "$ref": "#/components/schemas/SnowflakeType" }, "description": "Optional guild ID for guild-specific profile" }, { "name": "with_mutual_friends", "in": "query", "required": false, "schema": {"description": "Whether to include mutual friends", "default": "false", "type": "string"}, "description": "Whether to include mutual friends" }, { "name": "with_mutual_guilds", "in": "query", "required": false, "schema": {"description": "Whether to include mutual guilds", "default": "false", "type": "string"}, "description": "Whether to include mutual guilds" } ] } }, "/users/{user_id}": { "get": { "operationId": "get_user_by_id", "summary": "Get user by ID", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPartialResponse"}}} }, "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/ThrottledError"}}}, "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 public user information by user ID. Returns basic profile details like username, avatar, and status. Does not include private or sensitive user data.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": {"description": "The ID of the user", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ] } }, "/voice/channels/{channel_id}/entrance-sound": { "post": { "operationId": "play_entrance_sound", "summary": "Play an entrance sound in a voice channel", "tags": ["Voice"], "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/ThrottledError"}}}, "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": "Requests that the API fan out an ENTRANCE_SOUND_PLAY gateway event to every other user currently connected to the voice channel. The other clients then fetch the audio from CDN and play it locally; no LiveKit track is published.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntranceSoundPlayRequest"}}} } } }, "/webhooks/{webhook_id}": { "get": { "operationId": "get_webhook", "summary": "Get webhook", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookResponse"}}} }, "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/ThrottledError"}}}, "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 webhook by its ID. Requires authentication and appropriate permissions to access the webhook.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" } ] }, "patch": { "operationId": "update_webhook", "summary": "Update webhook", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookResponse"}}} }, "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/ThrottledError"}}}, "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 the specified webhook with new settings such as name, avatar, or target channel. All fields are optional. Returns the updated webhook object.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookUpdateRequest"}}} } }, "delete": { "operationId": "delete_webhook", "summary": "Delete webhook", "tags": ["Webhooks"], "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/ThrottledError"}}}, "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 the specified webhook. This action cannot be undone. Returns a 204 status code on successful deletion.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" } ] } }, "/webhooks/{webhook_id}/{token}": { "get": { "operationId": "get_webhook_with_token", "summary": "Get webhook with token", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookTokenResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 webhook using its ID and token. No authentication required as the token serves as the credential. Returns the webhook object without creator user data.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" } ] }, "patch": { "operationId": "update_webhook_with_token", "summary": "Update webhook with token", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookTokenResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 the specified webhook using its ID and token for authentication. Allows modification of name or avatar. Returns the updated webhook object without creator user data.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookTokenUpdateRequest"}}} } }, "delete": { "operationId": "delete_webhook_with_token", "summary": "Delete webhook with token", "tags": ["Webhooks"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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 the specified webhook using its ID and token for authentication. This action cannot be undone. Returns a 204 status code on successful deletion.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" } ] }, "post": { "operationId": "execute_webhook", "summary": "Execute webhook", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Executes the webhook by sending a message to its configured channel. If the wait query parameter is true, returns the created message object; otherwise returns a 204 status with no content.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" }, { "name": "wait", "in": "query", "required": false, "schema": {"description": "Whether to wait for the webhook response", "default": "false", "type": "string"}, "description": "Whether to wait for the webhook response" } ], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/WebhookMessageRequest"}}, "multipart/form-data": {"schema": {"$ref": "#/components/schemas/WebhookMultipartMessageRequest"}} } } } }, "/webhooks/{webhook_id}/{token}/github": { "post": { "operationId": "execute_github_webhook", "summary": "Execute GitHub webhook", "tags": ["Webhooks"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Receives and processes GitHub webhook events, formatting them as messages in the configured channel. Reads event type from X-GitHub-Event header and delivery ID from X-GitHub-Delivery header.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GitHubWebhook"}}} } } }, "/webhooks/{webhook_id}/{token}/instatus": { "post": { "operationId": "execute_instatus_webhook", "summary": "Execute Instatus webhook", "tags": ["Webhooks"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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": "Receives and processes Instatus status page webhook events, formatting them as messages in the configured channel.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstatusWebhook"}}} } } }, "/webhooks/{webhook_id}/{token}/messages/{message_id}": { "get": { "operationId": "get_webhook_message", "summary": "Get webhook message", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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 a message previously sent by the webhook. Only messages authored by the webhook can be retrieved.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] }, "patch": { "operationId": "edit_webhook_message", "summary": "Edit webhook message", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseSchema"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Edits a message previously sent by the webhook. Only messages authored by the webhook can be edited. Returns the updated message object.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebhookMessageEditRequest"}}} } }, "delete": { "operationId": "delete_webhook_message", "summary": "Delete webhook message", "tags": ["Webhooks"], "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, "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 message previously sent by the webhook. Only messages authored by the webhook can be deleted. Returns a 204 status code on successful deletion.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" }, { "name": "message_id", "in": "path", "required": true, "schema": {"description": "The ID of the message", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ] } }, "/webhooks/{webhook_id}/{token}/slack": { "post": { "operationId": "execute_slack_webhook", "summary": "Execute Slack webhook", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SlackWebhookResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "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/ThrottledError"}}}, "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": "Receives and processes Slack-formatted webhook payloads, converting them to messages in the configured channel. Returns \"ok\" as plain text with a 200 status code.", "parameters": [ { "name": "webhook_id", "in": "path", "required": true, "schema": {"description": "The ID of the webhook", "$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, { "name": "token", "in": "path", "required": true, "schema": {"description": "The webhook token", "type": "string"}, "description": "The webhook token" } ], "requestBody": { "required": false, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SlackWebhookRequest"}}} } } } }, "components": { "schemas": { "SlackWebhookRequest": { "type": "object", "properties": { "text": {"description": "Main text content of the message", "type": "string"}, "username": {"description": "Override the default username of the webhook", "type": "string"}, "icon_url": {"description": "Override the default icon of the webhook", "type": "string"}, "attachments": { "description": "Array of attachment objects", "type": "array", "items": { "type": "object", "properties": { "fallback": {"description": "Fallback text for notifications", "type": "string"}, "pretext": {"description": "Text that appears above the attachment block", "type": "string"}, "text": {"description": "Main text content of the attachment", "type": "string"}, "color": {"description": "Colour of the attachment sidebar (hex code or preset)", "type": "string"}, "title": {"description": "Title of the attachment", "type": "string"}, "title_link": {"description": "URL to link from the title", "type": "string"}, "fields": { "description": "Array of field objects", "type": "array", "items": { "type": "object", "properties": { "title": {"description": "Title of the field", "type": "string"}, "value": {"description": "Value of the field", "type": "string"}, "short": { "description": "Whether the field should be displayed as a short column", "type": "boolean" } } } }, "footer": {"description": "Footer text displayed at the bottom", "type": "string"}, "ts": { "description": "Unix timestamp for the attachment footer", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "author_name": {"description": "Name of the author", "type": "string"}, "author_link": {"description": "URL to link from the author name", "type": "string"}, "author_icon": {"description": "URL for the author icon image", "type": "string"}, "image_url": {"description": "URL of the main image to display", "type": "string"}, "thumb_url": {"description": "URL of a thumbnail image", "type": "string"} } } } } }, "SnowflakeType": { "anyOf": [{"type": "string"}, {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}], "format": "snowflake" }, "Error": { "type": "object", "properties": { "code": {"type": "string", "description": "Machine-readable error code"}, "message": {"type": "string", "description": "Human-readable error message"}, "errors": { "description": "Field-specific validation errors", "type": "array", "items": { "type": "object", "properties": { "path": {"type": "string", "description": "Field path that failed validation"}, "code": {"description": "Machine-readable validation error code", "type": "string"}, "message": {"type": "string", "description": "Human-readable validation error message"} }, "required": ["path", "message"], "additionalProperties": false } } }, "required": ["code", "message"], "additionalProperties": {} }, "ThrottledError": { "type": "object", "properties": { "code": {"type": "string", "description": "Machine-readable error code"}, "message": {"type": "string", "description": "Human-readable error message"}, "errors": { "description": "Field-specific validation errors", "type": "array", "items": { "type": "object", "properties": { "path": {"type": "string", "description": "Field path that failed validation"}, "code": {"description": "Machine-readable validation error code", "type": "string"}, "message": {"type": "string", "description": "Human-readable validation error message"} }, "required": ["path", "message"], "additionalProperties": false } }, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message"], "additionalProperties": {} }, "SlackWebhookResponse": {"type": "string"}, "WebhookMessageEditRequest": { "type": "object", "properties": { "content": { "description": "The new message content (up to 4000 characters)", "anyOf": [{"$ref": "#/components/schemas/MessageContentRequest"}, {"type": "null"}] }, "embeds": { "description": "Array of embed objects to include in the message", "type": "array", "items": {"$ref": "#/components/schemas/RichEmbedRequest"} }, "flags": {"$ref": "#/components/schemas/MessageFlags", "description": "Message flags bitfield"}, "allowed_mentions": { "description": "Controls which mentions trigger notifications", "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}] } } }, "MessageResponseSchema": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this message", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this message was sent in", "$ref": "#/components/schemas/SnowflakeStringType" }, "author": {"description": "The author of the message", "$ref": "#/components/schemas/UserPartialResponse"}, "webhook_id": { "description": "The ID of the webhook that sent this message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageType"}, "flags": {"$ref": "#/components/schemas/MessageFlags", "description": "The bitwise flags for this message"}, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "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", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ] }, "users": { "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ] }, "embeds": { "description": "The embeds attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ] }, "attachments": { "description": "The files attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ] }, "stickers": { "description": "The stickers sent with the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ] }, "reactions": { "description": "The reactions on the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageReactionResponse"}}, {"type": "null"} ] }, "message_reference": { "description": "Reference data for replies or forwards", "anyOf": [ { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel containing the referenced message", "$ref": "#/components/schemas/SnowflakeStringType" }, "message_id": { "description": "The ID of the referenced message, absent on a channel follow system message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "guild_id": { "description": "The ID of the guild containing the referenced message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "type"], "additionalProperties": false }, {"type": "null"} ] }, "message_snapshots": { "description": "Snapshots of forwarded messages", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ] }, "nonce": {"description": "A client-provided value for message deduplication", "type": ["string", "null"]}, "call": { "description": "Call information if this message represents a call", "anyOf": [ { "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] } }, "required": ["participants"], "additionalProperties": false }, {"type": "null"} ] }, "referenced_message": { "description": "The reply target. Present and populated when the target resolved, present and null when the target is gone, absent when this message carries no default reference. Clients must tell null apart from absent by key presence.", "anyOf": [ { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this message", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this message was sent in", "$ref": "#/components/schemas/SnowflakeStringType" }, "author": { "description": "The author of the message", "$ref": "#/components/schemas/UserPartialResponse" }, "webhook_id": { "description": "The ID of the webhook that sent this message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageType"}, "flags": { "$ref": "#/components/schemas/MessageFlags", "description": "The bitwise flags for this message" }, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "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", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ] }, "users": { "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ] }, "embeds": { "description": "The embeds attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ] }, "attachments": { "description": "The files attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ] }, "stickers": { "description": "The stickers sent with the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ] }, "reactions": { "description": "The reactions on the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageReactionResponse"}}, {"type": "null"} ] }, "message_reference": { "description": "Reference data for replies or forwards", "anyOf": [ { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel containing the referenced message", "$ref": "#/components/schemas/SnowflakeStringType" }, "message_id": { "description": "The ID of the referenced message, absent on a channel follow system message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "guild_id": { "description": "The ID of the guild containing the referenced message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "type"], "additionalProperties": false }, {"type": "null"} ] }, "message_snapshots": { "description": "Snapshots of forwarded messages", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ] }, "nonce": { "description": "A client-provided value for message deduplication", "type": ["string", "null"] }, "call": { "description": "Call information if this message represents a call", "anyOf": [ { "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] } }, "required": ["participants"], "additionalProperties": false }, {"type": "null"} ] } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ], "additionalProperties": false }, {"type": "null"} ] } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ], "additionalProperties": false }, "InstatusWebhook": { "type": "object", "properties": { "meta": { "anyOf": [ { "type": "object", "properties": { "unsubscribe": {"type": ["string", "null"]}, "documentation": {"type": ["string", "null"]} } }, {"type": "null"} ] }, "page": { "anyOf": [ { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "status_indicator": {"type": ["string", "null"]}, "status_description": {"type": ["string", "null"]}, "url": {"type": ["string", "null"]} } }, {"type": "null"} ] }, "incident": { "anyOf": [ { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "name": {"type": ["string", "null"]}, "url": {"type": ["string", "null"]}, "status": {"type": ["string", "null"]}, "backfilled": {"type": ["boolean", "null"]}, "created_at": {"type": ["string", "null"]}, "updated_at": {"type": ["string", "null"]}, "resolved_at": {"type": ["string", "null"]}, "incident_updates": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "incident_id": {"type": ["string", "null"]}, "markdown": {"type": ["string", "null"]}, "status": {"type": ["string", "null"]}, "created_at": {"type": ["string", "null"]}, "updated_at": {"type": ["string", "null"]} } } }, {"type": "null"} ] }, "affected_components": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "name": {"type": ["string", "null"]}, "status": {"type": ["string", "null"]} } } }, {"type": "null"} ] } } }, {"type": "null"} ] }, "maintenance": { "anyOf": [ { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "name": {"type": ["string", "null"]}, "url": {"type": ["string", "null"]}, "status": {"type": ["string", "null"]}, "maintenance_start_date": {"type": ["string", "null"]}, "maintenance_end_date": {"type": ["string", "null"]}, "backfilled": {"type": ["boolean", "null"]}, "created_at": {"type": ["string", "null"]}, "updated_at": {"type": ["string", "null"]}, "resolved_at": {"type": ["string", "null"]}, "maintenance_updates": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "maintenance_id": {"type": ["string", "null"]}, "markdown": {"type": ["string", "null"]}, "created_at": {"type": ["string", "null"]}, "updated_at": {"type": ["string", "null"]} } } }, {"type": "null"} ] }, "affected_components": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "name": {"type": ["string", "null"]}, "status": {"type": ["string", "null"]} } } }, {"type": "null"} ] } } }, {"type": "null"} ] }, "component_update": { "anyOf": [ { "type": "object", "properties": { "created_at": {"type": ["string", "null"]}, "new_status": {"type": ["string", "null"]}, "component_id": {"type": ["string", "null"]} } }, {"type": "null"} ] }, "component": { "anyOf": [ { "type": "object", "properties": { "id": {"type": ["string", "null"]}, "name": {"type": ["string", "null"]}, "status": {"type": ["string", "null"]}, "created_at": {"type": ["string", "null"]} } }, {"type": "null"} ] } } }, "GitHubWebhook": { "type": "object", "properties": { "action": {"type": ["string", "null"]}, "answer": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int64Type"}, "html_url": {"type": "string"}, "user": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] }, "commit_id": {"type": ["string", "null"]}, "body": {"type": "string"} }, "required": ["id", "html_url", "user", "body"] }, {"type": "null"} ] }, "check_run": { "anyOf": [ { "type": "object", "properties": { "conclusion": {"type": ["string", "null"]}, "name": {"type": "string"}, "html_url": {"type": "string"}, "check_suite": { "type": "object", "properties": { "conclusion": {"type": ["string", "null"]}, "head_branch": {"type": ["string", "null"]}, "head_sha": {"type": "string"}, "pull_requests": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": {"number": {"$ref": "#/components/schemas/Int32Type"}}, "required": ["number"] } }, {"type": "null"} ] }, "app": {"type": "object", "properties": {"name": {"type": "string"}}, "required": ["name"]} }, "required": ["head_sha", "app"] }, "details_url": {"type": ["string", "null"]}, "output": { "anyOf": [ { "type": "object", "properties": {"title": {"type": ["string", "null"]}, "summary": {"type": ["string", "null"]}} }, {"type": "null"} ] }, "pull_requests": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": {"number": {"$ref": "#/components/schemas/Int32Type"}}, "required": ["number"] } }, {"type": "null"} ] } }, "required": ["name", "html_url", "check_suite"] }, {"type": "null"} ] }, "check_suite": { "anyOf": [ { "type": "object", "properties": { "conclusion": {"type": ["string", "null"]}, "head_branch": {"type": ["string", "null"]}, "head_sha": {"type": "string"}, "pull_requests": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": {"number": {"$ref": "#/components/schemas/Int32Type"}}, "required": ["number"] } }, {"type": "null"} ] }, "app": {"type": "object", "properties": {"name": {"type": "string"}}, "required": ["name"]} }, "required": ["head_sha", "app"] }, {"type": "null"} ] }, "comment": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int64Type"}, "html_url": {"type": "string"}, "user": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] }, "commit_id": {"type": ["string", "null"]}, "body": {"type": "string"} }, "required": ["id", "html_url", "user", "body"] }, {"type": "null"} ] }, "commits": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "string"}, "url": {"type": "string"}, "message": {"type": "string"}, "author": { "type": "object", "properties": {"username": {"type": ["string", "null"]}, "name": {"type": "string"}}, "required": ["name"] } }, "required": ["id", "url", "message", "author"] } }, {"type": "null"} ] }, "compare": {"type": ["string", "null"]}, "discussion": { "anyOf": [ { "type": "object", "properties": { "title": {"type": "string"}, "number": {"$ref": "#/components/schemas/Int32Type"}, "html_url": {"type": "string"}, "answer_html_url": {"type": ["string", "null"]}, "body": {"type": ["string", "null"]}, "user": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] } }, "required": ["title", "number", "html_url", "user"] }, {"type": "null"} ] }, "forced": {"type": ["boolean", "null"]}, "forkee": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "html_url": {"type": "string"}, "name": {"type": "string"}, "full_name": {"type": "string"} }, "required": ["id", "html_url", "name", "full_name"] }, {"type": "null"} ] }, "head_commit": { "anyOf": [ { "type": "object", "properties": { "id": {"type": "string"}, "url": {"type": "string"}, "message": {"type": "string"}, "author": { "type": "object", "properties": {"username": {"type": ["string", "null"]}, "name": {"type": "string"}}, "required": ["name"] } }, "required": ["id", "url", "message", "author"] }, {"type": "null"} ] }, "issue": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int64Type"}, "number": {"$ref": "#/components/schemas/Int32Type"}, "html_url": {"type": "string"}, "user": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] }, "title": {"type": "string"}, "body": {"type": ["string", "null"]} }, "required": ["id", "number", "html_url", "user", "title"] }, {"type": "null"} ] }, "member": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] }, {"type": "null"} ] }, "pull_request": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int64Type"}, "number": {"$ref": "#/components/schemas/Int32Type"}, "html_url": {"type": "string"}, "user": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] }, "title": {"type": "string"}, "body": {"type": ["string", "null"]} }, "required": ["id", "number", "html_url", "user", "title"] }, {"type": "null"} ] }, "ref_type": {"type": ["string", "null"]}, "ref": {"type": ["string", "null"]}, "release": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "tag_name": {"type": "string"}, "html_url": {"type": "string"}, "body": {"type": ["string", "null"]} }, "required": ["id", "tag_name", "html_url"] }, {"type": "null"} ] }, "repository": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "html_url": {"type": "string"}, "name": {"type": "string"}, "full_name": {"type": "string"} }, "required": ["id", "html_url", "name", "full_name"] }, {"type": "null"} ] }, "review": { "anyOf": [ { "type": "object", "properties": { "user": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] }, "body": {"type": ["string", "null"]}, "html_url": {"type": "string"}, "state": {"type": "string"} }, "required": ["user", "html_url", "state"] }, {"type": "null"} ] }, "sender": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "login": {"type": "string"}, "html_url": {"type": "string"}, "avatar_url": {"type": "string"} }, "required": ["id", "login", "html_url", "avatar_url"] } }, "required": ["sender"] }, "WebhookMultipartMessageRequest": { "type": "object", "properties": { "content": {"anyOf": [{"$ref": "#/components/schemas/MessageContentRequest"}, {"type": "null"}]}, "embeds": { "description": "Array of embed objects to include in the message", "type": "array", "items": {"$ref": "#/components/schemas/RichEmbedRequest"} }, "message_reference": { "description": "Reference to another message (for replies or forwards)", "anyOf": [{"$ref": "#/components/schemas/MessageReferenceRequest"}, {"type": "null"}] }, "allowed_mentions": { "description": "Controls which mentions trigger notifications", "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}] }, "flags": {"default": 0, "$ref": "#/components/schemas/MessageFlags", "description": "Message flags bitfield"}, "nonce": {"$ref": "#/components/schemas/MessageNonceRequest"}, "favorite_meme_id": { "description": "ID of a favorite meme to attach", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "sticker_ids": { "description": "Array of sticker IDs to include (max 3)", "anyOf": [ {"maxItems": 3, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"} ] }, "tts": {"description": "Whether this is a text-to-speech message", "type": "boolean"}, "username": { "description": "Override the default username of the webhook for this message", "type": ["string", "null"] }, "avatar_url": { "description": "Override the default avatar URL of the webhook for this message", "type": ["string", "null"] }, "attachments": { "description": "Array of multipart attachment metadata objects", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "Attachment ID for referencing uploaded files", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"$ref": "#/components/schemas/Int32Type"}] }, "filename": {"description": "Name of the file (1-1024 characters)", "type": "string"}, "description": { "description": "Description for the attachment (max 4096 characters)", "type": "string" }, "content_type": {"description": "MIME type of the file", "type": "string"}, "size": { "description": "Size of the file in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" }, "url": {"description": "URL of the attachment", "type": "string"}, "proxy_url": {"description": "Proxied URL of the attachment", "type": "string"}, "height": { "description": "Height of the image/video in pixels", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "width": { "description": "Width of the image/video in pixels", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "ephemeral": {"description": "Whether this attachment is ephemeral", "type": "boolean"}, "duration": {"description": "Duration of audio file in seconds", "type": "number"}, "waveform": {"description": "Base64-encoded bytearray of audio waveform", "type": "string"}, "flags": { "$ref": "#/components/schemas/MessageAttachmentFlags", "description": "Attachment flags bitfield" } } } } } }, "WebhookMessageRequest": { "type": "object", "properties": { "content": {"anyOf": [{"$ref": "#/components/schemas/MessageContentRequest"}, {"type": "null"}]}, "embeds": { "description": "Array of embed objects to include in the message", "type": "array", "items": {"$ref": "#/components/schemas/RichEmbedRequest"} }, "message_reference": { "description": "Reference to another message (for replies or forwards)", "anyOf": [{"$ref": "#/components/schemas/MessageReferenceRequest"}, {"type": "null"}] }, "allowed_mentions": { "description": "Controls which mentions trigger notifications", "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}] }, "flags": {"default": 0, "$ref": "#/components/schemas/MessageFlags", "description": "Message flags bitfield"}, "nonce": {"$ref": "#/components/schemas/MessageNonceRequest"}, "favorite_meme_id": { "description": "ID of a favorite meme to attach", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "sticker_ids": { "description": "Array of sticker IDs to include (max 3)", "anyOf": [ {"maxItems": 3, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"} ] }, "tts": {"description": "Whether this is a text-to-speech message", "type": "boolean"}, "username": { "description": "Override the default username of the webhook for this message", "type": ["string", "null"] }, "avatar_url": { "description": "Override the default avatar URL of the webhook for this message", "type": ["string", "null"] }, "attachments": { "description": "Array of attachments uploaded through the presigned upload endpoint", "type": "array", "items": {"$ref": "#/components/schemas/ClientUploadedAttachmentRequest"} } } }, "WebhookTokenUpdateRequest": { "type": "object", "properties": { "name": {"description": "The new name of the webhook", "type": "string"}, "avatar": { "description": "The new avatar image as a base64-encoded data URI", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] } }, "additionalProperties": false }, "WebhookTokenResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for the webhook", "$ref": "#/components/schemas/SnowflakeStringType" }, "guild_id": { "description": "The ID of the guild this webhook belongs to", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this webhook posts to", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The display name of the webhook"}, "avatar": {"description": "The hash of the webhook avatar image", "type": ["string", "null"]}, "type": {"$ref": "#/components/schemas/WebhookType"}, "token": {"type": "string", "description": "The secure token used to execute the webhook"} }, "required": ["id", "guild_id", "channel_id", "name", "type", "token"], "additionalProperties": false }, "WebhookUpdateRequest": { "type": "object", "properties": { "name": {"description": "The new name of the webhook", "type": "string"}, "avatar": { "description": "The new avatar image as a base64-encoded data URI", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "channel_id": { "description": "The ID of the channel to move the webhook to", "$ref": "#/components/schemas/SnowflakeType" } } }, "WebhookResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for the webhook", "$ref": "#/components/schemas/SnowflakeStringType" }, "guild_id": { "description": "The ID of the guild this webhook belongs to", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this webhook posts to", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The display name of the webhook"}, "avatar": {"description": "The hash of the webhook avatar image", "type": ["string", "null"]}, "type": {"$ref": "#/components/schemas/WebhookType"}, "token": { "description": "The secure token used to execute the webhook, omitted for channel follower webhooks", "type": "string" }, "user": { "description": "The user who created the webhook", "$ref": "#/components/schemas/UserPartialResponse" }, "source_guild": { "description": "The guild of the followed announcement channel, present on channel follower webhooks while the creator can view it", "type": "object", "properties": { "id": { "description": "The ID of the guild that owns the followed announcement channel", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": { "type": "string", "description": "The name of the guild that owns the followed announcement channel" }, "icon": { "description": "The icon hash of the guild that owns the followed announcement channel", "type": ["string", "null"] } }, "required": ["id", "name"], "additionalProperties": false }, "source_channel": { "description": "The followed announcement channel, present on channel follower webhooks while the creator can view it", "type": "object", "properties": { "id": { "description": "The ID of the followed announcement channel", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the followed announcement channel"} }, "required": ["id", "name"], "additionalProperties": false } }, "required": ["id", "guild_id", "channel_id", "name", "type", "user"], "additionalProperties": false }, "EntranceSoundPlayRequest": { "type": "object", "properties": {"sound_id": {"$ref": "#/components/schemas/SnowflakeType"}}, "required": ["sound_id"] }, "UserPartialResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this user", "$ref": "#/components/schemas/SnowflakeStringType" }, "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", "type": ["string", "null"]}, "avatar": {"description": "The hash of the user avatar image", "type": ["string", "null"]}, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"description": "Whether the user is a bot account", "type": "boolean"}, "system": {"description": "Whether the user is an official system user", "type": "boolean"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "description": "The user's account-wide reply mention preference. Omitted when the user has no preference set (treated as NO_PREFERENCE).", "$ref": "#/components/schemas/MentionReplyPreferences" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "additionalProperties": false }, "UserProfileFullResponse": { "type": "object", "properties": { "user": {"description": "The user object", "$ref": "#/components/schemas/UserPartialResponse"}, "user_profile": { "type": "object", "properties": { "bio": {"description": "User biography text", "type": ["string", "null"]}, "pronouns": {"description": "User pronouns", "type": ["string", "null"]}, "banner": {"description": "Hash of the profile banner image", "type": ["string", "null"]}, "banner_color": { "description": "Default banner color if no custom banner", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "User-selected accent color" } }, "required": ["bio", "pronouns", "banner", "accent_color"], "additionalProperties": false, "description": "The user profile data" }, "guild_member": { "description": "The guild member data if guild_id was provided", "$ref": "#/components/schemas/GuildMemberResponse" }, "guild_member_profile": { "description": "Guild-specific profile data", "anyOf": [ { "type": "object", "properties": { "bio": {"description": "Guild-specific biography text", "type": ["string", "null"]}, "pronouns": {"description": "Guild-specific pronouns", "type": ["string", "null"]}, "banner": {"description": "Hash of the guild-specific banner image", "type": ["string", "null"]}, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Guild-specific accent color" } }, "required": ["bio", "pronouns", "banner", "accent_color"], "additionalProperties": false }, {"type": "null"} ] }, "premium_type": { "$ref": "#/components/schemas/UserPremiumTypes", "description": "The type of premium subscription" }, "premium_since": {"description": "ISO8601 timestamp of when premium was activated", "type": "string"}, "premium_lifetime_sequence": { "description": "Sequence number for lifetime premium", "$ref": "#/components/schemas/Int32Type" }, "mutual_friends": { "description": "Array of mutual friends", "type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"} }, "mutual_guilds": { "description": "Array of mutual guilds", "type": "array", "items": { "type": "object", "properties": { "id": {"description": "The ID of the mutual guild", "$ref": "#/components/schemas/SnowflakeStringType"}, "nick": {"description": "The nickname of the target user in this guild", "type": ["string", "null"]} }, "required": ["id", "nick"], "additionalProperties": false } }, "connected_accounts": { "description": "Array of verified external connections", "type": "array", "items": {"$ref": "#/components/schemas/ConnectionResponse"} }, "timezone_offset": { "anyOf": [{"$ref": "#/components/schemas/SignedInt32Type"}, {"type": "null"}], "description": "Current timezone offset in minutes from UTC for the target user's profile timezone, or null when hidden or unset" }, "profile_limited": { "description": "True when the target user has restricted their profile and the viewer does not meet the visibility tier; bio, pronouns, badges, and connected accounts have been stripped.", "type": "boolean" } }, "required": ["user", "user_profile", "timezone_offset"], "additionalProperties": false }, "DiscriminatorType": {"type": ["string", "number"]}, "UsernameType": {"type": "string"}, "UserTagCheckResponse": { "type": "object", "properties": { "taken": {"type": "boolean", "description": "Whether the username/discriminator combination is already taken"} }, "required": ["taken"], "additionalProperties": false }, "ThemeCreateRequest": { "type": "object", "properties": {"css": {"type": "string", "minLength": 1, "description": "CSS text to store and share"}}, "required": ["css"] }, "ThemeCreateResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for the created theme", "$ref": "#/components/schemas/HexString16Type" } }, "required": ["id"], "additionalProperties": false }, "EmptyBodyRequest": {"type": "object", "properties": {}}, "UserPrivateResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this user", "$ref": "#/components/schemas/SnowflakeStringType" }, "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", "type": ["string", "null"]}, "avatar": {"description": "The hash of the user avatar image", "type": ["string", "null"]}, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"description": "Whether the user is a bot account", "type": "boolean"}, "system": {"description": "Whether the user is an official system user", "type": "boolean"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "description": "The user's account-wide reply mention preference. Omitted when the user has no preference set (treated as NO_PREFERENCE).", "$ref": "#/components/schemas/MentionReplyPreferences" }, "is_staff": {"type": "boolean", "description": "Whether the user has staff permissions"}, "acls": { "type": "array", "items": {"type": "string"}, "description": "Access control list entries for the user" }, "traits": { "type": "array", "items": {"type": "string"}, "description": "Special traits assigned to the user account" }, "email": {"description": "The email address associated with the account", "type": ["string", "null"]}, "email_bounced": { "description": "Whether the current email address is marked as bounced by the mail provider", "type": "boolean" }, "has_verified_phone": {"type": "boolean", "description": "Deprecated. Always false."}, "bio": {"description": "The user biography text", "type": ["string", "null"]}, "pronouns": {"description": "The preferred pronouns of the user", "type": ["string", "null"]}, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The user-selected accent color as an integer" }, "timezone": {"description": "The IANA timezone identifier saved by the user", "type": ["string", "null"]}, "timezone_privacy_flags": {"$ref": "#/components/schemas/ProfileFieldPrivacyFlags"}, "banner": {"description": "The hash of the user profile banner image", "type": ["string", "null"]}, "banner_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The default banner color if no custom banner is set" }, "mfa_enabled": {"type": "boolean", "description": "Whether multi-factor authentication is enabled"}, "authenticator_types": { "description": "The types of authenticators configured for MFA", "type": "array", "items": {"$ref": "#/components/schemas/UserAuthenticatorTypes"} }, "verified": {"type": "boolean", "description": "Whether the email address has been verified"}, "account_limited": {"description": "Whether the account is limited", "type": "boolean"}, "premium_type": { "anyOf": [ {"$ref": "#/components/schemas/UserPremiumTypes", "description": "The type of premium subscription"}, {"type": "null"} ] }, "premium_since": { "description": "ISO8601 timestamp of when premium was first activated", "type": ["string", "null"] }, "premium_until": { "description": "ISO8601 timestamp of when premium access ends, including stacked gift time", "type": ["string", "null"] }, "premium_will_cancel": { "type": "boolean", "description": "Whether premium is set to cancel at the end of the billing period" }, "premium_billing_cycle": { "description": "The billing cycle for the premium subscription", "type": ["string", "null"] }, "premium_lifetime_sequence": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The sequence number for lifetime premium subscribers" }, "premium_grace_ends_at": { "description": "ISO8601 timestamp at which grace access ends after premium_until passes: after a failed renewal payment (7 days from the renewal for monthly plans, 14 for yearly), after a subscription ends (3 days), or during an App Store or Google Play grace period. Perks stay active and the original premium_since is kept on resubscribe until this timestamp passes. Null when no grace is recorded, in which case access lasts 3 days after premium_until.", "type": ["string", "null"] }, "premium_discriminator": { "type": "boolean", "description": "Whether the user selected a premium-only discriminator that will be rerolled when non-lifetime premium access ends" }, "premium_badge_hidden": { "type": "boolean", "description": "Whether the premium badge is hidden on the profile" }, "premium_badge_masked": { "type": "boolean", "description": "Whether the premium badge shows a masked appearance" }, "premium_badge_timestamp_hidden": { "type": "boolean", "description": "Whether the premium start timestamp is hidden" }, "premium_badge_sequence_hidden": { "type": "boolean", "description": "Whether the lifetime sequence number is hidden" }, "premium_purchase_disabled": { "type": "boolean", "description": "Whether premium purchases are disabled for this account" }, "premium_enabled_override": { "type": "boolean", "description": "Whether premium features are enabled via override" }, "premium_perks_disabled": { "type": "boolean", "description": "Whether premium perks are temporarily disabled for this account" }, "password_last_changed_at": { "description": "ISO8601 timestamp of the last password change", "type": ["string", "null"] }, "last_voice_activity_sharing_change_at": { "description": "ISO8601 timestamp of the last bulk voice-activity-sharing change. Drives the 24-hour cooldown for re-toggling the Active Now sharing default.", "type": ["string", "null"] }, "required_actions": { "type": "array", "items": {"type": "string"}, "description": "Deprecated. Always empty." }, "nsfw_allowed": {"type": "boolean", "description": "Whether the user is allowed to view NSFW content"}, "has_dismissed_premium_onboarding": { "type": "boolean", "description": "Whether the user has dismissed the premium onboarding flow" }, "has_ever_purchased": {"type": "boolean", "description": "Whether the user has ever made a purchase"}, "has_unread_gift_inventory": { "type": "boolean", "description": "Whether there are unread items in the gift inventory" }, "unread_gift_inventory_count": { "description": "The number of unread gift inventory items", "$ref": "#/components/schemas/Int32Type" }, "pending_bulk_message_deletion": { "anyOf": [ { "type": "object", "properties": { "scheduled_at": { "type": "string", "description": "ISO8601 timestamp of when the deletion was scheduled" }, "channel_count": { "description": "The number of channels with messages to delete", "$ref": "#/components/schemas/Int32Type" }, "message_count": { "description": "The total number of messages to delete", "$ref": "#/components/schemas/Int32Type" } }, "required": ["scheduled_at", "channel_count", "message_count"], "additionalProperties": false }, {"type": "null"} ], "description": "Information about a pending bulk message deletion request. Only populated when the legacy delayed-deletion flow is in progress; the new immediate-deletion flow does not surface a pending state here." }, "age_verified_adult": { "description": "Whether the user has verified their age as an adult via credit card verification", "type": "boolean" }, "terms_agreed_at": { "description": "ISO8601 timestamp of when the user last agreed to the terms of service", "type": ["string", "null"] }, "privacy_agreed_at": { "description": "ISO8601 timestamp of when the user last agreed to the privacy policy", "type": ["string", "null"] } }, "required": [ "id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags", "is_staff", "acls", "traits", "email", "has_verified_phone", "bio", "pronouns", "accent_color", "banner", "banner_color", "mfa_enabled", "verified", "premium_type", "premium_since", "premium_until", "premium_will_cancel", "premium_billing_cycle", "premium_lifetime_sequence", "premium_grace_ends_at", "premium_discriminator", "premium_badge_hidden", "premium_badge_masked", "premium_badge_timestamp_hidden", "premium_badge_sequence_hidden", "premium_purchase_disabled", "premium_enabled_override", "premium_perks_disabled", "password_last_changed_at", "last_voice_activity_sharing_change_at", "required_actions", "nsfw_allowed", "has_dismissed_premium_onboarding", "has_ever_purchased", "has_unread_gift_inventory", "unread_gift_inventory_count", "pending_bulk_message_deletion", "terms_agreed_at", "privacy_agreed_at" ], "additionalProperties": false }, "WebAuthnChallengeResponse": { "type": "object", "properties": {"challenge": {"type": "string", "description": "The WebAuthn challenge"}}, "required": ["challenge"], "additionalProperties": {} }, "SudoMfaMethodsResponse": { "type": "object", "properties": { "totp": {"type": "boolean", "description": "Whether TOTP is enabled"}, "webauthn": { "type": "boolean", "description": "Whether the account has at least one registered WebAuthn credential" }, "backup_codes": { "type": "boolean", "description": "Whether the account has at least one unconsumed backup code" }, "has_mfa": {"type": "boolean", "description": "Whether the account can satisfy a sudo mode challenge"} }, "required": ["totp", "webauthn", "backup_codes", "has_mfa"], "additionalProperties": false }, "VoiceActivitySharingUpdateRequest": { "type": "object", "properties": { "share_voice_activity": { "type": "boolean", "description": "New default for sharing voice activity with friends; also applied to every existing friend relationship" } }, "required": ["share_voice_activity"], "description": "Body for PUT /users/@me/settings/voice-activity-sharing. Mass-updates all friend relationships and starts a 24h cooldown." }, "UserSettingsUpdateRequest": { "type": "object", "properties": { "flags": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Bitfield of user settings flags" }, "status": {"$ref": "#/components/schemas/UserStatusType"}, "status_resets_at": { "description": "When status resets", "anyOf": [ { "anyOf": [ { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?$" }, {"type": "integer", "minimum": 0, "maximum": 8640000000000000} ] }, {"type": "null"} ] }, "status_resets_to": {"anyOf": [{"$ref": "#/components/schemas/UserStatusType"}, {"type": "null"}]}, "theme": {"$ref": "#/components/schemas/UserThemeType"}, "guild_positions": { "description": "Ordered array of guild IDs for sidebar positioning", "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "locale": {"$ref": "#/components/schemas/Locale"}, "restricted_guilds": { "description": "Guilds with DM restrictions", "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "bot_restricted_guilds": { "description": "Guilds with bot DM restrictions", "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "default_guilds_restricted": {"type": "boolean", "description": "Default DM restriction for new guilds"}, "bot_default_guilds_restricted": { "type": "boolean", "description": "Default bot DM restriction for new guilds" }, "inline_attachment_media": {"type": "boolean", "description": "Display attachments inline"}, "inline_embed_media": {"type": "boolean", "description": "Display embed media inline"}, "gif_auto_play": {"type": "boolean", "description": "Auto-play GIFs"}, "render_embeds": {"type": "boolean", "description": "Render message embeds"}, "render_reactions": {"type": "boolean", "description": "Display reactions"}, "animate_emoji": {"type": "boolean", "description": "Animate custom emoji"}, "animate_stickers": {"$ref": "#/components/schemas/StickerAnimationOptionsInput"}, "render_spoilers": {"$ref": "#/components/schemas/RenderSpoilersInput"}, "message_display_compact": {"type": "boolean", "description": "Compact message display"}, "friend_source_flags": { "$ref": "#/components/schemas/FriendSourceFlags", "description": "Friend request source permissions" }, "incoming_call_flags": { "$ref": "#/components/schemas/IncomingCallFlags", "description": "Incoming call settings" }, "group_dm_add_permission_flags": { "$ref": "#/components/schemas/GroupDmAddPermissionFlags", "description": "Group DM add permissions" }, "guild_folders": { "maxItems": 100, "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "minimum": -1, "maximum": 9007199254740991, "description": "Unique identifier for the folder (-1 for uncategorized)" }, "name": {"description": "Display name of the folder", "type": ["string", "null"]}, "color": { "default": 0, "description": "Color of the folder as integer", "anyOf": [{"$ref": "#/components/schemas/ColorType"}, {"type": "null"}] }, "flags": {"default": 0, "$ref": "#/components/schemas/GuildFolderFlags"}, "icon": { "default": "folder", "description": "Selected icon for the guild folder", "$ref": "#/components/schemas/GuildFolderIconType" }, "guild_ids": { "description": "Guild IDs in this folder", "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} } }, "required": ["id", "guild_ids"] }, "description": "Guild folder organization" }, "custom_status": { "description": "Custom status", "anyOf": [{"$ref": "#/components/schemas/CustomStatusPayload"}, {"type": "null"}] }, "afk_timeout": { "type": "integer", "minimum": 60, "maximum": 600, "description": "AFK timeout in seconds (60-600)" }, "time_format": {"$ref": "#/components/schemas/TimeFormatTypesInput"}, "developer_mode": {"type": "boolean", "description": "Developer mode enabled"}, "trusted_domains": { "maxItems": 1000, "type": "array", "items": {"type": "string", "minLength": 1, "maxLength": 253}, "description": "Trusted external link domains. Use \"*\" to trust all domains." }, "default_hide_muted_channels": { "type": "boolean", "description": "Hide muted channels by default in new guilds" }, "sensitive_content_friend_dm_filter": { "$ref": "#/components/schemas/SensitiveMediaFilterLevelInput", "description": "Sensitive media filter level for DMs from friends" }, "sensitive_content_non_friend_dm_filter": { "$ref": "#/components/schemas/SensitiveMediaFilterLevelInput", "description": "Sensitive media filter level for DMs from non-friends" }, "sensitive_content_guild_filter": {"$ref": "#/components/schemas/SensitiveMediaGuildFilterLevelInput"}, "suppress_unprivileged_self_mentions": { "type": "boolean", "description": "Suppress direct mentions and reply mentions from unprivileged users" }, "suppress_unprivileged_self_mentions_bypass_user_ids": { "description": "User IDs that bypass self-mention suppression", "anyOf": [{"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"}] }, "staff_dm_access_user_ids": { "description": "User IDs with Staff DM Access enabled", "anyOf": [{"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"}] }, "profile_privacy": { "$ref": "#/components/schemas/ProfilePrivacyLevelInput", "description": "Controls who sees the full profile: all guild members, only small-guild members, or only friends" }, "default_share_voice_activity": { "type": "boolean", "description": "Default share_voice_activity applied to new friend relationships" }, "synced_preferences": { "description": "Account-wide client preferences as a base64-encoded protobuf snapshot. Replaces the entire stored snapshot; pass null to clear it.", "anyOf": [{"type": "string", "maxLength": 699052}, {"type": "null"}] } } }, "UserSettingsResponse": { "type": "object", "properties": { "status": {"type": "string", "description": "The current online status of the user"}, "status_resets_at": { "description": "ISO8601 timestamp of when the status will reset", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "status_resets_to": { "description": "The status to reset to after the scheduled reset", "type": ["string", "null"] }, "theme": {"type": "string", "description": "The UI theme preference"}, "locale": {"$ref": "#/components/schemas/Locale"}, "restricted_guilds": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeStringType"}, "description": "Guild IDs where direct messages are restricted" }, "bot_restricted_guilds": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeStringType"}, "description": "Guild IDs where bot direct messages are restricted" }, "default_guilds_restricted": { "type": "boolean", "description": "Whether new guilds have DM restrictions by default" }, "bot_default_guilds_restricted": { "type": "boolean", "description": "Whether new guilds have bot DM restrictions by default" }, "inline_attachment_media": { "type": "boolean", "description": "Whether to display attachments inline in chat" }, "inline_embed_media": {"type": "boolean", "description": "Whether to display embed media inline in chat"}, "gif_auto_play": {"type": "boolean", "description": "Whether GIFs auto-play in chat"}, "render_embeds": {"type": "boolean", "description": "Whether to render message embeds"}, "render_reactions": {"type": "boolean", "description": "Whether to display reactions on messages"}, "animate_emoji": {"type": "boolean", "description": "Whether to animate custom emoji"}, "animate_stickers": { "$ref": "#/components/schemas/StickerAnimationOptions", "description": "Sticker animation preference setting" }, "render_spoilers": { "$ref": "#/components/schemas/RenderSpoilers", "description": "Spoiler rendering preference setting" }, "message_display_compact": {"type": "boolean", "description": "Whether to use compact message display mode"}, "friend_source_flags": {"$ref": "#/components/schemas/FriendSourceFlags"}, "incoming_call_flags": {"$ref": "#/components/schemas/IncomingCallFlags"}, "group_dm_add_permission_flags": {"$ref": "#/components/schemas/GroupDmAddPermissionFlags"}, "guild_folders": { "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The unique identifier for the folder (-1 for uncategorized)", "anyOf": [{"$ref": "#/components/schemas/SignedInt32Type"}, {"type": "null"}] }, "name": {"description": "The display name of the folder", "type": ["string", "null"]}, "color": { "description": "The color of the folder as an integer", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "flags": {"default": 0, "$ref": "#/components/schemas/GuildFolderFlags"}, "icon": { "default": "folder", "description": "Selected icon for the guild folder", "$ref": "#/components/schemas/GuildFolderIconType" }, "guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeStringType"}, "description": "The IDs of guilds contained in this folder" } }, "required": ["flags", "icon", "guild_ids"], "additionalProperties": false }, "description": "The folder structure for organizing guilds in the sidebar" }, "custom_status": { "anyOf": [{"$ref": "#/components/schemas/CustomStatusResponse"}, {"type": "null"}], "description": "The custom status set by the user" }, "afk_timeout": { "description": "The idle timeout in seconds before going AFK", "$ref": "#/components/schemas/Int32Type" }, "time_format": { "$ref": "#/components/schemas/TimeFormatTypes", "description": "The preferred time format setting" }, "developer_mode": {"type": "boolean", "description": "Whether developer mode is enabled"}, "trusted_domains": { "type": "array", "items": {"type": "string"}, "description": "List of trusted external link domains" }, "default_hide_muted_channels": { "type": "boolean", "description": "Whether muted channels are hidden by default in new guilds" }, "sensitive_content_friend_dm_filter": { "$ref": "#/components/schemas/SensitiveMediaFilterLevel", "description": "Sensitive media filter level for DMs from friends" }, "sensitive_content_non_friend_dm_filter": { "$ref": "#/components/schemas/SensitiveMediaFilterLevel", "description": "Sensitive media filter level for DMs from non-friends" }, "sensitive_content_guild_filter": {"$ref": "#/components/schemas/SensitiveMediaGuildFilterLevel"}, "suppress_unprivileged_self_mentions": { "type": "boolean", "description": "Whether direct mentions and reply mentions from unprivileged users are suppressed" }, "suppress_unprivileged_self_mentions_bypass_user_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeStringType"}, "description": "User IDs that bypass self-mention suppression" }, "staff_dm_access_user_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeStringType"}, "description": "User IDs with Staff DM Access enabled" }, "synced_preferences": { "type": "string", "description": "Account-wide client preferences as a base64-encoded protobuf snapshot. Empty string when nothing has been synced yet." }, "profile_privacy": { "$ref": "#/components/schemas/ProfilePrivacyLevel", "description": "Controls who sees the full profile: all guild members, only small-guild members, or only friends" }, "default_share_voice_activity": { "type": "boolean", "description": "Default value of share_voice_activity applied to newly accepted friend relationships. Read-only here; mutated via PUT /users/@me/settings/voice-activity-sharing." } }, "required": [ "status", "theme", "locale", "restricted_guilds", "bot_restricted_guilds", "default_guilds_restricted", "bot_default_guilds_restricted", "inline_attachment_media", "inline_embed_media", "gif_auto_play", "render_embeds", "render_reactions", "animate_emoji", "animate_stickers", "render_spoilers", "message_display_compact", "friend_source_flags", "incoming_call_flags", "group_dm_add_permission_flags", "guild_folders", "custom_status", "afk_timeout", "time_format", "developer_mode", "trusted_domains", "default_hide_muted_channels", "sensitive_content_friend_dm_filter", "sensitive_content_non_friend_dm_filter", "sensitive_content_guild_filter", "suppress_unprivileged_self_mentions", "suppress_unprivileged_self_mentions_bypass_user_ids", "staff_dm_access_user_ids", "synced_preferences", "profile_privacy", "default_share_voice_activity" ], "additionalProperties": false }, "SaveMessageRequest": { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel containing the message", "$ref": "#/components/schemas/SnowflakeType" }, "message_id": {"description": "The ID of the message to save", "$ref": "#/components/schemas/SnowflakeType"} }, "required": ["channel_id", "message_id"] }, "SavedMessageEntryListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/SavedMessageEntryResponse"} }, "RelationshipNicknameUpdateRequest": { "type": "object", "properties": { "nickname": { "description": "Custom nickname for this friend (max 256 characters)", "type": ["string", "null"] } }, "required": ["nickname"] }, "RelationshipResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for the relationship", "$ref": "#/components/schemas/SnowflakeStringType" }, "type": { "$ref": "#/components/schemas/RelationshipTypes", "description": "The type of relationship (friend, blocked, pending, etc.)" }, "user": { "description": "The user involved in this relationship", "$ref": "#/components/schemas/UserPartialResponse" }, "since": { "description": "ISO8601 timestamp of when the relationship was established", "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, "nickname": {"description": "A custom nickname set for the related user", "type": ["string", "null"]}, "share_voice_activity": { "type": "boolean", "description": "Whether the current user has chosen to share their voice activity with this friend on the Active Now panel" }, "friend_shares_voice_activity": { "type": "boolean", "description": "Whether this friend has chosen to share their voice activity with the current user; for non-friend types this is always true" } }, "required": ["id", "type", "user", "nickname", "share_voice_activity", "friend_shares_voice_activity"], "additionalProperties": false }, "RelationshipTypePutRequest": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/RelationshipTypesInput", "description": "Type of relationship to create" } } }, "FriendRequestCreateRequest": { "type": "object", "properties": { "staff_force_accept": {"description": "Staff-only: immediately create the friendship", "type": "boolean"} } }, "BulkIgnoreFriendRequestsRequest": { "type": "object", "properties": { "filter": {"default": "all", "type": "string", "enum": ["all", "new_accounts"]}, "max_account_age_seconds": {"type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991} } }, "BulkIgnoreFriendRequestsResponse": { "type": "object", "properties": {"ignored_count": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}}, "required": ["ignored_count"], "additionalProperties": false }, "FriendRequestByTagRequest": { "type": "object", "properties": { "username": { "description": "Username of the user to send friend request", "$ref": "#/components/schemas/UsernameType" }, "discriminator": { "description": "Discriminator tag of the user", "$ref": "#/components/schemas/DiscriminatorType" } }, "required": ["username", "discriminator"] }, "RelationshipListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/RelationshipResponse"}}, "SuccessResponse": { "type": "object", "properties": {"success": {"type": "boolean", "const": true, "description": "Whether the operation succeeded"}}, "required": ["success"], "additionalProperties": false }, "PushSubscriptionsListResponse": { "type": "object", "properties": { "subscriptions": { "type": "array", "items": { "type": "object", "properties": { "subscription_id": {"type": "string", "description": "The unique identifier for the push subscription"}, "user_agent": { "description": "The user agent that created this subscription", "type": ["string", "null"] } }, "required": ["subscription_id", "user_agent"], "additionalProperties": false }, "description": "Array of push notification subscriptions" } }, "required": ["subscriptions"], "additionalProperties": false }, "PushSubscribeRequest": { "type": "object", "properties": { "endpoint": {"description": "The push subscription endpoint URL", "type": "string"}, "keys": { "type": "object", "properties": { "p256dh": {"description": "The P-256 ECDH public key (base64url)", "type": "string"}, "auth": {"description": "The authentication secret (base64url)", "type": "string"} }, "required": ["p256dh", "auth"], "description": "Encryption keys for the push subscription" }, "user_agent": {"description": "The user agent string identifying the client", "type": "string"}, "installed_app": {"description": "Whether the client runs in an installed web app window", "type": "boolean"} }, "required": ["endpoint", "keys"] }, "PushSubscribeResponse": { "type": "object", "properties": { "subscription_id": {"type": "string", "description": "The unique identifier for the push subscription"} }, "required": ["subscription_id"], "additionalProperties": false }, "PushRotateRequest": { "type": "object", "properties": { "old_endpoint": { "description": "The previous push subscription endpoint URL being rotated out", "type": "string" }, "endpoint": {"description": "The new push subscription endpoint URL", "type": "string"}, "keys": { "type": "object", "properties": { "p256dh": {"description": "The P-256 ECDH public key (base64url)", "type": "string"}, "auth": {"description": "The authentication secret (base64url)", "type": "string"} }, "required": ["p256dh", "auth"], "description": "Encryption keys for the new push subscription" }, "user_agent": {"description": "The user agent string identifying the client", "type": "string"}, "installed_app": {"description": "Whether the client runs in an installed web app window", "type": "boolean"} }, "required": ["old_endpoint", "endpoint", "keys"] }, "PreloadMessagesRequest": { "type": "object", "properties": { "channels": { "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "Array of channel IDs to preload messages from (max 100)" } }, "required": ["channels"] }, "PreloadMessagesResponse": { "type": "object", "propertyNames": {"$ref": "#/components/schemas/SnowflakeStringType"}, "additionalProperties": {"anyOf": [{"$ref": "#/components/schemas/MessageResponseSchema"}, {"type": "null"}]}, "description": "A map of channel IDs to the latest message in each channel" }, "PasswordChangeVerifyRequest": { "type": "object", "properties": { "ticket": {"description": "Password change ticket identifier", "type": "string"}, "code": {"description": "Verification code sent to the email address", "type": "string"} }, "required": ["ticket", "code"] }, "PasswordChangeVerifyResponse": { "type": "object", "properties": { "verification_proof": {"type": "string", "description": "Proof token issued after verifying the email code"} }, "required": ["verification_proof"], "additionalProperties": false }, "PasswordChangeStartResponse": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Ticket for password change actions"}, "code_expires_at": {"type": "string", "description": "ISO8601 timestamp when the verification code expires"}, "resend_available_at": { "description": "ISO8601 timestamp when the code can be resent", "type": ["string", "null"] } }, "required": ["ticket", "code_expires_at", "resend_available_at"], "additionalProperties": false }, "PasswordChangeTicketRequest": { "type": "object", "properties": {"ticket": {"description": "Password change ticket identifier", "type": "string"}}, "required": ["ticket"] }, "PasswordChangeCompleteRequest": { "type": "object", "properties": { "ticket": {"description": "Password change ticket identifier", "type": "string"}, "verification_proof": {"description": "Proof token obtained from verifying the email code", "type": "string"}, "new_password": {"description": "The new password to set", "$ref": "#/components/schemas/PasswordType"} }, "required": ["ticket", "verification_proof", "new_password"] }, "PasswordChangeCompleteResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "Authentication token for the newly created session"}, "auth_session_id_hash": { "type": "string", "description": "Base64url-encoded hash of the newly created authentication session" } }, "required": ["token", "auth_session_id_hash"], "additionalProperties": false }, "PasskeyBridgeRedeemRequest": { "type": "object", "properties": { "nonce": { "type": "string", "minLength": 16, "maxLength": 256, "pattern": "^[A-Za-z0-9_-]+$", "description": "Nonce whose SHA-256 digest was sent when the ceremony started" }, "completion_code": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Code handed back when the ceremony finished" } }, "required": ["nonce", "completion_code"] }, "PasskeyBridgeSudoRedeemResponse": { "oneOf": [ {"$ref": "#/components/schemas/CancelledPasskeyBridgeSudoRedeemResponse"}, {"$ref": "#/components/schemas/CompletedPasskeyBridgeSudoRedeemResponse"} ] }, "PasskeyBridgeSudoStartRequest": { "type": "object", "properties": { "runner": {"$ref": "#/components/schemas/PasskeyBridgeRunner"}, "nonce_hash": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "Lowercase hex SHA-256 digest of the nonce the starting page keeps" } }, "required": ["runner", "nonce_hash"] }, "PasskeyBridgeStartResponse": { "type": "object", "properties": { "ceremony_id": {"type": "string", "description": "Identifier of the passkey ceremony"}, "bridge_url": { "description": "Page that runs the ceremony, or null for the native runner", "type": ["string", "null"] } }, "required": ["ceremony_id", "bridge_url"], "additionalProperties": false }, "UserNoteUpdateRequest": { "type": "object", "properties": {"note": {"description": "The note text (max 256 characters)", "type": ["string", "null"]}} }, "UserNoteResponse": { "type": "object", "properties": {"note": {"type": "string", "description": "The note text for this user"}}, "required": ["note"], "additionalProperties": false }, "UserNotesRecordResponse": { "type": "object", "propertyNames": {"$ref": "#/components/schemas/SnowflakeStringType"}, "additionalProperties": {"type": "string"}, "description": "A map of user IDs to note text" }, "UnregisterMobileDeviceRequest": { "type": "object", "properties": { "platform": { "description": "The mobile push notification platform", "x-enumNames": ["ANDROID_FCM", "IOS_APNS", "IOS_APNS_VOIP", "ANDROID_UNIFIED_PUSH"], "x-enumDescriptions": [ "Firebase Cloud Messaging (Android)", "Apple Push Notification Service (iOS)", "Apple PushKit VoIP push, used only to ring an incoming call (iOS)", "UnifiedPush (Android without Google services)" ], "enum": ["android_fcm", "ios_apns", "ios_apns_voip", "android_unified_push"], "type": "string" }, "token": { "description": "The Web Push endpoint URL or raw platform push token used at registration", "type": "string" }, "app_id": { "description": "Client app channel or bundle mapping identifier, such as stable, beta, or canary", "type": "string" }, "provider_environment": { "description": "Push provider environment used for this registration", "x-enumNames": ["PRODUCTION", "DEVELOPMENT"], "x-enumDescriptions": [ "Production push provider environment", "Development or sandbox push provider environment" ], "enum": ["production", "development"], "type": "string" } }, "required": ["platform", "token"] }, "MobileDevicesListResponse": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "device_id": { "description": "The unique identifier for the device", "$ref": "#/components/schemas/HexString32Type" }, "platform": {"type": "string", "description": "The mobile push notification platform"}, "app_id": { "description": "Client app channel or bundle mapping identifier for this device", "type": ["string", "null"] }, "provider_environment": { "description": "Push provider environment used for this device", "type": ["string", "null"] }, "user_agent": {"description": "The user agent that registered this device", "type": ["string", "null"]} }, "required": ["device_id", "platform", "app_id", "provider_environment", "user_agent"], "additionalProperties": false }, "description": "Array of registered mobile push devices" } }, "required": ["devices"], "additionalProperties": false }, "RegisterMobileDeviceRequest": { "type": "object", "properties": { "platform": { "description": "The mobile push notification platform", "x-enumNames": ["ANDROID_FCM", "IOS_APNS", "IOS_APNS_VOIP", "ANDROID_UNIFIED_PUSH"], "x-enumDescriptions": [ "Firebase Cloud Messaging (Android)", "Apple Push Notification Service (iOS)", "Apple PushKit VoIP push, used only to ring an incoming call (iOS)", "UnifiedPush (Android without Google services)" ], "enum": ["android_fcm", "ios_apns", "ios_apns_voip", "android_unified_push"], "type": "string" }, "token": { "description": "The Web Push endpoint URL when encryption keys are supplied, otherwise the raw platform push token", "type": "string" }, "user_agent": {"description": "The user agent string identifying the device", "type": "string"}, "app_id": { "description": "Client app channel or bundle mapping identifier, such as stable, beta, or canary", "type": "string" }, "provider_environment": { "description": "Push provider environment. For APNs, production uses api.push.apple.com and development uses api.sandbox.push.apple.com.", "x-enumNames": ["PRODUCTION", "DEVELOPMENT"], "x-enumDescriptions": [ "Production push provider environment", "Development or sandbox push provider environment" ], "enum": ["production", "development"], "type": "string" }, "encryption_key": { "description": "The P-256 ECDH public key for Web Push encryption (base64url)", "type": "string" }, "auth_secret": { "description": "The authentication secret for Web Push encryption (base64url)", "type": "string" } }, "required": ["platform", "token"] }, "RegisterMobileDeviceResponse": { "type": "object", "properties": { "device_id": { "description": "The unique identifier for the registered device", "$ref": "#/components/schemas/HexString32Type" } }, "required": ["device_id"], "additionalProperties": false }, "WebAuthnTwoFactorRequest": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether registered passkeys count as a second factor when logging in" }, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["enabled"] }, "WebAuthnTwoFactorResponse": { "type": "object", "properties": { "user": {"description": "The updated account", "$ref": "#/components/schemas/UserPrivateResponse"}, "backup_codes": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "code": {"type": "string", "description": "The backup code"}, "consumed": {"type": "boolean", "description": "Whether the code has been used"} }, "required": ["code", "consumed"], "additionalProperties": false } }, {"type": "null"} ], "description": "Backup codes minted by this call, or null when none were minted" } }, "required": ["user", "backup_codes"], "additionalProperties": false }, "PasskeyMigrationCompleteRequest": { "type": "object", "properties": { "response": { "description": "WebAuthn registration response", "$ref": "#/components/schemas/WebAuthnRegistrationResponse" }, "challenge": {"description": "The challenge from registration options", "type": "string"} }, "required": ["response", "challenge"] }, "PasskeyMigrationResponse": { "type": "object", "properties": { "pending": { "anyOf": [ { "type": "object", "properties": { "credential_id": {"type": "string", "description": "ID of the passkey waiting to be updated"}, "name": {"type": "string", "description": "User-assigned name of the passkey"}, "cross_device": {"type": "boolean", "description": "Whether the passkey was used from another device"} }, "required": ["credential_id", "name", "cross_device"], "additionalProperties": false }, {"type": "null"} ], "description": "The passkey this session can update, or null" } }, "required": ["pending"], "additionalProperties": false }, "SudoVerificationSchema": { "type": "object", "properties": { "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} } }, "WebAuthnCredentialUpdateRequest": { "type": "object", "properties": { "name": {"description": "New name for the credential", "type": "string"}, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["name"] }, "WebAuthnRegisterRequest": { "type": "object", "properties": { "response": { "description": "WebAuthn registration response", "$ref": "#/components/schemas/WebAuthnRegistrationResponse" }, "challenge": {"description": "The challenge from registration options", "type": "string"}, "name": {"description": "User-assigned name for the credential", "type": "string"} }, "required": ["response", "challenge", "name"] }, "WebAuthnCredentialListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/WebAuthnCredentialResponse"} }, "EnableMfaTotpRequest": { "type": "object", "properties": { "secret": {"description": "The TOTP secret key", "type": "string"}, "code": {"description": "The TOTP verification code", "type": "string"}, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["secret", "code"] }, "MfaBackupCodesResponse": { "type": "object", "properties": { "backup_codes": { "type": "array", "items": { "type": "object", "properties": { "code": {"type": "string", "description": "The backup code"}, "consumed": {"type": "boolean", "description": "Whether the code has been used"} }, "required": ["code", "consumed"], "additionalProperties": false }, "description": "List of backup codes" } }, "required": ["backup_codes"], "additionalProperties": false }, "DisableTotpRequest": { "type": "object", "properties": { "code": {"description": "The TOTP code to verify", "type": "string"}, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["code"] }, "MfaBackupCodesChallengeVerifyRequest": { "type": "object", "properties": { "ticket": {"description": "Backup codes challenge ticket identifier", "type": "string"}, "code": {"description": "Verification code sent to the email address", "type": "string"} }, "required": ["ticket", "code"] }, "MfaBackupCodesChallengeVerifyResponse": { "type": "object", "properties": { "backup_codes": { "type": "array", "items": { "type": "object", "properties": { "code": {"type": "string", "description": "The backup code"}, "consumed": {"type": "boolean", "description": "Whether the code has been used"} }, "required": ["code", "consumed"], "additionalProperties": false }, "description": "List of backup codes" }, "verification_proof": { "type": "string", "description": "Proof token authorizing backup code regeneration on this ticket" } }, "required": ["backup_codes", "verification_proof"], "additionalProperties": false }, "MfaBackupCodesChallengeResendRequest": { "type": "object", "properties": {"ticket": {"description": "Backup codes challenge ticket identifier", "type": "string"}}, "required": ["ticket"] }, "MfaBackupCodesChallengeRegenerateRequest": { "type": "object", "properties": { "ticket": {"description": "Backup codes challenge ticket identifier", "type": "string"}, "verification_proof": {"description": "Proof token obtained from verifying the email code", "type": "string"} }, "required": ["ticket", "verification_proof"] }, "MfaBackupCodesChallengeStartResponse": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Ticket for backup codes challenge actions"}, "code_expires_at": {"type": "string", "description": "ISO8601 timestamp when the verification code expires"}, "resend_available_at": {"type": "string", "description": "ISO8601 timestamp when the code can be resent"} }, "required": ["ticket", "code_expires_at", "resend_available_at"], "additionalProperties": false }, "MfaBackupCodesRequest": { "type": "object", "properties": { "regenerate": {"type": "boolean", "description": "Whether to regenerate backup codes"}, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["regenerate"] }, "BulkDeleteSelfMessagesRequest": { "type": "object", "properties": { "scope": {"default": "selected", "$ref": "#/components/schemas/BulkDeleteSelfMessagesScope"}, "include_dms": { "default": true, "description": "Include 1:1 direct messages the caller still has open.", "type": "boolean" }, "include_dms_closed": { "default": true, "description": "Include 1:1 direct messages the caller has previously closed. Independent of include_dms — set include_dms=false and include_dms_closed=true to target closed DMs only.", "type": "boolean" }, "include_group_dms": { "default": true, "description": "Include group DMs the caller is still a member of.", "type": "boolean" }, "include_guilds": { "default": true, "description": "Include text channels in guilds the caller is a member of.", "type": "boolean" }, "guild_filter_mode": { "default": "exclude", "$ref": "#/components/schemas/BulkDeleteSelfMessagesGuildFilterMode" }, "excluded_guild_ids": { "description": "Guild IDs to leave untouched. Used when include_guilds is true, guild_filter_mode is exclude, and scope is selected.", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "included_guild_ids": { "description": "The only guild IDs to apply this operation to. Used when include_guilds is true, guild_filter_mode is include_only, and scope is selected.", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "start_date": { "description": "Inclusive ISO8601 lower bound for message timestamps. Null/omitted means unbounded in the past.", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "end_date": { "description": "Exclusive ISO8601 upper bound for message timestamps. Null/omitted means unbounded in the future.", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} } }, "MarkMentionsReadRequest": { "type": "object", "properties": { "message_ids": { "minItems": 1, "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "Recent mention message IDs to remove from the current user mention list" } }, "required": ["message_ids"] }, "MessageListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/MessageResponseSchema"}}, "UpdateFavoriteMemeBodySchema": { "type": "object", "properties": { "name": {"description": "Display name for the meme", "type": "string"}, "alt_text": {"description": "Alternative text description for accessibility", "type": ["string", "null"]}, "tags": { "description": "New tags for categorizing and searching the meme", "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}] } } }, "FavoriteMemeResponse": { "type": "object", "properties": { "id": { "description": "Unique identifier for the favorite meme", "$ref": "#/components/schemas/SnowflakeStringType" }, "user_id": { "description": "ID of the user who owns this favorite meme", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "Display name of the meme"}, "alt_text": {"description": "Alternative text description for accessibility", "type": ["string", "null"]}, "tags": { "type": "array", "items": {"type": "string"}, "description": "Tags for categorizing and searching the meme" }, "attachment_id": { "description": "ID of the attachment storing the meme", "$ref": "#/components/schemas/SnowflakeStringType" }, "filename": {"type": "string", "description": "Original filename of the meme"}, "content_type": {"type": "string", "description": "MIME type of the meme file"}, "content_hash": {"description": "Hash of the file content for deduplication", "type": ["string", "null"]}, "size": {"description": "File size in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "width": { "description": "Width of the image or video in pixels", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "height": { "description": "Height of the image or video in pixels", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "duration": {"description": "Duration of the video in seconds", "type": ["number", "null"]}, "url": {"type": "string", "description": "CDN URL to access the meme"}, "is_gifv": { "default": false, "description": "Whether the meme is a video converted from GIF", "type": "boolean" }, "gif_slug": { "description": "Provider-issued slug for the GIF this meme was sourced from, if any", "type": ["string", "null"] }, "gif_provider": { "description": "Stable name of the GIF provider that issued gif_slug, if any. Legacy records may contain older provider names.", "type": ["string", "null"] }, "media": { "description": "Provider-issued format-name → media descriptor map for gif-sourced memes (mirrors GifResponse.media). Null on memes uploaded as plain attachments.", "anyOf": [ { "type": "object", "propertyNames": {"type": "string"}, "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormat"} }, {"type": "null"} ] }, "placeholder": { "description": "Compact thumbhash placeholder produced by the media proxy at favorite-time. Clients render it as a low-res preview while the full media loads. Null when the proxy did not emit one.", "type": ["string", "null"] } }, "required": [ "id", "user_id", "name", "tags", "attachment_id", "filename", "content_type", "size", "url", "is_gifv" ], "additionalProperties": false }, "CreateFavoriteMemeFromUrlBodySchema": { "type": "object", "properties": { "alt_text": {"description": "Alternative text description for accessibility", "type": ["string", "null"]}, "tags": { "description": "Tags for categorizing and searching the meme", "default": [], "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}] }, "url": { "type": "string", "format": "uri", "description": "URL of the image or video to save as a favorite meme" }, "gif_slug": { "description": "Provider-issued slug or slug-id token for the GIF, when sourced from a provider", "type": ["string", "null"] }, "gif_provider": { "description": "Stable name of the GIF provider that issued gif_slug. New provider GIFs are sourced from KLIPY.", "type": ["string", "null"] }, "media": { "description": "Optional provider-issued format-name → media descriptor map captured by the client at favorite-time (mirrors GifResponse.media). Only persisted for gif-sourced memes; ignored otherwise.", "anyOf": [ { "type": "object", "propertyNames": {"type": "string"}, "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormatInput"} }, {"type": "null"} ] }, "name": {"description": "Display name for the meme", "type": ["string", "null"]} }, "required": ["url"] }, "FavoriteMemeListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/FavoriteMemeResponse"}}, "HarvestDownloadUrlResponse": { "type": "object", "properties": { "download_url": { "description": "The temporary URL to download the harvest archive", "type": "string", "minLength": 1, "maxLength": 2048 }, "expires_at": {"type": "string", "description": "ISO 8601 timestamp when the harvest download expires"} }, "required": ["download_url", "expires_at"], "additionalProperties": false }, "HarvestStatusResponseSchema": { "type": "object", "properties": { "harvest_id": { "description": "Unique identifier for the harvest request", "$ref": "#/components/schemas/SnowflakeStringType" }, "status": {"$ref": "#/components/schemas/HarvestStatus"}, "created_at": {"type": "string", "description": "ISO 8601 timestamp when the harvest request was created"}, "started_at": { "description": "ISO 8601 timestamp when the harvest started, or null if pending", "type": ["string", "null"] }, "completed_at": { "description": "ISO 8601 timestamp when the harvest completed, or null otherwise", "type": ["string", "null"] }, "failed_at": { "description": "ISO 8601 timestamp when the harvest failed, or null otherwise", "type": ["string", "null"] }, "file_size": { "description": "Final file size of the downloaded data, expressed as a string, or null if not available", "type": ["string", "null"] }, "progress_percent": { "type": "number", "description": "Harvest progress as a percentage value between 0 and 100" }, "progress_step": { "description": "Textual description of the current harvest step, if available", "type": ["string", "null"] }, "error_message": { "description": "Error message when the harvest fails, or null otherwise", "type": ["string", "null"] }, "download_url_expires_at": { "description": "ISO 8601 timestamp when the download URL expires, or null if unavailable", "type": ["string", "null"] }, "expires_at": { "description": "ISO 8601 timestamp when the harvest download expires, or null if unavailable", "type": ["string", "null"] } }, "required": [ "harvest_id", "status", "created_at", "started_at", "completed_at", "failed_at", "file_size", "progress_percent", "progress_step", "error_message", "download_url_expires_at", "expires_at" ], "additionalProperties": false }, "HarvestStatusResponseSchemaNullable": { "anyOf": [ { "type": "object", "properties": { "harvest_id": { "description": "Unique identifier for the harvest request", "$ref": "#/components/schemas/SnowflakeStringType" }, "status": {"$ref": "#/components/schemas/HarvestStatus"}, "created_at": { "type": "string", "description": "ISO 8601 timestamp when the harvest request was created" }, "started_at": { "description": "ISO 8601 timestamp when the harvest started, or null if pending", "type": ["string", "null"] }, "completed_at": { "description": "ISO 8601 timestamp when the harvest completed, or null otherwise", "type": ["string", "null"] }, "failed_at": { "description": "ISO 8601 timestamp when the harvest failed, or null otherwise", "type": ["string", "null"] }, "file_size": { "description": "Final file size of the downloaded data, expressed as a string, or null if not available", "type": ["string", "null"] }, "progress_percent": { "type": "number", "description": "Harvest progress as a percentage value between 0 and 100" }, "progress_step": { "description": "Textual description of the current harvest step, if available", "type": ["string", "null"] }, "error_message": { "description": "Error message when the harvest fails, or null otherwise", "type": ["string", "null"] }, "download_url_expires_at": { "description": "ISO 8601 timestamp when the download URL expires, or null if unavailable", "type": ["string", "null"] }, "expires_at": { "description": "ISO 8601 timestamp when the harvest download expires, or null if unavailable", "type": ["string", "null"] } }, "required": [ "harvest_id", "status", "created_at", "started_at", "completed_at", "failed_at", "file_size", "progress_percent", "progress_step", "error_message", "download_url_expires_at", "expires_at" ], "additionalProperties": false }, {"type": "null"} ] }, "HarvestSelfDataRequest": { "type": "object", "properties": { "scope": {"default": "selected", "$ref": "#/components/schemas/BulkDeleteSelfMessagesScope"}, "include_dms": { "default": true, "description": "Include 1:1 direct messages the caller still has open.", "type": "boolean" }, "include_dms_closed": { "default": true, "description": "Include 1:1 direct messages the caller has previously closed. Independent of include_dms — set include_dms=false and include_dms_closed=true to target closed DMs only.", "type": "boolean" }, "include_group_dms": { "default": true, "description": "Include group DMs the caller is still a member of.", "type": "boolean" }, "include_guilds": { "default": true, "description": "Include text channels in guilds the caller is a member of.", "type": "boolean" }, "guild_filter_mode": { "default": "exclude", "$ref": "#/components/schemas/BulkDeleteSelfMessagesGuildFilterMode" }, "excluded_guild_ids": { "description": "Guild IDs to leave untouched. Used when include_guilds is true, guild_filter_mode is exclude, and scope is selected.", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "included_guild_ids": { "description": "The only guild IDs to apply this operation to. Used when include_guilds is true, guild_filter_mode is include_only, and scope is selected.", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "start_date": { "description": "Inclusive ISO8601 lower bound for message timestamps. Null/omitted means unbounded in the past.", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "end_date": { "description": "Exclusive ISO8601 upper bound for message timestamps. Null/omitted means unbounded in the future.", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] } } }, "HarvestCreationResponseSchema": { "type": "object", "properties": { "harvest_id": { "description": "Unique identifier for the harvest request", "$ref": "#/components/schemas/SnowflakeStringType" }, "status": {"$ref": "#/components/schemas/HarvestStatus"}, "created_at": {"type": "string", "description": "ISO 8601 timestamp when the harvest request was created"} }, "required": ["harvest_id", "status", "created_at"], "additionalProperties": false }, "UserGuildSettingsUpdateRequest": { "type": "object", "properties": { "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettingsInput", "description": "Default guild notification level" }, "muted": {"type": "boolean", "description": "Guild muted"}, "mute_config": { "description": "Guild mute configuration", "anyOf": [ { "type": "object", "properties": { "end_time": { "description": "When the mute expires", "anyOf": [ { "anyOf": [ { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?$" }, {"type": "integer", "minimum": 0, "maximum": 8640000000000000} ] }, {"type": "null"} ] }, "selected_time_window": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Selected mute duration" } }, "required": ["selected_time_window"] }, {"type": "null"} ] }, "mobile_push": {"type": "boolean", "description": "Mobile push notifications enabled"}, "suppress_everyone": {"type": "boolean", "description": "Suppress @everyone mentions"}, "suppress_roles": {"type": "boolean", "description": "Suppress role mentions"}, "hide_muted_channels": {"type": "boolean", "description": "Hide muted channels"}, "channel_overrides": { "anyOf": [ { "type": "object", "propertyNames": {"$ref": "#/components/schemas/SnowflakeStringType"}, "additionalProperties": { "type": "object", "properties": { "collapsed": {"type": "boolean", "description": "Channel category collapsed"}, "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettingsInput", "description": "Channel notification level" }, "muted": {"type": "boolean", "description": "Channel muted"}, "mute_config": { "description": "Channel mute configuration", "anyOf": [ { "type": "object", "properties": { "end_time": { "description": "When the mute expires", "anyOf": [ { "anyOf": [ { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?$" }, {"type": "integer", "minimum": 0, "maximum": 8640000000000000} ] }, {"type": "null"} ] }, "selected_time_window": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Selected mute duration" } }, "required": ["selected_time_window"] }, {"type": "null"} ] }, "unread_badges": { "description": "Unread badges level override for this channel (null = inherit)", "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettingsInput", "description": "Unread badges level override for this channel" }, {"type": "null"} ] } }, "required": ["collapsed", "message_notifications", "muted"] } }, {"type": "null"} ], "description": "Per-channel overrides" }, "unread_badges": { "description": "Default unread badges level for the guild (null = follows message_notifications)", "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettingsInput", "description": "Default unread badges level for the guild" }, {"type": "null"} ] } } }, "UserGuildSettingsResponse": { "type": "object", "properties": { "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}], "description": "The ID of the guild these settings apply to" }, "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettings", "description": "The default notification level for the guild" }, "muted": {"type": "boolean", "description": "Whether the guild is muted"}, "mute_config": { "anyOf": [ { "type": "object", "properties": { "end_time": {"description": "ISO8601 timestamp of when the mute expires", "type": ["string", "null"]}, "selected_time_window": { "description": "The selected mute duration in seconds", "$ref": "#/components/schemas/Int32Type" } }, "required": ["end_time", "selected_time_window"], "additionalProperties": false }, {"type": "null"} ], "description": "The mute configuration for the guild" }, "mobile_push": {"type": "boolean", "description": "Whether mobile push notifications are enabled"}, "suppress_everyone": {"type": "boolean", "description": "Whether @everyone mentions are suppressed"}, "suppress_roles": {"type": "boolean", "description": "Whether role mentions are suppressed"}, "hide_muted_channels": {"type": "boolean", "description": "Whether muted channels are hidden in the sidebar"}, "channel_overrides": { "anyOf": [ { "type": "object", "propertyNames": {"$ref": "#/components/schemas/SnowflakeStringType"}, "additionalProperties": { "type": "object", "properties": { "collapsed": { "type": "boolean", "description": "Whether the channel category is collapsed in the sidebar" }, "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettings", "description": "The notification level override for this channel" }, "muted": {"type": "boolean", "description": "Whether notifications are muted for this channel"}, "mute_config": { "anyOf": [ { "type": "object", "properties": { "end_time": { "description": "ISO8601 timestamp of when the mute expires", "type": ["string", "null"] }, "selected_time_window": { "description": "The selected mute duration in seconds", "$ref": "#/components/schemas/Int32Type" } }, "required": ["end_time", "selected_time_window"], "additionalProperties": false }, {"type": "null"} ], "description": "The mute configuration for this channel" }, "unread_badges": { "description": "Unread badges level override for this channel (null = inherit)", "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Unread badges level override for this channel" }, {"type": "null"} ] } }, "required": ["collapsed", "message_notifications", "muted", "mute_config"], "additionalProperties": false } }, {"type": "null"} ], "description": "Per-channel notification overrides" }, "unread_badges": { "description": "Default unread badges level for the guild (null = follows message_notifications)", "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Default unread badges level for the guild" }, {"type": "null"} ] }, "version": { "description": "The version number of these settings for sync", "$ref": "#/components/schemas/Int32Type" } }, "required": [ "guild_id", "message_notifications", "muted", "mute_config", "mobile_push", "suppress_everyone", "suppress_roles", "hide_muted_channels", "channel_overrides", "version" ], "additionalProperties": false }, "GuildListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/GuildResponse"}}, "GiftCodeMetadataListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/GiftCodeMetadataResponse"} }, "ResolveGifUrlsBodySchema": { "type": "object", "properties": { "urls": { "minItems": 1, "maxItems": 200, "type": "array", "items": {"type": "string", "format": "uri"}, "description": "GIF URLs to resolve into entries with proxy metadata" } }, "required": ["urls"] }, "ResolveGifUrlsResponse": { "type": "object", "properties": { "entries": { "type": "array", "items": {"$ref": "#/components/schemas/ResolvedGifEntrySchema"}, "description": "Resolved GIF entries with proxy metadata" } }, "required": ["entries"], "additionalProperties": false }, "EntranceSoundRenameRequest": { "type": "object", "properties": {"name": {"type": "string"}}, "required": ["name"] }, "EntranceSoundResponse": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeStringType"}, "name": {"type": "string"}, "hash": {"type": "string"}, "extension": {"type": "string", "enum": ["mp3", "ogg", "m4a", "wav"]}, "content_type": {"type": "string"}, "duration_ms": {"type": "integer", "minimum": 0, "maximum": 5200}, "size_bytes": {"type": "integer", "minimum": 0, "maximum": 1048576}, "url": {"type": "string", "format": "uri"}, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" } }, "required": [ "id", "name", "hash", "extension", "content_type", "duration_ms", "size_bytes", "url", "created_at" ], "additionalProperties": false }, "EntranceSoundUploadRequest": { "type": "object", "properties": { "name": {"description": "Display label for the sound", "type": "string"}, "audio": {"description": "Base64-encoded audio bytes", "$ref": "#/components/schemas/Base64ImageType"} }, "required": ["name", "audio"] }, "EntranceSoundLibraryResponse": { "type": "object", "properties": { "sounds": {"type": "array", "items": {"$ref": "#/components/schemas/EntranceSoundResponse"}}, "selections": { "type": "array", "items": { "type": "object", "properties": { "scope_id": { "type": "string", "minLength": 1, "maxLength": 32, "pattern": "^(global|guilds|dms|guild:\\d{1,20})$", "description": "Entrance sound scope identifier" }, "sound_id": {"$ref": "#/components/schemas/SnowflakeStringType"} }, "required": ["scope_id", "sound_id"], "additionalProperties": false } } }, "required": ["sounds", "selections"], "additionalProperties": false }, "EntranceSoundSelectionRequest": { "type": "object", "properties": { "scope_id": { "type": "string", "minLength": 1, "maxLength": 32, "pattern": "^(global|guilds|dms|guild:\\d{1,20})$", "description": "Entrance sound scope identifier" }, "sound_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "Sound ID to assign, or null to clear" } }, "required": ["scope_id", "sound_id"] }, "EmailChangeVerifyOriginalRequest": { "type": "object", "properties": { "ticket": {"description": "Email change ticket identifier", "type": "string"}, "code": {"description": "Verification code sent to the original email address", "type": "string"} }, "required": ["ticket", "code"] }, "EmailChangeVerifyOriginalResponse": { "type": "object", "properties": { "original_proof": {"type": "string", "description": "Proof token issued after verifying the original email"} }, "required": ["original_proof"], "additionalProperties": false }, "EmailChangeVerifyNewRequest": { "type": "object", "properties": { "ticket": {"description": "Email change ticket identifier", "type": "string"}, "code": {"description": "Verification code sent to the original email address", "type": "string"}, "original_proof": {"description": "Proof token obtained from verifying the original email", "type": "string"} }, "required": ["ticket", "code", "original_proof"] }, "EmailTokenResponse": { "type": "object", "properties": { "email_token": { "description": "The email change token to use for updating email", "type": "string", "minLength": 1, "maxLength": 256 } }, "required": ["email_token"], "additionalProperties": false }, "EmailChangeStartResponse": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Ticket returned for email change actions"}, "require_original": { "type": "boolean", "description": "Whether verification of the original email is required" }, "original_email": {"description": "The original email address on record", "type": ["string", "null"]}, "original_proof": { "description": "Proof token generated when original email verification is not required", "type": ["string", "null"] }, "original_code_expires_at": { "description": "ISO8601 timestamp when the original verification code expires", "type": ["string", "null"] }, "resend_available_at": { "description": "ISO8601 timestamp when the original verification code can be resent", "type": ["string", "null"] } }, "required": [ "ticket", "require_original", "original_email", "original_proof", "original_code_expires_at", "resend_available_at" ], "additionalProperties": false }, "EmailChangeTicketRequest": { "type": "object", "properties": {"ticket": {"description": "Email change ticket identifier", "type": "string"}}, "required": ["ticket"] }, "EmailChangeRequestNewRequest": { "type": "object", "properties": { "ticket": {"description": "Email change ticket identifier", "type": "string"}, "new_email": {"description": "New email address to switch to", "$ref": "#/components/schemas/EmailType"}, "original_proof": {"description": "Proof token obtained from verifying the original email", "type": "string"}, "new_password": { "description": "Password the caller intends to set, rejected here instead of after the code is sent", "$ref": "#/components/schemas/PasswordType" } }, "required": ["ticket", "new_email", "original_proof"] }, "EmailChangeRequestNewResponse": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Ticket associated with the email change attempt"}, "new_email": {"type": "string", "description": "The new email address the user wants to verify"}, "new_code_expires_at": {"type": "string", "description": "ISO8601 timestamp when the new email code expires"}, "resend_available_at": { "description": "ISO8601 timestamp when the new email code can be resent", "type": ["string", "null"] } }, "required": ["ticket", "new_email", "new_code_expires_at", "resend_available_at"], "additionalProperties": false }, "EmailChangeBouncedVerifyNewRequest": { "type": "object", "properties": { "ticket": {"description": "Email change ticket identifier", "type": "string"}, "code": {"description": "Verification code sent to the replacement email address", "type": "string"} }, "required": ["ticket", "code"] }, "EmailChangeBouncedRequestNewRequest": { "type": "object", "properties": { "new_email": { "description": "Replacement email address used when the current email has bounced", "$ref": "#/components/schemas/EmailType" } }, "required": ["new_email"] }, "EmailChangeApplyRequest": { "type": "object", "properties": { "email_token": {"description": "Email change token returned from verify-new", "type": "string"}, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["email_token"] }, "ConnectionType": { "description": "The type of external connection", "x-enumNames": ["BLUESKY", "DOMAIN"], "x-enumDescriptions": ["Bluesky social account connection", "Custom domain ownership connection"], "enum": ["bsky", "domain"], "type": "string" }, "UpdateConnectionRequest": { "type": "object", "properties": { "visibility_flags": { "description": "Bitfield controlling who can see this connection", "$ref": "#/components/schemas/Int32Type" }, "sort_order": { "description": "The display order of this connection", "$ref": "#/components/schemas/Int32Type" } } }, "VerifyAndCreateConnectionRequest": { "type": "object", "properties": { "initiation_token": { "type": "string", "description": "The signed initiation token returned from the create endpoint" }, "visibility_flags": { "description": "Bitfield controlling who can see this connection", "$ref": "#/components/schemas/Int32Type" } }, "required": ["initiation_token"] }, "ConnectionResponse": { "type": "object", "properties": { "id": {"type": "string", "description": "The unique identifier for this connection"}, "type": {"description": "The type of connection", "$ref": "#/components/schemas/ConnectionType"}, "name": {"type": "string", "description": "The display name of the connection (handle or domain)"}, "verified": {"type": "boolean", "description": "Whether the connection has been verified"}, "visibility_flags": { "description": "Bitfield controlling who can see this connection", "$ref": "#/components/schemas/ConnectionVisibilityFlags" }, "sort_order": { "description": "The display order of this connection", "$ref": "#/components/schemas/Int32Type" } }, "required": ["id", "type", "name", "verified", "visibility_flags", "sort_order"], "additionalProperties": false }, "ReorderConnectionsRequest": { "type": "object", "properties": { "connection_ids": { "minItems": 1, "maxItems": 20, "type": "array", "items": {"type": "string"}, "description": "Ordered list of connection IDs defining the new display order" } }, "required": ["connection_ids"] }, "BlueskyAuthorizeRequest": { "type": "object", "properties": { "handle": { "type": "string", "minLength": 1, "maxLength": 253, "description": "The Bluesky handle to connect (e.g. alice.bsky.social)" } }, "required": ["handle"] }, "BlueskyAuthorizeResponse": { "type": "object", "properties": { "authorize_url": { "type": "string", "description": "The URL to redirect the user to for Bluesky authorisation" } }, "required": ["authorize_url"], "additionalProperties": false }, "CreateConnectionRequest": { "type": "object", "properties": { "type": {"description": "The type of connection to create", "$ref": "#/components/schemas/ConnectionType"}, "identifier": {"type": "string", "description": "The connection identifier (handle or domain)"}, "visibility_flags": { "description": "Bitfield controlling who can see this connection", "$ref": "#/components/schemas/Int32Type" } }, "required": ["type", "identifier"] }, "ConnectionVerificationResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "The verification token to place in DNS or profile"}, "type": { "description": "The type of connection being verified", "$ref": "#/components/schemas/ConnectionType" }, "id": {"type": "string", "description": "The connection identifier (handle or domain)"}, "instructions": {"type": "string", "description": "Human-readable instructions for completing verification"}, "initiation_token": {"type": "string", "description": "Signed token the client sends back at verify time"} }, "required": ["token", "type", "id", "instructions", "initiation_token"], "additionalProperties": false }, "ConnectionListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/ConnectionResponse"}}, "CreatePrivateChannelRequest": { "type": "object", "properties": { "recipient_id": { "description": "User ID for creating a DM channel", "$ref": "#/components/schemas/SnowflakeType" }, "recipients": { "description": "Array of user IDs for creating a group DM (max 49)", "maxItems": 49, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} } } }, "ChannelResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this channel", "$ref": "#/components/schemas/SnowflakeStringType" }, "guild_id": { "description": "The ID of the guild this channel belongs to", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"description": "The name of the channel", "type": ["string", "null"]}, "topic": {"description": "The topic of the channel", "type": ["string", "null"]}, "url": { "description": "The URL associated with the channel", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "icon": {"description": "The icon hash of the channel (for group DMs)", "type": ["string", "null"]}, "owner_id": { "description": "The ID of the owner of the channel (for group DMs)", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/ChannelType"}, "position": {"description": "The sorting position of the channel", "$ref": "#/components/schemas/Int32Type"}, "parent_id": { "description": "The ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "bitrate": { "description": "The bitrate of the voice channel in bits per second", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "user_limit": { "description": "The maximum number of users allowed in the voice channel", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "voice_connection_limit": { "description": "The maximum active voice connections allowed per user in the voice channel", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "rtc_region": {"description": "The voice region ID for the voice channel", "type": ["string", "null"]}, "last_message_id": { "description": "The ID of the last message sent in this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "last_pin_timestamp": { "description": "The ISO 8601 timestamp of when the last pinned message was pinned", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "permission_overwrites": { "description": "The permission overwrites for this channel", "type": "array", "items": {"$ref": "#/components/schemas/ChannelOverwriteResponse"} }, "recipients": { "description": "The recipients of the DM channel", "maxItems": 49, "type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"} }, "nsfw": { "description": "Whether the channel is marked as NSFW (effective value, walking channel → category → guild)", "type": "boolean" }, "nsfw_override": { "description": "Per-channel adult-content override; null means inherit from parent category and then guild. Categories use this same field as their own override.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevel" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "rate_limit_per_user": { "description": "The slowmode rate limit in seconds", "$ref": "#/components/schemas/Int32Type" }, "nicks": { "description": "Custom nicknames for users in this channel (for group DMs)", "type": "object", "propertyNames": {"type": "string"}, "additionalProperties": {"type": "string", "minLength": 1, "maxLength": 32} } }, "required": ["id", "type"], "additionalProperties": false }, "ChannelListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/ChannelResponse"}}, "ApplicationListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/ApplicationResponse"}}, "UrlResponse": { "type": "object", "properties": {"url": {"type": "string", "description": "The URL to redirect to"}}, "required": ["url"], "additionalProperties": false }, "UserUpdateWithVerificationRequest": { "type": "object", "properties": { "username": { "description": "The username for the account (1-32 characters)", "$ref": "#/components/schemas/UsernameType" }, "discriminator": { "description": "The 4-digit discriminator tag", "$ref": "#/components/schemas/DiscriminatorType" }, "global_name": {"description": "The display name shown to other users", "type": ["string", "null"]}, "email": {"description": "The email address for the account", "$ref": "#/components/schemas/EmailType"}, "new_password": {"description": "The new password to set", "$ref": "#/components/schemas/PasswordType"}, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "avatar": { "description": "Base64-encoded avatar image", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "banner": { "description": "Base64-encoded profile banner image", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "bio": {"description": "User biography text (max 320 characters)", "type": ["string", "null"]}, "pronouns": {"description": "User pronouns (max 40 characters)", "type": ["string", "null"]}, "accent_color": { "description": "Profile accent color as integer", "anyOf": [{"$ref": "#/components/schemas/ColorType"}, {"type": "null"}] }, "timezone": { "description": "IANA timezone identifier saved for profile local time", "type": ["string", "null"] }, "timezone_privacy_flags": {"$ref": "#/components/schemas/ProfileFieldPrivacyFlags"}, "premium_badge_hidden": {"type": "boolean", "description": "Whether to hide the premium badge"}, "premium_badge_masked": {"type": "boolean", "description": "Whether to mask the premium badge"}, "premium_badge_timestamp_hidden": { "type": "boolean", "description": "Whether to hide premium badge timestamp" }, "premium_badge_sequence_hidden": {"type": "boolean", "description": "Whether to hide premium badge sequence"}, "premium_enabled_override": {"type": "boolean", "description": "Override premium enabled state"}, "has_dismissed_premium_onboarding": { "type": "boolean", "description": "Whether user dismissed premium onboarding" }, "has_unread_gift_inventory": {"type": "boolean", "description": "Whether user has unread gifts"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferencesInput", "description": "Account-wide reply mention preference (NO_PREFERENCE, PREFER_MENTION, PREFER_NO_MENTION)" }, "email_token": {"description": "Email change token for updating email", "type": "string"}, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} } }, "UnfurlRequest": { "type": "object", "properties": {"url": {"description": "The URL to unfurl", "type": "string"}}, "required": ["url"] }, "UnfurlResponse": { "type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}, "description": "The embeds resolved by the unfurler" }, "Locale": { "description": "The locale code for the user interface language", "x-enumNames": [ "AR", "BG", "CS", "DA", "DE", "EL", "EN_GB", "EN_US", "ES_ES", "ES_419", "FI", "FR", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KO", "LT", "NL", "NO", "PL", "PT_BR", "RO", "RU", "SV_SE", "TH", "TR", "UK", "VI", "ZH_CN", "ZH_TW" ], "x-enumDescriptions": [ "Arabic", "Bulgarian", "Czech", "Danish", "German", "Greek", "English (United Kingdom)", "English (United States)", "Spanish (Spain)", "Spanish (Latin America)", "Finnish", "French", "Hebrew", "Hindi", "Croatian", "Hungarian", "Indonesian", "Italian", "Japanese", "Korean", "Lithuanian", "Dutch", "Norwegian", "Polish", "Portuguese (Brazil)", "Romanian", "Russian", "Swedish", "Thai", "Turkish", "Ukrainian", "Vietnamese", "Chinese (Simplified)", "Chinese (Traditional)" ], "enum": [ "ar", "bg", "cs", "da", "de", "el", "en-GB", "en-US", "es-ES", "es-419", "fi", "fr", "he", "hi", "hr", "hu", "id", "it", "ja", "ko", "lt", "nl", "no", "pl", "pt-BR", "ro", "ru", "sv-SE", "th", "tr", "uk", "vi", "zh-CN", "zh-TW" ], "type": "string" }, "GifListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}, "GifSearchSuggestionsResponse": {"type": "array", "items": {"type": "string"}}, "GifRegisterShareRequest": { "type": "object", "properties": { "id": {"description": "Provider-issued share identifier (slug or slug-id token).", "type": "string"}, "q": {"description": "Optional search query that produced the GIF.", "type": ["string", "null"]}, "locale": {"default": "en-US", "$ref": "#/components/schemas/Locale"} }, "required": ["id"] }, "GifFeaturedResponse": { "type": "object", "properties": { "gifs": { "type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}, "description": "Array of featured GIFs." }, "categories": { "type": "array", "items": {"$ref": "#/components/schemas/GifCategoryTagResponse"}, "description": "Array of GIF categories." } }, "required": ["gifs", "categories"], "additionalProperties": false }, "WebhookReceivedResponse": { "type": "object", "properties": {"received": {"type": "boolean", "description": "Whether the webhook was successfully received"}}, "required": ["received"], "additionalProperties": false }, "LocalizedCardPreapprovalContinueRequest": { "type": "object", "properties": { "token": {"description": "Continuation token for the localized card preapproval flow", "type": "string"} }, "required": ["token"] }, "LocalizedCardPreapprovalContinueResponse": { "oneOf": [ {"$ref": "#/components/schemas/PendingLocalizedCardPreapprovalContinueResponse"}, {"$ref": "#/components/schemas/ReadyLocalizedCardPreapprovalContinueResponse"}, {"$ref": "#/components/schemas/RejectedLocalizedCardPreapprovalContinueResponse"}, {"$ref": "#/components/schemas/ExpiredLocalizedCardPreapprovalContinueResponse"} ] }, "CreateCheckoutSessionRequest": { "type": "object", "properties": { "price_id": {"description": "The Stripe price ID for the subscription plan", "type": "string"}, "country_code": { "description": "Two-letter country code used for regional pricing. Only used when the server cannot geolocate the request; otherwise the request GeoIP country wins.", "type": "string" }, "client_geoip_country_code": { "description": "Two-letter country code observed by the client GeoIP store before checkout", "type": "string" }, "eu_withdrawal_waiver_accepted": { "description": "Whether the EU/EEA digital content withdrawal waiver was expressly accepted before checkout", "type": "boolean" }, "payment_method": { "description": "Preferred payment method. card (default) uses the account Payment Method Configuration. pix requires a BRL recurring price and enables Pix Automático. upi requires an INR recurring price and enables RBI-compliant UPI mandates.", "$ref": "#/components/schemas/CheckoutPaymentMethodEnum" }, "is_business": { "description": "Whether the purchase is for a business. When true, Stripe Checkout requires a billing address (needed for tax invoicing). When false or omitted, billing address collection is left to Stripe (auto).", "type": "boolean" } }, "required": ["price_id"] }, "StreamUpdateBodySchema": { "type": "object", "properties": { "region": {"description": "The preferred voice region for the stream (1-64 characters)", "type": "string"} } }, "StreamPreviewUploadUrlBodySchema": { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel where the stream is active", "$ref": "#/components/schemas/SnowflakeType" }, "content_type": {"description": "MIME type of the thumbnail image", "type": "string"} }, "required": ["channel_id"] }, "StreamPreviewUploadUrlResponseSchema": { "type": "object", "properties": { "upload_url": { "description": "URL used to upload the stream preview with a PUT request", "type": "string", "minLength": 1, "maxLength": 2048 }, "method": {"type": "string", "const": "PUT", "description": "HTTP method to use for the upload URL"}, "content_type": { "description": "MIME type that must be sent with the upload request", "type": "string", "minLength": 1, "maxLength": 64 }, "expires_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "ISO timestamp when the upload URL expires" }, "expires_in": { "description": "Number of seconds the upload URL remains valid", "$ref": "#/components/schemas/Int32Type" }, "max_bytes": { "description": "Maximum supported preview image size in bytes", "$ref": "#/components/schemas/Int32Type" } }, "required": ["upload_url", "method", "content_type", "expires_at", "expires_in", "max_bytes"], "additionalProperties": false }, "StreamPreviewUploadBodySchema": { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel where the stream is active", "$ref": "#/components/schemas/SnowflakeType" }, "thumbnail": {"description": "Base64-encoded thumbnail image data", "type": "string"}, "content_type": {"description": "MIME type of the thumbnail image", "type": "string"} }, "required": ["channel_id", "thumbnail"] }, "StreamPreviewResponse": { "type": "string", "format": "binary", "contentEncoding": "binary", "description": "The current stream preview image" }, "GuildExpressionSourceGuildResponse": { "type": "object", "properties": { "id": {"description": "The ID of the source guild", "$ref": "#/components/schemas/SnowflakeStringType"}, "name": {"type": "string", "description": "The name of the source guild"}, "icon": {"description": "The hash of the source guild icon", "type": ["string", "null"]}, "features": { "type": "array", "items": {"type": "string", "enum": ["VERIFIED", "PARTNERED", "DISCOVERABLE"]}, "description": "The badge feature flags of the source guild, limited to VERIFIED, PARTNERED, and DISCOVERABLE" } }, "required": ["id", "name", "icon", "features"], "additionalProperties": false, "description": "Public presentation of the source guild of an expression" }, "GuildStickerMetadataResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this sticker", "$ref": "#/components/schemas/SnowflakeStringType" }, "guild_id": { "description": "The guild this sticker belongs to", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the sticker"}, "animated": {"type": "boolean", "description": "Whether this sticker is animated"}, "allow_cloning": { "type": "boolean", "description": "Whether the source guild allows non-members to use the in-app clone shortcut" } }, "required": ["id", "guild_id", "name", "animated", "allow_cloning"], "additionalProperties": false }, "GlobalSearchMessagesRequest": { "type": "object", "properties": { "hits_per_page": { "default": 25, "description": "Number of results per page (1-25)", "type": "integer", "minimum": 1, "maximum": 25 }, "page": { "default": 1, "description": "Page number for pagination (ignored when cursor is provided). Use cursor to page beyond this.", "type": "integer", "minimum": 1, "maximum": 400 }, "cursor": { "description": "Opaque cursor for search_after pagination. When provided, page is ignored.", "type": "array", "items": {"type": "string"} }, "max_id": { "description": "Maximum message ID to include in results", "$ref": "#/components/schemas/SnowflakeType" }, "min_id": { "description": "Minimum message ID to include in results", "$ref": "#/components/schemas/SnowflakeType" }, "content": {"description": "Text content to search for", "type": "string"}, "contents": { "description": "Multiple content queries to search for", "maxItems": 100, "type": "array", "items": {"type": "string"} }, "exact_phrases": { "description": "Exact phrases that must appear contiguously in message content", "maxItems": 10, "type": "array", "items": {"type": "string"} }, "channel_id": { "description": "Channel IDs to search in", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "exclude_channel_id": { "description": "Channel IDs to exclude from search", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "author_type": { "description": "Author types to filter by", "maxItems": 20, "type": "array", "items": {"$ref": "#/components/schemas/MessageAuthorType"} }, "exclude_author_type": { "description": "Author types to exclude", "maxItems": 20, "type": "array", "items": {"$ref": "#/components/schemas/MessageAuthorType"} }, "author_id": { "description": "Author user IDs to filter by", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "exclude_author_id": { "description": "Author user IDs to exclude", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "mentions": { "description": "User IDs that must be mentioned", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "exclude_mentions": { "description": "User IDs that must not be mentioned", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "mention_everyone": {"description": "Filter by whether message mentions everyone", "type": "boolean"}, "pinned": {"description": "Filter by pinned status", "type": "boolean"}, "has": { "description": "Content flags the message must have. Use image, video, sound, or file for uploaded attachments and embed for link previews or rich embeds.", "maxItems": 20, "type": "array", "items": {"$ref": "#/components/schemas/MessageContentType"} }, "exclude_has": { "description": "Content flags the message must not have. Use image, video, sound, or file for uploaded attachments and embed for link previews or rich embeds.", "maxItems": 20, "type": "array", "items": {"$ref": "#/components/schemas/MessageContentType"} }, "embed_type": { "description": "Generated or supplied embed types to filter by; does not match uploaded attachments", "maxItems": 20, "type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedType"} }, "exclude_embed_type": { "description": "Generated or supplied embed types to exclude; does not match uploaded attachments", "maxItems": 20, "type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedType"} }, "embed_provider": { "description": "Embed providers to filter by", "maxItems": 50, "type": "array", "items": {"type": "string"} }, "exclude_embed_provider": { "description": "Embed providers to exclude", "maxItems": 50, "type": "array", "items": {"type": "string"} }, "link_hostname": { "description": "Link hostnames to filter by", "maxItems": 100, "type": "array", "items": {"type": "string"} }, "exclude_link_hostname": { "description": "Link hostnames to exclude", "maxItems": 100, "type": "array", "items": {"type": "string"} }, "attachment_filename": { "description": "Attachment filenames to filter by", "maxItems": 100, "type": "array", "items": {"type": "string"} }, "exclude_attachment_filename": { "description": "Attachment filenames to exclude", "maxItems": 100, "type": "array", "items": {"type": "string"} }, "attachment_extension": { "description": "File extensions to filter by", "maxItems": 50, "type": "array", "items": {"type": "string"} }, "exclude_attachment_extension": { "description": "File extensions to exclude", "maxItems": 50, "type": "array", "items": {"type": "string"} }, "sort_by": { "default": "timestamp", "description": "Field to sort results by", "$ref": "#/components/schemas/MessageSortField" }, "sort_order": { "default": "desc", "description": "Sort order for results", "$ref": "#/components/schemas/MessageSortOrder" }, "include_nsfw": { "default": false, "description": "Whether to include NSFW channel results", "type": "boolean" }, "scope": { "description": "Scope to search within when querying messages", "$ref": "#/components/schemas/MessageSearchScope" }, "context_channel_id": { "description": "Channel ID for context when searching across multiple channels", "$ref": "#/components/schemas/SnowflakeType" }, "context_guild_id": { "description": "Guild ID for context when searching across multiple guilds", "$ref": "#/components/schemas/SnowflakeType" }, "channel_ids": { "description": "Specific channel IDs to search in", "maxItems": 500, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} } } }, "MessageSearchResponse": { "anyOf": [ {"$ref": "#/components/schemas/MessageSearchResultsResponse"}, { "type": "object", "properties": { "indexing": { "type": "boolean", "const": true, "description": "Indicates that one or more channels are being indexed" } }, "required": ["indexing"], "additionalProperties": false } ] }, "ReportUserRequest": { "type": "object", "properties": { "user_id": {"description": "ID of the user being reported", "$ref": "#/components/schemas/SnowflakeType"}, "category": {"$ref": "#/components/schemas/UserReportCategory"}, "guild_id": { "description": "ID of the guild where the violation occurred", "$ref": "#/components/schemas/SnowflakeType" } }, "required": ["user_id", "category"] }, "ReportResponse": { "type": "object", "properties": { "report_id": { "description": "The unique identifier for this report", "$ref": "#/components/schemas/SnowflakeStringType" }, "status": {"type": "string", "description": "Current status of the report (pending, reviewed, resolved)"}, "reported_at": {"type": "string", "description": "ISO 8601 timestamp when the report was submitted"} }, "required": ["report_id", "status", "reported_at"], "additionalProperties": false }, "ReportMessageRequest": { "type": "object", "properties": { "channel_id": { "description": "ID of the accessible channel containing the reported message", "$ref": "#/components/schemas/SnowflakeType" }, "message_id": { "description": "ID of the accessible message being reported", "$ref": "#/components/schemas/SnowflakeType" }, "category": {"$ref": "#/components/schemas/MessageReportCategory"} }, "required": ["channel_id", "message_id", "category"] }, "ReportGuildRequest": { "type": "object", "properties": { "guild_id": {"description": "ID of the guild being reported", "$ref": "#/components/schemas/SnowflakeType"}, "category": {"$ref": "#/components/schemas/GuildReportCategory"}, "invite_code": { "description": "Invite code proving access to the guild (required when not a member of a non-discoverable guild)", "type": "string" } }, "required": ["guild_id", "category"] }, "DsaReportEmailVerifyRequest": { "type": "object", "properties": { "email": { "description": "Email address that received the verification code", "$ref": "#/components/schemas/EmailType" }, "code": {"description": "Verification code received via email", "type": "string"} }, "required": ["email", "code"] }, "TicketResponse": { "type": "object", "properties": { "ticket": {"type": "string", "description": "A temporary ticket token for subsequent operations"} }, "required": ["ticket"], "additionalProperties": false }, "DsaReportEmailSendRequest": { "type": "object", "properties": { "email": { "description": "Email address to send the DSA verification code to", "$ref": "#/components/schemas/EmailType" } }, "required": ["email"] }, "OkResponse": { "type": "object", "properties": {"ok": {"type": "boolean", "description": "Whether the operation was successful"}}, "required": ["ok"], "additionalProperties": false }, "DsaReportRequest": { "oneOf": [ {"$ref": "#/components/schemas/MessageDsaReportRequest"}, {"$ref": "#/components/schemas/UserDsaReportRequest"}, {"$ref": "#/components/schemas/GuildDsaReportRequest"} ] }, "ReadStateAckBulkRequest": { "type": "object", "properties": { "read_states": { "minItems": 1, "maxItems": 100, "type": "array", "items": { "type": "object", "properties": { "channel_id": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "message_id": { "description": "The ID of the last read message", "$ref": "#/components/schemas/SnowflakeType" } }, "required": ["channel_id", "message_id"] }, "description": "Array of channel/message pairs to acknowledge" } }, "required": ["read_states"] }, "ReadStateAckRequest": { "type": "object", "properties": { "read_states": { "minItems": 1, "maxItems": 100, "type": "array", "items": { "type": "object", "properties": { "channel_id": {"description": "The ID of the channel", "$ref": "#/components/schemas/SnowflakeType"}, "message_id": { "description": "The ID of the message to acknowledge", "$ref": "#/components/schemas/SnowflakeType" }, "mention_count": { "description": "Number of unread mentions after this acknowledgement", "$ref": "#/components/schemas/Int32Type" }, "manual": { "description": "Whether this acknowledgement is an explicit manual read marker", "type": "boolean" } }, "required": ["channel_id", "message_id"] }, "description": "Read-state acknowledgements to apply. Supports normal and manual acknowledgements." } }, "required": ["read_states"] }, "ReadStateAckResponse": { "type": "object", "properties": { "read_states": { "type": "array", "items": {"$ref": "#/components/schemas/ReadStateResponse"}, "description": "Authoritative read states after applying the acknowledgement" } }, "required": ["read_states"], "additionalProperties": false }, "SwitchToListPriceResponse": { "oneOf": [ {"$ref": "#/components/schemas/ScheduledSwitchToListPriceResponse"}, {"$ref": "#/components/schemas/AlreadyScheduledSwitchToListPriceResponse"}, {"$ref": "#/components/schemas/IneligibleSwitchToListPriceResponse"} ] }, "StorePurchaseListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/StorePurchaseResponse"}}, "ClaimGooglePlayPurchaseRequest": { "type": "object", "properties": { "purchase_token": {"description": "Purchase token from Google Play Billing", "type": "string"}, "product_id": {"description": "Google Play product identifier of the purchase", "type": "string"}, "package_name": { "description": "Package name of the app that made the purchase. Must be one of the accepted package names", "type": "string" } }, "required": ["purchase_token", "product_id"] }, "StorePurchaseClaimResponse": { "type": "object", "properties": { "purchase": { "properties": { "id": { "description": "The unique identifier (snowflake) for this store purchase", "$ref": "#/components/schemas/SnowflakeStringType" }, "provider": { "description": "Store the purchase was made in", "$ref": "#/components/schemas/StoreProvider" }, "kind": { "description": "Whether the purchase is a subscription or a gift", "$ref": "#/components/schemas/StorePurchaseKind" }, "slot": {"description": "Fluxer product the purchase is for", "$ref": "#/components/schemas/StoreSlot"}, "product_id": {"type": "string", "description": "Store product identifier"}, "environment": { "description": "Whether the purchase was a real purchase or a test purchase", "$ref": "#/components/schemas/StoreEnvironment" }, "state": { "description": "Current state of the purchase", "$ref": "#/components/schemas/StorePurchaseState" }, "entitled": {"type": "boolean", "description": "Whether the purchase currently grants Plutonium"}, "expires_at": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ], "description": "When the paid period ends, null for gifts" }, "entitled_until": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ], "description": "When access from this purchase ends, including any grace period, null when not entitled" }, "will_renew": { "description": "Whether the subscription renews automatically, null for gifts", "type": ["boolean", "null"] }, "gift_code": { "description": "Gift code minted by a gift purchase, null otherwise", "type": ["string", "null"] }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "When Fluxer first saw the purchase" } }, "description": "The claimed purchase", "$ref": "#/components/schemas/StorePurchaseResponse" }, "gift_code": { "description": "Gift code minted by a gift purchase, null otherwise", "type": ["string", "null"] } }, "required": ["purchase", "gift_code"], "additionalProperties": false }, "ClaimAppStoreTransactionRequest": { "type": "object", "properties": { "signed_transaction": { "description": "JWS signed transaction from StoreKit 2 (Transaction.jwsRepresentation)", "type": "string" } }, "required": ["signed_transaction"] }, "StoreBillingContextResponse": { "type": "object", "properties": { "app_account_token": { "type": "string", "description": "Lowercase UUID for this account. Pass it as appAccountToken on App Store purchases and as obfuscatedAccountId on Google Play purchases" }, "app_store": { "type": "object", "properties": { "enabled": {"type": "boolean", "description": "Whether App Store purchases are accepted"}, "bundle_ids": { "type": "array", "items": {"type": "string"}, "description": "App bundle identifiers whose purchases are accepted" }, "products": { "type": "array", "items": {"$ref": "#/components/schemas/StoreBillingAppStoreProductResponse"}, "description": "App Store products on sale" } }, "required": ["enabled", "bundle_ids", "products"], "additionalProperties": false, "description": "App Store purchase settings" }, "google_play": { "type": "object", "properties": { "enabled": {"type": "boolean", "description": "Whether Google Play purchases are accepted"}, "package_names": { "type": "array", "items": {"type": "string"}, "description": "App package names whose purchases are accepted" }, "products": { "type": "array", "items": {"$ref": "#/components/schemas/StoreBillingGooglePlayProductResponse"}, "description": "Google Play products on sale" } }, "required": ["enabled", "package_names", "products"], "additionalProperties": false, "description": "Google Play purchase settings" }, "purchase_blocked_reason": { "anyOf": [{"$ref": "#/components/schemas/StorePurchaseBlockedReason"}, {"type": "null"}], "description": "Why this account cannot buy a subscription right now, null when it can" }, "blocking_provider": { "anyOf": [{"$ref": "#/components/schemas/StoreBlockingProvider"}, {"type": "null"}], "description": "Provider of the active subscription that blocks a new one, null when nothing blocks" } }, "required": ["app_account_token", "app_store", "google_play", "purchase_blocked_reason", "blocking_provider"], "additionalProperties": false }, "PremiumStateResponse": { "type": "object", "properties": { "actual": { "type": "object", "properties": { "premium_type": { "anyOf": [{"$ref": "#/components/schemas/UserPremiumTypes"}, {"type": "null"}], "description": "Actual subscription type before local perk disabling" }, "premium_since": { "description": "ISO timestamp when actual premium access first started", "type": ["string", "null"] }, "premium_until": { "description": "ISO timestamp when actual premium access ends, including stacked gift time", "type": ["string", "null"] }, "premium_will_cancel": { "type": "boolean", "description": "Whether the subscription is set to cancel at period end" }, "premium_billing_cycle": { "anyOf": [{"type": "string", "enum": ["monthly", "yearly"]}, {"type": "null"}], "description": "The actual recurring billing cycle, when known" }, "premium_lifetime_sequence": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "Visionary sequence number, when applicable" }, "premium_grace_ends_at": { "description": "ISO timestamp when grace access ends, when applicable", "type": ["string", "null"] }, "has_active_paid_premium": { "type": "boolean", "description": "Whether paid premium access is currently active before local disabling" }, "is_visionary": { "type": "boolean", "description": "Whether the actual premium entitlement is lifetime Visionary access" }, "has_ever_purchased": { "type": "boolean", "description": "Whether the user has ever completed a premium purchase" } }, "required": [ "premium_type", "premium_since", "premium_until", "premium_will_cancel", "premium_billing_cycle", "premium_lifetime_sequence", "premium_grace_ends_at", "has_active_paid_premium", "is_visionary", "has_ever_purchased" ], "additionalProperties": false }, "effective": { "type": "object", "properties": { "is_premium": { "type": "boolean", "description": "Whether premium perks are currently effective for product gating" }, "premium_type": { "anyOf": [{"$ref": "#/components/schemas/UserPremiumTypes"}, {"type": "null"}], "description": "Effective premium type used by product gates" }, "premium_since": { "description": "Effective premium start timestamp exposed to the client", "type": ["string", "null"] }, "premium_until": { "description": "Effective premium end timestamp exposed to the client, including stacked gift time", "type": ["string", "null"] }, "premium_will_cancel": { "type": "boolean", "description": "Effective cancellation status exposed to the client" }, "premium_billing_cycle": { "anyOf": [{"type": "string", "enum": ["monthly", "yearly"]}, {"type": "null"}], "description": "Effective recurring billing cycle, when known" }, "premium_lifetime_sequence": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "Effective Visionary sequence number, when applicable" }, "premium_grace_ends_at": { "description": "Effective grace timestamp exposed to the client", "type": ["string", "null"] }, "premium_enabled_override": { "type": "boolean", "description": "Whether backend premium override is enabled" }, "premium_purchase_disabled": { "type": "boolean", "description": "Whether premium purchase is disabled for this account" }, "premium_perks_disabled": { "type": "boolean", "description": "Whether the user temporarily disabled premium perks" }, "self_hosted": { "type": "boolean", "description": "Whether the instance treats all users as premium because it is self-hosted" }, "bot": { "type": "boolean", "description": "Whether the account is a bot account with premium-equivalent service access" } }, "required": [ "is_premium", "premium_type", "premium_since", "premium_until", "premium_will_cancel", "premium_billing_cycle", "premium_lifetime_sequence", "premium_grace_ends_at", "premium_enabled_override", "premium_purchase_disabled", "premium_perks_disabled", "self_hosted", "bot" ], "additionalProperties": false }, "billing": { "type": "object", "properties": { "stripe_customer_id": {"type": ["string", "null"]}, "current_subscription_price": {"$ref": "#/components/schemas/CurrentSubscriptionPriceResponse"}, "pending_subscription_change": {"$ref": "#/components/schemas/PendingSubscriptionChangeResponse"}, "list_price_switch": {"$ref": "#/components/schemas/ListPriceSwitchState"}, "subscription": { "anyOf": [{"$ref": "#/components/schemas/PremiumBillingSubscriptionResponse"}, {"type": "null"}] }, "invoices": {"type": "array", "items": {"$ref": "#/components/schemas/PremiumBillingInvoiceResponse"}}, "invoices_has_more": {"type": "boolean"}, "payment_methods": { "type": "array", "items": {"$ref": "#/components/schemas/PremiumBillingPaymentMethodResponse"} }, "refund_eligibility": {"$ref": "#/components/schemas/SelfServeRefundEligibilityResponse"} }, "required": [ "stripe_customer_id", "current_subscription_price", "pending_subscription_change", "list_price_switch", "subscription", "invoices", "invoices_has_more", "payment_methods", "refund_eligibility" ], "additionalProperties": false }, "pricing": {"$ref": "#/components/schemas/PremiumPricingState"}, "store": { "description": "Active App Store or Google Play subscription, null when no store subscription is active", "anyOf": [{"$ref": "#/components/schemas/PremiumStoreSubscriptionState"}, {"type": "null"}] }, "subscription_provider": { "anyOf": [{"$ref": "#/components/schemas/PremiumSubscriptionProvider"}, {"type": "null"}], "description": "Billing platform that owns the current recurring subscription, null for gift, lifetime or no subscription. When a Stripe and a store subscription are both active, the one paid through later" } }, "required": ["actual", "effective", "billing", "pricing", "subscription_provider"], "additionalProperties": false }, "SelfServeRefundResponse": { "type": "object", "properties": { "invoice_id": {"type": "string"}, "payment_intent_id": {"type": ["string", "null"]}, "charge_id": {"type": ["string", "null"]}, "refund_id": {"type": ["string", "null"]}, "refunded_amount_cents": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Amount actually refunded so far, in the currency minor unit; 0 until the provider confirms success" }, "invoice_amount_paid_cents": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, "currency": {"type": "string"}, "subscription_id": { "description": "Subscription that was cancelled along with the refund, when applicable", "type": ["string", "null"] }, "status": { "description": "Provider status of the refund (e.g. pending, succeeded, failed); money only moved once succeeded", "type": ["string", "null"] } }, "required": [ "invoice_id", "payment_intent_id", "charge_id", "refund_id", "refunded_amount_cents", "invoice_amount_paid_cents", "currency", "subscription_id", "status" ], "additionalProperties": false }, "SelfServeRefundEligibilityResponse": { "type": "object", "properties": { "eligible": { "type": "boolean", "description": "Whether the authenticated user can self-serve refund their latest purchase right now" }, "reason": { "anyOf": [{"$ref": "#/components/schemas/SelfServeRefundIneligibilityReason"}, {"type": "null"}], "description": "Why the user is not eligible, when eligible is false" }, "invoice_id": { "description": "Latest paid invoice considered for refund eligibility", "type": ["string", "null"] }, "invoice_amount_paid_cents": { "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}], "description": "Amount paid on the latest invoice in the currency minor unit" }, "currency": {"description": "Currency of the latest paid invoice", "type": ["string", "null"]}, "paid_at": {"description": "ISO timestamp the latest invoice was paid", "type": ["string", "null"]}, "refund_window_expires_at": { "description": "ISO timestamp after which the 3-day refund window closes", "type": ["string", "null"] }, "cooldown_expires_at": { "description": "ISO timestamp the 30-day cooldown ends, if currently active", "type": ["string", "null"] }, "cancels_subscription": { "type": "boolean", "description": "Whether issuing the refund will also cancel the active subscription" } }, "required": [ "eligible", "reason", "invoice_id", "invoice_amount_paid_cents", "currency", "paid_at", "refund_window_expires_at", "cooldown_expires_at", "cancels_subscription" ], "additionalProperties": false }, "PriceIdsResponse": { "type": "object", "properties": { "monthly": {"description": "Stripe price ID for the monthly subscription", "type": ["string", "null"]}, "yearly": {"description": "Stripe price ID for the yearly subscription", "type": ["string", "null"]}, "gift_1_month": {"description": "Stripe price ID for the 1 month gift", "type": ["string", "null"]}, "gift_1_year": {"description": "Stripe price ID for the 1 year gift", "type": ["string", "null"]}, "monthly_amount_minor": { "description": "Monthly price amount in the currency minor unit", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "yearly_amount_minor": { "description": "Yearly price amount in the currency minor unit", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "gift_1_month_amount_minor": { "description": "Gift 1 month price amount in the currency minor unit", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "gift_1_year_amount_minor": { "description": "Gift 1 year price amount in the currency minor unit", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "currency": {"description": "Currency for the prices", "$ref": "#/components/schemas/PremiumCurrency"}, "gift_currency": { "anyOf": [{"$ref": "#/components/schemas/PremiumCurrency"}, {"type": "null"}], "description": "Currency for gift prices, null when no gift prices are configured" } }, "required": ["currency", "gift_currency"], "additionalProperties": false }, "UpdatePremiumPerksDisabledRequest": { "type": "object", "properties": { "disabled": {"type": "boolean", "description": "Whether premium perks should be temporarily disabled"} }, "required": ["disabled"] }, "CurrentSubscriptionPriceResponse": { "anyOf": [ { "type": "object", "properties": { "price_id": {"type": "string", "description": "The Stripe price ID the user is currently billed against"}, "amount_minor": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "The amount the user is actually charged, in the currency minor unit" }, "currency": { "description": "Currency of the charged amount", "$ref": "#/components/schemas/PremiumCurrency" }, "billing_cycle": { "type": "string", "enum": ["monthly", "yearly"], "description": "The recurring billing cycle of the active subscription" }, "is_grandfathered": { "type": "boolean", "description": "Whether the user is on a legacy price that no longer matches the current list price" }, "list_amount_minor": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "The current list price for the same cycle/currency, in the currency minor unit" }, "list_price_id": { "description": "The current list Stripe price ID for the same cycle/currency", "type": ["string", "null"] } }, "required": [ "price_id", "amount_minor", "currency", "billing_cycle", "is_grandfathered", "list_amount_minor", "list_price_id" ], "additionalProperties": false }, {"type": "null"} ] }, "ChangeSubscriptionRequest": { "type": "object", "properties": { "billing_cycle": { "type": "string", "enum": ["monthly", "yearly"], "description": "The recurring billing cycle to switch the active subscription to" }, "effective_at": { "description": "When the billing cycle change should take effect", "type": "string", "enum": ["now", "period_end"] } }, "required": ["billing_cycle"] }, "OAuth2UserInfoResponse": { "type": "object", "properties": { "sub": { "description": "The subject identifier of the user", "$ref": "#/components/schemas/SnowflakeStringType" }, "id": { "description": "The unique identifier of the user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the user"}, "discriminator": {"type": "string", "description": "The discriminator of the user"}, "global_name": {"description": "The global display name of the user", "type": ["string", "null"]}, "avatar": {"description": "The avatar hash of the user", "type": ["string", "null"]}, "email": {"description": "The email address of the user", "type": ["string", "null"]}, "verified": {"description": "Whether the user has verified their email", "type": ["boolean", "null"]}, "flags": {"$ref": "#/components/schemas/PublicUserFlags", "description": "The user flags"} }, "required": ["sub", "id", "username", "discriminator", "global_name", "avatar"], "additionalProperties": false }, "RevokeRequestForm": { "type": "object", "properties": { "token": {"description": "The token to revoke", "type": "string"}, "client_id": {"description": "The application client ID", "$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"description": "The application client secret", "type": "string"}, "token_type_hint": {"$ref": "#/components/schemas/TokenTypeHint"} }, "required": ["token"] }, "TokenRequest": { "oneOf": [ {"$ref": "#/components/schemas/AuthorizationCodeTokenRequest"}, {"$ref": "#/components/schemas/RefreshTokenTokenRequest"} ] }, "OAuth2TokenResponse": { "type": "object", "properties": { "access_token": {"type": "string", "description": "The access token for API authorization"}, "token_type": {"type": "string", "description": "The type of token, typically \"Bearer\""}, "expires_in": { "description": "The number of seconds until the access token expires", "$ref": "#/components/schemas/Int32Type" }, "refresh_token": {"type": "string", "description": "The refresh token for obtaining new access tokens"}, "scope": {"type": "string", "description": "The space-separated list of granted scopes"} }, "required": ["access_token", "token_type", "expires_in", "refresh_token", "scope"], "additionalProperties": false }, "IntrospectRequestForm": { "type": "object", "properties": { "token": {"description": "The token to introspect", "type": "string"}, "client_id": {"description": "The application client ID", "$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"description": "The application client secret", "type": "string"} }, "required": ["token"] }, "OAuth2IntrospectResponse": { "type": "object", "properties": { "active": {"type": "boolean", "description": "Whether the token is currently active"}, "scope": {"description": "The space-separated list of scopes", "type": "string"}, "client_id": { "description": "The client identifier for the token", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"description": "The username of the token owner", "type": "string"}, "token_type": {"description": "The type of token", "type": "string"}, "exp": {"description": "The expiration timestamp in seconds", "$ref": "#/components/schemas/Int32Type"}, "iat": {"description": "The issued-at timestamp in seconds", "$ref": "#/components/schemas/Int32Type"}, "sub": {"description": "The subject identifier (user ID)", "$ref": "#/components/schemas/SnowflakeStringType"} }, "required": ["active"], "additionalProperties": false }, "AuthorizeConsentRequest": { "type": "object", "properties": { "response_type": {"description": "The OAuth2 response type", "type": "string"}, "client_id": {"description": "The application client ID", "$ref": "#/components/schemas/SnowflakeType"}, "redirect_uri": {"description": "The URI to redirect to after authorization", "type": "string"}, "scope": {"description": "The space-separated list of requested scopes", "type": "string"}, "state": {"description": "A random string for CSRF protection", "type": "string"}, "guild_id": {"description": "The guild ID to add the bot to", "$ref": "#/components/schemas/SnowflakeType"}, "channel_id": { "description": "The group DM channel ID to add the bot to", "$ref": "#/components/schemas/SnowflakeType" }, "permissions": {"description": "The bot permissions to request", "type": "string"}, "code_challenge": {"description": "The PKCE code challenge", "type": "string"}, "code_challenge_method": { "description": "The PKCE code challenge method", "x-enumNames": ["S256", "PLAIN"], "x-enumDescriptions": ["SHA-256 hash of code verifier", "Plain text code verifier"], "enum": ["S256", "plain"], "type": "string" } }, "required": ["client_id", "scope"] }, "OAuth2ConsentResponse": { "type": "object", "properties": { "redirect_to": {"type": "string", "description": "The URL to redirect the user to after consent"} }, "required": ["redirect_to"], "additionalProperties": false }, "ApplicationPublicResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier of the application", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the application"}, "icon": {"description": "The icon hash of the application", "type": ["string", "null"]}, "description": {"description": "The description of the application", "type": ["string", "null"]}, "redirect_uris": { "maxItems": 10, "type": "array", "items": {"type": "string"}, "description": "The registered redirect URIs for OAuth2" }, "scopes": { "maxItems": 50, "type": "array", "items": {"type": "string"}, "description": "The available OAuth2 scopes" }, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"}, "bot": { "anyOf": [ { "type": "object", "properties": { "id": { "description": "The unique identifier of the bot user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"description": "The avatar hash of the bot", "type": ["string", "null"]}, "banner": {"description": "The banner hash of the bot", "type": ["string", "null"]}, "bio": {"description": "The bio or description of the bot", "type": ["string", "null"]}, "token": {"description": "The bot token for authentication", "type": "string"}, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "additionalProperties": false, "description": "Detailed bot user metadata" }, {"type": "null"} ], "description": "The bot user associated with the application" }, "current_user": { "description": "Partial user data for the authenticated requester, when a session token is present", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] } }, "required": ["id", "name", "icon", "description", "redirect_uris", "scopes", "bot_public", "bot"], "additionalProperties": false }, "ApplicationResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier of the application", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the application"}, "redirect_uris": { "maxItems": 10, "type": "array", "items": {"type": "string"}, "description": "The registered redirect URIs for OAuth2" }, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"}, "bot_require_code_grant": {"type": "boolean", "description": "Whether the bot requires OAuth2 code grant"}, "client_secret": {"description": "The client secret for OAuth2 authentication", "type": "string"}, "bot": { "description": "The bot user associated with the application", "type": "object", "properties": { "id": { "description": "The unique identifier of the bot user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"description": "The avatar hash of the bot", "type": ["string", "null"]}, "banner": {"description": "The banner hash of the bot", "type": ["string", "null"]}, "bio": {"description": "The bio or description of the bot", "type": ["string", "null"]}, "token": {"description": "The bot token for authentication", "type": "string"}, "mfa_enabled": {"description": "Whether the bot has MFA enabled", "type": "boolean"}, "authenticator_types": { "description": "The types of authenticators enabled", "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/AuthenticatorType"} }, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "additionalProperties": false } }, "required": ["id", "name", "redirect_uris", "bot_public", "bot_require_code_grant"], "additionalProperties": false }, "BotTokenResetResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "The new bot token"}, "bot": { "type": "object", "properties": { "id": { "description": "The unique identifier of the bot user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"description": "The avatar hash of the bot", "type": ["string", "null"]}, "banner": {"description": "The banner hash of the bot", "type": ["string", "null"]}, "bio": {"description": "The bio or description of the bot", "type": ["string", "null"]}, "token": {"description": "The bot token for authentication", "type": "string"}, "mfa_enabled": {"description": "Whether the bot has MFA enabled", "type": "boolean"}, "authenticator_types": { "description": "The types of authenticators enabled", "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/AuthenticatorType"} }, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "additionalProperties": false, "description": "Detailed bot user metadata" } }, "required": ["token", "bot"], "additionalProperties": false }, "BotProfileUpdateRequest": { "type": "object", "properties": { "username": {"description": "The username of the bot", "$ref": "#/components/schemas/UsernameType"}, "discriminator": { "description": "The discriminator of the bot", "$ref": "#/components/schemas/DiscriminatorType" }, "avatar": { "description": "The avatar image as base64", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "banner": { "description": "The banner image as base64", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "bio": {"description": "The bio or description of the bot", "type": ["string", "null"]}, "bot_flags": {"$ref": "#/components/schemas/BotFlags"} } }, "BotProfileResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier of the bot user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"description": "The avatar hash of the bot", "type": ["string", "null"]}, "banner": {"description": "The banner hash of the bot", "type": ["string", "null"]}, "bio": {"description": "The bio or description of the bot", "type": ["string", "null"]}, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "avatar", "banner", "bio", "flags"], "additionalProperties": false }, "ApplicationUpdateRequest": { "type": "object", "properties": { "name": {"description": "The name of the application", "type": "string"}, "bot_public": {"description": "Whether the bot can be invited by anyone", "type": "boolean"}, "bot_require_code_grant": {"description": "Whether the bot requires OAuth2 code grant", "type": "boolean"}, "redirect_uris": { "description": "The redirect URIs for OAuth2 flows", "anyOf": [{"maxItems": 10, "type": "array", "items": {"type": "string"}}, {"type": "null"}] } } }, "OAuth2ApplicationsMeResponse": { "anyOf": [ {"$ref": "#/components/schemas/ApplicationListResponse"}, {"$ref": "#/components/schemas/ApplicationsMeResponse"} ] }, "ApplicationCreateRequest": { "type": "object", "properties": { "name": {"description": "The name of the application", "type": "string"}, "redirect_uris": { "description": "The redirect URIs for OAuth2 flows", "anyOf": [{"maxItems": 10, "type": "array", "items": {"type": "string"}}, {"type": "null"}] }, "bot_public": {"description": "Whether the bot can be invited by anyone", "type": "boolean"}, "bot_require_code_grant": {"description": "Whether the bot requires OAuth2 code grant", "type": "boolean"} }, "required": ["name"] }, "OAuth2AuthorizationsBulkRevokeRequest": { "type": "object", "properties": { "application_ids": { "minItems": 1, "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "Application IDs whose OAuth2 authorizations should be revoked" } }, "required": ["application_ids"] }, "OAuth2AuthorizationsListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/OAuth2AuthorizationResponse"} }, "OAuth2MeResponse": { "type": "object", "properties": { "application": { "type": "object", "properties": { "id": { "description": "The unique identifier of the application", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the application"}, "icon": {"description": "The icon hash of the application", "type": ["string", "null"]}, "description": {"description": "The description of the application", "type": ["string", "null"]}, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"}, "bot_require_code_grant": { "type": "boolean", "description": "Whether the bot requires OAuth2 code grant" }, "flags": {"$ref": "#/components/schemas/ApplicationFlags"} }, "required": ["id", "name", "icon", "description", "bot_public", "bot_require_code_grant", "flags"], "additionalProperties": false, "description": "The application associated with the token" }, "scopes": { "maxItems": 50, "type": "array", "items": {"type": "string"}, "description": "The list of granted OAuth2 scopes" }, "expires": {"type": "string", "description": "The expiration timestamp of the token"}, "user": { "description": "The user associated with the token", "type": "object", "properties": { "id": { "description": "The unique identifier of the user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the user"}, "discriminator": {"type": "string", "description": "The discriminator of the user"}, "global_name": {"description": "The global display name of the user", "type": ["string", "null"]}, "avatar": {"description": "The avatar hash of the user", "type": ["string", "null"]}, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The default avatar color of the user" }, "bot": {"description": "Whether the user is a bot", "type": "boolean"}, "system": {"description": "Whether the user is a system user", "type": "boolean"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags", "description": "The user flags"}, "email": {"description": "The email address of the user", "type": ["string", "null"]}, "verified": {"description": "Whether the user has verified their email", "type": ["boolean", "null"]} }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "additionalProperties": false } }, "required": ["application", "scopes", "expires"], "additionalProperties": false }, "GeolocationResponse": { "type": "object", "properties": { "countryCode": { "description": "ISO 3166-1 alpha-2 country code resolved for the client, or null when it cannot be resolved", "type": ["string", "null"] }, "regionCode": { "description": "ISO 3166-2 subdivision code resolved for the client, or null when it cannot be resolved", "type": ["string", "null"] }, "latitude": { "description": "Approximate latitude of the client, or null when it cannot be resolved", "type": ["string", "null"] }, "longitude": { "description": "Approximate longitude of the client, or null when it cannot be resolved", "type": ["string", "null"] }, "ageRestrictedGeos": { "type": "array", "items": {"$ref": "#/components/schemas/GeoEntry"}, "description": "Locations where age restricted content requires an age check" }, "ageBlockedGeos": { "type": "array", "items": {"$ref": "#/components/schemas/GeoEntry"}, "description": "Locations where age restricted content is unavailable" } }, "required": ["countryCode", "regionCode", "latitude", "longitude", "ageRestrictedGeos", "ageBlockedGeos"], "additionalProperties": false }, "InviteResponseSchema": { "anyOf": [ {"$ref": "#/components/schemas/GuildInviteResponse"}, {"$ref": "#/components/schemas/GroupDmInviteResponse"} ] }, "HarvestArchiveResponse": { "type": "string", "format": "binary", "contentEncoding": "binary", "description": "The ZIP archive containing the requested user data" }, "WebhookListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/WebhookResponse"}}, "GuildVanityURLUpdateRequest": { "type": "object", "properties": { "code": { "description": "The new vanity URL code (2-32 characters, alphanumeric and hyphens)", "type": ["string", "null"] } } }, "GuildVanityURLUpdateResponse": { "type": "object", "properties": { "code": { "anyOf": [{"type": "string", "minLength": 2, "maxLength": 32}, {"type": "null"}], "description": "The new vanity URL code, or null when the vanity URL was removed" } }, "required": ["code"], "additionalProperties": false }, "GuildVanityURLResponse": { "type": "object", "properties": { "code": {"description": "The vanity URL code for the guild", "type": ["string", "null"]}, "uses": { "description": "The number of times this vanity URL has been used", "$ref": "#/components/schemas/Int32Type" } }, "required": ["uses"], "additionalProperties": false }, "GuildTransferOwnershipWithVerificationRequest": { "type": "object", "properties": { "new_owner_id": { "description": "The ID of the user to transfer ownership to", "$ref": "#/components/schemas/SnowflakeType" }, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["new_owner_id"] }, "GuildResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this guild", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the guild"}, "icon": {"description": "The hash of the guild icon", "type": ["string", "null"]}, "banner": {"description": "The hash of the guild banner", "type": ["string", "null"]}, "banner_width": { "description": "The width of the guild banner in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "banner_height": { "description": "The height of the guild banner in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash": {"description": "The hash of the guild splash screen", "type": ["string", "null"]}, "splash_width": { "description": "The width of the guild splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash_height": { "description": "The height of the guild splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash_card_alignment": { "description": "The alignment of the splash card", "x-enumNames": ["CENTER", "LEFT", "RIGHT"], "x-enumDescriptions": [ "Splash card is centred", "Splash card is aligned to the left", "Splash card is aligned to the right" ], "enum": [0, 1, 2], "type": "integer" }, "embed_splash": {"description": "The hash of the embedded invite splash", "type": ["string", "null"]}, "embed_splash_width": { "description": "The width of the embedded invite splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "embed_splash_height": { "description": "The height of the embedded invite splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "vanity_url_code": {"description": "The vanity URL code for the guild", "type": ["string", "null"]}, "owner_id": {"description": "The ID of the guild owner", "$ref": "#/components/schemas/SnowflakeStringType"}, "system_channel_id": { "description": "The ID of the channel where system messages are sent", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "system_channel_flags": {"$ref": "#/components/schemas/SystemChannelFlags"}, "rules_channel_id": { "description": "The ID of the rules channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "afk_channel_id": { "description": "The ID of the AFK voice channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "afk_timeout": { "description": "AFK timeout in seconds before moving users to the AFK channel", "$ref": "#/components/schemas/Int32Type" }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "Array of guild feature flags" }, "verification_level": { "$ref": "#/components/schemas/GuildVerificationLevel", "description": "Required verification level for members to participate" }, "mfa_level": {"$ref": "#/components/schemas/GuildMFALevel"}, "nsfw_level": { "$ref": "#/components/schemas/NSFWLevel", "description": "The NSFW level of the guild (legacy; derived from nsfw)" }, "nsfw": {"type": "boolean", "description": "Whether the guild is marked as adult (18+) content"}, "content_warning_level": { "$ref": "#/components/schemas/ContentWarningLevel", "description": "Whether the guild displays a content warning before entering" }, "content_warning_text": { "description": "Custom guild-wide content warning text; null falls back to a localized default", "type": ["string", "null"] }, "explicit_content_filter": {"$ref": "#/components/schemas/GuildExplicitContentFilter"}, "default_message_notifications": {"$ref": "#/components/schemas/DefaultMessageNotifications"}, "disabled_operations": {"$ref": "#/components/schemas/GuildOperations"}, "message_history_cutoff": { "description": "ISO8601 timestamp controlling how far back members without Read Message History can access messages. When null, no historical access is allowed.", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "permissions": { "description": "The current user permissions in this guild when available", "$ref": "#/components/schemas/Permissions" }, "roles": { "description": "Roles in the guild from gateway state", "type": "array", "items": {"$ref": "#/components/schemas/GuildRoleResponse"} }, "emojis": { "description": "Emojis in the guild from gateway state", "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiResponse"} }, "stickers": { "description": "Stickers in the guild from gateway state", "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerResponse"} }, "channels": { "description": "Channels visible to the requesting user from gateway state", "type": "array", "items": {"$ref": "#/components/schemas/ChannelResponse"} }, "member_count": { "description": "Total number of members in the guild", "$ref": "#/components/schemas/Int32Type" }, "online_count": { "description": "Number of online members visible in the guild", "$ref": "#/components/schemas/Int32Type" }, "approximate_member_count": { "description": "Approximate total member count (only when with_counts is true)", "$ref": "#/components/schemas/Int32Type" }, "approximate_presence_count": { "description": "Approximate online member count (only when with_counts is true)", "$ref": "#/components/schemas/Int32Type" } }, "required": [ "id", "name", "splash_card_alignment", "owner_id", "system_channel_flags", "afk_timeout", "features", "verification_level", "mfa_level", "nsfw_level", "nsfw", "content_warning_level", "explicit_content_filter", "default_message_notifications", "disabled_operations" ], "additionalProperties": false }, "GuildStickerUpdateRequest": { "type": "object", "properties": { "name": {"description": "The name of the sticker (2-30 characters)", "type": "string"}, "description": {"description": "Description of the sticker (1-500 characters)", "type": ["string", "null"]}, "tags": { "default": [], "description": "Array of autocomplete/suggestion tags (max 10 tags, each 1-30 characters)", "minItems": 0, "maxItems": 10, "type": "array", "items": {"type": "string"} } }, "required": ["name"] }, "GuildStickerResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this sticker", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the sticker"}, "description": {"type": "string", "description": "The description of the sticker"}, "tags": { "maxItems": 10, "type": "array", "items": {"type": "string"}, "description": "Autocomplete/suggestion tags for the sticker" }, "animated": {"type": "boolean", "description": "Whether this sticker is animated"}, "nsfw": { "type": "boolean", "description": "Deprecated; always false. Retained for compatibility with older clients" } }, "required": ["id", "name", "description", "tags", "animated", "nsfw"], "additionalProperties": false }, "GuildStickerCloneRequest": { "type": "object", "properties": { "source_sticker_id": { "description": "The ID of the existing sticker to clone. Its name, description, tags, and image are copied as-is; no other fields are accepted", "$ref": "#/components/schemas/SnowflakeType" } }, "required": ["source_sticker_id"] }, "GuildStickerBulkCreateRequest": { "type": "object", "properties": { "stickers": { "minItems": 1, "maxItems": 50, "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerCreateRequest"}, "description": "Array of sticker objects to create (1-50 stickers per batch)" } }, "required": ["stickers"] }, "GuildStickerBulkCreateResponse": { "type": "object", "properties": { "success": { "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerResponse"}, "description": "Successfully created stickers" }, "failed": { "type": "array", "items": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the sticker that failed to create"}, "error": { "type": "string", "description": "The error message explaining why the sticker failed to create" } }, "required": ["name", "error"], "additionalProperties": false }, "description": "Stickers that failed to create" } }, "required": ["success", "failed"], "additionalProperties": false }, "GuildStickerWithUserListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerWithUserResponse"} }, "GuildStickerCreateRequest": { "type": "object", "properties": { "name": {"description": "The name of the sticker (2-30 characters)", "type": "string"}, "description": {"description": "Description of the sticker (1-500 characters)", "type": ["string", "null"]}, "tags": { "default": [], "description": "Array of autocomplete/suggestion tags (max 10 tags, each 1-30 characters)", "minItems": 0, "maxItems": 10, "type": "array", "items": {"type": "string"} }, "image": { "description": "Base64-encoded image data for the sticker", "$ref": "#/components/schemas/Base64ImageType" } }, "required": ["name", "image"] }, "GuildRoleUpdateRequest": { "type": "object", "properties": { "name": {"description": "The name of the role (1-100 characters)", "type": "string"}, "color": {"description": "The color of the role as an integer", "$ref": "#/components/schemas/ColorType"}, "permissions": { "description": "The permissions bitfield for the role", "$ref": "#/components/schemas/UnsignedInt64Type" }, "hoist": { "description": "Whether the role should be displayed separately in the member list", "type": "boolean" }, "hoist_position": { "description": "The position of the role in the hoisted member list", "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "mentionable": {"description": "Whether the role can be mentioned by anyone", "type": "boolean"} } }, "GuildRoleResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this role", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the role"}, "color": {"description": "The colour of the role as an integer", "$ref": "#/components/schemas/Int32Type"}, "position": { "description": "The position of the role in the role hierarchy", "$ref": "#/components/schemas/Int32Type" }, "hoist_position": { "description": "The position of the role in the hoisted member list", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "permissions": { "description": "The permissions bitfield for the role", "$ref": "#/components/schemas/Permissions" }, "hoist": {"type": "boolean", "description": "Whether this role is displayed separately in the member list"}, "mentionable": {"type": "boolean", "description": "Whether this role can be mentioned by anyone"}, "unicode_emoji": {"description": "The unicode emoji for this role", "type": ["string", "null"]} }, "required": ["id", "name", "color", "position", "permissions", "hoist", "mentionable"], "additionalProperties": false }, "GuildRoleHoistPositionsRequest": { "type": "array", "items": { "type": "object", "properties": { "id": {"description": "The ID of the role", "$ref": "#/components/schemas/SnowflakeType"}, "hoist_position": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "The new hoist position for the role" } }, "required": ["id", "hoist_position"] } }, "GuildRolePositionsRequest": { "type": "array", "items": { "type": "object", "properties": { "id": {"description": "The ID of the role", "$ref": "#/components/schemas/SnowflakeType"}, "position": { "description": "The new position for the role", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": ["id"] } }, "GuildRoleCreateRequest": { "type": "object", "properties": { "name": {"description": "The name of the role (1-100 characters)", "type": "string"}, "color": { "default": 0, "description": "The color of the role as an integer (default: 0)", "$ref": "#/components/schemas/ColorType" }, "permissions": { "description": "The permissions bitfield for the role", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["name"] }, "GuildRoleListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/GuildRoleResponse"}}, "GuildMemberUpdateRequest": { "type": "object", "properties": { "nick": {"description": "The nickname to set for the member (1-32 characters)", "type": ["string", "null"]}, "roles": { "description": "Array of role IDs to assign to the member (max 250)", "maxItems": 250, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "avatar": { "description": "Base64-encoded image data for the member guild avatar", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "banner": { "description": "Base64-encoded image data for the member guild banner", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "bio": {"description": "The member guild profile bio (1-320 characters)", "type": ["string", "null"]}, "pronouns": { "description": "The member guild profile pronouns (1-40 characters)", "type": ["string", "null"] }, "accent_color": { "description": "The accent color for the member guild profile as an integer", "anyOf": [{"$ref": "#/components/schemas/ColorType"}, {"type": "null"}] }, "profile_flags": { "anyOf": [ { "$ref": "#/components/schemas/GuildMemberProfileFlags", "description": "Bitfield of profile flags for the member" }, {"type": "null"} ] }, "mention_flags": { "anyOf": [ { "$ref": "#/components/schemas/MentionReplyPreferencesInput", "description": "Per-guild reply mention preference override for this member; NO_PREFERENCE inherits the user's account-wide setting" }, {"type": "null"} ] }, "mute": {"description": "Whether the member is muted in voice channels", "type": "boolean"}, "deaf": {"description": "Whether the member is deafened in voice channels", "type": "boolean"}, "communication_disabled_until": { "description": "ISO8601 timestamp until which the member is timed out", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "timeout_reason": { "description": "The reason for timing out the member (1-512 characters)", "type": ["string", "null"] }, "channel_id": { "description": "The voice channel ID to move the member to", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "connection_id": {"description": "The voice connection ID for the member", "type": ["string", "null"]} } }, "GuildMemberResponse": { "type": "object", "properties": { "user": { "description": "The user this guild member represents", "$ref": "#/components/schemas/UserPartialResponse" }, "nick": {"description": "The nickname of the member in this guild", "type": ["string", "null"]}, "avatar": {"description": "The hash of the member guild-specific avatar", "type": ["string", "null"]}, "banner": {"description": "The hash of the member guild-specific banner", "type": ["string", "null"]}, "accent_color": { "description": "The accent colour of the member guild profile as an integer", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "roles": { "maxItems": 250, "type": "array", "items": {"type": "string"}, "description": "Array of role IDs the member has" }, "joined_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "profile_flags": {"anyOf": [{"$ref": "#/components/schemas/GuildMemberProfileFlags"}, {"type": "null"}]}, "mention_flags": { "anyOf": [ { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "Per-guild reply mention preference override; NO_PREFERENCE means inherit the user-level mention_flags." }, {"type": "null"} ] } }, "required": ["user", "roles", "joined_at", "mute", "deaf"], "additionalProperties": false }, "MyGuildMemberUpdateRequest": { "type": "object", "properties": { "nick": {"description": "The nickname to set for the member (1-32 characters)", "type": ["string", "null"]}, "avatar": { "description": "Base64-encoded image data for the member guild avatar", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "banner": { "description": "Base64-encoded image data for the member guild banner", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "bio": {"description": "The member guild profile bio (1-320 characters)", "type": ["string", "null"]}, "pronouns": { "description": "The member guild profile pronouns (1-40 characters)", "type": ["string", "null"] }, "accent_color": { "description": "The accent color for the member guild profile as an integer", "anyOf": [{"$ref": "#/components/schemas/ColorType"}, {"type": "null"}] }, "profile_flags": { "anyOf": [ { "$ref": "#/components/schemas/GuildMemberProfileFlags", "description": "Bitfield of profile flags for the member" }, {"type": "null"} ] }, "mention_flags": { "anyOf": [ { "$ref": "#/components/schemas/MentionReplyPreferencesInput", "description": "Per-guild reply mention preference override for this member; NO_PREFERENCE inherits the user's account-wide setting" }, {"type": "null"} ] }, "mute": {"description": "Whether the member is muted in voice channels", "type": "boolean"}, "deaf": {"description": "Whether the member is deafened in voice channels", "type": "boolean"}, "communication_disabled_until": { "description": "ISO8601 timestamp until which the member is timed out", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "timeout_reason": { "description": "The reason for timing out the member (1-512 characters)", "type": ["string", "null"] }, "channel_id": { "description": "The voice channel ID to move the member to", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "connection_id": {"description": "The voice connection ID for the member", "type": ["string", "null"]} } }, "GuildMemberSearchRequest": { "type": "object", "properties": { "query": { "description": "Text to search for in usernames, global names, and nicknames", "type": "string", "maxLength": 100 }, "limit": { "default": 25, "description": "Maximum number of results to return", "type": "integer", "minimum": 1, "maximum": 100 }, "offset": { "default": 0, "description": "Number of results to skip for pagination", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "role_ids": { "description": "Filter by role IDs (member must have all specified roles)", "maxItems": 10, "type": "array", "items": {"type": "string"} }, "joined_at_gte": { "description": "Filter members who joined at or after this unix timestamp", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "joined_at_lte": { "description": "Filter members who joined at or before this unix timestamp", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "join_source_type": { "description": "Filter by join source types", "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/JoinSourceTypeInput"} }, "source_invite_code": { "description": "Filter by invite codes used to join", "maxItems": 10, "type": "array", "items": {"type": "string"} }, "is_bot": {"description": "Filter by bot status", "type": "boolean"}, "user_created_at_gte": { "description": "Filter members whose account was created at or after this unix timestamp", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "user_created_at_lte": { "description": "Filter members whose account was created at or before this unix timestamp", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "sort_by": {"description": "Sort results by field", "type": "string", "enum": ["joinedAt", "relevance"]}, "sort_order": {"description": "Sort order", "type": "string", "enum": ["asc", "desc"]} } }, "GuildMemberSearchResponse": { "type": "object", "properties": { "guild_id": {"type": "string", "description": "Guild ID"}, "members": { "type": "array", "items": {"$ref": "#/components/schemas/GuildMemberSearchResult"}, "description": "Matching members" }, "page_result_count": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Number of results in this page" }, "total_result_count": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Total number of matching results" }, "indexing": {"type": "boolean", "description": "Whether the guild members are currently being indexed"} }, "required": ["guild_id", "members", "page_result_count", "total_result_count", "indexing"], "additionalProperties": false }, "GuildMemberListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/GuildMemberResponse"}}, "InviteMetadataListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/InviteMetadataResponseSchema"} }, "GuildEmojiUpdateRequest": { "type": "object", "properties": { "name": { "description": "The name of the emoji (2-32 characters, alphanumeric and underscores only)", "type": "string" } }, "required": ["name"] }, "GuildEmojiResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this emoji", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the emoji"}, "animated": {"type": "boolean", "description": "Whether this emoji is animated"}, "nsfw": { "type": "boolean", "description": "Deprecated; always false. Retained for compatibility with older clients" } }, "required": ["id", "name", "animated", "nsfw"], "additionalProperties": false }, "GuildEmojiCloneRequest": { "type": "object", "properties": { "source_emoji_id": { "description": "The ID of the existing emoji to clone. Its name and image are copied as-is; no other fields are accepted", "$ref": "#/components/schemas/SnowflakeType" } }, "required": ["source_emoji_id"] }, "GuildEmojiBulkCreateRequest": { "type": "object", "properties": { "emojis": { "minItems": 1, "maxItems": 50, "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiCreateRequest"}, "description": "Array of emoji objects to create (1-50 emojis per batch)" } }, "required": ["emojis"] }, "GuildEmojiBulkCreateResponse": { "type": "object", "properties": { "success": { "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiResponse"}, "description": "Successfully created emojis" }, "failed": { "type": "array", "items": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the emoji that failed to create"}, "error": { "type": "string", "description": "The error message explaining why the emoji failed to create" } }, "required": ["name", "error"], "additionalProperties": false }, "description": "Emojis that failed to create" } }, "required": ["success", "failed"], "additionalProperties": false }, "GuildEmojiWithUserListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiWithUserResponse"} }, "GuildEmojiCreateRequest": { "type": "object", "properties": { "name": { "description": "The name of the emoji (2-32 characters, alphanumeric and underscores only)", "type": "string" }, "image": { "description": "Base64-encoded image data for the emoji", "$ref": "#/components/schemas/Base64ImageType" } }, "required": ["name", "image"] }, "DiscoveryStatusResponse": { "type": "object", "properties": { "application": { "description": "Current discovery application, if any", "anyOf": [{"$ref": "#/components/schemas/DiscoveryApplicationResponse"}, {"type": "null"}] }, "eligible": { "type": "boolean", "description": "Whether the guild meets the requirements to apply for discovery" }, "min_member_count": { "type": "number", "description": "Minimum member count required for discovery eligibility" } }, "required": ["eligible", "min_member_count"], "additionalProperties": false }, "DiscoveryApplicationPatchRequest": { "type": "object", "properties": { "description": { "description": "Updated description for discovery listing", "type": "string", "minLength": 10, "maxLength": 300 }, "category_type": { "description": "Updated discovery category type", "type": "integer", "minimum": 0, "maximum": 8 }, "primary_language": {"type": "string", "description": "Primary community language (BCP-47 code)"}, "custom_tags": { "maxItems": 10, "type": "array", "items": {"type": "string", "minLength": 2, "maxLength": 30}, "description": "Up to 10 custom discovery tags" } } }, "DiscoveryApplicationResponse": { "type": "object", "properties": { "guild_id": {"description": "Guild ID", "$ref": "#/components/schemas/SnowflakeStringType"}, "guild_nsfw_level": { "description": "NSFW level of the guild", "anyOf": [{"$ref": "#/components/schemas/NSFWLevel"}, {"type": "null"}] }, "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", "type": ["string", "null"]}, "custom_tags": {"type": "array", "items": {"type": "string"}, "description": "Custom discovery tags"}, "applied_at": {"type": "string", "description": "Application timestamp"}, "reviewed_at": {"description": "Review timestamp", "type": ["string", "null"]}, "review_reason": {"description": "Review reason (approval/rejection)", "type": ["string", "null"]}, "removed_at": {"description": "Removal timestamp", "type": ["string", "null"]}, "removal_reason": {"description": "Removal reason", "type": ["string", "null"]} }, "required": ["guild_id", "status", "description", "category_type", "custom_tags", "applied_at"], "additionalProperties": false }, "DiscoveryApplicationRequest": { "type": "object", "properties": { "description": { "type": "string", "minLength": 10, "maxLength": 300, "description": "Description for discovery listing" }, "category_type": {"type": "integer", "minimum": 0, "maximum": 8, "description": "Discovery category type"}, "primary_language": {"type": "string", "description": "Primary community language (BCP-47 code)"}, "custom_tags": { "maxItems": 10, "type": "array", "items": {"type": "string", "minLength": 2, "maxLength": 30}, "description": "Up to 10 custom discovery tags" } }, "required": ["description", "category_type"] }, "GuildDeleteRequest": { "type": "object", "properties": { "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} } }, "ChannelPositionUpdateRequest": { "type": "array", "items": { "type": "object", "properties": { "id": {"description": "The ID of the channel to reposition", "$ref": "#/components/schemas/SnowflakeType"}, "position": { "description": "New position for the channel", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "parent_id": { "description": "New parent category ID", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "preceding_sibling_id": { "description": "ID of the sibling channel that should directly precede this channel after reordering", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "lock_permissions": {"description": "Whether to sync permissions with the new parent", "type": "boolean"} }, "required": ["id"] } }, "ChannelCreateRequest": { "oneOf": [ {"$ref": "#/components/schemas/GuildTextChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildAnnouncementChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildVoiceChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildCategoryChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildLinkChannelCreateRequest"} ] }, "GuildBanCreateRequest": { "type": "object", "properties": { "delete_message_days": { "default": 0, "description": "Number of days of messages to delete from the banned user (0-7). Deprecated in favor of delete_message_seconds.", "type": "integer", "minimum": 0, "maximum": 7 }, "delete_message_seconds": { "description": "Number of seconds of messages to delete for the banned user (0-604800, default 0)", "type": "integer", "minimum": 0, "maximum": 604800 }, "reason": {"description": "The reason for the ban (max 512 characters)", "type": ["string", "null"]}, "ban_duration_seconds": { "description": "Duration of the ban in seconds (0 for permanent, or between 60 and 63072000 seconds for a temporary ban)", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } } }, "GuildBanListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/GuildBanResponse"}}, "AuditLogActionTypeInput": { "description": "The type of action that occurred", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": [ "GUILD_UPDATE", "CHANNEL_CREATE", "CHANNEL_UPDATE", "CHANNEL_DELETE", "CHANNEL_OVERWRITE_CREATE", "CHANNEL_OVERWRITE_UPDATE", "CHANNEL_OVERWRITE_DELETE", "MEMBER_KICK", "MEMBER_PRUNE", "MEMBER_BAN_ADD", "MEMBER_BAN_REMOVE", "MEMBER_UPDATE", "MEMBER_ROLE_UPDATE", "MEMBER_MOVE", "MEMBER_DISCONNECT", "BOT_ADD", "ROLE_CREATE", "ROLE_UPDATE", "ROLE_DELETE", "INVITE_CREATE", "INVITE_UPDATE", "INVITE_DELETE", "WEBHOOK_CREATE", "WEBHOOK_UPDATE", "WEBHOOK_DELETE", "EMOJI_CREATE", "EMOJI_UPDATE", "EMOJI_DELETE", "STICKER_CREATE", "STICKER_UPDATE", "STICKER_DELETE", "MESSAGE_DELETE", "MESSAGE_BULK_DELETE", "MESSAGE_PIN", "MESSAGE_UNPIN" ], "x-enumDescriptions": [ "Guild settings were updated", "Channel was created", "Channel was updated", "Channel was deleted", "Permission overwrite was created", "Permission overwrite was updated", "Permission overwrite was deleted", "Member was kicked", "Members were pruned", "Member was banned", "Member ban was removed", "Member was updated", "Member roles were updated", "Member was moved to a different voice channel", "Member was disconnected from a voice channel", "Bot was added to the guild", "Role was created", "Role was updated", "Role was deleted", "Invite was created", "Invite was updated", "Invite was deleted", "Webhook was created", "Webhook was updated", "Webhook was deleted", "Emoji was created", "Emoji was updated", "Emoji was deleted", "Sticker was created", "Sticker was updated", "Sticker was deleted", "Message was deleted", "Messages were bulk deleted", "Message was pinned", "Message was unpinned" ], "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 ] }, "Int32Type": {"type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32"}, "GuildAuditLogListResponse": { "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"], "additionalProperties": false }, "GuildUpdateRequest": { "type": "object", "properties": { "name": {"description": "The name of the guild (1-100 characters)", "type": "string"}, "icon": { "description": "Base64-encoded image data for the guild icon", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "system_channel_id": { "description": "The ID of the channel where system messages are sent", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "system_channel_flags": { "$ref": "#/components/schemas/SystemChannelFlags", "description": "Bitfield of system channel flags controlling which messages are suppressed" }, "afk_channel_id": { "description": "The ID of the AFK voice channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "afk_timeout": { "type": "integer", "minimum": 60, "maximum": 3600, "description": "AFK timeout in seconds (60-3600) before moving users to the AFK channel" }, "default_message_notifications": {"$ref": "#/components/schemas/DefaultMessageNotificationsInput"}, "verification_level": { "description": "Required verification level for members to participate", "$ref": "#/components/schemas/GuildVerificationLevelInput" }, "mfa_level": {"$ref": "#/components/schemas/GuildMFALevelInput"}, "nsfw_level": { "$ref": "#/components/schemas/NSFWLevelInput", "description": "Legacy: setting this translates to the modern nsfw flag and content warning level" }, "nsfw": {"description": "Whether the guild is marked as adult (18+) content", "type": "boolean"}, "content_warning_level": { "$ref": "#/components/schemas/ContentWarningLevelInput", "description": "Whether the guild displays a content warning before entering" }, "content_warning_text": { "description": "Custom guild-wide content warning text (max 200 characters); null falls back to a localized default", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "explicit_content_filter": {"$ref": "#/components/schemas/GuildExplicitContentFilterInput"}, "banner": { "description": "Base64-encoded image data for the guild banner", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "splash": { "description": "Base64-encoded image data for the guild splash screen", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "embed_splash": { "description": "Base64-encoded image data for the embedded invite splash", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "splash_card_alignment": { "description": "Alignment of the splash card (center, left, or right)", "x-enumNames": ["CENTER", "LEFT", "RIGHT"], "x-enumDescriptions": [ "Splash card is centred", "Splash card is aligned to the left", "Splash card is aligned to the right" ], "enum": [0, 1, 2], "type": "integer" }, "features": { "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "Complete desired feature set for the guild. Only user-toggleable features may differ from the current set; non-toggleable features must be preserved as-is." }, "message_history_cutoff": { "description": "ISO8601 timestamp controlling how far back members without Read Message History can access messages. Set to null to disable historical access.", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} } }, "GuildCreateRequest": { "type": "object", "properties": { "name": {"description": "The name of the guild (1-100 characters)", "type": "string"}, "icon": { "description": "Base64-encoded image data for the guild icon", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "empty_features": {"description": "Whether to create the guild without default features", "type": "boolean"}, "template": { "description": "Serialised template data to use for guild structure", "$ref": "#/components/schemas/TemplateSerializedGuild" } }, "required": ["name"] }, "GiftCodeResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique gift code string"}, "duration_type": { "description": "Duration unit for the gift entitlement", "$ref": "#/components/schemas/GiftCodeDurationTypeSchema" }, "duration_quantity": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Duration quantity for the selected duration unit" }, "redeemed": {"type": "boolean", "description": "Whether the gift code has been redeemed"}, "created_by": { "description": "The user who created the gift code", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] } }, "required": ["code", "duration_type", "duration_quantity", "redeemed"], "additionalProperties": false }, "GatewayBotResponse": { "type": "object", "properties": { "url": {"type": "string", "description": "WebSocket URL to connect to the gateway"}, "shards": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Recommended number of shards to use when connecting" }, "session_start_limit": { "type": "object", "properties": { "total": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Total number of session starts allowed" }, "remaining": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Remaining number of session starts" }, "reset_after": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Milliseconds until the limit resets" }, "max_concurrency": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Maximum number of concurrent IDENTIFY requests" } }, "required": ["total", "remaining", "reset_after", "max_concurrency"], "additionalProperties": false, "description": "Session start rate limit information" } }, "required": ["url", "shards", "session_start_limit"], "additionalProperties": false }, "ExperimentAssignmentsResponse": { "type": "object", "properties": { "poll_interval_seconds": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, "poll_jitter_percent": {"type": "integer", "minimum": 0, "maximum": 50}, "assignments": { "type": "object", "properties": { "domain_migration": {"$ref": "#/components/schemas/DomainMigrationAssignmentResponse"}, "plutonium_page": {"$ref": "#/components/schemas/PlutoniumPageAssignmentResponse"} }, "additionalProperties": false } }, "required": ["poll_interval_seconds", "poll_jitter_percent", "assignments"], "additionalProperties": false }, "GuildEmojiMetadataResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this emoji", "$ref": "#/components/schemas/SnowflakeStringType" }, "guild_id": { "description": "The guild this emoji belongs to", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the emoji"}, "animated": {"type": "boolean", "description": "Whether this emoji is animated"}, "allow_cloning": { "type": "boolean", "description": "Whether the source guild allows non-members to use the in-app clone shortcut" } }, "required": ["id", "guild_id", "name", "animated", "allow_cloning"], "additionalProperties": false }, "DonationRequestLinkRequest": { "type": "object", "properties": { "email": { "type": "string", "maxLength": 254, "format": "email", "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "description": "Email address to send the magic link to" } }, "required": ["email"] }, "DonationCheckoutRequest": { "type": "object", "properties": { "email": { "type": "string", "maxLength": 254, "format": "email", "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "description": "Donor email address" }, "amount_cents": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Donation amount in minor units for the selected currency" }, "currency": {"description": "Currency for the donation", "$ref": "#/components/schemas/DonationCurrency"}, "interval": { "anyOf": [{"type": "string", "enum": ["month", "year"]}, {"type": "null"}], "description": "Billing interval (null for one-time donation)" }, "is_business": { "description": "Whether the donation is from a business. When true, Stripe Checkout requires a billing address for tax invoicing. When false or omitted, billing address collection is left to Stripe.", "type": "boolean" } }, "required": ["email", "amount_cents", "currency", "interval"] }, "DonationCheckoutResponse": { "type": "object", "properties": { "url": {"type": "string", "format": "uri", "description": "Stripe checkout URL to redirect the user to"} }, "required": ["url"], "additionalProperties": false }, "DiscoveryGuildListResponse": { "type": "object", "properties": { "guilds": { "type": "array", "items": { "type": "object", "properties": { "id": {"description": "Guild ID", "$ref": "#/components/schemas/SnowflakeStringType"}, "name": {"type": "string", "description": "Guild name"}, "icon": {"description": "Guild icon hash", "type": ["string", "null"]}, "banner": {"description": "Guild banner hash", "type": ["string", "null"]}, "description": {"description": "Discovery description", "type": ["string", "null"]}, "category_type": {"type": "number", "description": "Discovery category type"}, "primary_language": {"description": "Primary community language", "type": ["string", "null"]}, "custom_tags": {"type": "array", "items": {"type": "string"}, "description": "Custom discovery tags"}, "member_count": {"type": "number", "description": "Approximate member count"}, "online_count": {"type": "number", "description": "Approximate online member count"}, "features": {"type": "array", "items": {"type": "string"}, "description": "Guild feature flags"}, "verification_level": {"type": "number", "description": "Verification level"} }, "required": [ "id", "name", "category_type", "custom_tags", "member_count", "online_count", "features", "verification_level" ], "additionalProperties": false }, "description": "Discovery guild results" }, "total": {"type": "number", "description": "Total number of matching guilds"}, "category_counts": { "type": "array", "items": { "type": "object", "properties": { "category_type": {"type": "number", "description": "Discovery category type"}, "count": {"type": "number", "description": "Number of matching guilds in this category"} }, "required": ["category_type", "count"], "additionalProperties": false }, "description": "Match counts per category for the current filters, ignoring the category filter" } }, "required": ["guilds", "total", "category_counts"], "additionalProperties": false }, "DiscoveryCategoryListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/DiscoveryCategoryResponse"} }, "WebhookCreateRequest": { "type": "object", "properties": { "name": {"description": "The name of the webhook", "type": "string"}, "avatar": { "description": "The avatar image as a base64-encoded data URI", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] } }, "required": ["name"] }, "WebhookCreateResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for the webhook", "$ref": "#/components/schemas/SnowflakeStringType" }, "guild_id": { "description": "The ID of the guild this webhook belongs to", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this webhook posts to", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The display name of the webhook"}, "avatar": {"description": "The hash of the webhook avatar image", "type": ["string", "null"]}, "type": {"$ref": "#/components/schemas/WebhookType"}, "token": {"type": "string", "description": "The secure token used to execute the webhook"}, "user": { "description": "The user who created the webhook", "$ref": "#/components/schemas/UserPartialResponse" } }, "required": ["id", "guild_id", "channel_id", "name", "type", "token", "user"], "additionalProperties": false }, "ChannelSlowmodeStateResponse": { "type": "object", "properties": { "rate_limit_per_user": { "description": "The configured slowmode interval in seconds (0 if disabled)", "$ref": "#/components/schemas/Int32Type" }, "retry_after_ms": { "description": "Milliseconds the current user must wait before sending the next message (0 if allowed now)", "$ref": "#/components/schemas/Int32Type" }, "next_send_allowed_at": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ], "description": "Absolute timestamp at which the current user is next allowed to send a message, or null if allowed now" }, "can_bypass": {"type": "boolean", "description": "Whether the current user has permission to bypass slowmode"} }, "required": ["rate_limit_per_user", "retry_after_ms", "next_send_allowed_at", "can_bypass"], "additionalProperties": false }, "RtcRegionListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/RtcRegionResponse"}}, "PermissionOverwriteCreateRequest": { "type": "object", "properties": { "type": { "description": "The type of overwrite (0 = role, 1 = member)", "$ref": "#/components/schemas/ChannelOverwriteType" }, "allow": { "description": "Bitwise value of allowed permissions", "anyOf": [{"$ref": "#/components/schemas/UnsignedInt64Type"}, {"type": "null"}] }, "deny": { "description": "Bitwise value of denied permissions", "anyOf": [{"$ref": "#/components/schemas/UnsignedInt64Type"}, {"type": "null"}] } }, "required": ["type"] }, "ReactionUsersPageResponse": { "type": "object", "properties": { "items": { "type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}, "description": "Users who reacted with the requested emoji" }, "has_more": {"type": "boolean", "description": "Whether more reaction users can be fetched"}, "next_after": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}], "description": "Cursor for the next page, or null when there are no more users" } }, "required": ["items", "has_more", "next_after"], "additionalProperties": false }, "ReactionUsersListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, "CreateFavoriteMemeBodySchema": { "type": "object", "properties": { "name": {"description": "Display name for the meme", "type": "string"}, "alt_text": {"description": "Alternative text description for accessibility", "type": ["string", "null"]}, "tags": { "description": "Tags for categorizing and searching the meme", "default": [], "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}] }, "attachment_id": { "description": "ID of the message attachment to save as a meme", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "embed_index": { "description": "Index of the message embed to save as a meme", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 9007199254740991}, {"type": "null"}] } }, "required": ["name"] }, "CrosspostSourceResponse": { "type": "object", "properties": { "guild": { "properties": { "id": { "description": "The ID of the source community", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the source community"}, "icon": {"description": "The hash of the source community icon", "type": ["string", "null"]}, "banner": {"description": "The hash of the source community banner", "type": ["string", "null"]}, "description": { "description": "The discovery description of the source community, or null when it is not listed in discovery", "type": ["string", "null"] }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "The public badge features of the source community: VERIFIED, PARTNERED and DISCOVERABLE only" }, "approximate_member_count": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Approximate number of members in the source community, or null when unavailable" }, "approximate_presence_count": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Approximate number of online members in the source community, or null when unavailable" }, "discoverable": { "type": "boolean", "description": "Whether the source community can be joined through discovery" } }, "description": "The community the message was published from", "$ref": "#/components/schemas/CrosspostSourceGuildResponse" } }, "required": ["guild"], "additionalProperties": false }, "MessageAckRequest": { "type": "object", "properties": { "mention_count": { "description": "Number of mentions to acknowledge", "$ref": "#/components/schemas/Int32Type" }, "manual": {"description": "Whether this is a manual acknowledgement", "type": "boolean"} } }, "MessageUpdateRequestSchema": { "type": "object", "properties": { "content": {"anyOf": [{"$ref": "#/components/schemas/MessageContentRequest"}, {"type": "null"}]}, "embeds": { "type": "array", "items": {"$ref": "#/components/schemas/RichEmbedRequest"}, "description": "Array of embed objects to include in the message" }, "allowed_mentions": { "description": "Controls which mentions trigger notifications", "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}] }, "flags": {"$ref": "#/components/schemas/MessageFlags", "description": "Message flags bitfield"}, "attachments": { "description": "Array of attachment objects to keep or add", "type": "array", "items": { "anyOf": [ {"$ref": "#/components/schemas/ClientUploadedAttachmentRequest"}, {"$ref": "#/components/schemas/ClientAttachmentReferenceRequest"} ] } }, "message_snapshots": { "description": "Per-snapshot edits aligned by index with the existing snapshots. Currently supports updating attachment metadata (title/description).", "maxItems": 10, "type": "array", "items": { "type": "object", "properties": { "attachments": { "maxItems": 10, "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ {"$ref": "#/components/schemas/Int32Type"}, {"$ref": "#/components/schemas/SnowflakeType"} ], "description": "The identifier of the snapshot attachment" }, "title": { "description": "A title for the attachment (1-1024 characters)", "type": ["string", "null"] }, "description": { "description": "Alt text description for the attachment (1-4096 characters)", "type": ["string", "null"] } }, "required": ["id"] } } } } } } }, "MessagePurgeResponse": { "type": "object", "properties": {"deleted_count": {"type": "integer", "minimum": 0, "maximum": 9007199254740991}}, "required": ["deleted_count"], "additionalProperties": false }, "ChannelPinsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": {"$ref": "#/components/schemas/ChannelPinResponse"}, "description": "Pinned messages in this channel" }, "has_more": {"type": "boolean", "description": "Whether more pins can be fetched with pagination"} }, "required": ["items", "has_more"], "additionalProperties": false }, "BulkDeleteMessagesRequest": { "type": "object", "properties": { "message_ids": { "description": "Array of message IDs to delete", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "messages": { "description": "Alias for message IDs", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} } } }, "MessageRequestSchema": { "type": "object", "properties": { "content": {"anyOf": [{"$ref": "#/components/schemas/MessageContentRequest"}, {"type": "null"}]}, "embeds": { "type": "array", "items": {"$ref": "#/components/schemas/RichEmbedRequest"}, "description": "Array of embed objects to include in the message" }, "attachments": { "type": "array", "items": { "anyOf": [ {"$ref": "#/components/schemas/ClientUploadedAttachmentRequest"}, {"$ref": "#/components/schemas/ClientAttachmentRequest"} ] }, "description": "Array of attachment objects" }, "message_reference": { "description": "Reference to another message (for replies or forwards)", "anyOf": [{"$ref": "#/components/schemas/MessageReferenceRequest"}, {"type": "null"}] }, "allowed_mentions": { "description": "Controls which mentions trigger notifications", "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}] }, "flags": {"default": 0, "$ref": "#/components/schemas/MessageFlags", "description": "Message flags bitfield"}, "nonce": {"$ref": "#/components/schemas/MessageNonceRequest"}, "favorite_meme_id": { "description": "ID of a favorite meme to attach", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "sticker_ids": { "description": "Array of sticker IDs to include (max 3)", "anyOf": [ {"maxItems": 3, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"} ] }, "tts": {"description": "Whether this is a text-to-speech message", "type": "boolean"} } }, "ChannelInviteCreateRequest": { "type": "object", "properties": { "max_uses": { "default": 0, "description": "Maximum number of times this invite can be used (0 for unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 100}, {"type": "null"}] }, "max_age": { "default": 0, "description": "Duration in seconds before the invite expires (0 for never)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 604800}, {"type": "null"}] }, "unique": { "default": false, "description": "Whether to create a new unique invite or reuse an existing one", "type": ["boolean", "null"] }, "temporary": { "default": false, "description": "Whether members that joined via this invite should be kicked after disconnecting", "type": ["boolean", "null"] } } }, "InviteMetadataResponseSchema": { "anyOf": [ {"$ref": "#/components/schemas/GuildInviteMetadataResponse"}, {"$ref": "#/components/schemas/GroupDmInviteMetadataResponse"} ] }, "ChannelFollowRequest": { "type": "object", "properties": { "webhook_channel_id": { "description": "The ID of the text channel that receives published messages", "$ref": "#/components/schemas/SnowflakeType" } }, "required": ["webhook_channel_id"] }, "FollowedChannelResponse": { "type": "object", "properties": { "channel_id": { "description": "The ID of the followed announcement channel", "$ref": "#/components/schemas/SnowflakeStringType" }, "webhook_id": { "description": "The ID of the channel follower webhook created in the target channel", "$ref": "#/components/schemas/SnowflakeStringType" } }, "required": ["channel_id", "webhook_id"], "additionalProperties": false }, "ChannelFollowerStatsResponse": { "type": "object", "properties": { "channel_count": { "description": "The number of channels following this announcement channel", "$ref": "#/components/schemas/Int32Type" }, "guild_count": { "description": "The number of distinct guilds following this announcement channel", "$ref": "#/components/schemas/Int32Type" } }, "required": ["channel_count", "guild_count"], "additionalProperties": false }, "CallRingBodySchema": { "type": "object", "properties": { "recipients": { "description": "User IDs to ring for the call", "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "latitude": {"description": "Client latitude used for automatic region selection", "type": "string"}, "longitude": {"description": "Client longitude used for automatic region selection", "type": "string"} } }, "CallUpdateBodySchema": { "type": "object", "properties": { "region": { "description": "The preferred voice region for the call (1-64 characters). Omit or set to null for automatic region selection.", "type": ["string", "null"] }, "latitude": {"description": "Client latitude used for automatic region selection", "type": "string"}, "longitude": {"description": "Client longitude used for automatic region selection", "type": "string"} } }, "CallEligibilityResponse": { "type": "object", "properties": { "ringable": {"type": "boolean", "description": "Whether the current user can ring this call"}, "silent": {"type": "boolean", "description": "Whether the call should be joined silently"} }, "required": ["ringable", "silent"], "additionalProperties": false }, "CompleteMultipartAttachmentUploadRequest": { "type": "object", "properties": { "uploads": { "minItems": 1, "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/CompleteMultipartAttachmentUploadItem"}, "description": "Multipart uploads to finalize" } }, "required": ["uploads"] }, "CompleteMultipartAttachmentUploadResponse": { "type": "object", "properties": { "uploads": { "type": "array", "items": {"$ref": "#/components/schemas/CompleteMultipartAttachmentUploadResult"}, "description": "Finalized upload keys" } }, "required": ["uploads"], "additionalProperties": false }, "PresignedAttachmentUploadRequest": { "type": "object", "properties": { "attachments": { "minItems": 1, "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/PresignedAttachmentUploadRequestItem"}, "description": "Attachment upload specifications" } }, "required": ["attachments"] }, "PresignedAttachmentUploadResponse": { "type": "object", "properties": { "attachments": { "type": "array", "items": {"$ref": "#/components/schemas/PresignedAttachmentUploadResponseItem"}, "description": "Presigned upload details for each attachment" } }, "required": ["attachments"], "additionalProperties": false }, "ChannelUpdateRequestBody": { "anyOf": [ { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": { "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.", "type": ["boolean", "null"] }, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "icon": { "description": "Base64-encoded icon image for group DM channels", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "owner_id": { "description": "ID of the new owner for group DM channels", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "nicks": { "description": "Custom nicknames for users in this channel", "$ref": "#/components/schemas/ChannelNicknameOverrides" }, "rtc_region": { "description": "Voice region ID for the voice channel (1-64 characters)", "type": ["string", "null"] }, "name": {"description": "The name of the channel", "type": ["string", "null"]}, "type": { "description": "Convert between text (0) and announcement (5). Other conversions are rejected.", "anyOf": [{"type": "number", "const": 0}, {"type": "number", "const": 5}] } } }, { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": { "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.", "type": ["boolean", "null"] }, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "icon": { "description": "Base64-encoded icon image for group DM channels", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "owner_id": { "description": "ID of the new owner for group DM channels", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "nicks": { "description": "Custom nicknames for users in this channel", "$ref": "#/components/schemas/ChannelNicknameOverrides" }, "rtc_region": { "description": "Voice region ID for the voice channel (1-64 characters)", "type": ["string", "null"] }, "name": {"description": "The name of the channel", "type": ["string", "null"]}, "type": { "description": "Convert between text (0) and announcement (5). Other conversions are rejected.", "anyOf": [{"type": "number", "const": 0}, {"type": "number", "const": 5}] } } }, { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": { "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.", "type": ["boolean", "null"] }, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "icon": { "description": "Base64-encoded icon image for group DM channels", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "owner_id": { "description": "ID of the new owner for group DM channels", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "nicks": { "description": "Custom nicknames for users in this channel", "$ref": "#/components/schemas/ChannelNicknameOverrides" }, "rtc_region": { "description": "Voice region ID for the voice channel (1-64 characters)", "type": ["string", "null"] }, "name": {"description": "The name of the channel", "type": ["string", "null"]} } }, { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": { "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.", "type": ["boolean", "null"] }, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "icon": { "description": "Base64-encoded icon image for group DM channels", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "owner_id": { "description": "ID of the new owner for group DM channels", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "nicks": { "description": "Custom nicknames for users in this channel", "$ref": "#/components/schemas/ChannelNicknameOverrides" }, "rtc_region": { "description": "Voice region ID for the voice channel (1-64 characters)", "type": ["string", "null"] }, "name": {"description": "The name of the category", "type": ["string", "null"]} } }, { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": { "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override.", "type": ["boolean", "null"] }, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "icon": { "description": "Base64-encoded icon image for group DM channels", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "owner_id": { "description": "ID of the new owner for group DM channels", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "nicks": { "description": "Custom nicknames for users in this channel", "$ref": "#/components/schemas/ChannelNicknameOverrides" }, "rtc_region": { "description": "Voice region ID for the voice channel (1-64 characters)", "type": ["string", "null"] }, "name": {"description": "The name of the channel", "type": ["string", "null"]} } }, { "type": "object", "properties": { "name": {"description": "The name of the group DM", "type": ["string", "null"]}, "icon": { "description": "Base64-encoded icon image for the group DM", "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}] }, "owner_id": { "description": "ID of the new owner of the group DM", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "nicks": { "description": "Custom nicknames for users in this group DM", "anyOf": [{"$ref": "#/components/schemas/ChannelNicknameOverrides"}, {"type": "null"}] } } } ] }, "BulkMessageFetchRequest": { "type": "object", "properties": { "requests": { "minItems": 1, "maxItems": 25, "type": "array", "items": { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel to fetch messages from", "$ref": "#/components/schemas/SnowflakeType" }, "limit": { "type": "integer", "minimum": 1, "maximum": 50, "description": "Number of messages to return for this channel (1-50)" }, "before": { "description": "Get messages before this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "after": { "description": "Get messages after this message ID", "$ref": "#/components/schemas/SnowflakeType" }, "around": { "description": "Get messages around this message ID", "$ref": "#/components/schemas/SnowflakeType" } }, "required": ["channel_id", "limit"] }, "description": "Per-channel message windows to fetch in one request" } }, "required": ["requests"] }, "BulkMessageFetchResponse": { "type": "object", "properties": { "channels": { "type": "array", "items": { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel whose messages were fetched", "$ref": "#/components/schemas/SnowflakeStringType" }, "messages": { "description": "Messages fetched for this channel", "$ref": "#/components/schemas/MessageListResponse" } }, "required": ["channel_id", "messages"], "additionalProperties": false } } }, "required": ["channels"], "additionalProperties": false }, "WebAuthnAuthenticationOptionsResponse": { "type": "object", "properties": { "challenge": {"type": "string"}, "timeout": {"type": "number"}, "rpId": {"type": "string"}, "allowCredentials": { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "string"}, "type": {"type": "string", "const": "public-key"}, "transports": { "type": "array", "items": { "type": "string", "enum": ["ble", "cable", "hybrid", "internal", "nfc", "smart-card", "usb"] } } }, "required": ["id", "type"], "additionalProperties": {} } }, "userVerification": {"type": "string", "enum": ["discouraged", "preferred", "required"]} }, "required": ["challenge"], "additionalProperties": {} }, "WebAuthnAuthenticateRequest": { "type": "object", "properties": { "response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "challenge": {"description": "The challenge string from authentication options", "type": "string"} }, "required": ["response", "challenge"] }, "AuthTokenWithUserIdResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "Authentication token for API requests"}, "user_id": { "description": "ID of the authenticated user", "$ref": "#/components/schemas/SnowflakeStringType" }, "user": { "description": "Partial user data for the authenticated account", "$ref": "#/components/schemas/UserPartialResponse" } }, "required": ["token", "user_id", "user"], "additionalProperties": false }, "VerifyEmailRequest": { "type": "object", "properties": {"token": {"description": "Email verification token from email", "type": "string"}}, "required": ["token"] }, "UsernameSuggestionsRequest": { "type": "object", "properties": { "global_name": {"description": "Display name to generate username suggestions from", "type": "string"} }, "required": ["global_name"] }, "UsernameSuggestionsResponse": { "type": "object", "properties": { "suggestions": { "maxItems": 20, "type": "array", "items": {"type": "string"}, "description": "List of suggested usernames" } }, "required": ["suggestions"], "additionalProperties": false }, "SsoStatusResponse": { "type": "object", "properties": { "enabled": {"type": "boolean", "description": "Whether SSO is enabled for this instance"}, "enforced": {"type": "boolean", "description": "Whether SSO is required for all users"}, "display_name": {"description": "Display name of the SSO provider", "type": ["string", "null"]}, "redirect_uri": {"type": "string", "description": "OAuth redirect URI for SSO"} }, "required": ["enabled", "enforced", "display_name", "redirect_uri"], "additionalProperties": false }, "SsoStartRequest": { "type": "object", "properties": { "redirect_to": {"description": "URL to redirect to after SSO completion", "type": ["string", "null"]}, "redirect_uri": { "description": "OAuth redirect URI to use for the SSO provider callback", "type": ["string", "null"] } } }, "SsoStartResponse": { "type": "object", "properties": { "authorization_url": {"type": "string", "description": "URL to redirect user to for SSO authentication"}, "state": {"type": "string", "description": "State parameter for CSRF protection"}, "redirect_uri": {"type": "string", "description": "OAuth redirect URI used for the SSO provider callback"} }, "required": ["authorization_url", "state", "redirect_uri"], "additionalProperties": false }, "SsoCompleteRequest": { "type": "object", "properties": { "code": {"description": "Authorization code from the SSO provider", "type": "string"}, "state": {"description": "State parameter for CSRF protection", "type": "string"} }, "required": ["code", "state"] }, "SsoCompleteResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "Authentication token for the session"}, "user_id": { "description": "ID of the authenticated user", "$ref": "#/components/schemas/SnowflakeStringType" }, "user": { "description": "Partial user data for the authenticated account", "$ref": "#/components/schemas/UserPartialResponse" }, "redirect_to": {"type": "string", "description": "URL to redirect the user to after completion"} }, "required": ["token", "user_id", "user", "redirect_to"], "additionalProperties": false }, "LogoutAuthSessionsWithVerificationRequest": { "type": "object", "properties": { "session_id_hashes": { "maxItems": 100, "type": "array", "items": {"type": "string"}, "description": "Array of session ID hashes to log out (max 100)" }, "password": { "description": "Account password for sudo verification", "$ref": "#/components/schemas/PasswordType" }, "mfa_method": { "description": "MFA method to use for verification", "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "enum": ["totp", "webauthn"], "type": "string" }, "mfa_code": {"description": "MFA verification code from an authenticator app", "type": "string"}, "webauthn_response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "webauthn_challenge": {"description": "WebAuthn challenge string", "type": "string"} }, "required": ["session_id_hashes"] }, "AuthSessionsResponse": {"type": "array", "items": {"$ref": "#/components/schemas/AuthSessionResponse"}}, "ValidateResetPasswordTokenResponse": { "type": "object", "properties": { "valid": {"type": "boolean", "description": "Whether the password reset token is valid and unexpired"} }, "required": ["valid"], "additionalProperties": false }, "ResetPasswordRequest": { "type": "object", "properties": { "token": {"description": "Password reset token from email", "type": "string"}, "password": {"description": "New password to set", "$ref": "#/components/schemas/PasswordType"} }, "required": ["token", "password"] }, "AuthLoginResponse": { "anyOf": [ {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}, { "type": "object", "properties": { "mfa": { "type": "boolean", "const": true, "description": "Indicates MFA is required to complete authentication" }, "ticket": {"type": "string", "description": "MFA ticket to use when completing MFA verification"}, "allowed_methods": { "maxItems": 10, "type": "array", "items": {"type": "string"}, "description": "List of allowed MFA methods" }, "totp": {"type": "boolean", "description": "Whether TOTP authenticator MFA is available"}, "webauthn": {"type": "boolean", "description": "Whether WebAuthn security key MFA is available"}, "backup_codes": { "type": "boolean", "description": "Whether the account has at least one unconsumed backup code" } }, "required": ["mfa", "ticket", "allowed_methods", "totp", "webauthn", "backup_codes"], "additionalProperties": false } ] }, "RegisterRequest": { "type": "object", "properties": { "email": {"description": "Email address for the new account", "$ref": "#/components/schemas/EmailType"}, "username": { "description": "Username for the new account (1-32 characters)", "$ref": "#/components/schemas/UsernameType" }, "global_name": {"description": "Display name shown to other users", "type": "string"}, "password": {"description": "Password for the new account", "$ref": "#/components/schemas/PasswordType"}, "date_of_birth": {"description": "Date of birth in YYYY-MM-DD format", "type": "string"}, "consent": {"default": false, "description": "Whether user consents to terms of service", "type": "boolean"}, "invite_code": {"description": "Guild invite code to join after registration", "type": ["string", "null"]}, "registration_url_code": { "description": "Admin-issued registration URL code to use for this registration", "type": ["string", "null"] }, "theme": { "description": "Initial UI theme preference for the new account", "x-enumNames": ["DARK", "DARK_LEGACY", "COAL", "LIGHT", "SYSTEM"], "x-enumDescriptions": [ "Dark colour theme", "Legacy dark colour theme (original neutral grey palette)", "Coal/darker colour theme", "Light colour theme", "Follow system colour preference" ], "enum": ["dark", "dark_legacy", "coal", "light", "system"], "type": "string" } } }, "AuthRegisterResponse": { "anyOf": [ {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}, { "type": "object", "properties": { "mfa": { "type": "boolean", "const": true, "description": "Indicates MFA is required to complete authentication" }, "ticket": {"type": "string", "description": "MFA ticket to use when completing MFA verification"}, "allowed_methods": { "maxItems": 10, "type": "array", "items": {"type": "string"}, "description": "List of allowed MFA methods" }, "totp": {"type": "boolean", "description": "Whether TOTP authenticator MFA is available"}, "webauthn": {"type": "boolean", "description": "Whether WebAuthn security key MFA is available"}, "backup_codes": { "type": "boolean", "description": "Whether the account has at least one unconsumed backup code" } }, "required": ["mfa", "ticket", "allowed_methods", "totp", "webauthn", "backup_codes"], "additionalProperties": false }, {"$ref": "#/components/schemas/AuthRegistrationPendingApprovalResponse"} ] }, "PasskeyBridgeLoginRedeemResponse": { "oneOf": [ {"$ref": "#/components/schemas/CancelledPasskeyBridgeLoginRedeemResponse"}, {"$ref": "#/components/schemas/CompletedPasskeyBridgeLoginRedeemResponse"} ] }, "PasskeyBridgeOptionsResponse": { "type": "object", "properties": { "options": { "description": "WebAuthn authentication options for the ceremony", "$ref": "#/components/schemas/WebAuthnAuthenticationOptionsResponse" } }, "required": ["options"], "additionalProperties": false }, "PasskeyBridgeCompleteRequest": { "type": "object", "properties": { "response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" } }, "required": ["response"] }, "PasskeyBridgeFinishResponse": { "type": "object", "properties": { "return_url": { "description": "Where the page runner goes next, or null for the native runner", "type": ["string", "null"] }, "completion_code": { "description": "Code the native runner redeems, or null for the page runner", "type": ["string", "null"] } }, "required": ["return_url", "completion_code"], "additionalProperties": false }, "PasskeyBridgeLoginStartRequest": { "type": "object", "properties": { "purpose": { "type": "string", "enum": ["login", "login_mfa"], "description": "Whether the passkey signs in or completes two-factor sign in" }, "runner": {"$ref": "#/components/schemas/PasskeyBridgeRunner"}, "ticket": { "description": "The MFA ticket from the login response, for login_mfa", "type": "string", "minLength": 1, "maxLength": 256 }, "nonce_hash": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "Lowercase hex SHA-256 digest of the nonce the starting page keeps" } }, "required": ["purpose", "runner", "nonce_hash"] }, "OriginHandoffRedeemRequest": { "type": "object", "properties": { "handoff_id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "description": "Identifier returned when the handoff was created" }, "nonce": { "type": "string", "minLength": 16, "maxLength": 256, "pattern": "^[A-Za-z0-9_-]+$", "description": "Nonce whose SHA-256 digest was sent when the handoff was created" } }, "required": ["handoff_id", "nonce"] }, "OriginHandoffRedeemResponse": { "type": "object", "properties": {"payload": {"type": "string", "description": "Encrypted client state encoded as base64url"}}, "required": ["payload"], "additionalProperties": false }, "OriginHandoffCreateRequest": { "type": "object", "properties": { "nonce_hash": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "Lowercase hex SHA-256 digest of the nonce the receiving origin holds" }, "payload": { "type": "string", "minLength": 1, "maxLength": 8388608, "pattern": "^[A-Za-z0-9_-]+$", "description": "Encrypted client state encoded as base64url" } }, "required": ["nonce_hash", "payload"] }, "OriginHandoffCreateResponse": { "type": "object", "properties": { "handoff_id": {"type": "string", "description": "Single-use identifier the receiving origin redeems"} }, "required": ["handoff_id"], "additionalProperties": false }, "MfaTicketRequest": { "type": "object", "properties": {"ticket": {"description": "The MFA ticket from the login response", "type": "string"}}, "required": ["ticket"] }, "WebAuthnMfaRequest": { "type": "object", "properties": { "response": { "description": "WebAuthn authentication response", "$ref": "#/components/schemas/WebAuthnAuthenticationResponse" }, "challenge": {"description": "The challenge string from authentication options", "type": "string"}, "ticket": {"description": "The MFA ticket from the login response", "type": "string"} }, "required": ["response", "challenge", "ticket"] }, "MfaTotpRequest": { "type": "object", "properties": { "code": {"description": "The TOTP code from the authenticator app", "type": "string"}, "ticket": {"description": "The MFA ticket from the login response", "type": "string"} }, "required": ["code", "ticket"] }, "LoginRequest": { "type": "object", "properties": { "email": {"description": "Email address for authentication", "$ref": "#/components/schemas/EmailType"}, "password": {"description": "Account password", "$ref": "#/components/schemas/PasswordType"}, "invite_code": {"description": "Guild invite code to join after login", "type": ["string", "null"]} }, "required": ["email", "password"] }, "IpAuthorizationPollResponse": { "type": "object", "properties": { "completed": {"type": "boolean", "description": "Whether the IP authorization has been completed"}, "token": {"description": "Authentication token if authorization is complete", "type": ["string", "null"]}, "user_id": { "description": "User ID if authorization is complete", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "user": { "description": "Partial user data if authorization is complete", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] } }, "required": ["completed"], "additionalProperties": false }, "HandoffStatusRequest": { "type": "object", "properties": { "poll_secret": {"description": "The poll secret issued when the handoff was initiated", "type": "string"} }, "required": ["poll_secret"] }, "HandoffStatusResponse": { "type": "object", "properties": { "status": {"type": "string", "description": "Current status of the handoff (pending, completed, expired)"}, "token": {"description": "Authentication token if handoff is complete", "type": ["string", "null"]}, "user_id": { "description": "User ID if handoff is complete", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "user": { "description": "Partial user data if handoff is complete", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] } }, "required": ["status"], "additionalProperties": false }, "HandoffInfoResponse": { "type": "object", "properties": { "status": {"type": "string", "description": "Current status of the handoff (pending, expired)"}, "client_info": { "description": "Client information of the initiating device", "anyOf": [ { "type": "object", "properties": { "platform": {"description": "The platform of the requesting device", "type": ["string", "null"]}, "os": {"description": "The operating system of the requesting device", "type": ["string", "null"]}, "device": { "type": "string", "enum": ["mobile", "desktop"], "description": "Device class of the requesting device, decided by the server" }, "location": { "description": "The approximate location of the requesting device", "anyOf": [{"$ref": "#/components/schemas/AuthSessionLocation"}, {"type": "null"}] } }, "required": ["device"], "additionalProperties": false }, {"type": "null"} ] } }, "required": ["status"], "additionalProperties": false }, "HandoffCancelRequest": { "type": "object", "properties": { "poll_secret": {"description": "The poll secret issued when the handoff was initiated", "type": "string"} }, "required": ["poll_secret"] }, "HandoffInitiateResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "Handoff code to share with the receiving device"}, "expires_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "ISO 8601 timestamp when the handoff code expires" }, "poll_secret": { "description": "Secret the initiating device must present to retrieve the token", "type": "string" } }, "required": ["code", "expires_at"], "additionalProperties": false }, "HandoffCompleteRequest": { "type": "object", "properties": { "code": {"description": "The handoff code from the initiating session", "type": "string"}, "token": {"description": "The authentication token to transfer", "type": "string"}, "user_id": {"description": "The user ID associated with the authenticated session", "type": "string"} }, "required": ["code", "user_id"] }, "ForgotPasswordRequest": { "type": "object", "properties": { "email": { "description": "Email address to send password reset link", "$ref": "#/components/schemas/EmailType" } }, "required": ["email"] }, "EmailRevertRequest": { "type": "object", "properties": { "token": {"description": "Email revert token from email", "type": "string"}, "password": {"description": "Account password for verification", "$ref": "#/components/schemas/PasswordType"} }, "required": ["token", "password"] }, "AuthorizeIpRequest": { "type": "object", "properties": {"token": {"description": "The IP authorization token from email", "type": "string"}}, "required": ["token"] }, "RefreshAttachmentUrlsRequest": { "type": "object", "properties": { "attachment_urls": { "minItems": 1, "maxItems": 50, "type": "array", "items": {"type": "string", "maxLength": 2048}, "description": "Attachment URLs to refresh (1-50 entries, each at most 2048 characters)" } }, "required": ["attachment_urls"] }, "RefreshAttachmentUrlsResponse": { "type": "object", "properties": { "refreshed_urls": { "type": "array", "items": {"$ref": "#/components/schemas/RefreshedAttachmentUrl"}, "description": "One entry per requested URL, in the order they were requested" } }, "required": ["refreshed_urls"], "additionalProperties": false }, "ApplicationsMeResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier of the application", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the application"}, "icon": { "description": "The persisted bot avatar hash used as the application icon, if available", "type": ["string", "null"] }, "description": { "description": "The persisted bot profile bio used as the application description", "type": ["string", "null"] }, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"}, "bot_require_code_grant": {"type": "boolean", "description": "Whether the bot requires OAuth2 code grant"}, "verify_key": { "type": "string", "description": "Compatibility placeholder for AppInfo clients until keys are persisted" }, "owner": {"description": "The owner of the application", "$ref": "#/components/schemas/UserPartialResponse"}, "bot": { "description": "The bot user associated with the application", "type": "object", "properties": { "id": { "description": "The unique identifier of the bot user", "$ref": "#/components/schemas/SnowflakeStringType" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"description": "The avatar hash of the bot", "type": ["string", "null"]}, "banner": {"description": "The banner hash of the bot", "type": ["string", "null"]}, "bio": {"description": "The bio or description of the bot", "type": ["string", "null"]}, "token": {"description": "The bot token for authentication", "type": "string"}, "mfa_enabled": {"description": "Whether the bot has MFA enabled", "type": "boolean"}, "authenticator_types": { "description": "The types of authenticators enabled", "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/AuthenticatorType"} }, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "additionalProperties": false }, "redirect_uris": { "description": "The registered redirect URIs for OAuth2", "maxItems": 10, "type": "array", "items": {"type": "string"} } }, "required": [ "id", "name", "icon", "description", "bot_public", "bot_require_code_grant", "verify_key", "owner" ], "additionalProperties": false }, "WellKnownFluxerResponse": { "type": "object", "properties": { "api_code_version": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Version of the API server code" }, "endpoints": {"$ref": "#/components/schemas/InstanceEndpointsSchema"}, "captcha": {"$ref": "#/components/schemas/InstanceCaptchaSchema"}, "features": {"$ref": "#/components/schemas/InstanceFeaturesSchema"}, "gif": {"$ref": "#/components/schemas/InstanceGifSchema"}, "sso": {"$ref": "#/components/schemas/InstanceSsoSchema"}, "registration": {"$ref": "#/components/schemas/InstanceRegistrationSchema"}, "community": {"$ref": "#/components/schemas/InstanceCommunitySchema"}, "services": {"$ref": "#/components/schemas/InstanceServicesSchema"}, "limits": { "type": "object", "properties": { "version": {"type": "number", "const": 2, "description": "Wire format version"}, "traitDefinitions": { "type": "array", "items": {"type": "string"}, "description": "Available trait definitions (e.g., \"premium\")" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "string", "description": "Unique identifier for this limit rule"}, "filters": { "description": "Filters that determine when this rule applies", "type": "object", "properties": { "traits": { "description": "Trait filters for this limit rule", "type": "array", "items": {"type": "string"} }, "guildFeatures": { "description": "Guild feature filters for this limit rule", "type": "array", "items": {"type": "string"} } }, "additionalProperties": false }, "overrides": { "type": "object", "propertyNames": {"type": "string"}, "additionalProperties": {"type": "number"}, "description": "Map of limit keys to their override values (differences from defaults)" } }, "required": ["id", "overrides"], "additionalProperties": false }, "description": "Array of limit rules to evaluate" }, "defaultsHash": { "type": "string", "description": "Hash of the default limit values for cache invalidation" } }, "required": ["version", "traitDefinitions", "rules", "defaultsHash"], "additionalProperties": false, "description": "Limit configuration with rules and trait definitions" }, "push": {"$ref": "#/components/schemas/InstancePushSchema"}, "app_public": { "properties": { "branding": {"$ref": "#/components/schemas/InstanceBrandingSchema"}, "setup": {"$ref": "#/components/schemas/InstanceSetupSchema"}, "legal": { "type": "object", "properties": { "terms_url": { "description": "Optional public terms of service URL for account registration", "type": ["string", "null"] }, "privacy_url": { "description": "Optional public privacy policy URL for account registration", "type": ["string", "null"] } }, "required": ["terms_url", "privacy_url"], "additionalProperties": false, "description": "Optional legal document URLs shown during public registration" }, "registration": { "type": "object", "properties": { "collect_date_of_birth": { "type": "boolean", "description": "Whether public registration collects and validates date of birth" } }, "required": ["collect_date_of_birth"], "additionalProperties": false, "description": "Public registration field collection policy" } }, "description": "Public application configuration for client-side features", "$ref": "#/components/schemas/InstanceAppPublicSchema" }, "domain_migration": { "description": "Web domain migration switch and anonymous rollout, only acted on by official instance clients", "$ref": "#/components/schemas/DomainMigrationDiscoveryResponse" } }, "required": [ "api_code_version", "endpoints", "captcha", "features", "gif", "sso", "registration", "community", "services", "limits", "push", "app_public" ], "additionalProperties": false }, "DomainMigrationDiscoveryResponse": { "type": "object", "properties": { "enabled": {"type": "boolean", "description": "Whether the domain migration is switched on"}, "anonymous_rollout_basis_points": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Share of logged-out devices, in basis points, that move to the new domain" }, "rollout_salt": { "type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[\\x20-\\x7e]+$", "description": "Salt used to bucket devices and users" }, "standalone_forwarding": { "type": "boolean", "description": "Whether installed desktop web apps forward to the new domain after moving their session" } }, "required": ["enabled", "anonymous_rollout_basis_points", "rollout_salt", "standalone_forwarding"], "additionalProperties": false }, "InstanceAppPublicSchema": { "type": "object", "properties": { "branding": {"$ref": "#/components/schemas/InstanceBrandingSchema"}, "setup": {"$ref": "#/components/schemas/InstanceSetupSchema"}, "legal": { "type": "object", "properties": { "terms_url": { "description": "Optional public terms of service URL for account registration", "type": ["string", "null"] }, "privacy_url": { "description": "Optional public privacy policy URL for account registration", "type": ["string", "null"] } }, "required": ["terms_url", "privacy_url"], "additionalProperties": false, "description": "Optional legal document URLs shown during public registration" }, "registration": { "type": "object", "properties": { "collect_date_of_birth": { "type": "boolean", "description": "Whether public registration collects and validates date of birth" } }, "required": ["collect_date_of_birth"], "additionalProperties": false, "description": "Public registration field collection policy" } }, "required": ["branding", "setup", "legal", "registration"], "additionalProperties": false }, "InstanceSetupSchema": { "type": "object", "properties": { "configured": { "type": "boolean", "description": "Whether the instance administrator has completed initial setup" }, "admin_url": {"description": "Admin panel URL to continue instance setup", "type": ["string", "null"]} }, "required": ["configured", "admin_url"], "additionalProperties": false, "description": "Initial setup state for self-hosted instances" }, "InstanceBrandingSchema": { "type": "object", "properties": { "product_name": {"type": "string", "description": "Public product name shown by client applications"}, "icon_url": {"description": "Optional image URL for the full application icon", "type": ["string", "null"]}, "symbol_url": { "description": "Optional image URL for the compact application symbol", "type": ["string", "null"] }, "logo_url": {"description": "Optional image URL for the application logo", "type": ["string", "null"]}, "wordmark_url": { "description": "Optional image URL for the application wordmark", "type": ["string", "null"] }, "favicon_url": {"description": "Optional favicon URL for browser metadata", "type": ["string", "null"]}, "theme_color": {"description": "Optional browser theme color", "type": ["string", "null"]}, "status_page_url": {"description": "Optional public status page URL", "type": ["string", "null"]}, "status_page_incident_history_url": { "description": "Optional public status page incident history URL", "type": ["string", "null"] }, "premium_product_name": { "type": "string", "description": "Name of the premium tier shown by client applications" }, "premium_info_url": { "description": "Optional absolute URL of a page describing the premium tier", "type": ["string", "null"] } }, "required": [ "product_name", "icon_url", "symbol_url", "logo_url", "wordmark_url", "favicon_url", "theme_color", "status_page_url", "status_page_incident_history_url", "premium_product_name", "premium_info_url" ], "additionalProperties": false, "description": "Branding values safe to expose to clients" }, "InstancePushSchema": { "type": "object", "properties": { "public_vapid_key": {"description": "VAPID public key for web push notifications", "type": ["string", "null"]} }, "required": ["public_vapid_key"], "additionalProperties": false, "description": "Push notification configuration" }, "InstanceServicesSchema": { "type": "object", "properties": { "gif_enabled": {"type": "boolean", "description": "Whether the GIF picker is enabled for this instance"}, "youtube_enabled": { "type": "boolean", "description": "Whether YouTube link enrichment is enabled for this instance" }, "bluesky_enabled": { "type": "boolean", "description": "Whether Bluesky profile connections are enabled for this instance" } }, "required": ["gif_enabled", "youtube_enabled", "bluesky_enabled"], "additionalProperties": false, "description": "Optional third-party service integrations enabled for this instance" }, "InstanceCommunitySchema": { "type": "object", "properties": { "single_community": { "type": "boolean", "description": "Whether this instance runs as a single community that every user automatically joins" }, "single_community_guild_id": { "description": "The stock community guild ID when single-community mode is enabled", "type": ["string", "null"] }, "direct_messages_disabled": { "type": "boolean", "description": "Whether direct messages and friend requests are disabled instance-wide" }, "guild_create_access": { "type": "boolean", "description": "Whether every account can create communities. When false, only admins and accounts granted the feature_guild_create limit can" } }, "required": [ "single_community", "single_community_guild_id", "direct_messages_disabled", "guild_create_access" ], "additionalProperties": false, "description": "Community topology and direct-message policy for this instance" }, "InstanceRegistrationSchema": { "type": "object", "properties": { "mode": { "description": "Public registration mode for this instance", "$ref": "#/components/schemas/InstanceRegistrationModeSchema" }, "admin_registration_urls_enabled": { "type": "boolean", "description": "Whether admin-issued registration URLs are accepted" } }, "required": ["mode", "admin_registration_urls_enabled"], "additionalProperties": false, "description": "Registration policy for this instance" }, "InstanceSsoSchema": { "type": "object", "properties": { "enabled": {"type": "boolean", "description": "Whether SSO is enabled for this instance"}, "enforced": {"type": "boolean", "description": "Whether SSO is required for all users"}, "display_name": {"description": "Display name of the SSO provider", "type": ["string", "null"]}, "redirect_uri": {"type": "string", "description": "OAuth redirect URI for SSO"} }, "required": ["enabled", "enforced", "display_name", "redirect_uri"], "additionalProperties": false, "description": "Single sign-on configuration" }, "InstanceGifSchema": { "type": "object", "properties": { "provider": {"type": "string", "description": "Stable machine name of the active GIF provider."}, "display_name": {"type": "string", "description": "Human-readable provider name shown in the UI"}, "attribution_required": { "type": "boolean", "description": "Whether the client must show a \"Powered by …\" watermark for this provider" } }, "required": ["provider", "display_name", "attribution_required"], "additionalProperties": false, "description": "GIF provider configuration for clients" }, "InstanceFeaturesSchema": { "type": "object", "properties": { "voice_enabled": {"type": "boolean", "description": "Whether voice/video calling is enabled"}, "stripe_enabled": { "type": "boolean", "description": "Whether premium purchases through Stripe are available" }, "premium_enabled": { "type": "boolean", "description": "Whether this instance has a premium tier, so premium status, gifts and perks apply" }, "stripe_serviceable": { "type": "boolean", "description": "Whether existing Stripe subscriptions can be managed, cancelled and billed on this instance" }, "self_hosted": {"type": "boolean", "description": "Whether this is a self-hosted instance"}, "presigned_attachment_uploads": { "type": "boolean", "description": "Whether clients can request presigned attachment upload URLs" }, "emails_enabled": { "type": "boolean", "description": "Whether the instance sends emails (verification, password reset, etc.)" }, "phone_verification_enabled": {"type": "boolean", "description": "Deprecated. Always false."} }, "required": [ "voice_enabled", "stripe_enabled", "premium_enabled", "stripe_serviceable", "self_hosted", "presigned_attachment_uploads", "emails_enabled", "phone_verification_enabled" ], "additionalProperties": false, "description": "Feature flags for this instance" }, "InstanceCaptchaSchema": { "type": "object", "properties": { "provider": { "description": "Captcha provider (altcha or none)", "$ref": "#/components/schemas/InstanceCaptchaProviderSchema" } }, "required": ["provider"], "additionalProperties": false, "description": "Captcha configuration" }, "InstanceEndpointsSchema": { "type": "object", "properties": { "api": {"type": "string", "description": "Base URL for authenticated API requests"}, "api_client": {"type": "string", "description": "Base URL for client API requests"}, "api_public": {"type": "string", "description": "Base URL for public API requests"}, "gateway": {"type": "string", "description": "WebSocket URL for the gateway"}, "media": {"type": "string", "description": "Base URL for the media proxy"}, "static_cdn": {"type": "string", "description": "Base URL for static assets (avatars, emojis, etc.)"}, "marketing": {"type": "string", "description": "Base URL for the marketing website"}, "admin": {"type": "string", "description": "Base URL for the admin panel"}, "invite": {"type": "string", "description": "Base URL for invite links"}, "gift": {"type": "string", "description": "Base URL for gift links"}, "webapp": {"type": "string", "description": "Base URL for the web application"} }, "required": [ "api", "api_client", "api_public", "gateway", "media", "static_cdn", "marketing", "admin", "invite", "gift", "webapp" ], "additionalProperties": false, "description": "Endpoint URLs for various services" }, "InstanceCaptchaProviderSchema": {"type": "string", "enum": ["altcha", "none"]}, "InstanceRegistrationModeSchema": { "description": "Registration mode", "x-enumNames": ["open", "approval", "closed"], "x-enumDescriptions": [ "Anyone can register", "Anyone can register, but admins must approve new accounts", "Public registration is closed" ], "enum": ["open", "approval", "closed"], "type": "string" }, "BotFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "The bot user flags", "format": "int32", "x-bitflagValues": [ {"name": "FRIENDLY_BOT", "value": "16", "description": "Bot accepts friend requests from users"}, { "name": "FRIENDLY_BOT_MANUAL_APPROVAL", "value": "32", "description": "Bot requires manual approval for friend requests" } ] }, "AuthenticatorType": { "description": "The type of authenticator", "type": "integer", "enum": [0, 2], "format": "int32", "x-enumNames": ["TOTP", "WEBAUTHN"], "x-enumDescriptions": ["Time-based one-time password authenticator", "WebAuthn authenticator"] }, "SnowflakeStringType": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "format": "snowflake"}, "MentionReplyPreferences": { "description": "Reply mention preference", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["NO_PREFERENCE", "PREFER_MENTION", "PREFER_NO_MENTION"], "x-enumDescriptions": [ "Respect the sender intent on each reply, with no warning when toggling the @ mention. On a guild member, inherits the value from the user-level preference.", "Default replies to @mention this user, and warn the sender when they disable the mention", "Default replies to omit the @mention for this user, and warn the sender when they enable it" ] }, "PublicUserFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "The public flags on the user account", "format": "int32", "x-bitflagValues": [ {"name": "STAFF", "value": "1", "description": "User is a staff member"}, {"name": "PARTNER", "value": "4", "description": "User is a partner"}, {"name": "BUG_HUNTER", "value": "8", "description": "User is a bug hunter"}, {"name": "FRIENDLY_BOT", "value": "16", "description": "Bot accepts friend requests from users"}, { "name": "FRIENDLY_BOT_MANUAL_APPROVAL", "value": "32", "description": "Bot requires manual approval for friend requests" }, {"name": "SPAMMER", "value": "64", "description": "User is flagged as a spammer"} ] }, "RefreshedAttachmentUrl": { "type": "object", "properties": { "original": {"type": "string", "description": "The requested URL, echoed back unchanged"}, "refreshed": { "type": "string", "description": "The same URL carrying a fresh signature, or the original when it is not an attachment URL of ours" } }, "required": ["original", "refreshed"], "additionalProperties": false }, "PasswordType": {"type": "string"}, "EmailType": {"type": "string"}, "AuthSessionLocation": { "type": "object", "properties": { "city": {"description": "The city name reported by the client", "type": ["string", "null"]}, "region": {"description": "The region reported by the client", "type": ["string", "null"]}, "country": {"description": "The country reported by the client", "type": ["string", "null"]} }, "additionalProperties": false }, "WebAuthnAuthenticationResponse": { "type": "object", "properties": { "id": {"type": "string"}, "rawId": {"type": "string"}, "type": {"type": "string", "const": "public-key"}, "authenticatorAttachment": {"type": "string", "enum": ["cross-platform", "platform"]}, "clientExtensionResults": { "type": "object", "properties": { "appid": {"type": "boolean"}, "credProps": {"type": "object", "properties": {"rk": {"type": "boolean"}}, "additionalProperties": {}}, "hmacCreateSecret": {"type": "boolean"} }, "additionalProperties": {} }, "response": { "type": "object", "properties": { "clientDataJSON": {"type": "string"}, "authenticatorData": {"type": "string"}, "signature": {"type": "string"}, "userHandle": {"type": "string"} }, "required": ["clientDataJSON", "authenticatorData", "signature"], "additionalProperties": {} } }, "required": ["id", "rawId", "type", "clientExtensionResults", "response"], "additionalProperties": {} }, "PasskeyBridgeRunner": { "type": "string", "enum": ["page", "native"], "description": "Where the passkey ceremony runs: a page on the paired origin or the native desktop client" }, "CompletedPasskeyBridgeLoginRedeemResponse": { "type": "object", "properties": { "status": {"type": "string", "const": "completed", "description": "The ceremony finished"}, "token": {"type": "string", "description": "Authentication token for API requests"}, "user_id": { "description": "ID of the authenticated user", "$ref": "#/components/schemas/SnowflakeStringType" }, "user": { "description": "Partial user data for the authenticated account", "$ref": "#/components/schemas/UserPartialResponse" } }, "required": ["status", "token", "user_id", "user"], "additionalProperties": false }, "CancelledPasskeyBridgeLoginRedeemResponse": { "type": "object", "properties": {"status": {"type": "string", "const": "cancelled", "description": "The ceremony was cancelled"}}, "required": ["status"], "additionalProperties": false }, "AuthRegistrationPendingApprovalResponse": { "type": "object", "properties": { "registration_pending_approval": { "type": "boolean", "const": true, "description": "Registration succeeded and is waiting for admin approval" }, "user_id": { "description": "ID of the registered account waiting for approval", "$ref": "#/components/schemas/SnowflakeStringType" } }, "required": ["registration_pending_approval", "user_id"], "additionalProperties": false }, "AuthSessionResponse": { "type": "object", "properties": { "id_hash": {"type": "string", "description": "The base64url-encoded session id hash"}, "client_info": { "description": "Client metadata recorded for this session", "anyOf": [ { "type": "object", "properties": { "platform": {"description": "The platform reported by the client", "type": ["string", "null"]}, "os": {"description": "The operating system reported by the client", "type": ["string", "null"]}, "browser": {"description": "The browser reported by the client", "type": ["string", "null"]}, "device": { "type": "string", "enum": ["mobile", "desktop"], "description": "Device class of the session, decided by the server" }, "location": { "description": "The geolocation data sent by the client", "anyOf": [{"$ref": "#/components/schemas/AuthSessionLocation"}, {"type": "null"}] } }, "required": ["device"], "additionalProperties": false }, {"type": "null"} ] }, "masked_ip": { "description": "Semi-redacted IP address recorded for this session", "type": ["string", "null"] }, "approx_last_used_at": { "description": "Approximate timestamp of the last session activity", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "current": {"type": "boolean", "description": "Whether this is the current session making the request"} }, "required": ["id_hash", "masked_ip", "current"], "additionalProperties": false }, "ChannelNicknameOverrides": { "type": "object", "propertyNames": {"type": "string", "description": "User ID"}, "additionalProperties": {"description": "Nickname or null to clear", "type": ["string", "null"]}, "description": "User nickname overrides (user ID to nickname mapping)" }, "Base64ImageType": {"type": "string"}, "ContentWarningLevelInput": { "description": "The content warning level for a guild, category, or channel", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["INHERIT", "CONTENT_WARNING"], "x-enumDescriptions": [ "No level set on this scope; channels and categories inherit from parent", "Show a content warning before entering" ], "enum": [0, 1] }, "UnsignedInt64Type": { "anyOf": [{"type": "string"}, {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}], "format": "int64" }, "PresignedAttachmentUploadResponseItem": { "oneOf": [ {"$ref": "#/components/schemas/SinglepartPresignedAttachmentUploadResponseItem"}, {"$ref": "#/components/schemas/MultipartPresignedAttachmentUploadResponseItem"} ] }, "MultipartPresignedAttachmentUploadResponseItem": { "type": "object", "properties": { "id": { "description": "The client-side identifier for this attachment", "$ref": "#/components/schemas/Int32Type" }, "filename": {"description": "The original filename for this upload", "type": "string"}, "file_size": { "description": "Expected file size in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" }, "content_type": { "description": "Expected MIME type for this upload", "type": "string", "minLength": 1, "maxLength": 255 }, "upload_filename": { "description": "Temporary upload key to reference in message send payloads", "type": "string", "minLength": 1, "maxLength": 4096 }, "upload_mode": {"type": "string", "const": "multipart"}, "upload_id": { "description": "S3 multipart upload identifier; required to complete the upload", "type": "string", "minLength": 1, "maxLength": 1024 }, "part_size": { "description": "Size in bytes of each part except the last", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" }, "parts": { "minItems": 1, "maxItems": 10000, "type": "array", "items": { "type": "object", "properties": { "part_number": { "description": "1-indexed part number; order is required for completion", "$ref": "#/components/schemas/Int32Type" }, "upload_url": { "description": "Presigned URL used to upload this part", "type": "string", "minLength": 1, "maxLength": 2048 } }, "required": ["part_number", "upload_url"], "additionalProperties": false }, "description": "Per-part presigned URLs for parallel upload" } }, "required": [ "id", "filename", "file_size", "content_type", "upload_filename", "upload_mode", "upload_id", "part_size", "parts" ], "additionalProperties": false }, "SinglepartPresignedAttachmentUploadResponseItem": { "type": "object", "properties": { "id": { "description": "The client-side identifier for this attachment", "$ref": "#/components/schemas/Int32Type" }, "filename": {"description": "The original filename for this upload", "type": "string"}, "file_size": { "description": "Expected file size in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" }, "content_type": { "description": "Expected MIME type for this upload", "type": "string", "minLength": 1, "maxLength": 255 }, "upload_filename": { "description": "Temporary upload key to reference in message send payloads", "type": "string", "minLength": 1, "maxLength": 4096 }, "upload_mode": {"type": "string", "const": "singlepart"}, "upload_url": { "description": "Presigned URL used to upload this attachment with a single PUT", "type": "string", "minLength": 1, "maxLength": 2048 } }, "required": ["id", "filename", "file_size", "content_type", "upload_filename", "upload_mode", "upload_url"], "additionalProperties": false }, "NonNegativeSafeIntegerType": {"type": "integer", "minimum": 0, "maximum": 9007199254740991}, "PresignedAttachmentUploadRequestItem": { "type": "object", "properties": { "id": { "description": "The client-side identifier for this attachment", "$ref": "#/components/schemas/Int32Type" }, "filename": { "description": "The name of the file that will be uploaded", "type": "string", "minLength": 1, "maxLength": 255 }, "file_size": { "description": "Expected file size in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" }, "content_type": {"description": "MIME type the client will upload", "type": "string"} }, "required": ["id", "filename", "file_size", "content_type"] }, "CompleteMultipartAttachmentUploadResult": { "type": "object", "properties": { "upload_filename": { "description": "Finalized upload key", "type": "string", "minLength": 1, "maxLength": 4096 } }, "required": ["upload_filename"], "additionalProperties": false }, "CompleteMultipartAttachmentUploadItem": { "type": "object", "properties": { "upload_filename": { "description": "The upload_filename returned when the upload was planned", "type": "string" }, "upload_id": {"description": "The upload_id returned when the upload was planned", "type": "string"} }, "required": ["upload_filename", "upload_id"] }, "GroupDmInviteMetadataResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "inviter": { "description": "The user who created the invite", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] }, "expires_at": { "description": "ISO8601 timestamp of when the invite expires", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "type": {"type": "number", "const": 1, "description": "The type of invite (group DM)"}, "channel": { "description": "The group DM channel this invite is for", "$ref": "#/components/schemas/ChannelPartialResponse" }, "member_count": { "description": "The current member count of the group DM", "$ref": "#/components/schemas/Int32Type" }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "ISO8601 timestamp of when the invite was created" }, "uses": { "description": "The number of times this invite has been used", "$ref": "#/components/schemas/Int32Type" }, "max_uses": { "description": "The maximum number of times this invite can be used", "$ref": "#/components/schemas/Int32Type" } }, "required": ["code", "temporary", "type", "channel", "member_count", "created_at", "uses", "max_uses"], "additionalProperties": false }, "GuildInviteMetadataResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "inviter": { "description": "The user who created the invite", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] }, "expires_at": { "description": "ISO8601 timestamp of when the invite expires", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "type": {"type": "number", "const": 0, "description": "The type of invite (guild)"}, "guild": { "properties": { "id": { "description": "The unique identifier for this guild", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the guild"}, "icon": {"description": "The hash of the guild icon", "type": ["string", "null"]}, "banner": {"description": "The hash of the guild banner", "type": ["string", "null"]}, "banner_width": { "description": "The width of the guild banner in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "banner_height": { "description": "The height of the guild banner in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash": {"description": "The hash of the guild splash screen", "type": ["string", "null"]}, "splash_width": { "description": "The width of the guild splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash_height": { "description": "The height of the guild splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash_card_alignment": { "description": "The alignment of the splash card", "x-enumNames": ["CENTER", "LEFT", "RIGHT"], "x-enumDescriptions": [ "Splash card is centred", "Splash card is aligned to the left", "Splash card is aligned to the right" ], "enum": [0, 1, 2], "type": "integer" }, "embed_splash": {"description": "The hash of the embedded invite splash", "type": ["string", "null"]}, "embed_splash_width": { "description": "The width of the embedded invite splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "embed_splash_height": { "description": "The height of the embedded invite splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "Array of guild feature flags" } }, "description": "The guild this invite is for", "$ref": "#/components/schemas/GuildPartialResponse" }, "channel": { "description": "The channel this invite is for", "$ref": "#/components/schemas/ChannelPartialResponse" }, "member_count": { "description": "The approximate total member count of the guild", "$ref": "#/components/schemas/Int32Type" }, "presence_count": { "description": "The approximate online member count of the guild", "$ref": "#/components/schemas/Int32Type" }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "ISO8601 timestamp of when the invite was created" }, "uses": { "description": "The number of times this invite has been used", "$ref": "#/components/schemas/Int32Type" }, "max_uses": { "description": "The maximum number of times this invite can be used", "$ref": "#/components/schemas/Int32Type" }, "max_age": { "description": "The duration in seconds before the invite expires", "$ref": "#/components/schemas/Int32Type" } }, "required": [ "code", "temporary", "type", "guild", "channel", "member_count", "presence_count", "created_at", "uses", "max_uses", "max_age" ], "additionalProperties": false }, "ChannelPartialResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this channel", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"description": "The name of the channel", "type": ["string", "null"]}, "type": {"$ref": "#/components/schemas/ChannelType"}, "recipients": { "description": "The recipients of the DM channel", "maxItems": 50, "type": "array", "items": { "type": "object", "properties": {"username": {"type": "string", "description": "The username of the recipient"}}, "required": ["username"], "additionalProperties": false } } }, "required": ["id", "type"], "additionalProperties": false }, "GuildPartialResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this guild", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the guild"}, "icon": {"description": "The hash of the guild icon", "type": ["string", "null"]}, "banner": {"description": "The hash of the guild banner", "type": ["string", "null"]}, "banner_width": { "description": "The width of the guild banner in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "banner_height": { "description": "The height of the guild banner in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash": {"description": "The hash of the guild splash screen", "type": ["string", "null"]}, "splash_width": { "description": "The width of the guild splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash_height": { "description": "The height of the guild splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "splash_card_alignment": { "description": "The alignment of the splash card", "x-enumNames": ["CENTER", "LEFT", "RIGHT"], "x-enumDescriptions": [ "Splash card is centred", "Splash card is aligned to the left", "Splash card is aligned to the right" ], "enum": [0, 1, 2], "type": "integer" }, "embed_splash": {"description": "The hash of the embedded invite splash", "type": ["string", "null"]}, "embed_splash_width": { "description": "The width of the embedded invite splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "embed_splash_height": { "description": "The height of the embedded invite splash in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "Array of guild feature flags" } }, "required": ["id", "name", "splash_card_alignment", "features"], "additionalProperties": false }, "GuildFeatureSchema": { "description": "A guild feature flag Known values: ANIMATED_ICON, ANIMATED_BANNER, AUDIO_BITRATE_128_KBPS, AUDIO_BITRATE_256_KBPS, AUDIO_BITRATE_384_KBPS, BANNER, CLONE_EMOJI_DISABLED, CLONE_EMOJI_ENABLED, CLONE_STICKER_DISABLED, CLONE_STICKER_ENABLED, 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, ANNOUNCEMENT_CHANNELS_DISABLED (other values allowed)", "x-enumNames": [ "ANIMATED_ICON", "ANIMATED_BANNER", "AUDIO_BITRATE_128_KBPS", "AUDIO_BITRATE_256_KBPS", "AUDIO_BITRATE_384_KBPS", "BANNER", "CLONE_EMOJI_DISABLED", "CLONE_EMOJI_ENABLED", "CLONE_STICKER_DISABLED", "CLONE_STICKER_ENABLED", "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", "ANNOUNCEMENT_CHANNELS_DISABLED" ], "x-enumDescriptions": [ "Guild can have an animated icon", "Guild can have an animated banner", "Guild can set a voice channel bitrate of up to 128 kbps", "Guild can set a voice channel bitrate of up to 256 kbps", "Guild can set a voice channel bitrate of up to 384 kbps", "Guild can have a banner", "Deprecated and no longer enforced: emoji cloning is now opt-in through CLONE_EMOJI_ENABLED", "Guild allows non-members to use the in-app one-click emoji clone shortcut", "Deprecated and no longer enforced: sticker cloning is now opt-in through CLONE_STICKER_ENABLED", "Guild allows non-members to use the in-app one-click sticker clone shortcut", "Guild banner is detached from splash", "Guild can have an invite splash", "Guild has invites disabled", "Guild has a detected raid and invites are restricted", "Guild allows flexible text channel names", "Guild hides the community owner crown icon", "Legacy increased emoji slots feature", "Legacy increased sticker slots feature", "Guild has unlimited emoji slots", "Guild has unlimited sticker slots", "Guild allows purging expressions", "Guild can have a vanity URL", "Guild is listed in the public discovery directory", "Guild is a partnered guild", "Guild is verified", "Guild has VIP voice features", "Guild has end-to-end encryption for voice channel calls", "Guild is unavailable for everyone", "Guild is unavailable except for staff", "Guild is hidden when it is force unavailable", "Guild is a visionary guild", "Guild has large guild overrides enabled", "Guild has increased member capacity enabled", "Guild cannot publish announcement messages or gain new followers" ], "type": "string" }, "ChannelType": { "description": "The type of the channel", "type": "integer", "enum": [0, 1, 2, 3, 4, 5, 998, 999], "format": "int32", "x-enumNames": [ "GUILD_TEXT", "DM", "GUILD_VOICE", "GROUP_DM", "GUILD_CATEGORY", "GUILD_ANNOUNCEMENT", "GUILD_LINK", "DM_PERSONAL_NOTES" ], "x-enumDescriptions": [ "A text channel within a guild", "A direct message between users", "A voice channel within a guild", "A group direct message between users", "A category that contains channels", "A guild channel whose messages can be published to channels that follow it", "A link channel for external resources", "Personal notes DM channel" ] }, "MessageNonceRequest": { "description": "Client-generated identifier for the message", "anyOf": [{"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991}] }, "MessageFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "The bitwise flags of the original message", "format": "int32", "x-bitflagValues": [ { "name": "CROSSPOSTED", "value": "1", "description": "This message has been published to channels that follow this announcement channel" }, { "name": "IS_CROSSPOST", "value": "2", "description": "This message was delivered from an announcement channel this channel follows" }, { "name": "SUPPRESS_EMBEDS", "value": "4", "description": "Do not include embeds when serialising this message" }, { "name": "SOURCE_MESSAGE_DELETED", "value": "8", "description": "The published message this copy came from has been deleted" }, { "name": "SUPPRESS_NOTIFICATIONS", "value": "4096", "description": "This message will not trigger push or desktop notifications" }, {"name": "VOICE_MESSAGE", "value": "8192", "description": "This message is a voice message"} ] }, "AllowedMentionsRequest": { "type": "object", "properties": { "parse": { "description": "Types of mentions to parse from content", "type": "array", "items": { "description": "Types of mentions to parse from content", "x-enumNames": ["USERS", "ROLES", "EVERYONE"], "x-enumDescriptions": [ "Parse user mentions from the message content", "Parse role mentions from the message content", "Parse @everyone and @here mentions from the message content" ], "enum": ["users", "roles", "everyone"], "type": "string" } }, "users": { "description": "Array of user IDs to mention (max 100)", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "roles": { "description": "Array of role IDs to mention (max 100)", "maxItems": 100, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "replied_user": {"description": "Whether to mention the author of the replied message", "type": "boolean"} } }, "MessageReferenceRequest": { "type": "object", "properties": { "message_id": { "description": "ID of the message being referenced", "$ref": "#/components/schemas/SnowflakeType" }, "channel_id": { "description": "ID of the channel containing the referenced message", "$ref": "#/components/schemas/SnowflakeType" }, "guild_id": { "description": "ID of the guild containing the referenced message", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "$ref": "#/components/schemas/MessageReferenceTypeInput", "description": "Type of reference (0 = default, 1 = forward)" }, "attachment_ids": { "description": "Optional attachment IDs to include when forwarding only selected media", "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"} }, "embed_indices": { "description": "Optional embed indices to include when forwarding only selected media", "maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/Int32Type"} } }, "required": ["message_id"] }, "ClientAttachmentRequest": { "type": "object", "properties": { "title": {"description": "A title for the attachment (1-1024 characters)", "type": ["string", "null"]}, "description": { "description": "An alt text description of the attachment (1-4096 characters)", "type": ["string", "null"] }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags", "description": "Attachment flags"}, "duration": { "description": "The duration of the audio file in seconds", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "waveform": {"description": "Base64 encoded audio waveform data", "type": ["string", "null"]}, "id": { "description": "The client-side identifier for this attachment", "$ref": "#/components/schemas/Int32Type" }, "filename": { "description": "The name of the file being uploaded", "type": "string", "minLength": 1, "maxLength": 255 }, "content_type": {"description": "Optional MIME type for the uploaded file", "type": "string"} }, "required": ["id", "filename"] }, "ClientUploadedAttachmentRequest": { "type": "object", "properties": { "title": {"description": "A title for the attachment (1-1024 characters)", "type": ["string", "null"]}, "description": { "description": "An alt text description of the attachment (1-4096 characters)", "type": ["string", "null"] }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags", "description": "Attachment flags"}, "duration": { "description": "The duration of the audio file in seconds", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "waveform": {"description": "Base64 encoded audio waveform data", "type": ["string", "null"]}, "id": { "description": "The client-side identifier for this attachment", "$ref": "#/components/schemas/Int32Type" }, "filename": { "description": "The name of the file being uploaded", "type": "string", "minLength": 1, "maxLength": 255 }, "content_type": {"description": "MIME type of the uploaded file", "type": "string"}, "upload_filename": { "description": "Temporary upload key returned by the attachment upload endpoint", "type": "string" }, "file_size": { "description": "Uploaded file size in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" } }, "required": ["id", "filename", "content_type", "upload_filename", "file_size"] }, "RichEmbedRequest": { "type": "object", "properties": { "url": {"description": "URL of the embed", "type": ["string", "null"]}, "title": {"description": "Title of the embed (0-256 characters)", "type": ["string", "null"]}, "color": { "description": "Color code of the embed (hex integer)", "anyOf": [{"$ref": "#/components/schemas/ColorType"}, {"type": "null"}] }, "timestamp": { "description": "ISO8601 timestamp for the embed", "anyOf": [ { "anyOf": [ { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?$" }, {"type": "integer", "minimum": 0, "maximum": 8640000000000000} ] }, {"type": "null"} ] }, "description": {"description": "Description of the embed (1-4096 characters)", "type": ["string", "null"]}, "author": { "description": "Author information", "anyOf": [{"$ref": "#/components/schemas/RichEmbedAuthorRequest"}, {"type": "null"}] }, "image": { "description": "Image to display in the embed", "anyOf": [{"$ref": "#/components/schemas/RichEmbedMediaRequest"}, {"type": "null"}] }, "thumbnail": { "description": "Thumbnail image for the embed", "anyOf": [{"$ref": "#/components/schemas/RichEmbedMediaRequest"}, {"type": "null"}] }, "footer": { "description": "Footer information", "anyOf": [{"$ref": "#/components/schemas/RichEmbedFooterRequest"}, {"type": "null"}] }, "fields": { "description": "Array of field objects (max 25)", "anyOf": [ { "maxItems": 25, "type": "array", "items": { "type": "object", "properties": { "name": {"description": "Name of the field", "type": "string"}, "value": {"description": "Value of the field (0-1024 characters)", "type": "string"}, "inline": { "default": false, "description": "Whether the field should display inline", "type": "boolean" } }, "required": ["name", "value"] } }, {"type": "null"} ] } } }, "MessageContentRequest": { "type": "string", "description": "The message content. Non-premium users can send up to 2000 characters; premium users, bots, and webhooks can send up to 4000 characters." }, "RichEmbedFooterRequest": { "anyOf": [ { "type": "object", "properties": { "text": {"description": "Footer text (1-2048 characters)", "type": "string"}, "icon_url": {"description": "URL of the footer icon", "type": ["string", "null"]} }, "required": ["text"] }, {"type": "null"} ] }, "RichEmbedMediaRequest": { "anyOf": [ { "type": "object", "properties": { "url": {"description": "URL of the media (image, video, etc.)", "type": "string"}, "description": {"description": "Alt text description of the media", "type": ["string", "null"]} }, "required": ["url"] }, {"type": "null"} ] }, "RichEmbedAuthorRequest": { "anyOf": [ { "type": "object", "properties": { "name": {"description": "Name of the embed author", "type": "string"}, "url": {"description": "URL to link from the author name", "type": ["string", "null"]}, "icon_url": {"description": "URL of the author icon", "type": ["string", "null"]} }, "required": ["name"] }, {"type": "null"} ] }, "ColorType": {"type": "integer", "minimum": 0, "maximum": 16777215}, "MessageAttachmentFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "The bitwise flags for this attachment", "format": "int32", "x-bitflagValues": [ {"name": "IS_SPOILER", "value": "8", "description": "Attachment is marked as a spoiler"}, { "name": "CONTAINS_EXPLICIT_MEDIA", "value": "16", "description": "Attachment contains explicit media content" }, {"name": "IS_ANIMATED", "value": "32", "description": "Attachment is animated"} ] }, "MessageReferenceTypeInput": { "description": "The type of message reference", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["DEFAULT", "FORWARD"], "x-enumDescriptions": ["Default reference (reply)", "Forwarded message reference"], "enum": [0, 1] }, "ChannelPinResponse": { "type": "object", "properties": { "message": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this message", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this message was sent in", "$ref": "#/components/schemas/SnowflakeStringType" }, "author": { "description": "The author of the message", "$ref": "#/components/schemas/UserPartialResponse" }, "webhook_id": { "description": "The ID of the webhook that sent this message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageType"}, "flags": { "$ref": "#/components/schemas/MessageFlags", "description": "The bitwise flags for this message" }, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "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", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ] }, "users": { "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ] }, "embeds": { "description": "The embeds attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ] }, "attachments": { "description": "The files attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ] }, "stickers": { "description": "The stickers sent with the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ] }, "message_reference": { "description": "Reference data for replies or forwards", "anyOf": [ { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel containing the referenced message", "$ref": "#/components/schemas/SnowflakeStringType" }, "message_id": { "description": "The ID of the referenced message, absent on a channel follow system message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "guild_id": { "description": "The ID of the guild containing the referenced message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "type"], "additionalProperties": false }, {"type": "null"} ] }, "message_snapshots": { "description": "Snapshots of forwarded messages", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ] }, "nonce": {"description": "A client-provided value for message deduplication", "type": ["string", "null"]}, "call": { "description": "Call information if this message represents a call", "anyOf": [ { "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] } }, "required": ["participants"], "additionalProperties": false }, {"type": "null"} ] } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ], "additionalProperties": false, "description": "The pinned message" }, "pinned_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "The ISO 8601 timestamp of when the message was pinned" } }, "required": ["message", "pinned_at"], "additionalProperties": false }, "MessageSnapshotResponse": { "type": "object", "properties": { "content": {"description": "The text content of the snapshot", "type": ["string", "null"]}, "timestamp": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "mentions": { "description": "The user IDs mentioned in the snapshot", "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}] }, "mention_roles": { "description": "The role IDs mentioned in the snapshot", "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}] }, "mention_channels": { "description": "Channels mentioned in the snapshot that are visible to @everyone", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ] }, "embeds": { "description": "The embeds included in the snapshot", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ] }, "attachments": { "description": "The attachments included in the snapshot", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ] }, "stickers": { "description": "The stickers included in the snapshot", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ] }, "type": {"$ref": "#/components/schemas/MessageType"}, "flags": {"$ref": "#/components/schemas/MessageFlags"} }, "required": ["timestamp", "type", "flags"], "additionalProperties": false }, "MessageReferenceType": { "description": "The type of message reference", "type": "integer", "enum": [0, 1], "format": "int32", "x-enumNames": ["DEFAULT", "FORWARD"], "x-enumDescriptions": ["Default reference (reply)", "Forwarded message reference"] }, "MessageStickerResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier of the sticker", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the sticker"}, "animated": {"type": "boolean", "description": "Whether the sticker is animated"} }, "required": ["id", "name", "animated"], "additionalProperties": false }, "MessageAttachmentResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this attachment", "$ref": "#/components/schemas/SnowflakeStringType" }, "filename": {"type": "string", "description": "The name of the attached file"}, "title": {"description": "The title of the attachment", "type": ["string", "null"]}, "description": {"description": "The description of the attachment", "type": ["string", "null"]}, "content_type": {"description": "The MIME type of the attachment", "type": ["string", "null"]}, "content_hash": {"description": "The hash of the attachment content", "type": ["string", "null"]}, "size": { "description": "The size of the attachment in bytes", "$ref": "#/components/schemas/NonNegativeSafeIntegerType" }, "url": {"description": "The URL of the attachment", "type": ["string", "null"]}, "proxy_url": {"description": "The proxied URL of the attachment", "type": ["string", "null"]}, "width": { "description": "The width of the attachment in pixels (for images/videos)", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "height": { "description": "The height of the attachment in pixels (for images/videos)", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "placeholder": { "description": "The base64 encoded placeholder image for lazy loading", "type": ["string", "null"] }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"}, "nsfw": {"description": "Whether the attachment is flagged as NSFW", "type": ["boolean", "null"]}, "duration": { "description": "The duration of the media in seconds", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "waveform": {"description": "The base64 encoded audio waveform data", "type": ["string", "null"]}, "expires_at": { "description": "The ISO 8601 timestamp when the attachment URL expires", "type": ["string", "null"] }, "expired": {"description": "Whether the attachment URL has expired", "type": ["boolean", "null"]} }, "required": ["id", "filename", "size", "flags"], "additionalProperties": false }, "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", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "title": {"description": "The title of the embed", "type": ["string", "null"]}, "color": { "description": "The color code of the embed sidebar", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "timestamp": { "description": "The ISO 8601 timestamp of the embed content", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "description": {"description": "The description of the embed", "type": ["string", "null"]}, "author": { "description": "The author information of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}] }, "image": { "description": "The image of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "thumbnail": { "description": "The thumbnail of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "footer": { "description": "The footer of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedFooterResponse"}, {"type": "null"}] }, "fields": { "description": "The fields of the embed", "anyOf": [{"type": "array", "items": {"$ref": "#/components/schemas/EmbedFieldResponse"}}, {"type": "null"}] }, "provider": { "description": "The provider of the embed (e.g., YouTube, Twitter)", "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}] }, "video": { "description": "The video of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "audio": { "description": "The audio of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "html": { "description": "Sanitized oEmbed HTML for trusted specialized embed renderers", "type": ["string", "null"] }, "html_width": { "description": "The preferred width of sanitized oEmbed HTML", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "html_height": { "description": "The preferred height of sanitized oEmbed HTML", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "nsfw": {"description": "Whether the embed is flagged as NSFW", "type": ["boolean", "null"]}, "children": { "description": "Internal nested embeds generated by unfurlers", "anyOf": [ {"maxItems": 1, "type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedChildResponse"}}, {"type": "null"} ] } }, "required": ["type"], "additionalProperties": false }, "MessageChannelMentionResponse": { "type": "object", "properties": { "id": {"description": "The ID of the mentioned channel", "$ref": "#/components/schemas/SnowflakeStringType"}, "name": {"type": "string", "description": "The name of the mentioned channel"}, "type": {"description": "The type of the mentioned channel", "$ref": "#/components/schemas/Int32Type"} }, "required": ["id", "name", "type"], "additionalProperties": false }, "MessageType": { "description": "The type of message", "type": "integer", "enum": [0, 1, 2, 3, 4, 5, 6, 7, 12, 19], "format": "int32", "x-enumNames": [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "USER_JOIN", "CHANNEL_FOLLOW_ADD", "REPLY" ], "x-enumDescriptions": [ "A regular message", "A system message indicating a user was added to the conversation", "A system message indicating a user was removed from the conversation", "A message representing a call", "A system message indicating the channel name changed", "A system message indicating the channel icon changed", "A system message indicating a message was pinned", "A system message indicating a user joined", "System message posted when a channel starts following an announcement channel", "A reply message" ] }, "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", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "title": {"description": "The title of the embed", "type": ["string", "null"]}, "color": { "description": "The color code of the embed sidebar", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "timestamp": { "description": "The ISO 8601 timestamp of the embed content", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "description": {"description": "The description of the embed", "type": ["string", "null"]}, "author": { "description": "The author information of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}] }, "image": { "description": "The image of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "thumbnail": { "description": "The thumbnail of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "footer": { "description": "The footer of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedFooterResponse"}, {"type": "null"}] }, "fields": { "description": "The fields of the embed", "anyOf": [{"type": "array", "items": {"$ref": "#/components/schemas/EmbedFieldResponse"}}, {"type": "null"}] }, "provider": { "description": "The provider of the embed (e.g., YouTube, Twitter)", "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}] }, "video": { "description": "The video of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "audio": { "description": "The audio of the embed", "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}] }, "html": { "description": "Sanitized oEmbed HTML for trusted specialized embed renderers", "type": ["string", "null"] }, "html_width": { "description": "The preferred width of sanitized oEmbed HTML", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "html_height": { "description": "The preferred height of sanitized oEmbed HTML", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "nsfw": {"description": "Whether the embed is flagged as NSFW", "type": ["boolean", "null"]} }, "required": ["type"], "additionalProperties": false }, "EmbedMediaResponse": { "type": "object", "properties": { "url": {"type": "string", "description": "The URL of the media"}, "proxy_url": { "description": "The proxied URL of the media", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "content_type": {"description": "The MIME type of the media", "type": ["string", "null"]}, "content_hash": {"description": "The hash of the media content", "type": ["string", "null"]}, "width": { "description": "The width of the media in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "height": { "description": "The height of the media in pixels", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "description": {"description": "The description of the media", "type": ["string", "null"]}, "placeholder": { "description": "The base64 encoded placeholder image for lazy loading", "type": ["string", "null"] }, "duration": { "description": "The duration of the media in seconds", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "flags": {"$ref": "#/components/schemas/EmbedMediaFlags"} }, "required": ["url", "flags"], "additionalProperties": false }, "EmbedAuthorResponse": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the author"}, "url": { "description": "The URL of the author", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "icon_url": { "description": "The URL of the author icon", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "proxy_icon_url": { "description": "The proxied URL of the author icon", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] } }, "required": ["name"], "additionalProperties": false }, "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"], "additionalProperties": false }, "EmbedFooterResponse": { "type": "object", "properties": { "text": {"type": "string", "description": "The footer text"}, "icon_url": { "description": "The URL of the footer icon", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] }, "proxy_icon_url": { "description": "The proxied URL of the footer icon", "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}] } }, "required": ["text"], "additionalProperties": false }, "EmbedMediaFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "The bitwise flags for this media", "format": "int32", "x-bitflagValues": [ {"name": "CONTAINS_EXPLICIT_MEDIA", "value": "16", "description": "Embed media contains explicit content"}, {"name": "IS_ANIMATED", "value": "32", "description": "Embed media is animated"} ] }, "ClientAttachmentReferenceRequest": { "type": "object", "properties": { "title": {"description": "A title for the attachment (1-1024 characters)", "type": ["string", "null"]}, "description": { "description": "An alt text description of the attachment (1-4096 characters)", "type": ["string", "null"] }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags", "description": "Attachment flags"}, "duration": { "description": "The duration of the audio file in seconds", "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}] }, "waveform": {"description": "Base64 encoded audio waveform data", "type": ["string", "null"]}, "id": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"$ref": "#/components/schemas/SnowflakeType"}], "description": "The identifier of the attachment being referenced (snowflake ID or file index)" }, "filename": { "description": "A new filename for the attachment", "type": "string", "minLength": 1, "maxLength": 255 } } }, "CrosspostSourceGuildResponse": { "type": "object", "properties": { "id": {"description": "The ID of the source community", "$ref": "#/components/schemas/SnowflakeStringType"}, "name": {"type": "string", "description": "The name of the source community"}, "icon": {"description": "The hash of the source community icon", "type": ["string", "null"]}, "banner": {"description": "The hash of the source community banner", "type": ["string", "null"]}, "description": { "description": "The discovery description of the source community, or null when it is not listed in discovery", "type": ["string", "null"] }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "The public badge features of the source community: VERIFIED, PARTNERED and DISCOVERABLE only" }, "approximate_member_count": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Approximate number of members in the source community, or null when unavailable" }, "approximate_presence_count": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Approximate number of online members in the source community, or null when unavailable" }, "discoverable": { "type": "boolean", "description": "Whether the source community can be joined through discovery" } }, "required": [ "id", "name", "description", "features", "approximate_member_count", "approximate_presence_count", "discoverable" ], "additionalProperties": false }, "ChannelOverwriteType": { "description": "The type of entity the overwrite applies to", "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": ["Overwrite applies to a role", "Overwrite applies to a member"], "enum": [0, 1], "type": "integer" }, "RtcRegionResponse": { "type": "object", "properties": { "id": {"type": "string", "description": "The unique identifier for this RTC region"}, "name": {"type": "string", "description": "The display name of the RTC region"}, "emoji": {"type": "string", "description": "The emoji associated with this RTC region"} }, "required": ["id", "name", "emoji"], "additionalProperties": false }, "WebhookType": { "description": "The type of webhook", "type": "integer", "enum": [1, 2], "format": "int32", "x-enumNames": ["INCOMING", "CHANNEL_FOLLOWER"], "x-enumDescriptions": ["Incoming webhook", "Channel follower webhook"] }, "DiscoveryCategoryResponse": { "type": "object", "properties": { "id": {"type": "number", "description": "Category ID"}, "name": {"type": "string", "description": "Category display name"} }, "required": ["id", "name"], "additionalProperties": false }, "DonationCurrency": {"type": "string", "enum": ["usd", "eur", "brl", "inr", "pln", "try", "sek", "dkk", "nok"]}, "PlutoniumPageAssignmentResponse": { "type": "object", "properties": {"enabled": {"type": "boolean"}}, "required": ["enabled"], "additionalProperties": false }, "DomainMigrationAssignmentResponse": { "type": "object", "properties": {"enabled": {"type": "boolean"}}, "required": ["enabled"], "additionalProperties": false }, "GiftCodeDurationTypeSchema": { "description": "Gift code duration unit", "x-enumNames": ["days", "weeks", "months", "years"], "x-enumDescriptions": [ "Gift duration in days", "Gift duration in weeks", "Gift duration in months", "Gift duration in years" ], "enum": ["days", "weeks", "months", "years"], "type": "string" }, "TemplateSerializedGuild": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the template guild"}, "description": {"description": "The description of the template guild", "type": ["string", "null"]}, "verification_level": {"description": "The verification level", "type": "number"}, "default_message_notifications": {"description": "The default message notification level", "type": "number"}, "explicit_content_filter": {"description": "The explicit content filter level", "type": "number"}, "system_channel_id": { "description": "The template-local system channel ID", "anyOf": [ { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 9007199254740991}, {"type": "string"}], "description": "The template-local numeric identifier" }, {"type": "null"} ] }, "afk_timeout": {"description": "The AFK timeout in seconds", "type": "number"}, "system_channel_flags": {"description": "The system channel flags", "type": "number"}, "roles": { "type": "array", "items": {"$ref": "#/components/schemas/TemplateRole"}, "description": "The roles in the template" }, "channels": { "type": "array", "items": {"$ref": "#/components/schemas/TemplateChannel"}, "description": "The channels in the template" } }, "required": ["name", "roles", "channels"] }, "TemplateChannel": { "type": "object", "properties": { "id": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 9007199254740991}, {"type": "string"}], "description": "The template-local channel ID" }, "type": {"type": "number", "description": "The channel type (0 = text, 2 = voice, 4 = category)"}, "name": {"description": "The name of the channel", "type": ["string", "null"]}, "topic": {"description": "The channel topic", "type": ["string", "null"]}, "position": {"type": "number", "description": "The position of the channel"}, "parent_id": { "description": "The template-local ID of the parent category", "anyOf": [ { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 9007199254740991}, {"type": "string"}], "description": "The template-local numeric identifier" }, {"type": "null"} ] }, "bitrate": {"description": "The bitrate for voice channels", "type": ["number", "null"]}, "user_limit": {"description": "The user limit for voice channels", "type": ["number", "null"]}, "voice_connection_limit": { "description": "The per-user voice connection limit for voice channels", "type": ["number", "null"] }, "nsfw": {"description": "Whether the channel is NSFW", "type": "boolean"}, "rate_limit_per_user": {"description": "Slowmode rate limit in seconds", "type": "number"}, "permission_overwrites": { "description": "Permission overwrites for this channel", "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 9007199254740991}, {"type": "string"}], "description": "The ID of the role or user for this overwrite" }, "type": { "description": "The type of overwrite (0/role = role, 1/member = member)", "type": ["number", "string"] }, "allow": { "anyOf": [{"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991}], "description": "The allowed permissions bitfield as a string" }, "deny": { "anyOf": [{"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991}], "description": "The denied permissions bitfield as a string" } }, "required": ["id", "type", "allow", "deny"] } } }, "required": ["id", "type", "position"] }, "TemplateRole": { "type": "object", "properties": { "id": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 9007199254740991}, {"type": "string"}], "description": "The template-local role ID" }, "name": {"description": "The name of the role", "type": ["string", "null"]}, "permissions": { "description": "The permissions bitfield as a string (legacy)", "anyOf": [{"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991}] }, "permissions_new": { "description": "The permissions bitfield as a string (preferred)", "anyOf": [{"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991}] }, "color": {"description": "The colour of the role as an integer", "type": "number"}, "hoist": {"description": "Whether the role is hoisted", "type": "boolean"}, "mentionable": {"description": "Whether the role is mentionable", "type": "boolean"}, "unicode_emoji": {"description": "The unicode emoji for the role icon", "type": ["string", "null"]} }, "required": ["id"] }, "GuildExplicitContentFilterInput": { "description": "Level of content filtering for explicit media", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["DISABLED", "MEMBERS_WITHOUT_ROLES", "ALL_MEMBERS"], "x-enumDescriptions": [ "Media content will not be scanned", "Media content from members without roles will be scanned", "Media content from all members will be scanned" ], "enum": [0, 1, 2] }, "NSFWLevelInput": { "description": "The NSFW level of the guild", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["SAFE", "AGE_RESTRICTED"], "x-enumDescriptions": ["Guild is safe for all ages", "Guild is age-restricted"], "enum": [0, 3] }, "GuildMFALevelInput": { "description": "Required MFA level for moderation actions", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["NONE", "ELEVATED"], "x-enumDescriptions": ["Guild has no MFA requirement", "Guild requires 2FA for moderation actions"], "enum": [0, 1] }, "GuildVerificationLevelInput": { "description": "Required verification level for members", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", "Member of the server for more than 10 minutes" ], "enum": [0, 1, 2, 3] }, "DefaultMessageNotificationsInput": { "description": "Default notification level for new members", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["ALL_MESSAGES", "ONLY_MENTIONS"], "x-enumDescriptions": ["Notify on all messages", "Notify only on mentions"], "enum": [0, 1] }, "SystemChannelFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "System channel message flags", "format": "int32", "x-bitflagValues": [ { "name": "SUPPRESS_JOIN_NOTIFICATIONS", "value": "1", "description": "Suppress member join notifications in system channel" } ] }, "AuditLogWebhookResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this webhook", "$ref": "#/components/schemas/SnowflakeStringType" }, "type": {"$ref": "#/components/schemas/WebhookType"}, "guild_id": { "description": "The guild ID this webhook belongs to", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "channel_id": { "description": "The channel ID this webhook posts to", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "name": {"type": "string", "description": "The name of the webhook"}, "avatar_hash": {"description": "The hash of the webhook avatar", "type": ["string", "null"]} }, "required": ["id", "type", "name"], "additionalProperties": false }, "GuildAuditLogEntryResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this audit log entry", "$ref": "#/components/schemas/SnowflakeStringType" }, "action_type": {"$ref": "#/components/schemas/AuditLogActionType"}, "user_id": { "description": "The user ID of the user who performed the action", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "target_id": { "description": "The ID of the affected entity (user, channel, role, invite code, etc.)", "type": ["string", "null"] }, "reason": { "description": "The audit log reason. For bans and timeouts without an X-Audit-Log-Reason header this is the reason sent in the request body", "type": "string" }, "options": { "description": "Additional options depending on action type", "type": "object", "properties": { "channel_id": {"description": "Channel ID for relevant actions", "type": "string"}, "count": {"description": "Count of items affected", "type": "number"}, "delete_member_days": { "description": "Deprecated. Whole days of messages deleted, written only by bans recorded before delete_message_seconds", "type": "string" }, "delete_message_seconds": { "description": "Seconds of the banned user's messages that the ban deleted, present only when positive", "type": "number" }, "id": {"description": "ID of the affected entity", "type": "string"}, "integration_type": {"description": "Type of integration", "type": "number"}, "message_id": {"description": "Message ID for relevant actions", "type": "string"}, "members_removed": {"description": "Number of members removed", "type": "number"}, "role_name": {"description": "Name of the role when the entry was written", "type": "string"}, "type": { "description": "Channel type for CHANNEL_CREATE, CHANNEL_UPDATE and CHANNEL_DELETE. Overwrite target type (0 role, 1 member) for CHANNEL_OVERWRITE_*", "type": "number" }, "inviter_id": {"description": "ID of the user who created the invite", "type": "string"}, "max_age": {"description": "Maximum age of the invite in seconds", "type": "number"}, "max_uses": {"description": "Maximum number of uses for the invite", "type": "number"}, "temporary": {"description": "Whether the invite grants temporary membership", "type": "boolean"}, "uses": {"description": "Number of times the invite has been used", "type": "number"} }, "additionalProperties": false }, "changes": { "description": "Changes made to the target", "type": "array", "items": {"$ref": "#/components/schemas/AuditLogChangeSchema"} } }, "required": ["id", "action_type"], "additionalProperties": false }, "AuditLogChangeSchema": { "type": "object", "properties": { "key": {"type": "string", "description": "The field that changed"}, "old_value": { "description": "Value before the change", "anyOf": [ {"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"], "additionalProperties": false }, {"type": "null"} ] }, "new_value": { "description": "Value after the change", "anyOf": [ {"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"], "additionalProperties": false }, {"type": "null"} ] } }, "required": ["key"], "additionalProperties": false }, "AuditLogActionType": { "description": "The type of action that occurred", "type": "integer", "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 ], "format": "int32", "x-enumNames": [ "GUILD_UPDATE", "CHANNEL_CREATE", "CHANNEL_UPDATE", "CHANNEL_DELETE", "CHANNEL_OVERWRITE_CREATE", "CHANNEL_OVERWRITE_UPDATE", "CHANNEL_OVERWRITE_DELETE", "MEMBER_KICK", "MEMBER_PRUNE", "MEMBER_BAN_ADD", "MEMBER_BAN_REMOVE", "MEMBER_UPDATE", "MEMBER_ROLE_UPDATE", "MEMBER_MOVE", "MEMBER_DISCONNECT", "BOT_ADD", "ROLE_CREATE", "ROLE_UPDATE", "ROLE_DELETE", "INVITE_CREATE", "INVITE_UPDATE", "INVITE_DELETE", "WEBHOOK_CREATE", "WEBHOOK_UPDATE", "WEBHOOK_DELETE", "EMOJI_CREATE", "EMOJI_UPDATE", "EMOJI_DELETE", "STICKER_CREATE", "STICKER_UPDATE", "STICKER_DELETE", "MESSAGE_DELETE", "MESSAGE_BULK_DELETE", "MESSAGE_PIN", "MESSAGE_UNPIN" ], "x-enumDescriptions": [ "Guild settings were updated", "Channel was created", "Channel was updated", "Channel was deleted", "Permission overwrite was created", "Permission overwrite was updated", "Permission overwrite was deleted", "Member was kicked", "Members were pruned", "Member was banned", "Member ban was removed", "Member was updated", "Member roles were updated", "Member was moved to a different voice channel", "Member was disconnected from a voice channel", "Bot was added to the guild", "Role was created", "Role was updated", "Role was deleted", "Invite was created", "Invite was updated", "Invite was deleted", "Webhook was created", "Webhook was updated", "Webhook was deleted", "Emoji was created", "Emoji was updated", "Emoji was deleted", "Sticker was created", "Sticker was updated", "Sticker was deleted", "Message was deleted", "Messages were bulk deleted", "Message was pinned", "Message was unpinned" ] }, "GuildBanResponse": { "type": "object", "properties": { "user": {"description": "The banned user", "$ref": "#/components/schemas/UserPartialResponse"}, "reason": {"description": "The reason for the ban", "type": ["string", "null"]}, "moderator_id": { "description": "The ID of the moderator who issued the ban", "$ref": "#/components/schemas/SnowflakeStringType" }, "banned_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "ISO8601 timestamp of when the ban was issued" }, "expires_at": { "description": "ISO8601 timestamp of when the ban expires (null if permanent)", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] } }, "required": ["user", "moderator_id", "banned_at"], "additionalProperties": false }, "GuildLinkChannelCreateRequest": { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": {"default": false, "description": "Whether the channel is marked as NSFW", "type": "boolean"}, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "type": { "type": "integer", "x-enumNames": ["GUILD_LINK"], "x-enumDescriptions": ["Channel type (link channel)"], "enum": [998] }, "name": {"description": "The name of the channel", "type": "string"} }, "required": ["type", "name"] }, "GuildCategoryChannelCreateRequest": { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": {"default": false, "description": "Whether the channel is marked as NSFW", "type": "boolean"}, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "type": { "type": "integer", "x-enumNames": ["GUILD_CATEGORY"], "x-enumDescriptions": ["Channel type (category)"], "enum": [4] }, "name": {"description": "The name of the category", "type": "string"} }, "required": ["type", "name"] }, "GuildVoiceChannelCreateRequest": { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": {"default": false, "description": "Whether the channel is marked as NSFW", "type": "boolean"}, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "type": { "type": "integer", "x-enumNames": ["GUILD_VOICE"], "x-enumDescriptions": ["Channel type (voice channel)"], "enum": [2] }, "name": {"description": "The name of the channel", "type": "string"} }, "required": ["type", "name"] }, "GuildAnnouncementChannelCreateRequest": { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": {"default": false, "description": "Whether the channel is marked as NSFW", "type": "boolean"}, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "type": { "type": "integer", "x-enumNames": ["GUILD_ANNOUNCEMENT"], "x-enumDescriptions": ["Channel type (announcement channel)"], "enum": [5] }, "name": {"description": "The name of the channel", "type": "string"} }, "required": ["type", "name"] }, "GuildTextChannelCreateRequest": { "type": "object", "properties": { "topic": {"description": "The channel topic (1-1024 characters)", "type": ["string", "null"]}, "url": {"description": "External URL for link channels", "type": ["string", "null"]}, "parent_id": { "description": "ID of the parent category for this channel", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "bitrate": { "description": "Voice channel bitrate in bits per second (8000-384000), clamped to 96000 unless the guild holds an AUDIO_BITRATE feature", "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 384000}, {"type": "null"}] }, "user_limit": { "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99}, {"type": "null"}] }, "voice_connection_limit": { "description": "Maximum active voice connections allowed per user in a voice channel (1-100)", "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "null"}] }, "permission_overwrites": { "description": "Permission overwrites for roles and members", "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The ID of the role or user to overwrite permissions for", "$ref": "#/components/schemas/SnowflakeType" }, "type": { "description": "The type of overwrite (0 = role, 1 = member)", "x-enumNames": ["ROLE", "MEMBER"], "enum": [0, 1], "type": "integer" }, "allow": { "description": "Bitwise value of allowed permissions", "$ref": "#/components/schemas/UnsignedInt64Type" }, "deny": { "description": "Bitwise value of denied permissions", "$ref": "#/components/schemas/UnsignedInt64Type" } }, "required": ["id", "type"] } }, "rate_limit_per_user": { "description": "Slowmode delay in seconds (0-21600)", "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600}, {"type": "null"}] }, "nsfw": {"default": false, "description": "Whether the channel is marked as NSFW", "type": "boolean"}, "nsfw_override": { "description": "Per-channel adult-content override (true=on, false=off, null=inherit from category then guild). Takes precedence over the legacy `nsfw` field if both are present.", "type": ["boolean", "null"] }, "content_warning_level": { "description": "Channel-level content warning override (0=inherit, 1=force-warn)", "$ref": "#/components/schemas/ContentWarningLevelInput" }, "content_warning_text": { "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild", "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}] }, "type": { "type": "integer", "x-enumNames": ["GUILD_TEXT"], "x-enumDescriptions": ["Channel type (text channel)"], "enum": [0] }, "name": {"description": "The name of the channel", "type": "string"} }, "required": ["type", "name"] }, "NSFWLevel": { "description": "The NSFW level of the guild", "type": "integer", "enum": [0, 3], "format": "int32", "x-enumNames": ["SAFE", "AGE_RESTRICTED"], "x-enumDescriptions": ["Guild is safe for all ages", "Guild is age-restricted"] }, "GuildEmojiWithUserResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this emoji", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the emoji"}, "animated": {"type": "boolean", "description": "Whether this emoji is animated"}, "nsfw": { "type": "boolean", "description": "Deprecated; always false. Retained for compatibility with older clients" }, "user": { "description": "The user who uploaded this emoji", "$ref": "#/components/schemas/UserPartialResponse" } }, "required": ["id", "name", "animated", "nsfw", "user"], "additionalProperties": false }, "GuildMemberSearchResult": { "type": "object", "properties": { "id": {"type": "string", "description": "Composite ID (guildId:userId)"}, "guild_id": {"type": "string", "description": "Guild ID"}, "user_id": {"type": "string", "description": "User ID"}, "username": {"type": "string", "description": "Username"}, "discriminator": {"type": "string", "description": "Zero-padded 4-digit discriminator"}, "global_name": {"description": "Global display name", "type": ["string", "null"]}, "nickname": {"description": "Guild nickname", "type": ["string", "null"]}, "role_ids": {"type": "array", "items": {"type": "string"}, "description": "Role IDs"}, "joined_at": {"type": "number", "description": "Unix timestamp of when the member joined"}, "supplemental": { "type": "object", "properties": { "join_source_type": { "description": "How the member joined", "anyOf": [{"$ref": "#/components/schemas/JoinSourceType"}, {"type": "null"}] }, "source_invite_code": {"description": "Invite code used to join", "type": ["string", "null"]}, "inviter_id": {"description": "User ID of the member who sent the invite", "type": ["string", "null"]} }, "required": ["source_invite_code", "inviter_id"], "additionalProperties": false, "description": "Supplemental members-search-only metadata that is not part of the base guild member payload" }, "is_bot": {"type": "boolean", "description": "Whether the user is a bot"} }, "required": [ "id", "guild_id", "user_id", "username", "discriminator", "global_name", "nickname", "role_ids", "joined_at", "supplemental", "is_bot" ], "additionalProperties": false }, "JoinSourceType": { "description": "How the member joined the guild", "type": "integer", "enum": [0, 1, 2, 3, 4, 6], "format": "int32", "x-enumNames": ["CREATOR", "INSTANT_INVITE", "VANITY_URL", "BOT_INVITE", "ADMIN_FORCE_ADD", "DISCOVERY"], "x-enumDescriptions": [ "Member created the guild", "Member joined via an instant invite", "Member joined via the vanity URL", "Member was added via a bot invite", "Member was force-added by a platform administrator", "Member joined via guild discovery" ] }, "JoinSourceTypeInput": { "description": "How the member joined the guild", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["CREATOR", "INSTANT_INVITE", "VANITY_URL", "BOT_INVITE", "ADMIN_FORCE_ADD", "DISCOVERY"], "x-enumDescriptions": [ "Member created the guild", "Member joined via an instant invite", "Member joined via the vanity URL", "Member was added via a bot invite", "Member was force-added by a platform administrator", "Member joined via guild discovery" ], "enum": [0, 1, 2, 3, 4, 6] }, "MentionReplyPreferencesInput": { "description": "Reply mention preference", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["NO_PREFERENCE", "PREFER_MENTION", "PREFER_NO_MENTION"], "x-enumDescriptions": [ "Respect the sender intent on each reply, with no warning when toggling the @ mention. On a guild member, inherits the value from the user-level preference.", "Default replies to @mention this user, and warn the sender when they disable the mention", "Default replies to omit the @mention for this user, and warn the sender when they enable it" ], "enum": [0, 1, 2] }, "GuildMemberProfileFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Member profile flags", "format": "int32", "x-bitflagValues": [ {"name": "AVATAR_UNSET", "value": "1", "description": "Guild member avatar is unset"}, {"name": "BANNER_UNSET", "value": "2", "description": "Guild member banner is unset"} ] }, "Permissions": { "type": "string", "pattern": "^\\d+$", "description": "Permission bitfield as string", "format": "int64", "x-bitflagValues": [ {"name": "CREATE_INSTANT_INVITE", "value": "1", "description": "Allows creation of instant invites"}, {"name": "KICK_MEMBERS", "value": "2", "description": "Allows kicking members from the guild"}, {"name": "BAN_MEMBERS", "value": "4", "description": "Allows banning members from the guild"}, { "name": "ADMINISTRATOR", "value": "8", "description": "Grants all permissions and bypasses channel permission overwrites" }, { "name": "MANAGE_CHANNELS", "value": "16", "description": "Allows management, editing, and deletion of channels" }, {"name": "MANAGE_GUILD", "value": "32", "description": "Allows management and editing of the guild"}, {"name": "ADD_REACTIONS", "value": "64", "description": "Allows adding reactions to messages"}, {"name": "VIEW_AUDIT_LOG", "value": "128", "description": "Allows viewing of the audit log"}, { "name": "PRIORITY_SPEAKER", "value": "256", "description": "Allows using priority speaker in a voice channel" }, {"name": "STREAM", "value": "512", "description": "Allows the user to go live"}, {"name": "VIEW_CHANNEL", "value": "1024", "description": "Allows viewing a channel"}, {"name": "SEND_MESSAGES", "value": "2048", "description": "Allows sending messages in a channel"}, {"name": "SEND_TTS_MESSAGES", "value": "4096", "description": "Allows sending text-to-speech messages"}, {"name": "MANAGE_MESSAGES", "value": "8192", "description": "Allows for deleting and pinning messages"}, {"name": "EMBED_LINKS", "value": "16384", "description": "Links sent will have an embed automatically"}, {"name": "ATTACH_FILES", "value": "32768", "description": "Allows uploading files"}, {"name": "READ_MESSAGE_HISTORY", "value": "65536", "description": "Allows reading message history"}, {"name": "MENTION_EVERYONE", "value": "131072", "description": "Allows using @everyone and @here mentions"}, {"name": "USE_EXTERNAL_EMOJIS", "value": "262144", "description": "Allows using emojis from other guilds"}, {"name": "CONNECT", "value": "1048576", "description": "Allows connecting to a voice channel"}, {"name": "SPEAK", "value": "2097152", "description": "Allows speaking in a voice channel"}, {"name": "MUTE_MEMBERS", "value": "4194304", "description": "Allows muting members in voice channels"}, {"name": "DEAFEN_MEMBERS", "value": "8388608", "description": "Allows deafening members in voice channels"}, {"name": "MOVE_MEMBERS", "value": "16777216", "description": "Allows moving members between voice channels"}, {"name": "USE_VAD", "value": "33554432", "description": "Allows using voice activity detection"}, {"name": "CHANGE_NICKNAME", "value": "67108864", "description": "Allows changing own nickname"}, {"name": "MANAGE_NICKNAMES", "value": "134217728", "description": "Allows changing other members nicknames"}, {"name": "MANAGE_ROLES", "value": "268435456", "description": "Allows management and editing of roles"}, {"name": "MANAGE_WEBHOOKS", "value": "536870912", "description": "Allows management and editing of webhooks"}, { "name": "MANAGE_EXPRESSIONS", "value": "1073741824", "description": "Allows management of guild expressions" }, { "name": "USE_EXTERNAL_STICKERS", "value": "137438953472", "description": "Allows using stickers from other guilds" }, {"name": "MODERATE_MEMBERS", "value": "1099511627776", "description": "Allows timing out users"}, {"name": "CREATE_EXPRESSIONS", "value": "8796093022208", "description": "Allows creating guild expressions"}, {"name": "PIN_MESSAGES", "value": "2251799813685248", "description": "Allows pinning messages"}, {"name": "BYPASS_SLOWMODE", "value": "4503599627370496", "description": "Allows bypassing slowmode"}, {"name": "UPDATE_RTC_REGION", "value": "9007199254740992", "description": "Allows updating the voice region"}, { "name": "VIEW_CHANNEL_MEMBERS", "value": "18014398509481984", "description": "Allows viewing the member list in a channel" } ] }, "GuildStickerWithUserResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for this sticker", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the sticker"}, "description": {"type": "string", "description": "The description of the sticker"}, "tags": { "maxItems": 10, "type": "array", "items": {"type": "string"}, "description": "Autocomplete/suggestion tags for the sticker" }, "animated": {"type": "boolean", "description": "Whether this sticker is animated"}, "nsfw": { "type": "boolean", "description": "Deprecated; always false. Retained for compatibility with older clients" }, "user": { "description": "The user who uploaded this sticker", "$ref": "#/components/schemas/UserPartialResponse" } }, "required": ["id", "name", "description", "tags", "animated", "nsfw", "user"], "additionalProperties": false }, "GuildOperations": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield of disabled operations in the guild", "format": "int32", "x-bitflagValues": [ {"name": "PUSH_NOTIFICATIONS", "value": "1", "description": "Allow push notifications for this guild"}, {"name": "EVERYONE_MENTIONS", "value": "2", "description": "Allow @everyone mentions in this guild"}, {"name": "TYPING_EVENTS", "value": "4", "description": "Enable typing indicator events"}, {"name": "INSTANT_INVITES", "value": "8", "description": "Allow creation of instant invites"}, {"name": "SEND_MESSAGE", "value": "16", "description": "Allow sending messages in the guild"}, {"name": "REACTIONS", "value": "32", "description": "Allow adding reactions to messages"}, {"name": "MEMBER_LIST_UPDATES", "value": "64", "description": "Enable member list update events"} ] }, "DefaultMessageNotifications": { "description": "Default notification level for new members", "type": "integer", "enum": [0, 1], "format": "int32", "x-enumNames": ["ALL_MESSAGES", "ONLY_MENTIONS"], "x-enumDescriptions": ["Notify on all messages", "Notify only on mentions"] }, "GuildExplicitContentFilter": { "description": "Level of content filtering for explicit media", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["DISABLED", "MEMBERS_WITHOUT_ROLES", "ALL_MEMBERS"], "x-enumDescriptions": [ "Media content will not be scanned", "Media content from members without roles will be scanned", "Media content from all members will be scanned" ] }, "ContentWarningLevel": { "description": "The content warning level for a guild, category, or channel", "type": "integer", "enum": [0, 1], "format": "int32", "x-enumNames": ["INHERIT", "CONTENT_WARNING"], "x-enumDescriptions": [ "No level set on this scope; channels and categories inherit from parent", "Show a content warning before entering" ] }, "GuildMFALevel": { "description": "Required MFA level for moderation actions", "type": "integer", "enum": [0, 1], "format": "int32", "x-enumNames": ["NONE", "ELEVATED"], "x-enumDescriptions": ["Guild has no MFA requirement", "Guild requires 2FA for moderation actions"] }, "GuildVerificationLevel": { "description": "Required verification level for members", "type": "integer", "enum": [0, 1, 2, 3], "format": "int32", "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", "Member of the server for more than 10 minutes" ] }, "GroupDmInviteResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "inviter": { "description": "The user who created the invite", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] }, "expires_at": { "description": "ISO8601 timestamp of when the invite expires", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "type": {"type": "number", "const": 1, "description": "The type of invite (group DM)"}, "channel": { "description": "The group DM channel this invite is for", "$ref": "#/components/schemas/ChannelPartialResponse" }, "member_count": { "description": "The current member count of the group DM", "$ref": "#/components/schemas/Int32Type" } }, "required": ["code", "temporary", "type", "channel", "member_count"], "additionalProperties": false }, "GuildInviteResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "inviter": { "description": "The user who created the invite", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] }, "expires_at": { "description": "ISO8601 timestamp of when the invite expires", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "type": {"type": "number", "const": 0, "description": "The type of invite (guild)"}, "guild": {"description": "The guild this invite is for", "$ref": "#/components/schemas/GuildPartialResponse"}, "channel": { "description": "The channel this invite is for", "$ref": "#/components/schemas/ChannelPartialResponse" }, "member_count": { "description": "The approximate total member count of the guild", "$ref": "#/components/schemas/Int32Type" }, "presence_count": { "description": "The approximate online member count of the guild", "$ref": "#/components/schemas/Int32Type" } }, "required": ["code", "temporary", "type", "guild", "channel", "member_count", "presence_count"], "additionalProperties": false }, "GeoEntry": { "type": "object", "properties": { "countryCode": {"type": "string", "description": "ISO 3166-1 alpha-2 country code"}, "regionCode": { "description": "ISO 3166-2 subdivision code, or null when the entry covers the whole country", "type": ["string", "null"] } }, "required": ["countryCode", "regionCode"], "additionalProperties": false }, "ApplicationFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "The application flags", "format": "int32", "x-bitflagValues": [] }, "OAuth2AuthorizationResponse": { "type": "object", "properties": { "application": { "type": "object", "properties": { "id": { "description": "The unique identifier of the application", "$ref": "#/components/schemas/SnowflakeStringType" }, "name": {"type": "string", "description": "The name of the application"}, "icon": {"description": "The icon hash of the application", "type": ["string", "null"]}, "description": {"description": "The description of the application", "type": ["string", "null"]}, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"} }, "required": ["id", "name", "icon", "description", "bot_public"], "additionalProperties": false, "description": "The application that was authorized" }, "scopes": { "maxItems": 50, "type": "array", "items": {"type": "string"}, "description": "The list of granted OAuth2 scopes" }, "authorized_at": {"type": "string", "description": "The timestamp when the authorization was granted"} }, "required": ["application", "scopes", "authorized_at"], "additionalProperties": false, "description": "" }, "RefreshTokenTokenRequest": { "type": "object", "properties": { "grant_type": { "type": "string", "const": "refresh_token", "description": "The grant type for refreshing an access token" }, "refresh_token": {"description": "The refresh token to exchange for a new access token", "type": "string"}, "client_id": {"description": "The application client ID", "$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"description": "The application client secret", "type": "string"} }, "required": ["grant_type", "refresh_token"] }, "AuthorizationCodeTokenRequest": { "type": "object", "properties": { "grant_type": { "type": "string", "const": "authorization_code", "description": "The grant type for exchanging an authorization code" }, "code": {"description": "The authorization code received from the authorize endpoint", "type": "string"}, "redirect_uri": {"description": "The redirect URI used in the authorization request", "type": "string"}, "client_id": {"description": "The application client ID", "$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"description": "The application client secret", "type": "string"}, "code_verifier": {"description": "The PKCE code verifier for the authorization request", "type": "string"} }, "required": ["grant_type", "code", "redirect_uri"] }, "TokenTypeHint": { "description": "A hint about the type of token being revoked", "x-enumNames": ["ACCESS_TOKEN", "REFRESH_TOKEN"], "x-enumDescriptions": ["An OAuth2 access token", "An OAuth2 refresh token"], "enum": ["access_token", "refresh_token"], "type": "string" }, "PremiumCurrency": {"type": "string", "pattern": "^[A-Z]{3}$"}, "SelfServeRefundIneligibilityReason": { "type": "string", "enum": ["no_refundable_purchase", "outside_refund_window", "cooldown_active", "feature_unavailable"] }, "PremiumSubscriptionProvider": {"type": "string", "enum": ["stripe", "app_store", "google_play"]}, "PremiumStoreSubscriptionState": { "type": "object", "properties": { "provider": { "description": "Store that bills the subscription", "$ref": "#/components/schemas/StoreProvider" }, "purchase_id": { "description": "ID of the store purchase that grants the subscription", "$ref": "#/components/schemas/SnowflakeStringType" }, "slot": {"description": "Fluxer subscription product", "$ref": "#/components/schemas/StoreSubscriptionSlot"}, "billing_cycle": { "description": "Billing cycle of the subscription", "$ref": "#/components/schemas/StoreBillingCycle" }, "state": { "description": "Current state of the store subscription", "$ref": "#/components/schemas/StorePurchaseState" }, "expires_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "When the paid period ends" }, "grace_ends_at": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ], "description": "When the billing grace period ends, null outside grace" }, "will_renew": {"type": "boolean", "description": "Whether the subscription renews automatically"}, "manage_url": { "type": "string", "description": "Store page where the subscription can be managed or canceled" }, "environment": { "description": "Whether the subscription is a real purchase or a test purchase", "$ref": "#/components/schemas/StoreEnvironment" } }, "required": [ "provider", "purchase_id", "slot", "billing_cycle", "state", "expires_at", "grace_ends_at", "will_renew", "manage_url", "environment" ], "additionalProperties": false }, "PremiumPricingState": { "type": "object", "properties": { "country_code": { "anyOf": [{"type": "string", "minLength": 2, "maxLength": 2}, {"type": "null"}], "description": "Country code used to resolve localized prices" }, "localized": { "anyOf": [{"$ref": "#/components/schemas/PriceIdsResponse"}, {"type": "null"}], "description": "Localized checkout prices resolved from mirrored billing data" } }, "required": ["country_code", "localized"], "additionalProperties": false }, "PremiumBillingPaymentMethodResponse": { "type": "object", "properties": { "id": {"type": "string"}, "type": {"type": ["string", "null"]}, "card_brand": {"type": ["string", "null"]}, "card_last4": {"type": ["string", "null"]}, "card_exp_month": { "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "card_exp_year": { "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "is_default": {"type": "boolean"} }, "required": ["id", "type", "card_brand", "card_last4", "card_exp_month", "card_exp_year", "is_default"], "additionalProperties": false }, "PremiumBillingInvoiceResponse": { "type": "object", "properties": { "id": {"type": "string"}, "number": {"type": ["string", "null"]}, "amount_due": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, "amount_paid": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, "currency": {"type": "string"}, "status": {"type": ["string", "null"]}, "created_at": {"type": ["string", "null"]}, "paid_at": {"type": ["string", "null"]}, "billing_reason": {"type": ["string", "null"]}, "subscription_id": {"type": ["string", "null"]}, "hosted_invoice_url": {"type": ["string", "null"]}, "invoice_pdf": {"type": ["string", "null"]} }, "required": [ "id", "number", "amount_due", "amount_paid", "currency", "status", "created_at", "paid_at", "billing_reason", "subscription_id", "hosted_invoice_url", "invoice_pdf" ], "additionalProperties": false }, "PremiumBillingSubscriptionResponse": { "type": "object", "properties": { "id": {"type": "string"}, "status": {"type": ["string", "null"]}, "current_period_start": {"type": ["string", "null"]}, "current_period_end": {"type": ["string", "null"]}, "cancel_at_period_end": {"type": "boolean"}, "cancel_at": {"type": ["string", "null"]}, "canceled_at": {"type": ["string", "null"]}, "plan_interval": {"type": ["string", "null"]}, "plan_amount_minor": { "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}] }, "plan_currency": {"type": ["string", "null"]}, "default_payment_method_id": {"type": ["string", "null"]} }, "required": [ "id", "status", "current_period_start", "current_period_end", "cancel_at_period_end", "cancel_at", "canceled_at", "plan_interval", "plan_amount_minor", "plan_currency", "default_payment_method_id" ], "additionalProperties": false }, "ListPriceSwitchState": { "type": "object", "properties": { "available": { "type": "boolean", "description": "Whether the authenticated user can move their subscription down to the current list price right now" }, "reason": { "anyOf": [{"$ref": "#/components/schemas/ListPriceSwitchIneligibilityReason"}, {"type": "null"}], "description": "Why the switch is unavailable, when available is false" }, "pending": { "type": "boolean", "description": "Whether a switch to the current list price is already scheduled" }, "current_price_id": { "description": "Stripe price ID the subscription is billed against today", "type": ["string", "null"] }, "current_amount_minor": { "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}], "description": "Amount the subscription is billed today, in the currency minor unit" }, "list_price_id": { "description": "Current list Stripe price ID for the same cycle and currency", "type": ["string", "null"] }, "list_amount_minor": { "anyOf": [{"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"}], "description": "Current list price for the same cycle and currency, in the currency minor unit" }, "currency": { "anyOf": [{"$ref": "#/components/schemas/PremiumCurrency"}, {"type": "null"}], "description": "Currency of both the current and the list amount" }, "billing_cycle": { "anyOf": [{"type": "string", "enum": ["monthly", "yearly"]}, {"type": "null"}], "description": "Recurring billing cycle the switch applies to" }, "effective_at": { "description": "ISO timestamp the switch takes effect, which is the end of the current billing period", "type": ["string", "null"] } }, "required": [ "available", "reason", "pending", "current_price_id", "current_amount_minor", "list_price_id", "list_amount_minor", "currency", "billing_cycle", "effective_at" ], "additionalProperties": false }, "PendingSubscriptionChangeResponse": { "anyOf": [ { "type": "object", "properties": { "schedule_id": { "type": "string", "description": "Stripe subscription schedule ID managing the pending change" }, "change_kind": { "description": "Whether the pending change moves the billing cycle or only the price within the same cycle", "$ref": "#/components/schemas/PendingSubscriptionChangeKind" }, "current_billing_cycle": { "anyOf": [{"type": "string", "enum": ["monthly", "yearly"]}, {"type": "null"}], "description": "Current recurring billing cycle" }, "target_billing_cycle": { "type": "string", "enum": ["monthly", "yearly"], "description": "Recurring billing cycle that will start later" }, "effective_at": {"type": "string", "description": "ISO timestamp when the pending change takes effect"}, "current_price_id": {"description": "Current Stripe price ID, when known", "type": ["string", "null"]}, "target_price_id": { "description": "Stripe price ID that will be used after the change", "type": ["string", "null"] }, "target_amount_minor": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "Unit amount of the price that will be used after the change, in the currency minor unit" }, "currency": { "anyOf": [{"$ref": "#/components/schemas/PremiumCurrency"}, {"type": "null"}], "description": "Currency for the pending change" }, "initial_amount_minor": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "Estimated first invoice amount after one-time credits, in the currency minor unit" }, "recurring_amount_minor": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "Estimated normal recurring amount after the first invoice, in the currency minor unit" }, "credit_amount_minor": { "anyOf": [ {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, {"type": "null"} ], "description": "One-time credit applied to the first invoice, in the currency minor unit" } }, "required": [ "schedule_id", "change_kind", "current_billing_cycle", "target_billing_cycle", "effective_at", "current_price_id", "target_price_id", "target_amount_minor", "currency", "initial_amount_minor", "recurring_amount_minor", "credit_amount_minor" ], "additionalProperties": false }, {"type": "null"} ] }, "UserPremiumTypes": { "description": "Premium subscription type", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["NONE", "SUBSCRIPTION", "LIFETIME"], "x-enumDescriptions": [ "No premium subscription", "Active premium subscription", "Lifetime premium subscription" ] }, "PendingSubscriptionChangeKind": {"type": "string", "enum": ["billing_cycle", "price"]}, "ListPriceSwitchIneligibilityReason": { "type": "string", "enum": [ "feature_unavailable", "no_active_subscription", "subscription_not_chargeable", "unsupported_subscription", "no_list_price", "already_on_list_price", "not_a_price_decrease", "subscription_cancelling", "cancellation_managed_by_schedule", "conflicting_pending_change", "missing_period_end", "switch_in_progress" ] }, "StoreEnvironment": {"type": "string", "enum": ["production", "sandbox"]}, "StorePurchaseState": { "type": "string", "enum": [ "pending", "active", "grace", "billing_retry", "on_hold", "paused", "canceled", "expired", "revoked", "superseded", "purchased", "fulfilled", "refunded" ] }, "StoreBillingCycle": {"type": "string", "enum": ["monthly", "yearly"]}, "StoreSubscriptionSlot": {"type": "string", "enum": ["monthly", "yearly"]}, "StoreProvider": {"type": "string", "enum": ["app_store", "google_play"]}, "StoreBlockingProvider": {"type": "string", "enum": ["stripe", "app_store", "google_play"]}, "StorePurchaseBlockedReason": { "type": "string", "enum": ["lifetime", "existing_subscription", "purchase_disabled"] }, "StoreBillingGooglePlayProductResponse": { "type": "object", "properties": { "product_id": {"type": "string", "description": "Google Play product identifier"}, "base_plan_id": { "description": "Google Play base plan identifier, null for one-time products", "type": ["string", "null"] }, "slot": { "description": "Fluxer product this Google Play product sells", "$ref": "#/components/schemas/StoreSlot" } }, "required": ["product_id", "base_plan_id", "slot"], "additionalProperties": false }, "StoreBillingAppStoreProductResponse": { "type": "object", "properties": { "product_id": {"type": "string", "description": "App Store product identifier"}, "slot": { "description": "Fluxer product this App Store product sells", "$ref": "#/components/schemas/StoreSlot" } }, "required": ["product_id", "slot"], "additionalProperties": false }, "StoreSlot": {"type": "string", "enum": ["monthly", "yearly", "gift_1_month", "gift_1_year"]}, "StorePurchaseResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this store purchase", "$ref": "#/components/schemas/SnowflakeStringType" }, "provider": {"description": "Store the purchase was made in", "$ref": "#/components/schemas/StoreProvider"}, "kind": { "description": "Whether the purchase is a subscription or a gift", "$ref": "#/components/schemas/StorePurchaseKind" }, "slot": {"description": "Fluxer product the purchase is for", "$ref": "#/components/schemas/StoreSlot"}, "product_id": {"type": "string", "description": "Store product identifier"}, "environment": { "description": "Whether the purchase was a real purchase or a test purchase", "$ref": "#/components/schemas/StoreEnvironment" }, "state": {"description": "Current state of the purchase", "$ref": "#/components/schemas/StorePurchaseState"}, "entitled": {"type": "boolean", "description": "Whether the purchase currently grants Plutonium"}, "expires_at": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ], "description": "When the paid period ends, null for gifts" }, "entitled_until": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ], "description": "When access from this purchase ends, including any grace period, null when not entitled" }, "will_renew": { "description": "Whether the subscription renews automatically, null for gifts", "type": ["boolean", "null"] }, "gift_code": { "description": "Gift code minted by a gift purchase, null otherwise", "type": ["string", "null"] }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "When Fluxer first saw the purchase" } }, "required": [ "id", "provider", "kind", "slot", "product_id", "environment", "state", "entitled", "expires_at", "entitled_until", "will_renew", "gift_code", "created_at" ], "additionalProperties": false }, "StorePurchaseKind": {"type": "string", "enum": ["subscription", "gift"]}, "IneligibleSwitchToListPriceResponse": { "type": "object", "properties": { "status": { "type": "string", "const": "ineligible", "description": "The subscription cannot be moved to the current list price" }, "reason": { "description": "Why the switch was refused", "$ref": "#/components/schemas/ListPriceSwitchIneligibilityReason" } }, "required": ["status", "reason"], "additionalProperties": false }, "AlreadyScheduledSwitchToListPriceResponse": { "type": "object", "properties": { "effective_at": {"type": "string", "description": "ISO timestamp the switch takes effect"}, "target_price_id": { "type": "string", "description": "Stripe price ID the subscription will be billed against after the switch" }, "target_amount_minor": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Amount billed after the switch, in the currency minor unit" }, "current_amount_minor": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Amount billed before the switch, in the currency minor unit" }, "currency": {"description": "Currency of both amounts", "$ref": "#/components/schemas/PremiumCurrency"}, "status": { "type": "string", "const": "already_scheduled", "description": "The switch was already scheduled by an earlier request" } }, "required": [ "effective_at", "target_price_id", "target_amount_minor", "current_amount_minor", "currency", "status" ], "additionalProperties": false }, "ScheduledSwitchToListPriceResponse": { "type": "object", "properties": { "effective_at": {"type": "string", "description": "ISO timestamp the switch takes effect"}, "target_price_id": { "type": "string", "description": "Stripe price ID the subscription will be billed against after the switch" }, "target_amount_minor": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Amount billed after the switch, in the currency minor unit" }, "current_amount_minor": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Amount billed before the switch, in the currency minor unit" }, "currency": {"description": "Currency of both amounts", "$ref": "#/components/schemas/PremiumCurrency"}, "status": { "type": "string", "const": "scheduled", "description": "The switch was scheduled for the end of the current billing period" } }, "required": [ "effective_at", "target_price_id", "target_amount_minor", "current_amount_minor", "currency", "status" ], "additionalProperties": false }, "ReadStateResponse": { "type": "object", "properties": { "id": { "description": "The channel ID for this read state", "$ref": "#/components/schemas/SnowflakeStringType" }, "mention_count": { "description": "Number of unread mentions in the channel", "$ref": "#/components/schemas/Int32Type" }, "last_message_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}], "description": "The ID of the last message read" }, "last_pin_timestamp": { "description": "ISO8601 timestamp of the last pinned message acknowledged", "type": ["string", "null"] }, "version": { "description": "Read-state version for ordering updates as a decimal uint64", "$ref": "#/components/schemas/UnsignedInt64StringType" } }, "required": ["id", "mention_count", "last_message_id", "last_pin_timestamp"], "additionalProperties": false }, "UnsignedInt64StringType": {"type": "string", "pattern": "^\\d+$", "format": "int64"}, "GuildDsaReportRequest": { "type": "object", "properties": { "ticket": {"description": "Verification ticket obtained from email verification", "type": "string"}, "additional_info": {"description": "Additional context or details about the report", "type": "string"}, "reporter_full_legal_name": { "description": "Full legal name of the person filing the report", "type": "string" }, "reporter_country_of_residence": { "description": "EU country code of the reporter residence", "x-enumNames": [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE" ], "x-enumDescriptions": [ "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "enum": [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE" ], "type": "string" }, "reporter_fluxer_tag": { "description": "Fluxer tag of the reporter if they have an account", "type": "string", "minLength": 3, "maxLength": 37 }, "report_type": {"type": "string", "const": "guild", "description": "Type of report"}, "category": {"$ref": "#/components/schemas/GuildReportCategory"}, "guild_id": {"description": "ID of the guild being reported", "$ref": "#/components/schemas/SnowflakeType"}, "invite_code": {"description": "Invite code used to access the guild", "type": "string"} }, "required": [ "ticket", "reporter_full_legal_name", "reporter_country_of_residence", "report_type", "category", "guild_id" ] }, "UserDsaReportRequest": { "type": "object", "properties": { "ticket": {"description": "Verification ticket obtained from email verification", "type": "string"}, "additional_info": {"description": "Additional context or details about the report", "type": "string"}, "reporter_full_legal_name": { "description": "Full legal name of the person filing the report", "type": "string" }, "reporter_country_of_residence": { "description": "EU country code of the reporter residence", "x-enumNames": [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE" ], "x-enumDescriptions": [ "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "enum": [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE" ], "type": "string" }, "reporter_fluxer_tag": { "description": "Fluxer tag of the reporter if they have an account", "type": "string", "minLength": 3, "maxLength": 37 }, "report_type": {"type": "string", "const": "user", "description": "Type of report"}, "category": {"$ref": "#/components/schemas/UserReportCategory"}, "user_id": {"description": "ID of the user being reported", "$ref": "#/components/schemas/SnowflakeType"}, "user_tag": { "description": "Fluxer tag of the user being reported", "type": "string", "minLength": 3, "maxLength": 37 } }, "required": ["ticket", "reporter_full_legal_name", "reporter_country_of_residence", "report_type", "category"] }, "MessageDsaReportRequest": { "type": "object", "properties": { "ticket": {"description": "Verification ticket obtained from email verification", "type": "string"}, "additional_info": {"description": "Additional context or details about the report", "type": "string"}, "reporter_full_legal_name": { "description": "Full legal name of the person filing the report", "type": "string" }, "reporter_country_of_residence": { "description": "EU country code of the reporter residence", "x-enumNames": [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE" ], "x-enumDescriptions": [ "Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czechia", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden" ], "enum": [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE" ], "type": "string" }, "reporter_fluxer_tag": { "description": "Fluxer tag of the reporter if they have an account", "type": "string", "minLength": 3, "maxLength": 37 }, "report_type": {"type": "string", "const": "message", "description": "Type of report"}, "category": {"$ref": "#/components/schemas/MessageReportCategory"}, "message_link": {"description": "Link to the message being reported", "type": "string"}, "reported_user_tag": { "description": "Fluxer tag of the user who sent the message", "type": "string", "minLength": 3, "maxLength": 37 } }, "required": [ "ticket", "reporter_full_legal_name", "reporter_country_of_residence", "report_type", "category", "message_link" ] }, "MessageReportCategory": { "description": "Category of the message report", "x-enumNames": [ "harassment", "hate_speech", "violent_content", "spam", "nsfw_violation", "illegal_activity", "doxxing", "self_harm", "child_safety", "malicious_links", "impersonation", "other" ], "x-enumDescriptions": [ "Content that harasses, bullies, or intimidates users", "Content promoting hatred against protected groups", "Content depicting or promoting violence", "Unsolicited bulk messages or promotional content", "Adult content posted outside age-restricted channels", "Content promoting or facilitating illegal activities", "Content revealing private personal information", "Content promoting self-harm or suicide", "Content that endangers minors or depicts child abuse", "Links to malware, phishing, or other malicious sites", "Content falsely claiming to be another person or entity", "Other violations not covered by specific categories" ], "enum": [ "harassment", "hate_speech", "violent_content", "spam", "nsfw_violation", "illegal_activity", "doxxing", "self_harm", "child_safety", "malicious_links", "impersonation", "other" ], "type": "string" }, "UserReportCategory": { "description": "Category of the user report", "x-enumNames": [ "harassment", "hate_speech", "spam_account", "impersonation", "underage_user", "inappropriate_profile", "other" ], "x-enumDescriptions": [ "User engages in harassment, bullying, or intimidation", "User promotes hatred against protected groups", "Account used for spamming or bulk messaging", "User falsely claims to be another person or entity", "User appears to be under the minimum required age", "Profile contains inappropriate or offensive content", "Other violations not covered by specific categories" ], "enum": [ "harassment", "hate_speech", "spam_account", "impersonation", "underage_user", "inappropriate_profile", "other" ], "type": "string" }, "GuildReportCategory": { "description": "Category of the guild report", "x-enumNames": [ "harassment", "hate_speech", "extremist_community", "illegal_activity", "child_safety", "raid_coordination", "spam", "malware_distribution", "other" ], "x-enumDescriptions": [ "Guild facilitates harassment, bullying, or intimidation", "Guild promotes hatred against protected groups", "Guild promotes extremist or terrorist ideologies", "Guild promotes or facilitates illegal activities", "Guild endangers minors or hosts child abuse content", "Guild coordinates attacks on other communities", "Guild used for spamming or bulk messaging", "Guild distributes malware or malicious software", "Other violations not covered by specific categories" ], "enum": [ "harassment", "hate_speech", "extremist_community", "illegal_activity", "child_safety", "raid_coordination", "spam", "malware_distribution", "other" ], "type": "string" }, "MessageSearchResultsResponse": { "type": "object", "properties": { "messages": { "type": "array", "items": { "type": "object", "properties": { "id": { "description": "The unique identifier (snowflake) for this message", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "The ID of the channel this message was sent in", "$ref": "#/components/schemas/SnowflakeStringType" }, "author": { "description": "The author of the message", "$ref": "#/components/schemas/UserPartialResponse" }, "webhook_id": { "description": "The ID of the webhook that sent this message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageType"}, "flags": { "$ref": "#/components/schemas/MessageFlags", "description": "The bitwise flags for this message" }, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "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", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ] }, "users": { "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ] }, "embeds": { "description": "The embeds attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ] }, "attachments": { "description": "The files attached to the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ] }, "stickers": { "description": "The stickers sent with the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ] }, "reactions": { "description": "The reactions on the message", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageReactionResponse"}}, {"type": "null"} ] }, "message_reference": { "description": "Reference data for replies or forwards", "anyOf": [ { "type": "object", "properties": { "channel_id": { "description": "The ID of the channel containing the referenced message", "$ref": "#/components/schemas/SnowflakeStringType" }, "message_id": { "description": "The ID of the referenced message, absent on a channel follow system message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "guild_id": { "description": "The ID of the guild containing the referenced message", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "type"], "additionalProperties": false }, {"type": "null"} ] }, "message_snapshots": { "description": "Snapshots of forwarded messages", "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ] }, "nonce": { "description": "A client-provided value for message deduplication", "type": ["string", "null"] }, "call": { "description": "Call information if this message represents a call", "anyOf": [ { "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", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] } }, "required": ["participants"], "additionalProperties": false }, {"type": "null"} ] } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ], "additionalProperties": false }, "description": "The messages matching the search query" }, "channels": { "type": "array", "items": {"$ref": "#/components/schemas/ChannelResponse"}, "description": "Serialized channels referenced by the returned messages" }, "total": { "description": "The total number of messages matching the search", "$ref": "#/components/schemas/Int32Type" }, "hits_per_page": { "description": "The maximum number of messages returned per page", "$ref": "#/components/schemas/Int32Type" }, "page": {"description": "The current page number", "$ref": "#/components/schemas/Int32Type"}, "cursor": { "description": "Opaque cursor for fetching the next page of results", "type": "array", "items": {"type": "string"} } }, "required": ["messages", "channels", "total", "hits_per_page", "page"], "additionalProperties": false }, "MessageReactionResponse": { "type": "object", "properties": { "emoji": { "type": "object", "properties": { "id": { "description": "The ID of the custom emoji (null for Unicode emojis)", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "name": { "type": "string", "description": "The name of the emoji (or Unicode character for standard emojis)" }, "animated": {"description": "Whether the emoji is animated", "type": ["boolean", "null"]} }, "required": ["name"], "additionalProperties": false, "description": "The emoji used for the reaction" }, "count": { "description": "The total number of times this reaction has been used", "$ref": "#/components/schemas/Int32Type" }, "me": {"description": "Whether the current user has reacted with this emoji", "type": ["boolean", "null"]} }, "required": ["emoji", "count"], "additionalProperties": false }, "MessageSearchScope": { "description": "Search scope for message searches", "x-enumNames": ["current", "open_dms", "all_dms", "all_guilds", "all", "open_dms_and_all_guilds"], "x-enumDescriptions": [ "Search only in the current channel or community context", "Search across all DMs you currently have open", "Search across all DMs you've ever been in", "Search across all Communities you're currently in", "Search across all DMs you've ever been in and all Communities you're currently in", "Search across all DMs you currently have open and all Communities you're currently in" ], "enum": ["current", "open_dms", "all_dms", "all_guilds", "all", "open_dms_and_all_guilds"], "type": "string" }, "MessageSortOrder": { "description": "The order to sort search results", "x-enumNames": ["asc", "desc"], "x-enumDescriptions": [ "Sort in ascending order (oldest/lowest first)", "Sort in descending order (newest/highest first)" ], "enum": ["asc", "desc"], "type": "string" }, "MessageSortField": { "description": "The field to sort search results by", "x-enumNames": ["timestamp", "relevance"], "x-enumDescriptions": ["Sort results by message timestamp", "Sort results by search relevance score"], "enum": ["timestamp", "relevance"], "type": "string" }, "MessageEmbedType": { "description": "The type of generated or supplied embed content, not uploaded attachments", "x-enumNames": ["image", "video", "sound", "article"], "x-enumDescriptions": [ "An image preview from a linked URL or embed object; uploaded images use the image content flag", "A video preview from a linked URL or embed object; uploaded videos use the video content flag", "An audio preview from a linked URL or embed object; uploaded audio uses the sound content flag", "An article or webpage preview with metadata" ], "enum": ["image", "video", "sound", "article"], "type": "string" }, "MessageContentType": { "description": "The type of content contained in a message. Upload filters inspect attachments; embed filters inspect generated or supplied message embeds.", "x-enumNames": ["image", "sound", "video", "file", "sticker", "embed", "link", "poll", "snapshot"], "x-enumDescriptions": [ "Message contains an uploaded image attachment; linked image previews are embeds", "Message contains an uploaded audio attachment; linked audio previews are embeds", "Message contains an uploaded video attachment; linked video previews are embeds", "Message contains at least one uploaded attachment of any type", "Message contains a sticker", "Message contains a generated link preview or rich embed; uploads are attachments", "Message text contains a typed URL link", "Message contains a poll", "Message contains a forwarded message snapshot" ], "enum": ["image", "sound", "video", "file", "sticker", "embed", "link", "poll", "snapshot"], "type": "string" }, "MessageAuthorType": { "description": "The type of author who sent the message", "x-enumNames": ["user", "bot", "webhook"], "x-enumDescriptions": ["A regular user account", "An automated bot account", "A webhook-generated message"], "enum": ["user", "bot", "webhook"], "type": "string" }, "CheckoutPaymentMethodEnum": {"type": "string", "enum": ["card", "pix", "upi"]}, "ExpiredLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "const": "expired", "description": "The preapproval token has expired or is unknown" } }, "required": ["status"], "additionalProperties": false }, "RejectedLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "const": "rejected", "description": "The preapproval failed and the paid checkout should not continue" }, "reason": { "type": "string", "enum": [ "country_mismatch", "missing_customer", "missing_payment_method", "missing_setup_intent", "payment_method_not_card", "unknown" ], "description": "The reason the preapproval was rejected" }, "actual_country": { "description": "The detected card issuing country when available", "anyOf": [{"type": "string", "minLength": 2, "maxLength": 2}, {"type": "null"}] } }, "required": ["status", "reason"], "additionalProperties": false }, "ReadyLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "const": "ready", "description": "The preapproval succeeded and the paid checkout URL is ready" }, "url": {"type": "string", "description": "The URL to redirect to"} }, "required": ["status", "url"], "additionalProperties": false }, "PendingLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "const": "pending", "description": "The preapproval result is still being processed" } }, "required": ["status"], "additionalProperties": false }, "GifCategoryTagResponse": { "type": "object", "properties": { "name": { "type": "string", "description": "Category search term (locale-translated label suitable for display)." }, "src": { "type": "string", "description": "Category preview image URL from the top GIF for this category search term." }, "proxy_src": { "type": "string", "description": "Proxied category preview image URL from the top GIF for this category search term." }, "gif": { "anyOf": [{"$ref": "#/components/schemas/GifResponse"}, {"type": "null"}], "description": "Enriched category preview GIF from the top search result for this category. Null only when no preview GIF was available." } }, "required": ["name", "src", "proxy_src", "gif"], "additionalProperties": false }, "GifResponse": { "type": "object", "properties": { "id": {"type": "string", "description": "Provider-stable identifier for this GIF."}, "slug": { "type": "string", "description": "Canonical slug (or slug-id token) used to share / re-resolve this GIF." }, "provider": { "description": "Name of the provider that produced this GIF.", "type": "string", "minLength": 1, "maxLength": 32 }, "title": {"type": "string", "description": "Title or description of the GIF."}, "url": {"type": "string", "description": "Provider page URL for the GIF."}, "src": { "type": "string", "description": "Direct URL to the GIF media file (best format chosen by the server)." }, "proxy_src": { "type": "string", "description": "Proxied URL to the GIF media file (best format chosen by the server)." }, "width": { "description": "Width of the GIF in pixels (best format).", "$ref": "#/components/schemas/Int32Type" }, "height": { "description": "Height of the GIF in pixels (best format).", "$ref": "#/components/schemas/Int32Type" }, "media": { "type": "object", "propertyNames": {"type": "string"}, "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormat"}, "description": "Map of format-name → media descriptor. Keys are a size prefix (none for full size, \"medium\", \"tiny\", \"nano\") joined to a codec name (\"webm\", \"mp4\", \"webp\", \"gif\"), plus \"loopedmp4\". Video keys are \"webm\" / \"mp4\" / \"loopedmp4\" / \"mediumwebm\" / \"mediummp4\" / \"tinywebm\" / \"tinymp4\" / \"nanowebm\" / \"nanomp4\"; image keys are \"webp\" / \"gif\" / \"mediumwebp\" / \"mediumgif\" / \"tinywebp\" / \"tinygif\" / \"nanowebp\" / \"nanogif\". Every key is optional, so clients must walk a priority list rather than index a single key. Clients that cannot decode the video keys should prefer \"tinywebp\" / \"tinygif\" / \"mediumwebp\" / \"mediumgif\" / \"webp\" / \"gif\" / \"nanowebp\" / \"nanogif\" in that order." }, "placeholder": { "description": "Compact thumbhash placeholder produced by the media proxy. Clients render it as a low-res preview while the GIF loads, and persist it on favourites so the picker has a fallback if the source URL later disappears.", "type": ["string", "null"] } }, "required": ["id", "slug", "provider", "title", "url", "src", "proxy_src", "width", "height", "media"], "additionalProperties": false }, "GifMediaFormat": { "type": "object", "properties": { "src": {"type": "string", "description": "Direct URL to this format of the GIF media."}, "proxy_src": {"type": "string", "description": "Proxied URL to this format of the GIF media."}, "width": {"description": "Width of this format in pixels.", "$ref": "#/components/schemas/Int32Type"}, "height": {"description": "Height of this format in pixels.", "$ref": "#/components/schemas/Int32Type"} }, "required": ["src", "proxy_src", "width", "height"], "additionalProperties": false }, "ProfileFieldPrivacyFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield controlling who can see the profile timezone", "format": "int32", "x-bitflagValues": [ { "name": "EVERYONE", "value": "1", "description": "Allow anyone who can view the full profile to see this profile field" }, {"name": "FRIENDS", "value": "2", "description": "Allow friends to see this profile field"}, { "name": "MUTUAL_GUILDS", "value": "4", "description": "Allow members from mutual guilds to see this profile field" } ] }, "ChannelOverwriteResponse": { "type": "object", "properties": { "id": { "description": "The unique identifier for the role or user this overwrite applies to", "$ref": "#/components/schemas/SnowflakeStringType" }, "type": {"$ref": "#/components/schemas/ChannelOverwriteType"}, "allow": { "description": "The bitwise value of allowed permissions", "$ref": "#/components/schemas/Permissions" }, "deny": {"description": "The bitwise value of denied permissions", "$ref": "#/components/schemas/Permissions"} }, "required": ["id", "type", "allow", "deny"], "additionalProperties": false }, "ConnectionVisibilityFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield for connection visibility settings", "format": "int32", "x-bitflagValues": [ {"name": "EVERYONE", "value": "1", "description": "Allow anyone to see this connection"}, {"name": "FRIENDS", "value": "2", "description": "Allow friends to see this connection"}, { "name": "MUTUAL_GUILDS", "value": "4", "description": "Allow members from mutual guilds to see this connection" } ] }, "ResolvedGifEntrySchema": { "type": "object", "properties": { "url": {"type": "string", "description": "Original GIF URL"}, "proxy_url": {"type": "string", "description": "Signed media proxy URL for the GIF"}, "width": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Width of the GIF in pixels (0 if unknown)" }, "height": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Height of the GIF in pixels (0 if unknown)" }, "media": { "default": {}, "description": "Provider-issued format-name → media descriptor map (mirrors GifResponse.media). Empty when the URL is not recognizable as belonging to any registered GIF provider.", "type": "object", "propertyNames": {"type": "string"}, "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormat"} }, "content_type": { "default": "", "description": "MIME type of the primary media (top-level url). Empty string means \"unknown / image/gif\" — clients should treat it as image/gif for backward compat.", "type": "string" }, "placeholder": { "description": "Compact thumbhash placeholder produced by the media proxy. Persisted with the favorite so the picker can show a low-res preview while the GIF loads, and a fallback if the source URL later disappears.", "type": ["string", "null"] } }, "required": ["url", "proxy_url", "width", "height", "media", "content_type"], "additionalProperties": false }, "GiftCodeMetadataResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique gift code string"}, "duration_type": { "description": "Duration unit for the gift entitlement", "$ref": "#/components/schemas/GiftCodeDurationTypeSchema" }, "duration_quantity": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Duration quantity for the selected duration unit" }, "created_by": { "description": "The user who created the gift code", "$ref": "#/components/schemas/UserPartialResponse" }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", "description": "Timestamp when the gift code was created" }, "redeemed_at": { "description": "Timestamp when the gift code was redeemed", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "redeemed_by": { "description": "The user who redeemed the gift code", "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}] } }, "required": ["code", "duration_type", "duration_quantity", "created_by", "created_at"], "additionalProperties": false }, "UserNotificationSettings": { "description": "Notification level preference", "type": "integer", "enum": [0, 1, 2, 3], "format": "int32", "x-enumNames": ["ALL_MESSAGES", "ONLY_MENTIONS", "NO_MESSAGES", "INHERIT"], "x-enumDescriptions": [ "Receive notifications for all messages", "Only receive notifications for mentions", "Do not receive any notifications", "Inherit notification settings from parent" ] }, "UserNotificationSettingsInput": { "description": "Notification level preference", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["ALL_MESSAGES", "ONLY_MENTIONS", "NO_MESSAGES", "INHERIT"], "x-enumDescriptions": [ "Receive notifications for all messages", "Only receive notifications for mentions", "Do not receive any notifications", "Inherit notification settings from parent" ], "enum": [0, 1, 2, 3] }, "HarvestStatus": { "description": "Current status of the harvest request", "x-enumNames": ["pending", "processing", "completed", "failed"], "x-enumDescriptions": [ "The harvest job is waiting to be processed", "The harvest job is currently being processed", "The harvest job has finished successfully", "The harvest job encountered an error and could not complete" ], "enum": ["pending", "processing", "completed", "failed"], "type": "string" }, "BulkDeleteSelfMessagesGuildFilterMode": { "description": "How the guild filter list is interpreted when include_guilds is true.", "x-enumNames": ["Exclude", "Include Only"], "x-enumDescriptions": [ "Apply to every guild except those listed in excluded_guild_ids.", "Apply only to the guilds listed in included_guild_ids; all other guilds are left untouched." ], "enum": ["exclude", "include_only"], "type": "string" }, "BulkDeleteSelfMessagesScope": { "description": "Which set of contexts the deletion targets", "x-enumNames": ["Selected", "Inaccessible Only"], "x-enumDescriptions": [ "Delete messages matching the explicit include_* toggles and excluded_guild_ids.", "Delete only messages in places the caller no longer has access to (guilds left or removed from, group DMs left). Direct messages are not affected by this mode since the caller can always reopen them." ], "enum": ["selected", "inaccessible_only"], "type": "string" }, "GifMediaFormatInput": { "type": "object", "properties": { "src": {"type": "string", "description": "Direct URL to this format of the GIF media."}, "proxy_src": {"type": "string", "description": "Proxied URL to this format of the GIF media."}, "width": {"description": "Width of this format in pixels.", "$ref": "#/components/schemas/Int32Type"}, "height": {"description": "Height of this format in pixels.", "$ref": "#/components/schemas/Int32Type"} }, "required": ["src", "proxy_src", "width", "height"] }, "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", "type": ["string", "null"]}, "rp_id": {"type": "string", "description": "Relying party ID the passkey belongs to"} }, "required": ["id", "name", "created_at", "last_used_at", "rp_id"], "additionalProperties": false }, "WebAuthnRegistrationResponse": { "type": "object", "properties": { "id": {"type": "string"}, "rawId": {"type": "string"}, "type": {"type": "string", "const": "public-key"}, "authenticatorAttachment": {"type": "string", "enum": ["cross-platform", "platform"]}, "clientExtensionResults": { "type": "object", "properties": { "appid": {"type": "boolean"}, "credProps": {"type": "object", "properties": {"rk": {"type": "boolean"}}, "additionalProperties": {}}, "hmacCreateSecret": {"type": "boolean"} }, "additionalProperties": {} }, "response": { "type": "object", "properties": { "clientDataJSON": {"type": "string"}, "attestationObject": {"type": "string"}, "authenticatorData": {"type": "string"}, "transports": { "type": "array", "items": {"type": "string", "enum": ["ble", "cable", "hybrid", "internal", "nfc", "smart-card", "usb"]} }, "publicKeyAlgorithm": {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}, "publicKey": {"type": "string"} }, "required": ["clientDataJSON", "attestationObject"], "additionalProperties": {} } }, "required": ["id", "rawId", "type", "clientExtensionResults", "response"], "additionalProperties": {} }, "UserAuthenticatorTypes": { "description": "Authenticator type", "type": "integer", "enum": [0, 2], "format": "int32", "x-enumNames": ["TOTP", "WEBAUTHN"], "x-enumDescriptions": ["Time-based one-time password authenticator", "WebAuthn authenticator"] }, "HexString32Type": {"type": "string", "pattern": "^[a-f0-9]{32}$"}, "CompletedPasskeyBridgeSudoRedeemResponse": { "type": "object", "properties": { "status": {"type": "string", "const": "completed", "description": "The ceremony finished"}, "sudo_token": {"type": "string", "description": "Sudo mode token"} }, "required": ["status", "sudo_token"], "additionalProperties": false }, "CancelledPasskeyBridgeSudoRedeemResponse": { "type": "object", "properties": {"status": {"type": "string", "const": "cancelled", "description": "The ceremony was cancelled"}}, "required": ["status"], "additionalProperties": false }, "RelationshipTypesInput": { "description": "Relationship type", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["FRIEND", "BLOCKED", "INCOMING_REQUEST", "OUTGOING_REQUEST"], "x-enumDescriptions": [ "User is a friend", "User is blocked", "Pending incoming friend request", "Pending outgoing friend request" ], "enum": [1, 2, 3, 4] }, "RelationshipTypes": { "description": "Relationship type", "type": "integer", "enum": [1, 2, 3, 4], "format": "int32", "x-enumNames": ["FRIEND", "BLOCKED", "INCOMING_REQUEST", "OUTGOING_REQUEST"], "x-enumDescriptions": [ "User is a friend", "User is blocked", "Pending incoming friend request", "Pending outgoing friend request" ] }, "SavedMessageEntryResponse": { "type": "object", "properties": { "id": { "description": "Unique identifier for the saved message entry", "$ref": "#/components/schemas/SnowflakeStringType" }, "channel_id": { "description": "ID of the channel containing the message", "$ref": "#/components/schemas/SnowflakeStringType" }, "message_id": {"description": "ID of the saved message", "$ref": "#/components/schemas/SnowflakeStringType"}, "status": { "description": "Availability status of the saved message", "$ref": "#/components/schemas/SavedMessageStatusSchema" }, "message": { "anyOf": [{"$ref": "#/components/schemas/MessageResponseSchema"}, {"type": "null"}], "description": "The message content if available" } }, "required": ["id", "channel_id", "message_id", "status", "message"], "additionalProperties": false }, "SavedMessageStatusSchema": { "description": "Availability status of a saved message", "x-enumNames": ["Available", "Missing Permissions"], "x-enumDescriptions": [ "The saved message is available and can be retrieved", "The user no longer has permission to view the message" ], "enum": ["available", "missing_permissions"], "type": "string" }, "ProfilePrivacyLevel": { "description": "Profile privacy visibility level", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["ALL_GUILDS", "SMALL_GUILDS_ONLY", "FRIENDS_ONLY"], "x-enumDescriptions": [ "Profile visible to friends and members of any shared guild", "Profile visible to friends and members of shared guilds with at most 200 members", "Profile visible only to friends" ] }, "SensitiveMediaGuildFilterLevel": { "description": "Sensitive media filter level for community channels", "type": "integer", "enum": [0, 1], "format": "int32", "x-enumNames": ["SHOW", "BLUR"], "x-enumDescriptions": [ "Show sensitive media without any filter", "Blur sensitive media until manually revealed" ] }, "SensitiveMediaFilterLevel": { "description": "Sensitive media filter level", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["SHOW", "BLUR", "BLOCK"], "x-enumDescriptions": [ "Show sensitive media without any filter", "Blur sensitive media until manually revealed", "Completely hide sensitive media" ] }, "TimeFormatTypes": { "description": "Time format preference", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["AUTO", "TWELVE_HOUR", "TWENTY_FOUR_HOUR"], "x-enumDescriptions": [ "Automatically detect time format based on locale", "Use 12-hour time format (AM/PM)", "Use 24-hour time format" ] }, "CustomStatusResponse": { "type": "object", "properties": { "text": {"description": "The custom status message text", "type": ["string", "null"]}, "expires_at": { "description": "ISO8601 timestamp of when the custom status expires", "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" }, {"type": "null"} ] }, "emoji_id": { "description": "The ID of the custom emoji used in the status", "anyOf": [{"$ref": "#/components/schemas/SnowflakeStringType"}, {"type": "null"}] }, "emoji_name": {"description": "The name of the emoji used in the status", "type": ["string", "null"]}, "emoji_animated": {"type": "boolean", "description": "Whether the status emoji is animated"} }, "required": ["emoji_animated"], "additionalProperties": false }, "GuildFolderIconType": { "description": "Guild folder icon", "x-enumNames": ["FOLDER", "STAR", "HEART", "BOOKMARK", "GAME_CONTROLLER", "SHIELD", "MUSIC_NOTE"], "x-enumDescriptions": [ "Classic folder icon", "Star icon", "Heart icon", "Bookmark icon", "Game controller icon", "Shield icon", "Music note icon" ], "enum": ["folder", "star", "heart", "bookmark", "game_controller", "shield", "music_note"], "type": "string" }, "GuildFolderFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield for guild folder display behaviour", "format": "int32", "x-bitflagValues": [ { "name": "SHOW_ICON_WHEN_COLLAPSED", "value": "1", "description": "Show the selected icon instead of guild previews when the folder is collapsed" } ] }, "SignedInt32Type": {"type": "integer", "minimum": -2147483648, "maximum": 2147483647, "format": "int32"}, "GroupDmAddPermissionFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield for group DM add permissions", "format": "int32", "x-bitflagValues": [ { "name": "FRIENDS_OF_FRIENDS", "value": "1", "description": "Allow friends of friends to add user to group DMs" }, {"name": "GUILD_MEMBERS", "value": "2", "description": "Allow guild members to add user to group DMs"}, {"name": "EVERYONE", "value": "4", "description": "Allow everyone to add user to group DMs"}, {"name": "FRIENDS_ONLY", "value": "8", "description": "Allow only friends to add user to group DMs"}, {"name": "NOBODY", "value": "16", "description": "Block everyone from adding user to group DMs"} ] }, "IncomingCallFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield for incoming call notification settings", "format": "int32", "x-bitflagValues": [ {"name": "FRIENDS_OF_FRIENDS", "value": "1", "description": "Allow incoming calls from friends of friends"}, {"name": "GUILD_MEMBERS", "value": "2", "description": "Allow incoming calls from guild members"}, {"name": "EVERYONE", "value": "4", "description": "Allow incoming calls from everyone"}, {"name": "FRIENDS_ONLY", "value": "8", "description": "Allow incoming calls only from friends"}, {"name": "NOBODY", "value": "16", "description": "Block all incoming calls"}, { "name": "SILENT_EVERYONE", "value": "32", "description": "Allow calls from everyone but receive them silently" } ] }, "FriendSourceFlags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "description": "Bitfield for friend request source permissions", "format": "int32", "x-bitflagValues": [ { "name": "MUTUAL_FRIENDS", "value": "1", "description": "Allow friend requests from users who share mutual friends" }, {"name": "MUTUAL_GUILDS", "value": "2", "description": "Allow friend requests from users in mutual guilds"}, { "name": "NO_RELATION", "value": "4", "description": "Allow friend requests from users with no existing relation" } ] }, "RenderSpoilers": { "description": "Spoiler rendering preference", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["ALWAYS", "ON_CLICK", "IF_MODERATOR"], "x-enumDescriptions": [ "Always reveal spoiler content", "Reveal spoiler content on click", "Reveal spoiler content if moderator" ] }, "StickerAnimationOptions": { "description": "Sticker animation preference", "type": "integer", "enum": [0, 1, 2], "format": "int32", "x-enumNames": ["ALWAYS_ANIMATE", "ANIMATE_ON_INTERACTION", "NEVER_ANIMATE"], "x-enumDescriptions": [ "Always animate stickers", "Animate stickers on hover/interaction", "Never animate stickers" ] }, "ProfilePrivacyLevelInput": { "description": "Profile privacy visibility level", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["ALL_GUILDS", "SMALL_GUILDS_ONLY", "FRIENDS_ONLY"], "x-enumDescriptions": [ "Profile visible to friends and members of any shared guild", "Profile visible to friends and members of shared guilds with at most 200 members", "Profile visible only to friends" ], "enum": [0, 1, 2] }, "SensitiveMediaGuildFilterLevelInput": { "description": "Sensitive media filter level for community channels", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["SHOW", "BLUR"], "x-enumDescriptions": [ "Show sensitive media without any filter", "Blur sensitive media until manually revealed" ], "enum": [0, 1] }, "SensitiveMediaFilterLevelInput": { "description": "Sensitive media filter level", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["SHOW", "BLUR", "BLOCK"], "x-enumDescriptions": [ "Show sensitive media without any filter", "Blur sensitive media until manually revealed", "Completely hide sensitive media" ], "enum": [0, 1, 2] }, "TimeFormatTypesInput": { "description": "Time format preference", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["AUTO", "TWELVE_HOUR", "TWENTY_FOUR_HOUR"], "x-enumDescriptions": [ "Automatically detect time format based on locale", "Use 12-hour time format (AM/PM)", "Use 24-hour time format" ], "enum": [0, 1, 2] }, "CustomStatusPayload": { "type": "object", "properties": { "text": {"description": "Custom status text (max 128 characters)", "type": ["string", "null"]}, "expires_at": { "description": "When the custom status expires", "anyOf": [ { "anyOf": [ { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?$" }, {"type": "integer", "minimum": 0, "maximum": 8640000000000000} ] }, {"type": "null"} ] }, "emoji_id": { "description": "ID of custom emoji to display", "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}] }, "emoji_name": { "description": "Unicode emoji to display (ignored when emoji_id is provided)", "type": ["string", "null"] } } }, "RenderSpoilersInput": { "description": "Spoiler rendering preference", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["ALWAYS", "ON_CLICK", "IF_MODERATOR"], "x-enumDescriptions": [ "Always reveal spoiler content", "Reveal spoiler content on click", "Reveal spoiler content if moderator" ], "enum": [0, 1, 2] }, "StickerAnimationOptionsInput": { "description": "Sticker animation preference", "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "x-enumNames": ["ALWAYS_ANIMATE", "ANIMATE_ON_INTERACTION", "NEVER_ANIMATE"], "x-enumDescriptions": [ "Always animate stickers", "Animate stickers on hover/interaction", "Never animate stickers" ], "enum": [0, 1, 2] }, "UserThemeType": { "description": "UI theme preference", "x-enumNames": ["DARK", "DARK_LEGACY", "COAL", "LIGHT", "SYSTEM"], "x-enumDescriptions": [ "Dark colour theme", "Legacy dark colour theme (original neutral grey palette)", "Coal/darker colour theme", "Light colour theme", "Follow system colour preference" ], "enum": ["dark", "dark_legacy", "coal", "light", "system"], "type": "string" }, "UserStatusType": { "description": "User online status", "x-enumNames": ["ONLINE", "DND", "IDLE", "INVISIBLE"], "x-enumDescriptions": [ "User is online and available", "Do not disturb – notifications are suppressed", "User is away or inactive", "User appears offline but can still receive messages" ], "enum": ["online", "dnd", "idle", "invisible"], "type": "string" }, "HexString16Type": {"type": "string", "pattern": "^[a-f0-9]{16}$"}, "Int64Type": { "anyOf": [{"type": "string"}, {"type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991}], "format": "int64" } }, "securitySchemes": { "botToken": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "Bot token: `Authorization: Bot `. This is the primary authentication method for bot applications." }, "oauth2Token": { "type": "oauth2", "description": "OAuth2 access token: `Authorization: Bearer `.", "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 `. Use `oauth2Token` when a route requires OAuth2 scopes." }, "sessionToken": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "User session token from login: `Authorization: ` (no prefix). Prefer a bot account over user tokens where possible." }, "adminApiKey": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "Admin API key: `Authorization: Admin `. Only valid for `/admin/*` endpoints." } } }, "tags": [ {"name": "Auth", "description": "Authentication and session management"}, {"name": "Users", "description": "User accounts and profiles"}, {"name": "Guilds", "description": "Guild management"}, {"name": "Channels", "description": "Channel management and messaging"}, {"name": "Invites", "description": "Guild invitations"}, {"name": "Webhooks", "description": "Webhook management"}, {"name": "OAuth2", "description": "OAuth2 applications and authorization"}, {"name": "Gateway", "description": "WebSocket gateway information"}, {"name": "Search", "description": "Search functionality"}, {"name": "Read States", "description": "Message read state tracking"}, {"name": "Saved Media", "description": "User saved media management"}, {"name": "Themes", "description": "User interface themes"}, {"name": "Reports", "description": "Content reporting"}, {"name": "Instance", "description": "Instance configuration and info"}, {"name": "Billing", "description": "Subscription and payment management via Stripe"}, {"name": "Premium", "description": "Premium subscription features and benefits"}, {"name": "Gifts", "description": "Gift codes and redemption"}, {"name": "Messages"}, {"name": "Connections"}, {"name": "Donations"}, {"name": "Experiments"}, {"name": "Geolocation"}, {"name": "GIFs"}, {"name": "GIFs (Deprecated)"}, {"name": "Discovery"}, {"name": "Emojis"}, {"name": "Stickers"}, {"name": "Debug"}, {"name": "Voice"} ] }