{ "openapi": "3.1.0", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get instance discovery document"}}, "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": "List current user applications", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List current user applications"}}, "description": "Lists all OAuth2 applications registered by the authenticated user. Includes application credentials and metadata. Requires valid OAuth2 access token.", "security": [{"botToken": []}] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Authorize IP address"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Revert email change"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Forgot password"}}, "description": "Initiate password reset process by email. A password reset link will be sent to the user's email address. Requires CAPTCHA verification.", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Complete handoff"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Initiate handoff"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Cancel handoff"}}, "description": "Cancel an ongoing handoff session. The handoff code will no longer be valid for authentication.", "parameters": [ {"name": "code", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get handoff info"}}, "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": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get handoff status"}}, "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": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get handoff status with secret"}}, "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": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Poll IP authorization"}}, "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": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend IP authorization"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Login account"}}, "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.", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Login with TOTP"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Login with WebAuthn MFA"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get WebAuthn MFA options"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Logout account"}}, "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/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Register account"}}, "description": "Create a new user account with email and password. Requires CAPTCHA verification. User account is created but must verify email before logging in.", "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reset password"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Validate reset password token"}}, "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": {"type": "string"}, "description": "The token"} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List auth sessions"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Logout all sessions"}}, "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/LogoutAuthSessionsRequest"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Complete SSO"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Start SSO"}}, "description": "Initiate a new Single Sign-On (SSO) session. Returns a session URL to be completed with SSO provider credentials.", "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get SSO status"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get username suggestions"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify email"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend verification email"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Authenticate with WebAuthn"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get WebAuthn authentication options"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List messages from multiple channels"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Fetch a channel"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update channel settings"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelUpdateRequest"}}} } }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete a channel"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "silent", "in": "query", "required": false, "schema": { "type": "string", "description": "Whether to suppress the system message when leaving a group DM" } }, { "name": "delete_messages", "in": "query", "required": false, "schema": { "type": "string", "description": "When leaving a group DM, also delete all messages the caller has sent in the channel" } } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request presigned attachment upload URLs"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Finalize multipart attachment uploads"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get call eligibility status"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update call region"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "End call session"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Ring call recipients"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Stop ringing call recipients"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CallRingBodySchema"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create channel invite"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List channel invites"}}, "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": {"$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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List messages in a channel"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "limit", "in": "query", "required": false, "schema": {"type": "string", "description": "Number of messages to return (1-100, default 50)"} }, { "name": "before", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"} }, {"name": "after", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}}, {"name": "around", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Send a message"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Clear channel read state"}}, "description": "Clears all read state and acknowledgement records for a channel, marking all messages as unread. Returns 204 No Content on success.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk delete messages"}}, "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": {"$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": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk delete my messages in channel"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List pinned messages"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 50, "format": "int32", "description": "Maximum number of pinned messages to return (1-50)" } }, { "name": "before", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time", "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": { "type": "object", "properties": {"deleted_count": {"type": "integer"}}, "required": ["deleted_count"] } } } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Purge all messages in personal notes"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Fetch a message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Edit a message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete a message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Acknowledge a message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete a message attachment"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, { "name": "attachment_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The attachment id" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create meme from message"}}, "description": "Saves a message attachment as a favorite meme.", "security": [{"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove all reactions from message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List users who reacted with emoji"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, {"name": "emoji", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The emoji"}, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "format": "int32", "description": "Maximum number of users to return (1-100)" } }, {"name": "after", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove all reactions with emoji"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, {"name": "emoji", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The emoji"} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Add reaction to message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, {"name": "emoji", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The emoji"}, { "name": "session_id", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove own reaction from message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, {"name": "emoji", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The emoji"}, { "name": "session_id", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List users who reacted with emoji"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, {"name": "emoji", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The emoji"}, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "format": "int32", "description": "Maximum number of users to return (1-100)" } }, {"name": "after", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove reaction from message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" }, {"name": "emoji", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The emoji"}, { "name": "target_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The target id" }, { "name": "session_id", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Set permission overwrite for channel"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "overwrite_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The overwrite id" } ], "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete permission overwrite"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "overwrite_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The overwrite id" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Acknowledge new pin notifications"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Pin a message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Unpin a message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Add recipient to group DM"}}, "description": "Adds a user to a group direct message channel. The requesting user must be a member of the group DM. Requires CAPTCHA verification.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "channel_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove recipient from group DM"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the channel" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" }, { "name": "silent", "in": "query", "required": false, "schema": { "type": "string", "description": "Whether to suppress the system message when leaving a group DM" } }, { "name": "delete_messages", "in": "query", "required": false, "schema": { "type": "string", "description": "When leaving a group DM, also delete all messages the caller has sent in the channel" } } ], "requestBody": { "required": true, "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": {"type": "array", "items": {"$ref": "#/components/schemas/RtcRegionResponse"}} } } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List RTC regions"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Fetch slowmode state"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Indicate typing activity"}}, "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": {"$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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List channel webhooks"}}, "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": {"$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/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create webhook"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List discovery categories"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Search discoverable guilds"}}, "description": "Search for guilds listed in the discovery directory.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "query", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 100, "description": "Search query"} }, { "name": "category", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 8, "format": "int32", "description": "Filter by category" } }, { "name": "language", "in": "query", "required": false, "schema": {"type": "string", "description": "Filter by primary community language"} }, { "name": "tag", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 30, "description": "Filter by a specific custom tag"} }, { "name": "sort_by", "in": "query", "required": false, "schema": { "enum": ["member_count", "online_count", "relevance"], "type": "string", "x-enumNames": ["member_count", "online_count", "relevance"], "description": "Sort order" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 48, "format": "int32", "description": "Number of results to return" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Join a discoverable guild"}}, "description": "Join a guild that is listed in discovery without needing an invite.", "security": [{"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ] } }, "/dl/desktop/{channel}/{plat}/{arch}/latest": { "get": { "operationId": "get_latest_desktop_version", "summary": "Get latest desktop version", "tags": ["Downloads"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VersionInfoResponse"}}} }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get latest desktop version"}}, "description": "Returns metadata for the latest desktop version including download URLs and SHA-256 checksums for all available formats. Pass ?test=1 to resolve against unreleased test builds.", "parameters": [ { "name": "channel", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The channel" }, {"name": "plat", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The plat"}, {"name": "arch", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The arch"}, { "name": "test", "in": "query", "required": false, "schema": { "type": "string", "description": "When set to 1/true, resolve against the desktop-test/ bucket prefix instead of desktop/." } } ] } }, "/dl/desktop/{channel}/{plat}/{arch}/latest/{format}": { "get": { "operationId": "download_latest_desktop_version", "summary": "Download latest desktop version", "tags": ["Downloads"], "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Download latest desktop version"}}, "description": "Streams the latest available desktop application version for the specified platform and architecture. Pass ?test=1 to download an unreleased test build.", "parameters": [ { "name": "channel", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The channel" }, {"name": "plat", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The plat"}, {"name": "arch", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The arch"}, {"name": "format", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The format"}, { "name": "test", "in": "query", "required": false, "schema": { "type": "string", "description": "When set to 1/true, resolve against the desktop-test/ bucket prefix instead of desktop/." } } ] } }, "/dl/desktop/{channel}/{plat}/{arch}/versions": { "get": { "operationId": "list_desktop_versions", "summary": "List desktop versions", "tags": ["Downloads"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DesktopVersionsResponse"}}} }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List desktop versions"}}, "description": "Lists available desktop versions with pagination for the specified platform and architecture.", "parameters": [ { "name": "channel", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The channel" }, {"name": "plat", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The plat"}, {"name": "arch", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The arch"}, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "format": "int32", "description": "Maximum number of versions to return" } }, { "name": "before", "in": "query", "required": false, "schema": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$", "description": "Return versions before this version" } }, { "name": "after", "in": "query", "required": false, "schema": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$", "description": "Return versions after this version" } }, { "name": "test", "in": "query", "required": false, "schema": { "type": "string", "description": "When set to 1/true, resolve against the desktop-test/ bucket prefix instead of desktop/." } } ] } }, "/dl/desktop/{channel}/{plat}/{arch}/{version}/{format}": { "get": { "operationId": "download_desktop_version", "summary": "Download desktop version", "tags": ["Downloads"], "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Download desktop version"}}, "description": "Streams a specific desktop application version for the given platform and architecture. Pass ?test=1 to download an unreleased test build.", "parameters": [ { "name": "channel", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The channel" }, {"name": "plat", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The plat"}, {"name": "arch", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The arch"}, { "name": "version", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The version" }, {"name": "format", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The format"}, { "name": "test", "in": "query", "required": false, "schema": { "type": "string", "description": "When set to 1/true, resolve against the desktop-test/ bucket prefix instead of desktop/." } } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create donation checkout session"}}, "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": "Manage donation subscription", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Manage donation subscription"}}, "description": "Validates the magic link token and redirects to Stripe billing portal.", "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string", "minLength": 64, "maxLength": 64, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request donation management link"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get emoji metadata"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the emoji" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get gateway information"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get featured GIFs"}}, "description": "Retrieves currently featured GIFs and category tags from the active provider.", "security": [{"sessionToken": []}], "parameters": [ {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Register a GIF share"}}, "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": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Search GIFs"}}, "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": {"type": "string", "description": "The search query"} }, {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/gifs/suggest": { "get": { "operationId": "get_gifs_search_suggestions", "summary": "Get GIF search suggestions", "tags": ["GIFs"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "string"}}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get GIF search suggestions"}}, "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": {"type": "string", "description": "The search query"} }, {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/gifs/trending": { "get": { "operationId": "get_trending_gifs", "summary": "Get trending GIFs", "tags": ["GIFs"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get trending GIFs"}}, "description": "Retrieves trending GIFs from the active provider.", "security": [{"sessionToken": []}], "parameters": [ {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get gift code"}}, "description": "Retrieves information about a gift code, including sender details and premium entitlements.", "parameters": [ {"name": "code", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Redeem gift code"}}, "description": "Redeems a gift code for the authenticated user, applying premium benefits.", "security": [{"sessionToken": []}], "parameters": [ {"name": "code", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create guild"}}, "description": "Only claimed, email-verified non-bot users can create guilds.", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get guild information"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild settings"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild audit logs"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, {"name": "limit", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Int32Type"}}, { "name": "before", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"} }, {"name": "after", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}}, { "name": "user_id", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"} }, { "name": "action_type", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/AuditLogActionType"} } ] } }, "/guilds/{guild_id}/bans": { "get": { "operationId": "list_guild_bans", "summary": "List guild bans", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": {"type": "array", "items": {"$ref": "#/components/schemas/GuildBanResponse"}} } } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild bans"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Ban guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Unban guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild channels"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create guild channel"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update channel positions"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete guild"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Apply for guild discovery"}}, "description": "Submit a discovery application for a guild. Requires MANAGE_GUILD permission.", "security": [{"sessionToken": []}, {"botToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Edit discovery application"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Withdraw discovery application"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get discovery status"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create guild emoji"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild emojis"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk create guild emojis"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Clone guild emoji"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild emoji"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "emoji_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete guild emoji"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "emoji_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the emoji" }, { "name": "purge", "in": "query", "required": false, "schema": {"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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild invites"}}, "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": {"$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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild members"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000, "format": "int32", "description": "Maximum number of members to return (1-1000, default 1)" } }, {"name": "after", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Search guild members"}}, "description": "Search and filter guild members with pagination support.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get current user guild member"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update current user guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get guild member by user ID"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Add role to guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" }, { "name": "role_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" } ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove role from guild member"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "user_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" }, { "name": "role_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" } ] } }, "/guilds/{guild_id}/roles": { "get": { "operationId": "list_guild_roles", "summary": "List guild roles", "tags": ["Guilds"], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild roles"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create guild role"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update role positions"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update role hoist positions"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reset role hoist positions"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild role"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "role_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the role" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete guild role"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "role_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create guild sticker"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild stickers"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk create guild stickers"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Clone guild sticker"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild sticker"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "sticker_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete guild sticker"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "sticker_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the sticker" }, { "name": "purge", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Transfer guild ownership"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildTransferOwnershipRequest"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get guild vanity URL"}}, "description": "Returns the custom invite code for the guild if configured.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild vanity URL"}}, "description": "Requires manage_guild permission. Sets or removes a custom invite code.", "security": [{"botToken": []}, {"sessionToken": []}], "parameters": [ { "name": "guild_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuildVanityURLUpdateRequest"}}} } } }, "/guilds/{guild_id}/webhooks": { "get": { "operationId": "list_guild_webhooks", "summary": "List guild webhooks", "tags": ["Webhooks"], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List guild webhooks"}}, "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": {"$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": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Download data harvest archive"}}, "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": {"type": "string"}, "description": "The harvestId" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get invite information"}}, "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": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Accept invite"}}, "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": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete invite"}}, "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": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get client geolocation"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get featured GIFs (deprecated alias)"}}, "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": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Register a GIF share (deprecated alias)"}}, "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": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Search GIFs (deprecated alias)"}}, "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": {"type": "string", "description": "The search query"} }, {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": {"type": "array", "items": {"type": "string"}}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get GIF search suggestions (deprecated alias)"}}, "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": {"type": "string", "description": "The search query"} }, {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get trending GIFs (deprecated alias)"}}, "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": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get current OAuth2 user"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List user OAuth2 authorizations"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk revoke OAuth2 authorizations"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Revoke OAuth2 authorization"}}, "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": {"type": "string"}, "description": "The applicationId" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create OAuth2 application"}}, "description": "Creates a new bot-backed OAuth2 application (client). Requires CAPTCHA verification. 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get current applications endpoint"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get application"}}, "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": {"type": "string"}, "description": "The id"} ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update application"}}, "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": {"type": "string"}, "description": "The id"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete application"}}, "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": {"type": "string"}, "description": "The id"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update bot profile"}}, "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": {"type": "string"}, "description": "The id"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reset bot token"}}, "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": {"type": "string"}, "description": "The id"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reset client secret"}}, "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": {"type": "string"}, "description": "The id"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get public application"}}, "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": {"type": "string"}, "description": "The id"} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Grant OAuth2 consent"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Introspect OAuth2 token"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Exchange OAuth2 token"}}, "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": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Revoke OAuth2 token"}}, "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"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get OAuth2 user information"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Cancel pending subscription billing cycle change"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Cancel subscription"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Change subscription billing cycle"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get current subscription price"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create customer portal"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "End premium grace period now"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Set premium perks disabled"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get Stripe price IDs"}}, "description": "Retrieves Stripe price IDs for premium subscriptions based on geographic location.", "parameters": [ { "name": "country_code", "in": "query", "required": false, "schema": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reactivate subscription"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get self-serve refund eligibility"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Refund latest purchase"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get premium state"}}, "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": { "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/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Switch subscription to the current list price"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Rejoin visionary guild"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Acknowledge read states"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Mark channels as read"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create DSA report"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Send DSA report email"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify DSA report email"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Report guild"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Report message"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Report user"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Search messages"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get sticker metadata"}}, "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": {"$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": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get stream preview image"}}, "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": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Upload stream preview image"}}, "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": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete stream preview image"}}, "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": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create stream preview upload URL"}}, "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": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update stream region"}}, "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": {"type": "string"}, "description": "The stream key" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create gift checkout session"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create checkout session"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create localized card preapproval session"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Continue localized card preapproval session"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Process Stripe webhook"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get featured GIFs (deprecated alias)"}}, "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": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Register a GIF share (deprecated alias)"}}, "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": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Search GIFs (deprecated alias)"}}, "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": {"type": "string", "description": "The search query"} }, {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": {"type": "array", "items": {"type": "string"}}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get GIF search suggestions (deprecated alias)"}}, "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": {"type": "string", "description": "The search query"} }, {"name": "locale", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": {"type": "array", "items": {"$ref": "#/components/schemas/GifResponse"}}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get trending GIFs (deprecated alias)"}}, "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": {"$ref": "#/components/schemas/Locale"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Debug URL unfurl"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get current user profile"}}, "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 phone, 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update current user profile"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create age verification session"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List user applications"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Forget authorized IPs for current user"}}, "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": true, "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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List private channels"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create private channel"}}, "description": "Creates a new private channel (direct message) between the current user and one or more recipients. Group DM creation requires CAPTCHA verification. 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Preload messages for channels (alternative)"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Pin direct message channel"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Unpin direct message channel"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List user connections"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Initiate connection"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Start Bluesky OAuth flow"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reorder connections"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify and create connection"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update connection"}}, "description": "Updates visibility and sort order settings for an external service connection.", "security": [{"sessionToken": []}], "parameters": [ {"name": "type", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The type"}, { "name": "connection_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The connection id" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete connection"}}, "description": "Removes an external service connection from the authenticated user's profile.", "security": [{"sessionToken": []}], "parameters": [ {"name": "type", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The type"}, { "name": "connection_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The connection id" } ] } }, "/users/@me/connections/{type}/{connection_id}/verify": { "post": { "operationId": "verify_connection", "summary": "Verify connection", "tags": ["Connections"], "responses": { "200": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify connection"}}, "description": "Triggers verification for an external service connection.", "security": [{"sessionToken": []}], "parameters": [ {"name": "type", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The type"}, { "name": "connection_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The connection id" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete current user account"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Disable current user account"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Apply a verified email change"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request replacement email for bounced address"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend replacement email code"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify replacement email for bounced address"}}, "description": "Completes bounced-email recovery by verifying the replacement email code, updating the account email, and clearing email-related suspicious-activity requirements.", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request new email address"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend new email confirmation"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend original email confirmation"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Start email change"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify new email address"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify original email address"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Set the active entrance sound for a scope"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List the user's entrance sound library"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Upload an entrance sound"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Rename an entrance sound"}}, "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": {"type": "string"}, "description": "The sound id" } ], "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete an entrance sound"}}, "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": {"type": "string"}, "description": "The sound id" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resolve GIF URLs to proxy entries"}}, "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": {"type": "array", "items": {"$ref": "#/components/schemas/GiftCodeMetadataResponse"}} } } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List user gifts"}}, "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": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List current user guilds"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"} }, {"name": "after", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}}, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 200, "format": "int32", "description": "Maximum number of guilds to return (1-200)" } }, { "name": "with_counts", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update DM notification settings"}}, "description": "Updates the user's notification settings for direct messages and group DMs. Controls how DM notifications are handled.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Leave guild"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" }, { "name": "delete_messages", "in": "query", "required": false, "schema": { "type": "string", "description": "Also delete every message the caller has authored in the guild before leaving" } } ], "requestBody": { "required": true, "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": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk delete my messages in guild"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update guild settings for user"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the guild" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request data harvest"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request filtered data harvest"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get latest data harvest"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get data harvest status"}}, "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": {"type": "string"}, "description": "The harvestId" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get data harvest download URL"}}, "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": {"type": "string"}, "description": "The harvestId" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List favorite memes"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create meme from URL"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get favorite meme"}}, "description": "Retrieves a specific favorite meme by ID.", "security": [{"sessionToken": []}], "parameters": [ { "name": "meme_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The meme id" } ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update favorite meme"}}, "description": "Updates details of a favorite meme.", "security": [{"sessionToken": []}], "parameters": [ { "name": "meme_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The meme id" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete favorite meme"}}, "description": "Removes a favorite meme from the authenticated user's collection.", "security": [{"sessionToken": []}], "parameters": [ { "name": "meme_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The meme id" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List mentions for current user"}}, "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": {"type": "string", "description": "Maximum number of mentions to return (1-100, default 25)"} }, { "name": "roles", "in": "query", "required": false, "schema": {"type": "string", "description": "Whether to include role mentions"} }, { "name": "everyone", "in": "query", "required": false, "schema": {"type": "string", "description": "Whether to include @everyone mentions"} }, { "name": "guilds", "in": "query", "required": false, "schema": {"type": "string", "description": "Whether to include guild mentions"} }, {"name": "before", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Mark mentions read"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete mention"}}, "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": {"$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": { "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete my messages with optional filters"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Request bulk message deletion"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Cancel bulk message deletion"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get backup codes for multi-factor authentication"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Start backup codes challenge"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Regenerate backup codes with a verified challenge"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend backup codes challenge code"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify backup codes challenge code"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Disable TOTP multi-factor authentication"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Enable TOTP multi-factor authentication"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List WebAuthn credentials"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Register WebAuthn credential"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get WebAuthn registration options"}}, "description": "Generate challenge and options to register a new WebAuthn credential. Requires sudo mode verification.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update WebAuthn credential"}}, "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": {"type": "string"}, "description": "The credential id" } ], "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete WebAuthn credential"}}, "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": {"type": "string"}, "description": "The credential id" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SudoVerificationSchema"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Register mobile push device"}}, "description": "Registers a mobile push device token for APNs, Firebase Cloud Messaging, or UnifiedPush. UnifiedPush registrations include the endpoint URL plus Web Push encryption 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List mobile push devices"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Unregister mobile push device"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete mobile push device"}}, "description": "Deletes a registered mobile push device by device ID.", "security": [{"sessionToken": []}], "parameters": [ { "name": "device_id", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The device id" } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List current user notes"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get note on user"}}, "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": {"type": "string"}, "description": "The target id" } ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Set note on user"}}, "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": {"type": "string"}, "description": "The target id" } ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserNoteUpdateRequest"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Complete password change"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Resend password change verification code"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Start password change"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify password change code"}}, "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/phone/inbound-challenge": { "post": { "operationId": "start_inbound_phone_challenge", "summary": "Start an inbound SMS challenge", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": {"schema": {"$ref": "#/components/schemas/InboundSmsChallengeStartResponse"}} } }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Start an inbound SMS challenge"}}, "description": "For very-high-risk registrations the platform requires the user to text a one-time code to the platform's number, instead of receiving a code from the platform. This endpoint generates the code and the destination number to display.", "security": [{"sessionToken": []}] } }, "/users/@me/phone/send-verification": { "post": { "operationId": "send_phone_verification_code", "summary": "Send phone verification code", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneSendVerificationResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Send phone verification code"}}, "description": "Send a one-time code on the requested channel. Defaults to the first available channel from server policy. Pass channel=\"sms\" to request SMS (only honoured for SMS-allowlisted destinations) or channel=\"inbound_challenge\" to receive challenge details to text in. Expensive outbound destinations always downgrade to an inbound challenge.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneSendVerificationRequest"}}} } } }, "/users/@me/phone/verify": { "post": { "operationId": "verify_phone_code", "summary": "Verify phone code", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneVerifyResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Verify phone code"}}, "description": "Verify a phone number by confirming the SMS verification code. Returns phone verification status.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneVerifyRequest"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Preload messages for channels"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Reset current user premium state"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Rotate a push notification subscription"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Subscribe to push notifications"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List push subscriptions"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Unsubscribe from push notifications"}}, "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": {"type": "string"}, "description": "The subscription id" } ] } }, "/users/@me/relationships": { "get": { "operationId": "list_user_relationships", "summary": "List user relationships", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": {"type": "array", "items": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List user relationships"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Send friend request by tag"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Bulk ignore friend requests"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Send friend request"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Accept or update friend request"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Remove relationship"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update relationship nickname"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the user" } ], "requestBody": { "required": true, "content": { "application/json": {"schema": {"$ref": "#/components/schemas/RelationshipNicknameUpdateRequest"}} } } } }, "/users/@me/required-actions/phone-gate-escape": { "get": { "operationId": "get_phone_gate_escape", "summary": "Preview setting the deferred phone check aside", "tags": ["Users"], "responses": { "200": { "description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneGateEscapePreviewResponse"}}} }, "400": { "description": "Bad Request - The request was malformed or contained invalid data", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "401": { "description": "Unauthorized - Authentication is required or the token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "403": { "description": "Forbidden - You do not have permission to perform this action", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} }, "429": { "description": "Too Many Requests - You are being rate limited", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Preview setting the deferred phone check aside"}}, "description": "Reports whether this account can set a deferred phone verification requirement aside, and which communities would be left if it did. Returns available false with empty lists for any account outside that state.", "security": [{"sessionToken": []}] }, "post": { "operationId": "execute_phone_gate_escape", "summary": "Set the deferred phone check aside", "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Set the deferred phone check aside"}}, "description": "Leaves the communities that trigger the deferred phone verification check and restores the deferral, so the account works normally again. Communities the user owns are kept, and a run that hits the per-call community limit leaves what it can and can be repeated. Returns the updated private user object.", "security": [{"sessionToken": []}], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmptyBodyRequest"}}} } } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List saved messages"}}, "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": { "type": "string", "description": "Maximum number of saved messages to return (1-100, default 25)" } }, {"name": "before", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"}} ] }, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Save message"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Unsave message"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get current user settings"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update current user settings"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update voice activity sharing default and apply to all friends"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "List sudo multi-factor authentication methods"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get sudo WebAuthn authentication options"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Accept updated terms of service and privacy policy"}}, "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": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Create theme"}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Check username tag availability"}}, "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": {"$ref": "#/components/schemas/UsernameType"} }, { "name": "discriminator", "in": "query", "required": true, "schema": {"$ref": "#/components/schemas/DiscriminatorType"} } ] } }, "/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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get user profile"}}, "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": {"type": "string"}, "description": "The target id" }, { "name": "guild_id", "in": "query", "required": false, "schema": {"$ref": "#/components/schemas/SnowflakeType"} }, { "name": "with_mutual_friends", "in": "query", "required": false, "schema": {"type": "string", "description": "Whether to include mutual friends"} }, { "name": "with_mutual_guilds", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get user by ID"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Play an entrance sound in a voice channel"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get webhook"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update webhook"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete webhook"}}, "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": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get webhook with token"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Update webhook with token"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete webhook with token"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Execute webhook"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"}, { "name": "wait", "in": "query", "required": false, "schema": {"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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Execute GitHub webhook"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The 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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Execute Instatus webhook"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"} ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Get webhook message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"}, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Edit webhook message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"}, { "name": "message_id", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the message" } ], "requestBody": { "required": true, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Delete webhook message"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"}, { "name": "message_id", "in": "path", "required": true, "schema": {"$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": {"type": "string"}}}}, "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": { "type": "object", "properties": { "code": {"type": "string", "enum": ["RATE_LIMITED"]}, "message": {"type": "string"}, "retry_after": {"type": "number", "description": "Seconds to wait before retrying"}, "global": {"type": "boolean", "description": "Whether this is a global rate limit"} }, "required": ["code", "message", "retry_after"] } } }, "headers": { "Retry-After": { "description": "Number of seconds to wait before retrying (only on 429)", "schema": {"type": "integer"} }, "X-RateLimit-Limit": { "description": "The number of requests that can be made in the current window", "schema": {"type": "integer"} }, "X-RateLimit-Remaining": { "description": "The number of remaining requests that can be made", "schema": {"type": "integer"} }, "X-RateLimit-Reset": { "description": "Unix timestamp when the rate limit resets", "schema": {"type": "integer"} } } }, "500": { "description": "Internal Server Error - An unexpected error occurred", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, "x-mint": {"metadata": {"title": "Execute Slack webhook"}}, "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": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The ID of the webhook" }, {"name": "token", "in": "path", "required": true, "schema": {"type": "string"}, "description": "The token"} ], "requestBody": { "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SlackWebhookRequest"}}} } } } }, "components": { "schemas": { "WellKnownFluxerResponse": { "type": "object", "properties": { "api_code_version": {"type": "integer", "format": "int53", "description": "Version of the API server code"}, "endpoints": { "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" ], "description": "Endpoint URLs for various services" }, "captcha": { "type": "object", "properties": { "provider": {"type": "string", "description": "Captcha provider name (hcaptcha, turnstile, none)"}, "hcaptcha_site_key": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "hCaptcha site key if using hCaptcha" }, "turnstile_site_key": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Cloudflare Turnstile site key if using Turnstile" } }, "required": ["provider", "hcaptcha_site_key", "turnstile_site_key"], "description": "Captcha configuration" }, "features": { "type": "object", "properties": { "voice_enabled": {"type": "boolean", "description": "Whether voice/video calling is enabled"}, "stripe_enabled": {"type": "boolean", "description": "Whether Stripe payments are enabled"}, "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.)" } }, "required": [ "voice_enabled", "stripe_enabled", "self_hosted", "presigned_attachment_uploads", "emails_enabled" ], "description": "Feature flags for this instance" }, "gif": { "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"], "description": "GIF provider configuration for clients" }, "sso": { "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Display name of the SSO provider" }, "redirect_uri": {"type": "string", "description": "OAuth redirect URI for SSO"} }, "required": ["enabled", "enforced", "display_name", "redirect_uri"], "description": "Single sign-on configuration" }, "registration": { "type": "object", "properties": { "mode": { "enum": ["open", "approval", "closed"], "type": "string", "x-enumNames": ["open", "approval", "closed"], "description": "Public registration mode for this instance" }, "admin_registration_urls_enabled": { "type": "boolean", "description": "Whether admin-issued registration URLs are accepted" } }, "required": ["mode", "admin_registration_urls_enabled"], "description": "Registration policy for this instance" }, "community": { "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The stock community guild ID when single-community mode is enabled" }, "direct_messages_disabled": { "type": "boolean", "description": "Whether direct messages and friend requests are disabled instance-wide" } }, "required": ["single_community", "single_community_guild_id", "direct_messages_disabled"], "description": "Community topology and direct-message policy for this instance" }, "services": { "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"], "description": "Optional third-party service integrations enabled for this instance" }, "limits": { "type": "object", "properties": { "version": {"type": "integer", "enum": [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": { "type": "object", "properties": { "traits": { "type": "array", "items": {"type": "string"}, "description": "Trait filters for this limit rule" }, "guildFeatures": { "type": "array", "items": {"type": "string"}, "description": "Guild feature filters for this limit rule" } }, "description": "Filters that determine when this rule applies" }, "overrides": { "type": "object", "additionalProperties": {"type": "number"}, "description": "Map of limit keys to their override values (differences from defaults)" } }, "required": ["id", "overrides"] }, "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"], "description": "Limit configuration with rules and trait definitions" }, "push": { "type": "object", "properties": { "public_vapid_key": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "VAPID public key for web push notifications" } }, "required": ["public_vapid_key"], "description": "Push notification configuration" }, "app_public": { "type": "object", "properties": { "branding": { "type": "object", "properties": { "product_name": {"type": "string", "description": "Public product name shown by client applications"}, "icon_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional image URL for the full application icon" }, "symbol_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional image URL for the compact application symbol" }, "logo_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional image URL for the application logo" }, "wordmark_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional image URL for the application wordmark" }, "favicon_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional favicon URL for browser metadata" }, "theme_color": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional browser theme color" } }, "required": [ "product_name", "icon_url", "symbol_url", "logo_url", "wordmark_url", "favicon_url", "theme_color" ], "description": "Branding values safe to expose to clients" }, "setup": { "type": "object", "properties": { "configured": { "type": "boolean", "description": "Whether the instance administrator has completed initial setup" }, "admin_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Admin panel URL to continue instance setup" } }, "required": ["configured", "admin_url"], "description": "Initial setup state for self-hosted instances" }, "legal": { "type": "object", "properties": { "terms_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional public terms of service URL for account registration" }, "privacy_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional public privacy policy URL for account registration" } }, "required": ["terms_url", "privacy_url"], "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"], "description": "Public registration field collection policy" } }, "required": ["branding", "setup", "legal", "registration"], "description": "Public application configuration for client-side features" } }, "required": [ "api_code_version", "endpoints", "captcha", "features", "gif", "sso", "registration", "community", "services", "limits", "push", "app_public" ] }, "Error": { "type": "object", "properties": { "code": {"$ref": "#/components/schemas/APIErrorCode"}, "message": {"type": "string", "description": "Human-readable error message"}, "errors": { "type": "array", "description": "Field-specific validation errors", "items": {"$ref": "#/components/schemas/ValidationErrorItem"} } }, "required": ["code", "message"] }, "APIErrorCode": { "type": "string", "enum": [ "ACCESS_DENIED", "BAD_GATEWAY", "BAD_REQUEST", "BLUESKY_OAUTH_AUTHORIZATION_FAILED", "BLUESKY_OAUTH_CALLBACK_FAILED", "BLUESKY_OAUTH_NOT_ENABLED", "BLUESKY_OAUTH_STATE_INVALID", "ACCOUNT_SUSPENDED_PERMANENTLY", "ACCOUNT_SUSPENDED_TEMPORARILY", "ACCOUNT_SUSPICIOUS_ACTIVITY", "ACCOUNT_TOO_NEW_FOR_GUILD", "ACLS_MUST_BE_NON_EMPTY", "ADMIN_API_KEY_NOT_FOUND", "APPLICATION_NOT_OWNED", "ALREADY_FRIENDS", "BOTS_CANNOT_CREATE_GUILDS", "BOTS_CANNOT_SEND_FRIEND_REQUESTS", "BOT_ALREADY_IN_GUILD", "BOT_IS_PRIVATE", "BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED", "BOT_USER_AUTH_SESSION_CREATION_DENIED", "BOT_USER_GENERATION_FAILED", "BOT_USER_NOT_FOUND", "CALL_ALREADY_EXISTS", "CANNOT_EDIT_OTHER_USER_MESSAGE", "CANNOT_EXECUTE_ON_DM", "CANNOT_BLOCK_SYSTEM_USER", "CANNOT_MODIFY_SYSTEM_WEBHOOK", "CANNOT_REDEEM_PLUTONIUM_WITH_VISIONARY", "CANNOT_REPORT_GUILD", "CANNOT_REPORT_OWN_GUILD", "CANNOT_REPORT_OWN_MESSAGE", "CANNOT_REPORT_YOURSELF", "CANNOT_SEND_EMPTY_MESSAGE", "CANNOT_SEND_FRIEND_REQUEST_TO_BLOCKED_USER", "CANNOT_SEND_FRIEND_REQUEST_TO_SELF", "CANNOT_SEND_MESSAGES_IN_NON_TEXT_CHANNEL", "CANNOT_SEND_MESSAGES_TO_USER", "CANNOT_TRANSFER_OWNERSHIP_TO_BOT", "CANNOT_SHRINK_RESERVED_SLOTS", "CAPTCHA_REQUIRED", "COMMUNICATION_DISABLED", "CONNECTION_ALREADY_EXISTS", "CONNECTION_INITIATION_TOKEN_INVALID", "CONNECTION_INVALID_TYPE", "CONNECTION_LIMIT_REACHED", "CONNECTION_NOT_FOUND", "CONNECTION_VERIFICATION_FAILED", "CONFLICT", "CONTENT_BLOCKED", "DELETION_FAILED", "DISCOVERY_ALREADY_APPLIED", "DISCOVERY_APPLICATION_ALREADY_REVIEWED", "DISCOVERY_APPLICATION_NOT_FOUND", "DISCOVERY_DISABLED", "DISCOVERY_INSUFFICIENT_MEMBERS", "DISCOVERY_NOT_DISCOVERABLE", "DISCRIMINATOR_REQUIRED", "EMAIL_SERVICE_NOT_TESTABLE", "EMAIL_VERIFICATION_REQUIRED", "DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED", "FRIEND_REQUEST_EMAIL_VERIFICATION_REQUIRED", "GUILD_CREATION_EMAIL_VERIFICATION_REQUIRED", "GUILD_EMAIL_VERIFICATION_REQUIRED", "MFA_EMAIL_VERIFICATION_REQUIRED", "PROFILE_EMAIL_VERIFICATION_REQUIRED", "PURCHASE_EMAIL_VERIFICATION_REQUIRED", "REACTION_EMAIL_VERIFICATION_REQUIRED", "REPORT_EMAIL_VERIFICATION_REQUIRED", "REGISTRATION_CLOSED", "REGISTRATION_PENDING_APPROVAL", "REGISTRATION_REJECTED", "REGISTRATION_URL_INVALID", "EXPLICIT_CONTENT_CANNOT_BE_SENT", "FEATURE_NOT_AVAILABLE_SELF_HOSTED", "FEATURE_TEMPORARILY_DISABLED", "FILE_SIZE_TOO_LARGE", "FORBIDDEN", "FRIEND_REQUEST_BLOCKED", "GATEWAY_TIMEOUT", "GENERAL_ERROR", "GONE", "GIFT_CODE_ALREADY_REDEEMED", "GUILD_PHONE_VERIFICATION_REQUIRED", "GUILD_TEMPLATE_INVALID", "GUILD_VERIFICATION_REQUIRED", "HANDOFF_CODE_EXPIRED", "HARVEST_EXPIRED", "HARVEST_FAILED", "HARVEST_NOT_READY", "INTERNAL_SERVER_ERROR", "INVALID_ACLS_FORMAT", "INVALID_API_ORIGIN", "INVALID_AUTH_TOKEN", "INVALID_BOT_FLAG", "INVALID_CAPTCHA", "INVALID_CHANNEL_TYPE_FOR_CALL", "INVALID_CHANNEL_TYPE", "INVALID_DSA_REPORT_TARGET", "INVALID_DSA_TICKET", "INVALID_DSA_VERIFICATION_CODE", "INVALID_FLAGS_FORMAT", "INVALID_FORM_BODY", "INVALID_HANDOFF_CODE", "INVALID_PERMISSIONS_INTEGER", "INVALID_PERMISSIONS_NEGATIVE", "INVALID_PHONE_NUMBER", "INVALID_PHONE_VERIFICATION_CODE", "INVALID_REQUEST", "INVALID_STREAM_KEY_FORMAT", "INVALID_STREAM_THUMBNAIL_PAYLOAD", "INVALID_SUSPICIOUS_FLAGS_FORMAT", "INVALID_SYSTEM_FLAG", "INVALID_TIMESTAMP", "INVALID_TOKEN", "INVALID_WEBAUTHN_AUTHENTICATION_COUNTER", "INVALID_WEBAUTHN_CREDENTIAL_COUNTER", "INVALID_WEBAUTHN_CREDENTIAL", "INVALID_WEBAUTHN_PUBLIC_KEY_FORMAT", "INVITES_DISABLED", "IP_AUTHORIZATION_REQUIRED", "IP_AUTHORIZATION_RESEND_COOLDOWN", "IP_AUTHORIZATION_RESEND_LIMIT_EXCEEDED", "GLOBAL_IP_BANNED", "GLOBAL_IP_TEMPORARILY_BANNED", "IP_BAN_DECLINED", "MAX_APPLICATIONS", "MAX_BOOKMARKS", "MAX_CATEGORY_CHANNELS", "MAX_EMOJIS", "MAX_FAVORITE_MEMES", "MAX_FRIENDS", "MAX_GROUP_DM_RECIPIENTS", "MAX_GROUP_DMS", "GROUP_DM_RECIPIENTS_NOT_ADDABLE", "MAX_GUILD_CHANNELS", "MAX_GUILD_MEMBERS", "MAX_GUILD_ROLES", "MAX_GUILDS", "MAX_INVITES", "MAX_REACTIONS", "MAX_STICKERS", "MAX_WEBHOOKS_PER_CHANNEL", "MAX_WEBHOOKS_PER_GUILD", "NCMEC_ALREADY_SUBMITTED", "NCMEC_SUBMISSION_FAILED", "MEDIA_METADATA_ERROR", "METHOD_NOT_ALLOWED", "MISSING_ACCESS", "MISSING_ACL", "MISSING_AUTHORIZATION", "MISSING_OAUTH_SCOPE", "MISSING_PERMISSIONS", "NO_ACTIVE_CALL", "NO_ACTIVE_SUBSCRIPTION", "NOT_FOUND", "NOT_IMPLEMENTED", "NO_PASSKEYS_REGISTERED", "NO_PENDING_DELETION", "NO_USERS_WITH_FLUXERTAG_EXIST", "NOT_A_BOT_APPLICATION", "NOT_FRIENDS_WITH_USER", "NSFW_CONTENT_AGE_RESTRICTED", "PASSKEY_AUTHENTICATION_FAILED", "PHONE_ADD_NOT_ELIGIBLE", "PHONE_ALREADY_USED", "PHONE_COUNTRY_NOT_SUPPORTED", "PHONE_GATE_ESCAPE_UNAVAILABLE", "PHONE_INBOUND_VERIFICATION_REQUIRED", "PHONE_LOOKUP_UNAVAILABLE", "PHONE_NUMBER_NOT_IN_SERVICE", "PHONE_NUMBER_NOT_MOBILE", "PHONE_RATE_LIMIT_EXCEEDED", "PHONE_VERIFICATION_NEEDS_REVIEW", "PHONE_VERIFICATION_REQUIRED", "PREMIUM_PURCHASE_BLOCKED", "PREVIEW_MUST_BE_JPEG", "PROCESSING_FAILED", "RATE_LIMITED", "REPORT_ALREADY_RESOLVED", "REPORT_BANNED", "RESPONSE_VALIDATION_ERROR", "RESOURCE_LOCKED", "SERVICE_UNAVAILABLE", "SESSION_TOKEN_MISMATCH", "SINGLE_COMMUNITY_CANNOT_CREATE_GUILDS", "SINGLE_COMMUNITY_CANNOT_DELETE", "SINGLE_COMMUNITY_CANNOT_LEAVE", "INSTANCE_POLICY_TRANSITION_NOT_ALLOWED", "SLOWMODE_RATE_LIMITED", "SMS_VERIFICATION_UNAVAILABLE", "SSO_REQUIRED", "STREAM_KEY_CHANNEL_MISMATCH", "STREAM_KEY_SCOPE_MISMATCH", "STRIPE_ERROR", "STRIPE_GIFT_REDEMPTION_IN_PROGRESS", "STRIPE_INVALID_PRODUCT", "STRIPE_INVALID_PRODUCT_CONFIGURATION", "STRIPE_NO_ACTIVE_SUBSCRIPTION", "STRIPE_NO_PURCHASE_HISTORY", "STRIPE_REFUND_OUTSIDE_WINDOW", "STRIPE_REFUND_COOLDOWN_ACTIVE", "STRIPE_NO_SUBSCRIPTION", "STRIPE_PAYMENT_NOT_AVAILABLE", "STRIPE_SUBSCRIPTION_ALREADY_CANCELING", "STRIPE_SUBSCRIPTION_NOT_CANCELING", "STRIPE_WEBHOOK_NOT_AVAILABLE", "STRIPE_WEBHOOK_SIGNATURE_INVALID", "STRIPE_WEBHOOK_SIGNATURE_MISSING", "DIRECT_MESSAGES_DISABLED", "DONATION_AMOUNT_INVALID", "DONATION_MAGIC_LINK_EXPIRED", "DONATION_MAGIC_LINK_INVALID", "DONATION_MAGIC_LINK_USED", "SUDO_MODE_REQUIRED", "TAG_ALREADY_TAKEN", "TEMPORARY_INVITE_REQUIRES_PRESENCE", "TEST_HARNESS_DISABLED", "TEST_HARNESS_FORBIDDEN", "TWO_FA_NOT_ENABLED", "TWO_FACTOR_REQUIRED", "UNAUTHORIZED", "UNCLAIMED_ACCOUNT_CANNOT_ACCEPT_FRIEND_REQUESTS", "UNCLAIMED_ACCOUNT_CANNOT_ADD_REACTIONS", "UNCLAIMED_ACCOUNT_CANNOT_CREATE_APPLICATIONS", "UNCLAIMED_ACCOUNT_CANNOT_CREATE_GUILDS", "UNCLAIMED_ACCOUNT_CANNOT_JOIN_GROUP_DMS", "UNCLAIMED_ACCOUNT_CANNOT_JOIN_ONE_ON_ONE_VOICE_CALLS", "UNCLAIMED_ACCOUNT_CANNOT_JOIN_VOICE_CHANNELS", "UNCLAIMED_ACCOUNT_CANNOT_MAKE_PURCHASES", "UNCLAIMED_ACCOUNT_CANNOT_SEND_DIRECT_MESSAGES", "UNCLAIMED_ACCOUNT_CANNOT_SEND_FRIEND_REQUESTS", "UNCLAIMED_ACCOUNT_CANNOT_SEND_MESSAGES", "UNCLAIMED_ACCOUNT_CANNOT_SUBMIT_REPORTS", "UNKNOWN_CHANNEL", "UNKNOWN_EMOJI", "UNKNOWN_FAVORITE_MEME", "UNKNOWN_GIFT_CODE", "UNKNOWN_GUILD", "UNKNOWN_HARVEST", "UNKNOWN_INVITE", "UNKNOWN_MEMBER", "UNKNOWN_MESSAGE", "UNKNOWN_REPORT", "UNKNOWN_ROLE", "UNKNOWN_STICKER", "UNKNOWN_SUSPICIOUS_FLAG", "UNKNOWN_USER_FLAG", "UNKNOWN_USER", "UNKNOWN_VOICE_REGION", "UNKNOWN_VOICE_SERVER", "UNKNOWN_WEBAUTHN_CREDENTIAL", "UNKNOWN_APPLICATION", "UNKNOWN_WEBHOOK", "USERNAME_NOT_AVAILABLE", "UPDATE_FAILED", "USER_BANNED_FROM_GUILD", "USER_IP_BANNED_FROM_GUILD", "USER_NOT_IN_VOICE", "USER_OWNS_GUILDS", "VALIDATION_ERROR", "VOICE_CHANNEL_FULL", "WEBAUTHN_CREDENTIAL_LIMIT_REACHED", "AGE_VERIFICATION_ALREADY_VERIFIED" ], "x-enumDescriptions": [ "You don't have access to this resource or feature.", "Bad gateway.", "Bad request.", "We couldn't resolve that Bluesky handle. Please check it and try again.", "We couldn't complete the Bluesky connection. Please try again.", "Bluesky connections are not enabled on this instance.", "The authorization request has expired or is invalid. Please try again.", "This account has been permanently suspended.", "This account has been temporarily suspended.", "Your account is locked due to suspicious activity.", "Your account is too new to send messages in this community.", "ACLs must be non-empty.", "Admin API key wasn't found.", "You don't own this application.", "You're already friends with this user.", "Bots can't create communities.", "Bots can't send friend requests.", "This bot is already in the community.", "This bot is private.", "Bot users can't use auth endpoints.", "Bot users can't create auth sessions.", "Bot user generation failed.", "Bot user wasn't found.", "A call is already in progress in this channel.", "You can't edit another user's message.", "This action can't be performed in a DM.", "You can't block the system user.", "You can't edit system messages.", "You can't redeem {premium_tier_name} with Visionary.", "You can't report this community.", "You can't report your own community.", "You can't report your own message.", "You can't report yourself.", "You can't send an empty message.", "You can't send a friend request to a blocked user.", "You can't send a friend request to yourself.", "You can't send messages in a non-text channel.", "You can't send messages to this user.", "Community ownership can't be transferred to a bot.", "You can't shrink reserved slots.", "Captcha is required.", "Communication is disabled.", "A connection of this type with this identifier already exists.", "The connection initiation token is invalid or has expired.", "The connection type is not supported.", "You've reached the maximum number of connections ({limit}).", "Unknown connection.", "Connection verification failed. Make sure the verification token is correctly placed.", "Conflict.", "This content was blocked by safety systems.", "We couldn't delete the resource. Please try again.", "This community has already applied for discovery.", "This discovery application has already been reviewed.", "Discovery application wasn't found.", "Discovery isn't available on this instance.", "This community doesn't meet the minimum member count for discovery.", "This community isn't listed in discovery.", "Discriminator is required.", "Email service is temporarily unavailable. Please try again later.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Email verification is required for this action.", "Registration is closed on this instance.", "This registration is waiting for admin approval.", "This registration request was rejected.", "This registration link is invalid or has expired.", "Explicit content can't be sent.", "This feature isn't available on self-hosted instances.", "This feature is temporarily disabled.", "File size is too large. Maximum file size is {maxSize}.", "Forbidden.", "User does not accept friend requests at this time.", "Gateway timeout.", "Something went wrong. Please try again later.", "Gone.", "Gift code is already redeemed.", "You need to add a phone number to send messages in this community.", "The community template data is invalid or malformed.", "Community verification is required.", "Handoff code expired.", "Your data export request has expired. Please request a new export.", "Your data export request failed. Please try again.", "Your data export is still being prepared. Please check back in a few moments.", "Internal server error.", "Invalid ACLs format.", "Invalid API origin.", "Invalid or expired authorization token.", "Invalid bot flag.", "Invalid captcha.", "Calls can only be made in direct messages or group DMs.", "Invalid channel type.", "Invalid DSA report target.", "Invalid DSA ticket.", "Invalid DSA verification code.", "Invalid flags format.", "Invalid form body.", "Invalid handoff code.", "Permissions must be a valid integer.", "Permissions must be non-negative.", "Invalid phone number.", "Invalid phone verification code.", "Invalid request.", "Invalid stream key format.", "Invalid stream thumbnail payload.", "Invalid suspicious flags format.", "Invalid system flag.", "Invalid timestamp.", "Invalid or expired authorization token.", "Invalid WebAuthn authentication counter.", "Invalid WebAuthn credential counter.", "Failed to verify WebAuthn credential.", "Invalid WebAuthn public key format.", "Invites are disabled.", "IP authorization is required.", "IP authorization resend is on cooldown.", "IP authorization resend limit exceeded.", "Your IP address {ipAddress} has been permanently blocked from the Fluxer API by platform administrators. If you believe this is a mistake, contact support@fluxer.app to appeal. Include this IP address in your appeal.", "Your IP address {ipAddress} has been temporarily blocked from the Fluxer API for 24 hours because of abusive or unusual access patterns. We usually do not provide appeals for temporary API bans. Change IP addresses or wait for the ban to expire, and review the Fluxer API access patterns coming from your client.", "This IP address cannot be added to the blocklist.", "You've reached the maximum of {limit, plural, one {# application} other {# applications}}.", "You've reached the maximum of {count, plural, one {# bookmark} other {# bookmarks}}.", "You've reached the maximum of {count, plural, one {# category channel} other {# category channels}}.", "You've reached the maximum of {count, plural, one {# emoji} other {# emojis}}.", "You've reached the maximum of {count, plural, one {# favorite meme} other {# favorite memes}}.", "You've reached the maximum of {count, plural, one {# friend} other {# friends}}.", "You've reached the maximum of {count, plural, one {# group DM recipient} other {# group DM recipients}}.", "You've reached the maximum of {count, plural, one {# group DM} other {# group DMs}}.", "One or more selected users can't be added to this group DM.", "You've reached the maximum of {count, plural, one {# community channel} other {# community channels}}.", "You've reached the maximum of {count, plural, one {# community member} other {# community members}}.", "You've reached the maximum of {count, plural, one {# community role} other {# community roles}}.", "You've reached the maximum of {count, plural, one {# community} other {# communities}}.", "You've reached the maximum of {count, plural, one {# invite} other {# invites}}.", "You've reached the maximum of {count, plural, one {# reaction} other {# reactions}}.", "You've reached the maximum of {count, plural, one {# sticker} other {# stickers}}.", "You've reached the maximum of {count, plural, one {# webhook} other {# webhooks}} per channel.", "You've reached the maximum of {count, plural, one {# webhook} other {# webhooks}} per community.", "This content has already been submitted to NCMEC.", "We couldn't submit the report to NCMEC. Please try again later.", "Media metadata error.", "Method not allowed.", "You don't have access to this resource or feature.", "Missing ACL.", "Missing or invalid authorization header.", "The requested scope isn't supported or you don't have permission to request it.", "You don't have the permissions required to perform this action.", "No active call.", "No active subscription.", "Not found.", "Not implemented.", "No passkeys are registered.", "Invalid request.", "There are too many users with this username.", "This application isn't a bot.", "You're not friends with this user.", "NSFW content is age restricted.", "Passkey authentication failed.", "You are not eligible to add a phone number to your account.", "Phone number is already in use.", "We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account.", "This account cannot postpone the phone verification check.", "This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text.", "Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again.", "Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct.", "This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong.", "Phone rate limit exceeded.", "We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account.", "Phone verification is required.", "No active subscription.", "Preview must be JPEG.", "We couldn't process the request. Please try again.", "You're being rate limited.", "Report already resolved.", "You've been banned from submitting reports.", "Response validation failed: {errors}.", "This resource is being modified. Please try again shortly.", "Service unavailable.", "Session token mismatch.", "This instance is a single community, so additional communities cannot be created.", "The community for this instance cannot be deleted.", "You cannot leave the community for this instance.", "This instance policy change is not allowed.", "Slowmode rate limited.", "Service unavailable.", "Invalid request.", "Stream key channel mismatch.", "Stream key scope mismatch.", "Payment processing encountered an error. Please try again or contact support.", "Gift code redemption is in progress. Try again in a moment.", "Invalid product selection.", "Invalid product configuration.", "No active subscription found.", "No purchase history found. Customer portal isn't available.", "This purchase is outside the 3-day self-serve refund window.", "You can self-serve refund once every 30 days. Please try again later.", "No subscription found.", "Payment processing is temporarily unavailable. Please try again later.", "Subscription is already set to cancel at period end.", "Subscription isn't set to cancel.", "Webhook processing isn't available.", "Stripe webhook signature is invalid.", "Stripe webhook signature is missing.", "Direct messages and friend requests are disabled on this instance.", "Donation amount is invalid.", "Magic link has expired.", "Magic link is invalid.", "Magic link has already been used.", "Sudo mode is required.", "This tag is already taken.", "Temporary invite requires presence.", "Test harness is disabled.", "Test harness is forbidden.", "Two-factor authentication isn't enabled.", "Two-factor authentication is required.", "Unauthorized.", "You're not friends with this user.", "Invalid request.", "Invalid request.", "You need to complete your account setup before you can create communities.", "You can't add yourself to a group DM.", "Invalid request.", "Invalid request.", "Invalid request.", "You can't send messages to this user.", "Bots can't send friend requests.", "Invalid request.", "You need to complete your account setup before you can submit reports.", "Channel wasn't found.", "Unknown emoji.", "Unknown favorite meme.", "Unknown gift code.", "Community wasn't found.", "Unknown harvest.", "Invite wasn't found or is no longer valid.", "Member wasn't found in this community.", "Message wasn't found.", "Unknown report.", "Role wasn't found.", "Unknown sticker.", "Unknown suspicious flag.", "The specified user flag isn't recognized.", "User wasn't found.", "Unknown voice region.", "Unknown voice server.", "Unknown WebAuthn credential.", "Unknown application.", "Unknown webhook.", "This username is not available.", "We couldn't update the resource. Please try again.", "This user is banned from this community.", "This user's IP is banned from this community.", "This user isn't in voice.", "This user owns communities.", "Validation failed.", "Voice channel is full.", "You've reached the maximum of {count, plural, one {# WebAuthn credential} other {# WebAuthn credentials}}.", "You've already completed age verification." ], "description": "Error codes returned by API operations" }, "ValidationErrorItem": { "type": "object", "properties": { "path": {"type": "string", "description": "Field path that failed validation"}, "code": {"type": "string", "description": "Machine-readable validation error code"}, "message": {"type": "string", "description": "Human-readable validation error message"} }, "required": ["path", "message"] }, "ApplicationsMeResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the application" }, "name": {"type": "string", "description": "The name of the application"}, "icon": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The persisted bot avatar hash used as the application icon, if available" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The persisted bot profile bio used as the application description" }, "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": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this user" }, "username": {"type": "string", "description": "The username of the user, not unique across the platform"}, "discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the user, if set" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user avatar image" }, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"type": "boolean", "description": "Whether the user is a bot account"}, "system": {"type": "boolean", "description": "Whether the user is an official system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "The user's account-wide reply mention preference" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "description": "The owner of the application" }, "bot": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the bot user" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the bot"}, "banner": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The banner hash of the bot"}, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The bio or description of the bot" }, "token": {"type": "string", "description": "The bot token for authentication"}, "mfa_enabled": {"type": "boolean", "description": "Whether the bot has MFA enabled"}, "authenticator_types": { "type": "array", "items": {"$ref": "#/components/schemas/AuthenticatorType"}, "maxItems": 10, "description": "The types of authenticators enabled" }, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "description": "The bot user associated with the application" }, "redirect_uris": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "description": "The registered redirect URIs for OAuth2" } }, "required": ["id", "name", "icon", "description", "bot_public", "bot_require_code_grant", "verify_key", "owner"] }, "Int32Type": {"type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32"}, "PublicUserFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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"} ], "description": "The public flags on the user account" }, "MentionReplyPreferences": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "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" ], "description": "Reply mention preference" }, "AuthenticatorType": { "type": "integer", "format": "int32", "enum": [0, 2], "x-enumNames": ["TOTP", "WEBAUTHN"], "x-enumDescriptions": ["Time-based one-time password authenticator", "WebAuthn authenticator"], "description": "The type of authenticator" }, "BotFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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" } ], "description": "The bot user flags" }, "AuthorizeIpRequest": { "type": "object", "properties": {"token": {"type": "string", "description": "The IP authorization token from email"}}, "required": ["token"] }, "AuthLoginResponse": { "oneOf": [ {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}, { "type": "object", "properties": { "mfa": { "type": "boolean", "enum": [true], "description": "Indicates MFA is required to complete authentication" }, "ticket": {"type": "string", "description": "MFA ticket to use when completing MFA verification"}, "allowed_methods": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "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"} }, "required": ["mfa", "ticket", "allowed_methods", "totp", "webauthn"] } ] }, "AuthTokenWithUserIdResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "Authentication token for API requests"}, "user_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the authenticated user"}, "user": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this user" }, "username": {"type": "string", "description": "The username of the user, not unique across the platform"}, "discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the user, if set" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user avatar image" }, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"type": "boolean", "description": "Whether the user is a bot account"}, "system": {"type": "boolean", "description": "Whether the user is an official system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "The user's account-wide reply mention preference" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "description": "Partial user data for the authenticated account" } }, "required": ["token", "user_id", "user"] }, "EmailRevertRequest": { "type": "object", "properties": { "token": {"type": "string", "description": "Email revert token from email"}, "password": {"$ref": "#/components/schemas/PasswordType"} }, "required": ["token", "password"] }, "PasswordType": {"type": "string", "minLength": 8, "maxLength": 256}, "ForgotPasswordRequest": { "type": "object", "properties": {"email": {"$ref": "#/components/schemas/EmailType"}}, "required": ["email"] }, "EmailType": {"type": "string", "format": "email"}, "HandoffCompleteRequest": { "type": "object", "properties": { "code": {"type": "string", "description": "The handoff code from the initiating session"}, "token": {"type": "string", "description": "The authentication token to transfer"}, "user_id": {"type": "string", "description": "The user ID associated with the authenticated session"} }, "required": ["code", "user_id"] }, "HandoffInitiateResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "Handoff code to share with the receiving device"}, "expires_at": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the handoff code expires" }, "poll_secret": { "type": "string", "description": "Secret the initiating device must present to retrieve the token" } }, "required": ["code", "expires_at"] }, "HandoffCancelRequest": { "type": "object", "properties": { "poll_secret": {"type": "string", "description": "The poll secret issued when the handoff was initiated"} }, "required": ["poll_secret"] }, "HandoffInfoResponse": { "type": "object", "properties": { "status": {"type": "string", "description": "Current status of the handoff (pending, expired)"}, "client_info": { "anyOf": [ { "type": "object", "properties": { "platform": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The platform of the requesting device" }, "os": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The operating system of the requesting device" }, "device": { "enum": ["mobile", "desktop"], "type": "string", "x-enumNames": ["mobile", "desktop"], "description": "Device class of the requesting device, decided by the server" }, "location": { "anyOf": [{"$ref": "#/components/schemas/AuthSessionLocation"}, {"type": "null"}], "description": "The approximate location of the requesting device" } }, "required": ["device"] }, {"type": "null"} ], "description": "Client information of the initiating device" } }, "required": ["status"] }, "AuthSessionLocation": { "type": "object", "properties": { "city": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The city name reported by the client" }, "region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The region reported by the client" }, "country": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The country reported by the client" } } }, "HandoffStatusResponse": { "type": "object", "properties": { "status": {"type": "string", "description": "Current status of the handoff (pending, completed, expired)"}, "token": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Authentication token if handoff is complete" }, "user_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "User ID if handoff is complete" }, "user": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "Partial user data if handoff is complete" } }, "required": ["status"] }, "SnowflakeType": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "format": "snowflake"}, "UserPartialResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this user" }, "username": {"type": "string", "description": "The username of the user, not unique across the platform"}, "discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the user, if set" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user avatar image" }, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"type": "boolean", "description": "Whether the user is a bot account"}, "system": {"type": "boolean", "description": "Whether the user is an official system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "The user's account-wide reply mention preference" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"] }, "HandoffStatusRequest": { "type": "object", "properties": { "poll_secret": {"type": "string", "description": "The poll secret issued when the handoff was initiated"} }, "required": ["poll_secret"] }, "IpAuthorizationPollResponse": { "type": "object", "properties": { "completed": {"type": "boolean", "description": "Whether the IP authorization has been completed"}, "token": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Authentication token if authorization is complete" }, "user_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "User ID if authorization is complete" }, "user": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "Partial user data if authorization is complete" } }, "required": ["completed"] }, "MfaTicketRequest": { "type": "object", "properties": {"ticket": {"type": "string", "description": "The MFA ticket from the login response"}}, "required": ["ticket"] }, "LoginRequest": { "type": "object", "properties": { "email": {"$ref": "#/components/schemas/EmailType"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "invite_code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild invite code to join after login" } }, "required": ["email", "password"] }, "MfaTotpRequest": { "type": "object", "properties": { "code": {"type": "string", "description": "The TOTP code from the authenticator app"}, "ticket": {"type": "string", "description": "The MFA ticket from the login response"} }, "required": ["code", "ticket"] }, "WebAuthnMfaRequest": { "type": "object", "properties": { "response": {"type": "object", "description": "WebAuthn authentication response"}, "challenge": {"type": "string", "description": "The challenge string from authentication options"}, "ticket": {"type": "string", "description": "The MFA ticket from the login response"} }, "required": ["response", "challenge", "ticket"] }, "WebAuthnAuthenticationOptionsResponse": {"type": "object"}, "AuthRegisterResponse": { "oneOf": [ {"$ref": "#/components/schemas/AuthTokenWithUserIdResponse"}, { "type": "object", "properties": { "mfa": { "type": "boolean", "enum": [true], "description": "Indicates MFA is required to complete authentication" }, "ticket": {"type": "string", "description": "MFA ticket to use when completing MFA verification"}, "allowed_methods": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "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"} }, "required": ["mfa", "ticket", "allowed_methods", "totp", "webauthn"] }, {"$ref": "#/components/schemas/AuthRegistrationPendingApprovalResponse"} ] }, "AuthRegistrationPendingApprovalResponse": { "type": "object", "properties": { "registration_pending_approval": { "type": "boolean", "enum": [true], "description": "Registration succeeded and is waiting for admin approval" }, "user_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the registered account waiting for approval" } }, "required": ["registration_pending_approval", "user_id"] }, "RegisterRequest": { "type": "object", "properties": { "email": {"$ref": "#/components/schemas/EmailType"}, "username": {"$ref": "#/components/schemas/UsernameType"}, "global_name": {"type": "string", "description": "Display name shown to other users"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "date_of_birth": {"type": "string", "description": "Date of birth in YYYY-MM-DD format"}, "consent": {"type": "boolean", "description": "Whether user consents to terms of service"}, "invite_code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild invite code to join after registration" }, "registration_url_code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Admin-issued registration URL code to use for this registration" }, "theme": { "type": "string", "enum": ["dark", "dark_legacy", "coal", "light", "system"], "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" ], "description": "Initial UI theme preference for the new account" } } }, "UsernameType": {"type": "string", "minLength": 1, "maxLength": 32, "pattern": "^[a-zA-Z0-9_]+$"}, "ResetPasswordRequest": { "type": "object", "properties": { "token": {"type": "string", "description": "Password reset token from email"}, "password": {"$ref": "#/components/schemas/PasswordType"} }, "required": ["token", "password"] }, "ValidateResetPasswordTokenResponse": { "type": "object", "properties": { "valid": {"type": "boolean", "description": "Whether the password reset token is valid and unexpired"} }, "required": ["valid"] }, "AuthSessionsResponse": {"type": "array", "items": {"$ref": "#/components/schemas/AuthSessionResponse"}}, "AuthSessionResponse": { "type": "object", "properties": { "id_hash": {"type": "string", "description": "The base64url-encoded session id hash"}, "client_info": { "anyOf": [ { "type": "object", "properties": { "platform": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The platform reported by the client" }, "os": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The operating system reported by the client" }, "browser": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The browser reported by the client" }, "device": { "enum": ["mobile", "desktop"], "type": "string", "x-enumNames": ["mobile", "desktop"], "description": "Device class of the session, decided by the server" }, "location": { "anyOf": [{"$ref": "#/components/schemas/AuthSessionLocation"}, {"type": "null"}], "description": "The geolocation data sent by the client" } }, "required": ["device"] }, {"type": "null"} ], "description": "Client metadata recorded for this session" }, "masked_ip": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Semi-redacted IP address recorded for this session" }, "approx_last_used_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "Approximate timestamp of the last session activity" }, "current": {"type": "boolean", "description": "Whether this is the current session making the request"} }, "required": ["id_hash", "masked_ip", "current"] }, "LogoutAuthSessionsRequest": { "type": "object", "properties": { "session_id_hashes": { "type": "array", "items": {"type": "string"}, "maxItems": 100, "description": "Array of session ID hashes to log out (max 100)" }, "password": {"$ref": "#/components/schemas/PasswordType"} }, "required": ["session_id_hashes"] }, "SsoCompleteResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "Authentication token for the session"}, "user_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the authenticated user"}, "user": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this user" }, "username": {"type": "string", "description": "The username of the user, not unique across the platform"}, "discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the user, if set" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user avatar image" }, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"type": "boolean", "description": "Whether the user is a bot account"}, "system": {"type": "boolean", "description": "Whether the user is an official system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "The user's account-wide reply mention preference" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "description": "Partial user data for the authenticated account" }, "redirect_to": {"type": "string", "description": "URL to redirect the user to after completion"} }, "required": ["token", "user_id", "user", "redirect_to"] }, "SsoCompleteRequest": { "type": "object", "properties": { "code": {"type": "string", "description": "Authorization code from the SSO provider"}, "state": {"type": "string", "description": "State parameter for CSRF protection"} }, "required": ["code", "state"] }, "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"] }, "SsoStartRequest": { "type": "object", "properties": { "redirect_to": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL to redirect to after SSO completion" }, "redirect_uri": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "OAuth redirect URI to use for the SSO provider callback" } } }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Display name of the SSO provider" }, "redirect_uri": {"type": "string", "description": "OAuth redirect URI for SSO"} }, "required": ["enabled", "enforced", "display_name", "redirect_uri"] }, "UsernameSuggestionsResponse": { "type": "object", "properties": { "suggestions": { "type": "array", "items": {"type": "string"}, "maxItems": 20, "description": "List of suggested usernames" } }, "required": ["suggestions"] }, "UsernameSuggestionsRequest": { "type": "object", "properties": { "global_name": {"type": "string", "description": "Display name to generate username suggestions from"} }, "required": ["global_name"] }, "VerifyEmailRequest": { "type": "object", "properties": {"token": {"type": "string", "description": "Email verification token from email"}}, "required": ["token"] }, "WebAuthnAuthenticateRequest": { "type": "object", "properties": { "response": {"type": "object", "description": "WebAuthn authentication response"}, "challenge": {"type": "string", "description": "The challenge string from authentication options"} }, "required": ["response", "challenge"] }, "BulkMessageFetchResponse": { "type": "object", "properties": { "channels": { "type": "array", "items": { "type": "object", "properties": { "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel whose messages were fetched" }, "messages": { "type": "array", "items": {"$ref": "#/components/schemas/MessageResponseSchema"}, "description": "Messages fetched for this channel" } }, "required": ["channel_id", "messages"] } } }, "required": ["channels"] }, "MessageResponseSchema": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this message" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel this message was sent in" }, "author": {"$ref": "#/components/schemas/UserPartialResponse"}, "webhook_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the webhook that sent this message" }, "type": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4, 5, 6, 7, 19], "x-enumNames": [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "USER_JOIN", "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", "A reply message" ], "description": "The type of message" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp of when the message was created" }, "edited_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the message was last edited" }, "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": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ], "description": "Channels mentioned in the message that are visible to @everyone" }, "users": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ], "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution" }, "embeds": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ], "description": "The embeds attached to the message" }, "attachments": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ], "description": "The files attached to the message" }, "stickers": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ], "description": "The stickers sent with the message" }, "reactions": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageReactionResponse"}}, {"type": "null"} ], "description": "The reactions on the message" }, "message_reference": { "anyOf": [ { "type": "object", "properties": { "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel containing the referenced message" }, "message_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the referenced message" }, "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the guild containing the referenced message" }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "message_id", "type"] }, {"type": "null"} ], "description": "Reference data for replies or forwards" }, "message_snapshots": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ], "description": "Snapshots of forwarded messages" }, "nonce": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A client-provided value for message deduplication" }, "call": { "anyOf": [ { "type": "object", "properties": { "participants": { "type": "array", "items": {"type": "string"}, "description": "The user IDs of participants in the call" }, "ended_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the call ended" } }, "required": ["participants"] }, {"type": "null"} ], "description": "Call information if this message represents a call" }, "referenced_message": { "anyOf": [ { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this message" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel this message was sent in" }, "author": {"$ref": "#/components/schemas/UserPartialResponse"}, "webhook_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the webhook that sent this message" }, "type": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4, 5, 6, 7, 19], "x-enumNames": [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "USER_JOIN", "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", "A reply message" ], "description": "The type of message" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp of when the message was created" }, "edited_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the message was last edited" }, "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": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ], "description": "Channels mentioned in the message that are visible to @everyone" }, "users": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ], "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution" }, "embeds": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ], "description": "The embeds attached to the message" }, "attachments": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ], "description": "The files attached to the message" }, "stickers": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ], "description": "The stickers sent with the message" }, "reactions": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageReactionResponse"}}, {"type": "null"} ], "description": "The reactions on the message" }, "message_reference": { "anyOf": [ { "type": "object", "properties": { "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel containing the referenced message" }, "message_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the referenced message" }, "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the guild containing the referenced message" }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "message_id", "type"] }, {"type": "null"} ], "description": "Reference data for replies or forwards" }, "message_snapshots": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ], "description": "Snapshots of forwarded messages" }, "nonce": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A client-provided value for message deduplication" }, "call": { "anyOf": [ { "type": "object", "properties": { "participants": { "type": "array", "items": {"type": "string"}, "description": "The user IDs of participants in the call" }, "ended_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the call ended" } }, "required": ["participants"] }, {"type": "null"} ], "description": "Call information if this message represents a call" } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ] }, {"type": "null"} ], "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." } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ] }, "MessageFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "x-bitflagValues": [ { "name": "SUPPRESS_EMBEDS", "value": "4", "description": "Do not include embeds when serialising this message" }, { "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"} ], "description": "Message flags bitfield" }, "MessageChannelMentionResponse": { "type": "object", "properties": { "id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the mentioned channel"}, "name": {"type": "string", "description": "The name of the mentioned channel"}, "type": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The type of the mentioned channel" } }, "required": ["id", "name", "type"] }, "MessageEmbedResponse": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of embed (e.g., rich, image, video, gifv, article, link)" }, "url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The URL of the embed" }, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The title of the embed"}, "color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The color code of the embed sidebar" }, "timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of the embed content" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the embed" }, "author": { "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}], "description": "The author information of the embed" }, "image": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The image of the embed" }, "thumbnail": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The thumbnail of the embed" }, "footer": { "anyOf": [{"$ref": "#/components/schemas/EmbedFooterResponse"}, {"type": "null"}], "description": "The footer of the embed" }, "fields": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/EmbedFieldResponse"}}, {"type": "null"} ], "description": "The fields of the embed" }, "provider": { "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}], "description": "The provider of the embed (e.g., YouTube, Twitter)" }, "video": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The video of the embed" }, "audio": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The audio of the embed" }, "html": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Sanitized oEmbed HTML for trusted specialized embed renderers" }, "html_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The preferred width of sanitized oEmbed HTML" }, "html_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The preferred height of sanitized oEmbed HTML" }, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the embed is flagged as NSFW" }, "children": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedChildResponse"}, "maxItems": 1}, {"type": "null"} ], "description": "Internal nested embeds generated by unfurlers" } }, "required": ["type"] }, "EmbedAuthorResponse": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the author"}, "url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The URL of the author" }, "icon_url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The URL of the author icon" }, "proxy_icon_url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The proxied URL of the author icon" } }, "required": ["name"] }, "EmbedMediaResponse": { "type": "object", "properties": { "url": {"type": "string", "description": "The URL of the media"}, "proxy_url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The proxied URL of the media" }, "content_type": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The MIME type of the media" }, "content_hash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the media content" }, "width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the media in pixels" }, "height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the media in pixels" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the media" }, "placeholder": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The base64 encoded placeholder image for lazy loading" }, "duration": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The duration of the media in seconds" }, "flags": {"$ref": "#/components/schemas/EmbedMediaFlags"} }, "required": ["url", "flags"] }, "EmbedMediaFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "x-bitflagValues": [ {"name": "CONTAINS_EXPLICIT_MEDIA", "value": "16", "description": "Embed media contains explicit content"}, {"name": "IS_ANIMATED", "value": "32", "description": "Embed media is animated"} ], "description": "The bitwise flags for this media" }, "EmbedFooterResponse": { "type": "object", "properties": { "text": {"type": "string", "description": "The footer text"}, "icon_url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The URL of the footer icon" }, "proxy_icon_url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The proxied URL of the footer icon" } }, "required": ["text"] }, "EmbedFieldResponse": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the field"}, "value": {"type": "string", "description": "The value of the field"}, "inline": {"type": "boolean", "description": "Whether the field should be displayed inline"} }, "required": ["name", "value", "inline"] }, "MessageEmbedChildResponse": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of embed (e.g., rich, image, video, gifv, article, link)" }, "url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The URL of the embed" }, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The title of the embed"}, "color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The color code of the embed sidebar" }, "timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of the embed content" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the embed" }, "author": { "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}], "description": "The author information of the embed" }, "image": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The image of the embed" }, "thumbnail": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The thumbnail of the embed" }, "footer": { "anyOf": [{"$ref": "#/components/schemas/EmbedFooterResponse"}, {"type": "null"}], "description": "The footer of the embed" }, "fields": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/EmbedFieldResponse"}}, {"type": "null"} ], "description": "The fields of the embed" }, "provider": { "anyOf": [{"$ref": "#/components/schemas/EmbedAuthorResponse"}, {"type": "null"}], "description": "The provider of the embed (e.g., YouTube, Twitter)" }, "video": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The video of the embed" }, "audio": { "anyOf": [{"$ref": "#/components/schemas/EmbedMediaResponse"}, {"type": "null"}], "description": "The audio of the embed" }, "html": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Sanitized oEmbed HTML for trusted specialized embed renderers" }, "html_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The preferred width of sanitized oEmbed HTML" }, "html_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The preferred height of sanitized oEmbed HTML" }, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the embed is flagged as NSFW" } }, "required": ["type"] }, "MessageAttachmentResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this attachment" }, "filename": {"type": "string", "description": "The name of the attached file"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The title of the attachment"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the attachment" }, "content_type": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The MIME type of the attachment" }, "content_hash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the attachment content" }, "size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53", "description": "The size of the attachment in bytes" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The URL of the attachment"}, "proxy_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The proxied URL of the attachment" }, "width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the attachment in pixels (for images/videos)" }, "height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the attachment in pixels (for images/videos)" }, "placeholder": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The base64 encoded placeholder image for lazy loading" }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"}, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the attachment is flagged as NSFW" }, "duration": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The duration of the media in seconds" }, "waveform": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The base64 encoded audio waveform data" }, "expires_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The ISO 8601 timestamp when the attachment URL expires" }, "expired": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the attachment URL has expired" } }, "required": ["id", "filename", "size", "flags"] }, "MessageAttachmentFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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"} ], "description": "Attachment flags" }, "MessageStickerResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the sticker" }, "name": {"type": "string", "description": "The name of the sticker"}, "animated": {"type": "boolean", "description": "Whether the sticker is animated"} }, "required": ["id", "name", "animated"] }, "MessageReactionResponse": { "type": "object", "properties": { "emoji": { "type": "object", "properties": { "id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the custom emoji (null for Unicode emojis)" }, "name": { "type": "string", "description": "The name of the emoji (or Unicode character for standard emojis)" }, "animated": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the emoji is animated" } }, "required": ["name"], "description": "The emoji used for the reaction" }, "count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The total number of times this reaction has been used" }, "me": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the current user has reacted with this emoji" } }, "required": ["emoji", "count"] }, "MessageReferenceType": { "type": "integer", "format": "int32", "enum": [0, 1], "x-enumNames": ["DEFAULT", "FORWARD"], "x-enumDescriptions": ["Default reference (reply)", "Forwarded message reference"], "description": "The type of message reference" }, "MessageSnapshotResponse": { "type": "object", "properties": { "content": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The text content of the snapshot" }, "timestamp": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp of when the original message was created" }, "edited_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the original message was last edited" }, "mentions": { "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "The user IDs mentioned in the snapshot" }, "mention_roles": { "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "The role IDs mentioned in the snapshot" }, "mention_channels": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ], "description": "Channels mentioned in the snapshot that are visible to @everyone" }, "embeds": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ], "description": "The embeds included in the snapshot" }, "attachments": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ], "description": "The attachments included in the snapshot" }, "stickers": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ], "description": "The stickers included in the snapshot" }, "type": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4, 5, 6, 7, 19], "x-enumNames": [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "USER_JOIN", "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", "A reply message" ], "description": "The type of message" }, "flags": {"$ref": "#/components/schemas/MessageFlags"} }, "required": ["timestamp", "type", "flags"] }, "BulkMessageFetchRequest": { "type": "object", "properties": { "requests": { "type": "array", "items": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "limit": { "type": "integer", "minimum": 1, "maximum": 50, "format": "int32", "description": "Number of messages to return for this channel (1-50)" }, "before": {"$ref": "#/components/schemas/SnowflakeType"}, "after": {"$ref": "#/components/schemas/SnowflakeType"}, "around": {"$ref": "#/components/schemas/SnowflakeType"} }, "required": ["channel_id", "limit"] }, "minItems": 1, "maxItems": 25, "description": "Per-channel message windows to fetch in one request" } }, "required": ["requests"] }, "ChannelResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this channel" }, "guild_id": {"$ref": "#/components/schemas/SnowflakeType"}, "name": {"type": "string", "description": "The name of the channel"}, "topic": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The topic of the channel"}, "url": { "anyOf": [{"type": "string", "format": "uri"}, {"type": "null"}], "description": "The URL associated with the channel" }, "icon": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The icon hash of the channel (for group DMs)" }, "owner_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the owner of the channel (for group DMs)" }, "type": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The type of the channel" }, "position": {"$ref": "#/components/schemas/Int32Type"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The bitrate of the voice channel in bits per second" }, "user_limit": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The maximum number of users allowed in the voice channel" }, "voice_connection_limit": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The maximum active voice connections allowed per user in the voice channel" }, "rtc_region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The voice region ID for the voice channel" }, "last_message_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the last message sent in this channel" }, "last_pin_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the last pinned message was pinned" }, "permission_overwrites": { "type": "array", "items": {"$ref": "#/components/schemas/ChannelOverwriteResponse"}, "description": "The permission overwrites for this channel" }, "recipients": { "type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}, "maxItems": 49, "description": "The recipients of the DM channel" }, "nsfw": { "type": "boolean", "description": "Whether the channel is marked as NSFW (effective value, walking channel → category → guild)" }, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Per-channel adult-content override; null means inherit from parent category and then guild. Categories use this same field as their own override." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "rate_limit_per_user": {"$ref": "#/components/schemas/Int32Type"}, "nicks": { "type": "object", "additionalProperties": {"type": "string"}, "description": "Custom nicknames for users in this channel (for group DMs)" } }, "required": ["id", "type"] }, "ChannelOverwriteResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for the role or user this overwrite applies to" }, "type": {"type": "integer", "enum": [0, 1], "description": "The type of entity the overwrite applies to"}, "allow": { "type": "string", "format": "int64", "pattern": "^[0-9]+$", "description": "The bitwise value of allowed permissions" }, "deny": { "type": "string", "format": "int64", "pattern": "^[0-9]+$", "description": "The bitwise value of denied permissions" } }, "required": ["id", "type", "allow", "deny"] }, "ContentWarningLevel": { "type": "integer", "format": "int32", "enum": [0, 1], "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" ], "description": "The content warning level for a guild, category, or channel" }, "ChannelUpdateRequest": { "oneOf": [ {"$ref": "#/components/schemas/GuildTextChannelUpdateRequest"}, {"$ref": "#/components/schemas/GuildVoiceChannelUpdateRequest"}, {"$ref": "#/components/schemas/GuildCategoryChannelUpdateRequest"}, {"$ref": "#/components/schemas/GuildLinkChannelUpdateRequest"}, {"$ref": "#/components/schemas/GroupDmChannelUpdateRequest"} ] }, "GuildTextChannelUpdateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override." }, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded icon image for group DM channels" }, "owner_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the new owner for group DM channels" }, "nicks": {"$ref": "#/components/schemas/ChannelNicknameOverrides"}, "rtc_region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Voice region ID for the voice channel (1-64 characters)" }, "type": { "type": "integer", "enum": [0], "x-enumNames": ["GUILD_TEXT"], "x-enumDescriptions": ["Channel type (text channel)"] }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the channel"} }, "required": ["type"] }, "UnsignedInt64Type": {"type": "string", "format": "int64", "pattern": "^[0-9]+$"}, "Base64ImageType": {"type": "string", "format": "byte", "description": "Base64-encoded image data"}, "ChannelNicknameOverrides": { "type": "object", "additionalProperties": { "oneOf": [{"type": "string"}, {"type": "null"}], "description": "Nickname or null to clear" }, "description": "User nickname overrides (user ID to nickname mapping)" }, "GuildVoiceChannelUpdateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override." }, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded icon image for group DM channels" }, "owner_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the new owner for group DM channels" }, "nicks": {"$ref": "#/components/schemas/ChannelNicknameOverrides"}, "rtc_region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Voice region ID for the voice channel (1-64 characters)" }, "type": { "type": "integer", "enum": [2], "x-enumNames": ["GUILD_VOICE"], "x-enumDescriptions": ["Channel type (voice channel)"] }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the channel"} }, "required": ["type"] }, "GuildCategoryChannelUpdateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override." }, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded icon image for group DM channels" }, "owner_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the new owner for group DM channels" }, "nicks": {"$ref": "#/components/schemas/ChannelNicknameOverrides"}, "rtc_region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Voice region ID for the voice channel (1-64 characters)" }, "type": { "type": "integer", "enum": [4], "x-enumNames": ["GUILD_CATEGORY"], "x-enumDescriptions": ["Channel type (category)"] }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the category"} }, "required": ["type"] }, "GuildLinkChannelUpdateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Legacy: setting true maps to nsfw_override=true; setting false maps to nsfw_override=null (inherit). Prefer nsfw_override." }, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded icon image for group DM channels" }, "owner_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the new owner for group DM channels" }, "nicks": {"$ref": "#/components/schemas/ChannelNicknameOverrides"}, "rtc_region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Voice region ID for the voice channel (1-64 characters)" }, "type": { "type": "integer", "enum": [998], "x-enumNames": ["GUILD_LINK"], "x-enumDescriptions": ["Channel type (link channel)"] }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the channel"} }, "required": ["type"] }, "GroupDmChannelUpdateRequest": { "type": "object", "properties": { "type": { "type": "integer", "enum": [3], "x-enumNames": ["GROUP_DM"], "x-enumDescriptions": ["Channel type (group DM)"] }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the group DM"}, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded icon image for the group DM" }, "owner_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the new owner of the group DM" }, "nicks": { "anyOf": [{"$ref": "#/components/schemas/ChannelNicknameOverrides"}, {"type": "null"}], "description": "Custom nicknames for users in this group DM" } }, "required": ["type"] }, "SudoVerificationSchema": { "type": "object", "properties": { "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} } }, "PresignedAttachmentUploadResponse": { "type": "object", "properties": { "attachments": { "type": "array", "items": {"$ref": "#/components/schemas/PresignedAttachmentUploadResponseItem"}, "description": "Presigned upload details for each attachment" } }, "required": ["attachments"] }, "PresignedAttachmentUploadResponseItem": { "oneOf": [ {"$ref": "#/components/schemas/SinglepartPresignedAttachmentUploadResponseItem"}, {"$ref": "#/components/schemas/MultipartPresignedAttachmentUploadResponseItem"} ] }, "SinglepartPresignedAttachmentUploadResponseItem": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "filename": {"type": "string", "description": "The original filename for this upload"}, "upload_filename": { "type": "string", "description": "Temporary upload key to reference in message send payloads" }, "file_size": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "content_type": {"type": "string", "description": "Expected MIME type for this upload"}, "upload_mode": {"type": "string", "enum": ["singlepart"]}, "upload_url": { "type": "string", "description": "Presigned URL used to upload this attachment with a single PUT" } }, "required": ["id", "filename", "upload_filename", "file_size", "content_type", "upload_mode", "upload_url"] }, "NonNegativeSafeIntegerType": {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, "MultipartPresignedAttachmentUploadResponseItem": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "filename": {"type": "string", "description": "The original filename for this upload"}, "upload_filename": { "type": "string", "description": "Temporary upload key to reference in message send payloads" }, "file_size": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "content_type": {"type": "string", "description": "Expected MIME type for this upload"}, "upload_mode": {"type": "string", "enum": ["multipart"]}, "upload_id": { "type": "string", "description": "S3 multipart upload identifier; required to complete the upload" }, "part_size": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "parts": { "type": "array", "items": { "type": "object", "properties": { "part_number": {"$ref": "#/components/schemas/Int32Type"}, "upload_url": {"type": "string", "description": "Presigned URL used to upload this part"} }, "required": ["part_number", "upload_url"] }, "minItems": 1, "maxItems": 10000, "description": "Per-part presigned URLs for parallel upload" } }, "required": [ "id", "filename", "upload_filename", "file_size", "content_type", "upload_mode", "upload_id", "part_size", "parts" ] }, "PresignedAttachmentUploadRequest": { "type": "object", "properties": { "attachments": { "type": "array", "items": {"$ref": "#/components/schemas/PresignedAttachmentUploadRequestItem"}, "minItems": 1, "maxItems": 10, "description": "Attachment upload specifications" } }, "required": ["attachments"] }, "PresignedAttachmentUploadRequestItem": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "filename": {"type": "string", "description": "The name of the file that will be uploaded"}, "file_size": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "content_type": {"type": "string", "description": "MIME type the client will upload"} }, "required": ["id", "filename", "file_size", "content_type"] }, "CompleteMultipartAttachmentUploadResponse": { "type": "object", "properties": { "uploads": { "type": "array", "items": {"$ref": "#/components/schemas/CompleteMultipartAttachmentUploadResult"}, "description": "Finalized upload keys" } }, "required": ["uploads"] }, "CompleteMultipartAttachmentUploadResult": { "type": "object", "properties": {"upload_filename": {"type": "string", "description": "Finalized upload key"}}, "required": ["upload_filename"] }, "CompleteMultipartAttachmentUploadRequest": { "type": "object", "properties": { "uploads": { "type": "array", "items": {"$ref": "#/components/schemas/CompleteMultipartAttachmentUploadItem"}, "minItems": 1, "maxItems": 10, "description": "Multipart uploads to finalize" } }, "required": ["uploads"] }, "CompleteMultipartAttachmentUploadItem": { "type": "object", "properties": { "upload_filename": { "type": "string", "description": "The upload_filename returned when the upload was planned" }, "upload_id": {"type": "string", "description": "The upload_id returned when the upload was planned"} }, "required": ["upload_filename", "upload_id"] }, "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"] }, "CallUpdateBodySchema": { "type": "object", "properties": { "region": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The preferred voice region for the call (1-64 characters). Omit or set to null for automatic region selection." }, "latitude": {"type": "string", "description": "Client latitude used for automatic region selection"}, "longitude": {"type": "string", "description": "Client longitude used for automatic region selection"} } }, "CallRingBodySchema": { "type": "object", "properties": { "recipients": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "User IDs to ring for the call" }, "latitude": {"type": "string", "description": "Client latitude used for automatic region selection"}, "longitude": {"type": "string", "description": "Client longitude used for automatic region selection"} } }, "InviteMetadataResponseSchema": { "oneOf": [ {"$ref": "#/components/schemas/GuildInviteMetadataResponse"}, {"$ref": "#/components/schemas/GroupDmInviteMetadataResponse"} ] }, "GuildInviteMetadataResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "type": {"type": "integer", "enum": [0], "description": "The type of invite (guild)"}, "guild": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this guild" }, "name": {"type": "string", "description": "The name of the guild"}, "icon": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild icon"}, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild banner" }, "banner_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the guild banner in pixels" }, "banner_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the guild banner in pixels" }, "splash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild splash screen" }, "splash_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the guild splash in pixels" }, "splash_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the guild splash in pixels" }, "splash_card_alignment": { "type": "integer", "enum": [0, 1, 2], "description": "The alignment of the splash card" }, "embed_splash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the embedded invite splash" }, "embed_splash_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the embedded invite splash in pixels" }, "embed_splash_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the embedded invite splash in pixels" }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "Array of guild feature flags" } }, "required": ["id", "name", "splash_card_alignment", "features"], "description": "The guild this invite is for" }, "channel": {"$ref": "#/components/schemas/ChannelPartialResponse"}, "inviter": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "The user who created the invite" }, "member_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The approximate total member count of the guild" }, "presence_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The approximate online member count of the guild" }, "expires_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the invite expires" }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "created_at": { "type": "string", "format": "date-time", "description": "ISO8601 timestamp of when the invite was created" }, "uses": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The number of times this invite has been used" }, "max_uses": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The maximum number of times this invite can be used" }, "max_age": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The duration in seconds before the invite expires" } }, "required": [ "code", "type", "guild", "channel", "member_count", "presence_count", "temporary", "created_at", "uses", "max_uses", "max_age" ] }, "GuildFeatureSchema": { "type": "string", "x-enumNames": [ "ANIMATED_ICON", "ANIMATED_BANNER", "BANNER", "CLONE_EMOJI_DISABLED", "CLONE_STICKER_DISABLED", "DETACHED_BANNER", "INVITE_SPLASH", "INVITES_DISABLED", "RAID_DETECTED", "TEXT_CHANNEL_FLEXIBLE_NAMES", "HIDE_OWNER_CROWN", "MORE_EMOJI", "MORE_STICKERS", "UNLIMITED_EMOJI", "UNLIMITED_STICKERS", "EXPRESSION_PURGE_ALLOWED", "VANITY_URL", "DISCOVERABLE", "PARTNERED", "VERIFIED", "VIP_VOICE", "VOICE_E2EE", "UNAVAILABLE_FOR_EVERYONE", "UNAVAILABLE_FOR_EVERYONE_BUT_STAFF", "UNAVAILABLE_HIDDEN", "VISIONARY", "LARGE_GUILD_OVERRIDE", "VERY_LARGE_GUILD" ], "x-enumDescriptions": [ "Guild can have an animated icon", "Guild can have an animated banner", "Guild can have a banner", "Guild has the in-app one-click emoji clone shortcut disabled for non-members", "Guild has the in-app one-click sticker clone shortcut disabled for non-members", "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" ], "description": "A guild feature flag Known values: ANIMATED_ICON, ANIMATED_BANNER, BANNER, CLONE_EMOJI_DISABLED, CLONE_STICKER_DISABLED, DETACHED_BANNER, INVITE_SPLASH, INVITES_DISABLED, RAID_DETECTED, TEXT_CHANNEL_FLEXIBLE_NAMES, HIDE_OWNER_CROWN, MORE_EMOJI, MORE_STICKERS, UNLIMITED_EMOJI, UNLIMITED_STICKERS, EXPRESSION_PURGE_ALLOWED, VANITY_URL, DISCOVERABLE, PARTNERED, VERIFIED, VIP_VOICE, VOICE_E2EE, UNAVAILABLE_FOR_EVERYONE, UNAVAILABLE_FOR_EVERYONE_BUT_STAFF, UNAVAILABLE_HIDDEN, VISIONARY, LARGE_GUILD_OVERRIDE, VERY_LARGE_GUILD (other values allowed)" }, "ChannelPartialResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this channel" }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the channel"}, "type": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The type of the channel" }, "recipients": { "type": "array", "items": { "type": "object", "properties": {"username": {"type": "string", "description": "The username of the recipient"}}, "required": ["username"] }, "maxItems": 50, "description": "The recipients of the DM channel" } }, "required": ["id", "type"] }, "GroupDmInviteMetadataResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "type": {"type": "integer", "enum": [1], "description": "The type of invite (group DM)"}, "channel": {"$ref": "#/components/schemas/ChannelPartialResponse"}, "inviter": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "The user who created the invite" }, "member_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The current member count of the group DM" }, "expires_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the invite expires" }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "created_at": { "type": "string", "format": "date-time", "description": "ISO8601 timestamp of when the invite was created" }, "uses": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The number of times this invite has been used" }, "max_uses": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The maximum number of times this invite can be used" } }, "required": ["code", "type", "channel", "member_count", "temporary", "created_at", "uses", "max_uses"] }, "ChannelInviteCreateRequest": { "type": "object", "properties": { "max_uses": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum number of times this invite can be used (0 for unlimited)" }, "max_age": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 604800, "format": "int32"}, {"type": "null"}], "description": "Duration in seconds before the invite expires (0 for never)" }, "unique": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether to create a new unique invite or reuse an existing one" }, "temporary": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether members that joined via this invite should be kicked after disconnecting" } } }, "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": { "oneOf": [ {"$ref": "#/components/schemas/ClientUploadedAttachmentRequest"}, {"$ref": "#/components/schemas/ClientAttachmentRequest"} ] }, "description": "Array of attachment objects" }, "message_reference": { "anyOf": [{"$ref": "#/components/schemas/MessageReferenceRequest"}, {"type": "null"}], "description": "Reference to another message (for replies or forwards)" }, "allowed_mentions": { "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}], "description": "Controls which mentions trigger notifications" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "nonce": {"$ref": "#/components/schemas/MessageNonceRequest"}, "favorite_meme_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of a favorite meme to attach" }, "sticker_ids": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 3}, {"type": "null"} ], "description": "Array of sticker IDs to include (max 3)" }, "tts": {"type": "boolean", "description": "Whether this is a text-to-speech message"} } }, "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." }, "RichEmbedRequest": { "type": "object", "properties": { "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL of the embed"}, "title": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Title of the embed (0-256 characters)" }, "color": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 16777215, "format": "int32"}, {"type": "null"}], "description": "Color code of the embed (hex integer)" }, "timestamp": { "oneOf": [ { "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, "format": "int53"}, {"type": "null"} ], "description": "ISO8601 timestamp for the embed" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Description of the embed (1-4096 characters)" }, "author": { "anyOf": [{"$ref": "#/components/schemas/RichEmbedAuthorRequest"}, {"type": "null"}], "description": "Author information" }, "image": { "anyOf": [{"$ref": "#/components/schemas/RichEmbedMediaRequest"}, {"type": "null"}], "description": "Image to display in the embed" }, "thumbnail": { "anyOf": [{"$ref": "#/components/schemas/RichEmbedMediaRequest"}, {"type": "null"}], "description": "Thumbnail image for the embed" }, "footer": { "anyOf": [{"$ref": "#/components/schemas/RichEmbedFooterRequest"}, {"type": "null"}], "description": "Footer information" }, "fields": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "name": {"type": "string", "description": "Name of the field"}, "value": {"type": "string", "description": "Value of the field (0-1024 characters)"}, "inline": {"type": "boolean", "description": "Whether the field should display inline"} }, "required": ["name", "value"] }, "maxItems": 25 }, {"type": "null"} ], "description": "Array of field objects (max 25)" } } }, "RichEmbedAuthorRequest": { "anyOf": [ { "type": "object", "properties": { "name": {"type": "string", "description": "Name of the embed author"}, "url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL to link from the author name" }, "icon_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL of the author icon"} }, "required": ["name"] }, {"type": "null"} ] }, "RichEmbedMediaRequest": { "anyOf": [{"$ref": "#/components/schemas/RichEmbedMediaRequestShape"}, {"type": "null"}] }, "RichEmbedMediaRequestShape": { "type": "object", "properties": { "url": {"type": "string", "description": "URL of the media (image, video, etc.)"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Alt text description of the media" } }, "required": ["url"] }, "RichEmbedFooterRequest": { "anyOf": [ { "type": "object", "properties": { "text": {"type": "string", "description": "Footer text (1-2048 characters)"}, "icon_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL of the footer icon"} }, "required": ["text"] }, {"type": "null"} ] }, "ClientUploadedAttachmentRequest": { "type": "object", "properties": { "title": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A title for the attachment (1-1024 characters)" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "An alt text description of the attachment (1-4096 characters)" }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"}, "duration": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The duration of the audio file in seconds" }, "waveform": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Base64 encoded audio waveform data" }, "id": {"$ref": "#/components/schemas/Int32Type"}, "filename": {"type": "string", "description": "The name of the file being uploaded"}, "upload_filename": { "type": "string", "description": "Temporary upload key returned by the attachment upload endpoint" }, "file_size": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "content_type": {"type": "string", "description": "MIME type of the uploaded file"} }, "required": ["id", "filename", "upload_filename", "file_size", "content_type"] }, "ClientAttachmentRequest": { "type": "object", "properties": { "title": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A title for the attachment (1-1024 characters)" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "An alt text description of the attachment (1-4096 characters)" }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"}, "duration": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The duration of the audio file in seconds" }, "waveform": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Base64 encoded audio waveform data" }, "id": {"$ref": "#/components/schemas/Int32Type"}, "filename": {"type": "string", "description": "The name of the file being uploaded"}, "content_type": {"type": "string", "description": "Optional MIME type for the uploaded file"} }, "required": ["id", "filename"] }, "MessageReferenceRequest": { "type": "object", "properties": { "message_id": {"$ref": "#/components/schemas/SnowflakeType"}, "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "guild_id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "$ref": "#/components/schemas/MessageReferenceType", "description": "Type of reference (0 = default, 1 = forward)" }, "attachment_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 10, "description": "Optional attachment IDs to include when forwarding only selected media" }, "embed_indices": { "type": "array", "items": {"$ref": "#/components/schemas/Int32Type"}, "maxItems": 10, "description": "Optional embed indices to include when forwarding only selected media" } }, "required": ["message_id"] }, "AllowedMentionsRequest": { "type": "object", "properties": { "parse": { "type": "array", "items": { "type": "string", "enum": ["users", "roles", "everyone"], "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" ], "description": "Types of mentions to parse from content" }, "description": "Types of mentions to parse from content" }, "users": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Array of user IDs to mention (max 100)" }, "roles": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Array of role IDs to mention (max 100)" }, "replied_user": {"type": "boolean", "description": "Whether to mention the author of the replied message"} } }, "MessageNonceRequest": {"type": "string", "description": "Client-generated identifier for the message"}, "BulkDeleteMessagesRequest": { "type": "object", "properties": { "message_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Array of message IDs to delete" }, "messages": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Alias for message IDs" } } }, "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"] }, "ChannelPinResponse": { "type": "object", "properties": { "message": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this message" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel this message was sent in" }, "author": {"$ref": "#/components/schemas/UserPartialResponse"}, "webhook_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the webhook that sent this message" }, "type": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4, 5, 6, 7, 19], "x-enumNames": [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "USER_JOIN", "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", "A reply message" ], "description": "The type of message" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp of when the message was created" }, "edited_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the message was last edited" }, "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": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ], "description": "Channels mentioned in the message that are visible to @everyone" }, "users": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ], "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution" }, "embeds": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ], "description": "The embeds attached to the message" }, "attachments": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ], "description": "The files attached to the message" }, "stickers": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ], "description": "The stickers sent with the message" }, "message_reference": { "anyOf": [ { "type": "object", "properties": { "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel containing the referenced message" }, "message_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the referenced message" }, "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the guild containing the referenced message" }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "message_id", "type"] }, {"type": "null"} ], "description": "Reference data for replies or forwards" }, "message_snapshots": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ], "description": "Snapshots of forwarded messages" }, "nonce": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A client-provided value for message deduplication" }, "call": { "anyOf": [ { "type": "object", "properties": { "participants": { "type": "array", "items": {"type": "string"}, "description": "The user IDs of participants in the call" }, "ended_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the call ended" } }, "required": ["participants"] }, {"type": "null"} ], "description": "Call information if this message represents a call" } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ], "description": "The pinned message" }, "pinned_at": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp of when the message was pinned" } }, "required": ["message", "pinned_at"] }, "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": { "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}], "description": "Controls which mentions trigger notifications" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "attachments": { "type": "array", "items": { "oneOf": [ {"$ref": "#/components/schemas/ClientUploadedAttachmentRequest"}, {"$ref": "#/components/schemas/ClientAttachmentReferenceRequest"} ] }, "description": "Array of attachment objects to keep or add" }, "message_snapshots": { "type": "array", "items": { "type": "object", "properties": { "attachments": { "type": "array", "items": { "type": "object", "properties": { "id": { "oneOf": [ {"$ref": "#/components/schemas/Int32Type"}, {"$ref": "#/components/schemas/SnowflakeType"} ], "description": "The identifier of the snapshot attachment" }, "title": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A title for the attachment (1-1024 characters)" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Alt text description for the attachment (1-4096 characters)" } }, "required": ["id"] }, "maxItems": 10 } } }, "maxItems": 10, "description": "Per-snapshot edits aligned by index with the existing snapshots. Currently supports updating attachment metadata (title/description)." } } }, "ClientAttachmentReferenceRequest": { "type": "object", "properties": { "title": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A title for the attachment (1-1024 characters)" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "An alt text description of the attachment (1-4096 characters)" }, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"}, "duration": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The duration of the audio file in seconds" }, "waveform": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Base64 encoded audio waveform data" }, "id": { "oneOf": [{"$ref": "#/components/schemas/Int32Type"}, {"$ref": "#/components/schemas/SnowflakeType"}], "description": "The identifier of the attachment being referenced (snowflake ID or file index)" }, "filename": {"type": "string", "description": "A new filename for the attachment"} }, "required": ["id"] }, "MessageAckRequest": { "type": "object", "properties": { "mention_count": {"$ref": "#/components/schemas/Int32Type"}, "manual": {"type": "boolean", "description": "Whether this is a manual acknowledgement"} } }, "FavoriteMemeResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Unique identifier for the favorite meme" }, "user_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the user who owns this favorite meme" }, "name": {"type": "string", "description": "Display name of the meme"}, "alt_text": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Alternative text description for accessibility" }, "tags": { "type": "array", "items": {"type": "string"}, "description": "Tags for categorizing and searching the meme" }, "attachment_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the attachment storing the meme" }, "filename": {"type": "string", "description": "Original filename of the meme"}, "content_type": {"type": "string", "description": "MIME type of the meme file"}, "content_hash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Hash of the file content for deduplication" }, "size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53", "description": "File size in bytes" }, "width": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Width of the image or video in pixels" }, "height": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Height of the image or video in pixels" }, "duration": { "anyOf": [{"type": "number"}, {"type": "null"}], "description": "Duration of the video in seconds" }, "url": {"type": "string", "description": "CDN URL to access the meme"}, "is_gifv": {"type": "boolean", "description": "Whether the meme is a video converted from GIF"}, "gif_slug": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Provider-issued slug for the GIF this meme was sourced from, if any" }, "gif_provider": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stable name of the GIF provider that issued gif_slug, if any. Legacy records may contain older provider names." }, "media": { "anyOf": [ {"type": "object", "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormat"}}, {"type": "null"} ], "description": "Provider-issued format-name → media descriptor map for gif-sourced memes (mirrors GifResponse.media). Null on memes uploaded as plain attachments." }, "placeholder": { "anyOf": [{"type": "string"}, {"type": "null"}], "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." } }, "required": ["id", "user_id", "name", "tags", "attachment_id", "filename", "content_type", "size", "url"] }, "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": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Width of this format in pixels." }, "height": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Height of this format in pixels." } }, "required": ["src", "proxy_src", "width", "height"] }, "CreateFavoriteMemeBodySchema": { "type": "object", "properties": { "name": {"type": "string", "description": "Display name for the meme"}, "alt_text": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Alternative text description for accessibility" }, "tags": { "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "Tags for categorizing and searching the meme" }, "attachment_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the message attachment to save as a meme" }, "embed_index": { "anyOf": [ {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, {"type": "null"} ], "description": "Index of the message embed to save as a meme" } }, "required": ["name"] }, "ReactionUsersListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, "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/SnowflakeType"}, {"type": "null"}], "description": "Cursor for the next page, or null when there are no more users" } }, "required": ["items", "has_more", "next_after"] }, "PermissionOverwriteCreateRequest": { "type": "object", "properties": { "type": {"type": "integer", "enum": [0, 1], "description": "The type of overwrite (0 = role, 1 = member)"}, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["type"] }, "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"] }, "ChannelSlowmodeStateResponse": { "type": "object", "properties": { "rate_limit_per_user": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The configured slowmode interval in seconds (0 if disabled)" }, "retry_after_ms": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Milliseconds the current user must wait before sending the next message (0 if allowed now)" }, "next_send_allowed_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"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"] }, "WebhookResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for the webhook" }, "guild_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the guild this webhook belongs to" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel this webhook posts to" }, "name": {"type": "string", "description": "The display name of the webhook"}, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the webhook avatar image" }, "token": {"type": "string", "description": "The secure token used to execute the webhook"}, "user": {"$ref": "#/components/schemas/UserPartialResponse"} }, "required": ["id", "guild_id", "channel_id", "name", "token", "user"] }, "WebhookCreateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the webhook"}, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "The avatar image as a base64-encoded data URI" } }, "required": ["name"] }, "DiscoveryCategoryListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/DiscoveryCategoryResponse"} }, "DiscoveryCategoryResponse": { "type": "object", "properties": { "id": {"type": "number", "description": "Category ID"}, "name": {"type": "string", "description": "Category display name"} }, "required": ["id", "name"] }, "DiscoveryGuildListResponse": { "type": "object", "properties": { "guilds": { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild ID"}, "name": {"type": "string", "description": "Guild name"}, "icon": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild icon hash"}, "banner": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild banner hash"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Discovery description" }, "category_type": {"type": "number", "description": "Discovery category type"}, "primary_language": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Primary community language" }, "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" ] }, "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"] }, "description": "Match counts per category for the current filters, ignoring the category filter" } }, "required": ["guilds", "total", "category_counts"] }, "VersionInfoResponse": { "type": "object", "properties": { "version": {"type": "string", "description": "Semantic version string (e.g., 1.0.0)"}, "pub_date": {"type": "string", "description": "ISO 8601 date when this version was published"}, "minimum_system_version": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Minimum operating system version required by this release, when applicable" }, "files": { "type": "object", "additionalProperties": { "type": "object", "properties": { "url": {"type": "string", "description": "Download URL for this file"}, "sha256": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "SHA-256 hash of the file for verification" }, "checksum_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Plain text .sha256 checksum file URL for this file" } }, "required": ["url", "sha256", "checksum_url"] }, "description": "Map of package format to download files" } }, "required": ["version", "pub_date", "files"] }, "DesktopVersionsResponse": { "type": "object", "properties": { "versions": { "type": "array", "items": {"$ref": "#/components/schemas/VersionInfoResponse"}, "description": "Array of available versions" }, "has_more": {"type": "boolean", "description": "Whether more versions are available to fetch"} }, "required": ["versions", "has_more"] }, "DonationCheckoutResponse": { "type": "object", "properties": { "url": {"type": "string", "format": "uri", "description": "Stripe checkout URL to redirect the user to"} }, "required": ["url"] }, "DonationCheckoutRequest": { "type": "object", "properties": { "email": {"type": "string", "maxLength": 254, "format": "email", "description": "Donor email address"}, "amount_cents": { "type": "integer", "format": "int53", "description": "Donation amount in minor units for the selected currency" }, "currency": { "enum": ["usd", "eur", "brl", "inr", "pln", "try"], "type": "string", "x-enumNames": ["usd", "eur", "brl", "inr", "pln", "try"], "description": "Currency for the donation" }, "interval": { "anyOf": [ {"enum": ["month", "year"], "type": "string", "x-enumNames": ["month", "year"]}, {"type": "null"} ], "description": "Billing interval (null for one-time donation)" }, "is_business": { "type": "boolean", "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." } }, "required": ["email", "amount_cents", "currency", "interval"] }, "DonationRequestLinkRequest": { "type": "object", "properties": { "email": { "type": "string", "maxLength": 254, "format": "email", "description": "Email address to send the magic link to" } }, "required": ["email"] }, "GuildEmojiMetadataResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this emoji" }, "guild_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The guild this emoji belongs to" }, "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"] }, "GatewayBotResponse": { "type": "object", "properties": { "url": {"type": "string", "description": "WebSocket URL to connect to the gateway"}, "shards": { "type": "integer", "format": "int53", "description": "Recommended number of shards to use when connecting" }, "session_start_limit": { "type": "object", "properties": { "total": {"type": "integer", "format": "int53", "description": "Total number of session starts allowed"}, "remaining": {"type": "integer", "format": "int53", "description": "Remaining number of session starts"}, "reset_after": { "type": "integer", "format": "int53", "description": "Milliseconds until the limit resets" }, "max_concurrency": { "type": "integer", "format": "int53", "description": "Maximum number of concurrent IDENTIFY requests" } }, "required": ["total", "remaining", "reset_after", "max_concurrency"], "description": "Session start rate limit information" } }, "required": ["url", "shards", "session_start_limit"] }, "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"] }, "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": {"type": "string", "description": "Name of the provider that produced this GIF."}, "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": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Width of the GIF in pixels (best format)." }, "height": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Height of the GIF in pixels (best format)." }, "media": { "type": "object", "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "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." } }, "required": ["id", "slug", "provider", "title", "url", "src", "proxy_src", "width", "height", "media"] }, "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"] }, "Locale": { "type": "string", "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" ], "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)" ], "description": "The locale code for the user interface language" }, "GifRegisterShareRequest": { "type": "object", "properties": { "id": {"type": "string", "description": "Provider-issued share identifier (slug or slug-id token)."}, "q": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional search query that produced the GIF." }, "locale": {"$ref": "#/components/schemas/Locale"} }, "required": ["id"] }, "GiftCodeResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique gift code string"}, "duration_type": { "enum": ["days", "weeks", "months", "years"], "type": "string", "x-enumNames": ["days", "weeks", "months", "years"], "description": "Duration unit for the gift entitlement" }, "duration_quantity": { "type": "integer", "format": "int53", "description": "Duration quantity for the selected duration unit" }, "redeemed": {"type": "boolean", "description": "Whether the gift code has been redeemed"}, "created_by": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "The user who created the gift code" } }, "required": ["code", "duration_type", "duration_quantity", "redeemed"] }, "GuildResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this guild" }, "name": {"type": "string", "description": "The name of the guild"}, "icon": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild icon"}, "banner": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild banner"}, "banner_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the guild banner in pixels" }, "banner_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the guild banner in pixels" }, "splash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild splash screen" }, "splash_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the guild splash in pixels" }, "splash_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the guild splash in pixels" }, "splash_card_alignment": { "type": "integer", "enum": [0, 1, 2], "description": "The alignment of the splash card" }, "embed_splash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the embedded invite splash" }, "embed_splash_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the embedded invite splash in pixels" }, "embed_splash_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the embedded invite splash in pixels" }, "vanity_url_code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The vanity URL code for the guild" }, "owner_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the guild owner"}, "system_channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the channel where system messages are sent" }, "system_channel_flags": {"$ref": "#/components/schemas/SystemChannelFlags"}, "rules_channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the rules channel" }, "afk_channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the AFK voice channel" }, "afk_timeout": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "AFK timeout in seconds before moving users to the AFK channel" }, "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", "description": "Required MFA level for moderation actions" }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Custom guild-wide content warning text; null falls back to a localized default" }, "explicit_content_filter": { "$ref": "#/components/schemas/GuildExplicitContentFilter", "description": "Level of content filtering for explicit media" }, "default_message_notifications": { "$ref": "#/components/schemas/DefaultMessageNotifications", "description": "Default notification level for new members" }, "disabled_operations": {"$ref": "#/components/schemas/GuildOperations"}, "message_history_cutoff": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp controlling how far back members without Read Message History can access messages. When null, no historical access is allowed." }, "permissions": { "type": "string", "format": "int64", "pattern": "^[0-9]+$", "description": "The current user permissions in this guild when available" }, "roles": { "type": "array", "items": {"$ref": "#/components/schemas/GuildRoleResponse"}, "description": "Roles in the guild from gateway state" }, "emojis": { "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiResponse"}, "description": "Emojis in the guild from gateway state" }, "stickers": { "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerResponse"}, "description": "Stickers in the guild from gateway state" }, "channels": { "type": "array", "items": {"$ref": "#/components/schemas/ChannelResponse"}, "description": "Channels visible to the requesting user from gateway state" }, "member_count": {"$ref": "#/components/schemas/Int32Type"}, "online_count": {"$ref": "#/components/schemas/Int32Type"}, "approximate_member_count": {"$ref": "#/components/schemas/Int32Type"}, "approximate_presence_count": {"$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" ] }, "SystemChannelFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "x-bitflagValues": [ { "name": "SUPPRESS_JOIN_NOTIFICATIONS", "value": "1", "description": "Suppress member join notifications in system channel" } ], "description": "System channel message flags" }, "GuildVerificationLevel": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4], "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH", "VERY_HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", "Member of the server for more than 10 minutes", "Must have a verified phone number" ], "description": "Required verification level for members" }, "GuildMFALevel": { "type": "integer", "format": "int32", "enum": [0, 1], "x-enumNames": ["NONE", "ELEVATED"], "x-enumDescriptions": ["Guild has no MFA requirement", "Guild requires 2FA for moderation actions"], "description": "Required MFA level for moderation actions" }, "NSFWLevel": { "type": "integer", "format": "int32", "enum": [0, 3], "x-enumNames": ["SAFE", "AGE_RESTRICTED"], "x-enumDescriptions": ["Guild is safe for all ages", "Guild is age-restricted"], "description": "The NSFW level of the guild" }, "GuildExplicitContentFilter": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "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" ], "description": "Level of content filtering for explicit media" }, "DefaultMessageNotifications": { "type": "integer", "format": "int32", "enum": [0, 1], "x-enumNames": ["ALL_MESSAGES", "ONLY_MENTIONS"], "x-enumDescriptions": ["Notify on all messages", "Notify only on mentions"], "description": "Default notification level for new members" }, "GuildOperations": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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"} ], "description": "Bitmask of disabled guild operations" }, "GuildRoleResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this role" }, "name": {"type": "string", "description": "The name of the role"}, "color": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The colour of the role as an integer" }, "position": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The position of the role in the role hierarchy" }, "hoist_position": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The position of the role in the hoisted member list" }, "permissions": { "type": "string", "format": "int64", "pattern": "^[0-9]+$", "description": "The permissions bitfield for the role" }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The unicode emoji for this role" } }, "required": ["id", "name", "color", "position", "permissions", "hoist", "mentionable"] }, "GuildEmojiResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this emoji" }, "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"] }, "GuildStickerResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this sticker" }, "name": {"type": "string", "description": "The name of the sticker"}, "description": {"type": "string", "description": "The description of the sticker"}, "tags": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "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"] }, "GuildCreateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the guild (1-100 characters)"}, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the guild icon" }, "empty_features": {"type": "boolean", "description": "Whether to create the guild without default features"}, "template": {"$ref": "#/components/schemas/TemplateSerializedGuild"} }, "required": ["name"] }, "TemplateSerializedGuild": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the template guild"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the template guild" }, "verification_level": {"type": "number", "description": "The verification level"}, "default_message_notifications": {"type": "number", "description": "The default message notification level"}, "explicit_content_filter": {"type": "number", "description": "The explicit content filter level"}, "system_channel_id": { "oneOf": [ {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, {"type": "string"}, {"type": "null"} ], "description": "The template-local system channel ID" }, "afk_timeout": {"type": "number", "description": "The AFK timeout in seconds"}, "system_channel_flags": {"type": "number", "description": "The system channel flags"}, "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"] }, "TemplateRole": { "type": "object", "properties": { "id": { "oneOf": [ {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, {"type": "string"} ], "description": "The template-local role ID" }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the role"}, "permissions": { "oneOf": [ {"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"} ], "description": "The permissions bitfield as a string (legacy)" }, "permissions_new": { "oneOf": [ {"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"} ], "description": "The permissions bitfield as a string (preferred)" }, "color": {"type": "number", "description": "The colour of the role as an integer"}, "hoist": {"type": "boolean", "description": "Whether the role is hoisted"}, "mentionable": {"type": "boolean", "description": "Whether the role is mentionable"}, "unicode_emoji": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The unicode emoji for the role icon" } }, "required": ["id"] }, "TemplateChannel": { "type": "object", "properties": { "id": { "oneOf": [ {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, {"type": "string"} ], "description": "The template-local channel ID" }, "type": {"type": "number", "description": "The channel type (0 = text, 2 = voice, 4 = category)"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the channel"}, "topic": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic"}, "position": {"type": "number", "description": "The position of the channel"}, "parent_id": { "oneOf": [ {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, {"type": "string"}, {"type": "null"} ], "description": "The template-local ID of the parent category" }, "bitrate": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The bitrate for voice channels"}, "user_limit": { "anyOf": [{"type": "number"}, {"type": "null"}], "description": "The user limit for voice channels" }, "voice_connection_limit": { "anyOf": [{"type": "number"}, {"type": "null"}], "description": "The per-user voice connection limit for voice channels" }, "nsfw": {"type": "boolean", "description": "Whether the channel is NSFW"}, "rate_limit_per_user": {"type": "number", "description": "Slowmode rate limit in seconds"}, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": { "oneOf": [ {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"}, {"type": "string"} ], "description": "The ID of the role or user for this overwrite" }, "type": { "oneOf": [{"type": "number"}, {"type": "string"}], "description": "The type of overwrite (0/role = role, 1/member = member)" }, "allow": { "oneOf": [ {"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"} ], "description": "The allowed permissions bitfield as a string" }, "deny": { "oneOf": [ {"type": "string"}, {"type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53"} ], "description": "The denied permissions bitfield as a string" } }, "required": ["id", "type", "allow", "deny"] }, "description": "Permission overwrites for this channel" } }, "required": ["id", "type", "position"] }, "GuildUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the guild (1-100 characters)"}, "icon": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the guild icon" }, "system_channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the channel where system messages are sent" }, "system_channel_flags": {"$ref": "#/components/schemas/SystemChannelFlags"}, "afk_channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the AFK voice channel" }, "afk_timeout": { "type": "integer", "minimum": 60, "maximum": 3600, "format": "int32", "description": "AFK timeout in seconds (60-3600) before moving users to the AFK channel" }, "default_message_notifications": { "$ref": "#/components/schemas/DefaultMessageNotifications", "description": "Default notification level for new members" }, "verification_level": { "$ref": "#/components/schemas/GuildVerificationLevel", "description": "Required verification level for members to participate" }, "mfa_level": { "$ref": "#/components/schemas/GuildMFALevel", "description": "Required MFA level for moderation actions" }, "nsfw_level": { "$ref": "#/components/schemas/NSFWLevel", "description": "Legacy: setting this translates to the modern nsfw flag and content warning level" }, "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": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom guild-wide content warning text (max 200 characters); null falls back to a localized default" }, "explicit_content_filter": { "$ref": "#/components/schemas/GuildExplicitContentFilter", "description": "Level of content filtering for explicit media" }, "banner": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the guild banner" }, "splash": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the guild splash screen" }, "embed_splash": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the embedded invite splash" }, "splash_card_alignment": { "type": "integer", "enum": [0, 1, 2], "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" ], "description": "Alignment of the splash card (center, left, or right)" }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "maxItems": 100, "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": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp controlling how far back members without Read Message History can access messages. Set to null to disable historical access." }, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} } }, "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"] }, "GuildAuditLogEntryResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this audit log entry" }, "action_type": {"$ref": "#/components/schemas/AuditLogActionType"}, "user_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The user ID of the user who performed the action" }, "target_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The ID of the affected entity (user, channel, role, invite code, etc.)" }, "reason": {"type": "string", "description": "The reason provided for the action"}, "options": { "type": "object", "properties": { "channel_id": {"type": "string", "description": "Channel ID for relevant actions"}, "count": {"type": "number", "description": "Count of items affected"}, "delete_member_days": { "type": "string", "description": "Number of days of messages to delete on member ban" }, "id": {"type": "string", "description": "ID of the affected entity"}, "integration_type": {"type": "number", "description": "Type of integration"}, "message_id": {"type": "string", "description": "Message ID for relevant actions"}, "members_removed": {"type": "number", "description": "Number of members removed"}, "role_name": {"type": "string", "description": "Name of the role"}, "type": {"type": "number", "description": "Type identifier"}, "inviter_id": {"type": "string", "description": "ID of the user who created the invite"}, "max_age": {"type": "number", "description": "Maximum age of the invite in seconds"}, "max_uses": {"type": "number", "description": "Maximum number of uses for the invite"}, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"}, "uses": {"type": "number", "description": "Number of times the invite has been used"} }, "description": "Additional options depending on action type" }, "changes": { "type": "array", "items": {"$ref": "#/components/schemas/AuditLogChangeSchema"}, "description": "Changes made to the target" } }, "required": ["id", "action_type"] }, "AuditLogActionType": { "type": "integer", "format": "int32", "enum": [ 1, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 40, 41, 42, 50, 51, 52, 60, 61, 62, 90, 91, 92, 72, 73, 74, 75 ], "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" ], "description": "The type of action that occurred" }, "AuditLogChangeSchema": { "type": "object", "properties": { "key": {"type": "string", "description": "The field that changed"}, "old_value": { "oneOf": [ {"type": "string"}, {"type": "number"}, {"type": "boolean"}, {"type": "array", "items": {"type": "string"}}, {"type": "array", "items": {"type": "number"}}, { "type": "object", "properties": { "added": {"type": "array", "items": {"type": "string"}}, "removed": {"type": "array", "items": {"type": "string"}} }, "required": ["added", "removed"] }, {"type": "null"} ], "description": "Value before the change" }, "new_value": { "oneOf": [ {"type": "string"}, {"type": "number"}, {"type": "boolean"}, {"type": "array", "items": {"type": "string"}}, {"type": "array", "items": {"type": "number"}}, { "type": "object", "properties": { "added": {"type": "array", "items": {"type": "string"}}, "removed": {"type": "array", "items": {"type": "string"}} }, "required": ["added", "removed"] }, {"type": "null"} ], "description": "Value after the change" } }, "required": ["key"] }, "AuditLogWebhookResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this webhook" }, "type": {"$ref": "#/components/schemas/WebhookType"}, "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The guild ID this webhook belongs to" }, "channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The channel ID this webhook posts to" }, "name": {"type": "string", "description": "The name of the webhook"}, "avatar_hash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the webhook avatar" } }, "required": ["id", "type", "name"] }, "WebhookType": { "type": "integer", "format": "int32", "enum": [1, 2], "x-enumNames": ["INCOMING", "CHANNEL_FOLLOWER"], "x-enumDescriptions": ["Incoming webhook", "Channel follower webhook"], "description": "The type of webhook" }, "GuildBanResponse": { "type": "object", "properties": { "user": {"$ref": "#/components/schemas/UserPartialResponse"}, "reason": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The reason for the ban"}, "moderator_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the moderator who issued the ban" }, "banned_at": { "type": "string", "format": "date-time", "description": "ISO8601 timestamp of when the ban was issued" }, "expires_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the ban expires (null if permanent)" } }, "required": ["user", "moderator_id", "banned_at"] }, "GuildBanCreateRequest": { "type": "object", "properties": { "delete_message_days": { "type": "integer", "minimum": 0, "maximum": 7, "format": "int32", "description": "Number of days of messages to delete from the banned user (0-7). Deprecated in favor of delete_message_seconds." }, "delete_message_seconds": { "type": "integer", "minimum": 0, "maximum": 604800, "format": "int32", "description": "Number of seconds of messages to delete for the banned user (0-604800, default 0)" }, "reason": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The reason for the ban (max 512 characters)" }, "ban_duration_seconds": { "type": "integer", "format": "int53", "description": "Duration of the ban in seconds (0 for permanent, or between 60 and 63072000 seconds for a temporary ban)" } } }, "ChannelCreateRequest": { "oneOf": [ {"$ref": "#/components/schemas/GuildTextChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildVoiceChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildCategoryChannelCreateRequest"}, {"$ref": "#/components/schemas/GuildLinkChannelCreateRequest"} ] }, "GuildTextChannelCreateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": {"type": "boolean", "description": "Whether the channel is marked as NSFW"}, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "type": { "type": "integer", "enum": [0], "x-enumNames": ["GUILD_TEXT"], "x-enumDescriptions": ["Channel type (text channel)"] }, "name": {"type": "string", "description": "The name of the channel"} }, "required": ["type", "name"] }, "GuildVoiceChannelCreateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": {"type": "boolean", "description": "Whether the channel is marked as NSFW"}, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "type": { "type": "integer", "enum": [2], "x-enumNames": ["GUILD_VOICE"], "x-enumDescriptions": ["Channel type (voice channel)"] }, "name": {"type": "string", "description": "The name of the channel"} }, "required": ["type", "name"] }, "GuildCategoryChannelCreateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": {"type": "boolean", "description": "Whether the channel is marked as NSFW"}, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "type": { "type": "integer", "enum": [4], "x-enumNames": ["GUILD_CATEGORY"], "x-enumDescriptions": ["Channel type (category)"] }, "name": {"type": "string", "description": "The name of the category"} }, "required": ["type", "name"] }, "GuildLinkChannelCreateRequest": { "type": "object", "properties": { "topic": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The channel topic (1-1024 characters)" }, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "External URL for link channels"}, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the parent category for this channel" }, "bitrate": { "anyOf": [{"type": "integer", "minimum": 8000, "maximum": 320000, "format": "int32"}, {"type": "null"}], "description": "Voice channel bitrate in bits per second (8000-320000)" }, "user_limit": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 99, "format": "int32"}, {"type": "null"}], "description": "Maximum users allowed in voice channel (0-99, 0 means unlimited)" }, "voice_connection_limit": { "anyOf": [{"type": "integer", "minimum": 1, "maximum": 100, "format": "int32"}, {"type": "null"}], "description": "Maximum active voice connections allowed per user in a voice channel (1-100)" }, "permission_overwrites": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "type": { "type": "integer", "enum": [0, 1], "x-enumNames": ["ROLE", "MEMBER"], "x-enumDescriptions": [null, null], "description": "The type of overwrite (0 = role, 1 = member)" }, "allow": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "deny": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["id", "type"] }, "description": "Permission overwrites for roles and members" }, "rate_limit_per_user": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 21600, "format": "int32"}, {"type": "null"}], "description": "Slowmode delay in seconds (0-21600)" }, "nsfw": {"type": "boolean", "description": "Whether the channel is marked as NSFW"}, "nsfw_override": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "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." }, "content_warning_level": {"$ref": "#/components/schemas/ContentWarningLevel"}, "content_warning_text": { "anyOf": [{"type": "string", "maxLength": 200}, {"type": "null"}], "description": "Custom channel content warning text (max 200 characters); null inherits from parent or guild" }, "type": { "type": "integer", "enum": [998], "x-enumNames": ["GUILD_LINK"], "x-enumDescriptions": ["Channel type (link channel)"] }, "name": {"type": "string", "description": "The name of the channel"} }, "required": ["type", "name"] }, "ChannelPositionUpdateRequest": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "position": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53", "description": "New position for the channel" }, "parent_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "New parent category ID" }, "preceding_sibling_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of the sibling channel that should directly precede this channel after reordering" }, "lock_permissions": {"type": "boolean", "description": "Whether to sync permissions with the new parent"} }, "required": ["id"] } }, "GuildDeleteRequest": { "type": "object", "properties": { "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} } }, "DiscoveryApplicationResponse": { "type": "object", "properties": { "guild_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Guild ID"}, "guild_nsfw_level": { "anyOf": [{"$ref": "#/components/schemas/NSFWLevel"}, {"type": "null"}], "description": "NSFW level of the guild" }, "status": {"type": "string", "description": "Application status"}, "description": {"type": "string", "description": "Discovery description"}, "category_type": {"type": "number", "description": "Discovery category type"}, "primary_language": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Primary community language" }, "custom_tags": {"type": "array", "items": {"type": "string"}, "description": "Custom discovery tags"}, "applied_at": {"type": "string", "description": "Application timestamp"}, "reviewed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Review timestamp"}, "review_reason": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Review reason (approval/rejection)" }, "removed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Removal timestamp"}, "removal_reason": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Removal reason"} }, "required": ["guild_id", "status", "description", "category_type", "custom_tags", "applied_at"] }, "DiscoveryApplicationRequest": { "type": "object", "properties": { "description": { "type": "string", "minLength": 10, "maxLength": 300, "description": "Description for discovery listing" }, "category_type": { "type": "integer", "minimum": 0, "maximum": 8, "format": "int32", "description": "Discovery category type" }, "primary_language": {"type": "string", "description": "Primary community language (BCP-47 code)"}, "custom_tags": { "type": "array", "items": {"type": "string", "minLength": 2, "maxLength": 30}, "maxItems": 10, "description": "Up to 10 custom discovery tags" } }, "required": ["description", "category_type"] }, "DiscoveryApplicationPatchRequest": { "type": "object", "properties": { "description": { "type": "string", "minLength": 10, "maxLength": 300, "description": "Updated description for discovery listing" }, "category_type": { "type": "integer", "minimum": 0, "maximum": 8, "format": "int32", "description": "Updated discovery category type" }, "primary_language": {"type": "string", "description": "Primary community language (BCP-47 code)"}, "custom_tags": { "type": "array", "items": {"type": "string", "minLength": 2, "maxLength": 30}, "maxItems": 10, "description": "Up to 10 custom discovery tags" } } }, "DiscoveryStatusResponse": { "type": "object", "properties": { "application": { "anyOf": [{"$ref": "#/components/schemas/DiscoveryApplicationResponse"}, {"type": "null"}], "description": "Current discovery application, if any" }, "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"] }, "GuildEmojiCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the emoji (2-32 characters, alphanumeric and underscores only)" }, "image": {"$ref": "#/components/schemas/Base64ImageType"} }, "required": ["name", "image"] }, "GuildEmojiWithUserListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiWithUserResponse"} }, "GuildEmojiWithUserResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this emoji" }, "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": {"$ref": "#/components/schemas/UserPartialResponse"} }, "required": ["id", "name", "animated", "nsfw", "user"] }, "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"] }, "description": "Emojis that failed to create" } }, "required": ["success", "failed"] }, "GuildEmojiBulkCreateRequest": { "type": "object", "properties": { "emojis": { "type": "array", "items": {"$ref": "#/components/schemas/GuildEmojiCreateRequest"}, "minItems": 1, "maxItems": 50, "description": "Array of emoji objects to create (1-50 emojis per batch)" } }, "required": ["emojis"] }, "GuildEmojiCloneRequest": { "type": "object", "properties": {"source_emoji_id": {"$ref": "#/components/schemas/SnowflakeType"}}, "required": ["source_emoji_id"] }, "GuildEmojiUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the emoji (2-32 characters, alphanumeric and underscores only)" } }, "required": ["name"] }, "GuildMemberResponse": { "type": "object", "properties": { "user": {"$ref": "#/components/schemas/UserPartialResponse"}, "nick": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The nickname of the member in this guild" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the member guild-specific avatar" }, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the member guild-specific banner" }, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The accent colour of the member guild profile as an integer" }, "roles": { "type": "array", "items": {"type": "string"}, "maxItems": 250, "description": "Array of role IDs the member has" }, "joined_at": { "type": "string", "format": "date-time", "description": "ISO8601 timestamp of when the user joined the guild" }, "mute": {"type": "boolean", "description": "Whether the member is muted in voice channels"}, "deaf": {"type": "boolean", "description": "Whether the member is deafened in voice channels"}, "communication_disabled_until": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp until which the member is timed out" }, "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"] }, "GuildMemberProfileFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "x-bitflagValues": [ {"name": "AVATAR_UNSET", "value": "1", "description": "Guild member avatar is unset"}, {"name": "BANNER_UNSET", "value": "2", "description": "Guild member banner is unset"} ], "description": "Member profile flags" }, "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", "format": "int53", "description": "Number of results in this page"}, "total_result_count": { "type": "integer", "format": "int53", "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"] }, "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": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Global display name"}, "nickname": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild nickname"}, "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": { "anyOf": [{"$ref": "#/components/schemas/JoinSourceType"}, {"type": "null"}], "description": "How the member joined" }, "source_invite_code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Invite code used to join" }, "inviter_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "User ID of the member who sent the invite" } }, "required": ["source_invite_code", "inviter_id"], "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" ] }, "JoinSourceType": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4, 6], "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" ], "description": "How the member joined the guild" }, "GuildMemberSearchRequest": { "type": "object", "properties": { "query": { "type": "string", "maxLength": 100, "description": "Text to search for in usernames, global names, and nicknames" }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "format": "int32", "description": "Maximum number of results to return" }, "offset": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53", "description": "Number of results to skip for pagination" }, "role_ids": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "description": "Filter by role IDs (member must have all specified roles)" }, "joined_at_gte": { "type": "integer", "format": "int53", "description": "Filter members who joined at or after this unix timestamp" }, "joined_at_lte": { "type": "integer", "format": "int53", "description": "Filter members who joined at or before this unix timestamp" }, "join_source_type": { "type": "array", "items": {"$ref": "#/components/schemas/JoinSourceType"}, "maxItems": 10, "description": "Filter by join source types" }, "source_invite_code": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "description": "Filter by invite codes used to join" }, "is_bot": {"type": "boolean", "description": "Filter by bot status"}, "user_created_at_gte": { "type": "integer", "format": "int53", "description": "Filter members whose account was created at or after this unix timestamp" }, "user_created_at_lte": { "type": "integer", "format": "int53", "description": "Filter members whose account was created at or before this unix timestamp" }, "sort_by": { "enum": ["joinedAt", "relevance"], "type": "string", "x-enumNames": ["joinedAt", "relevance"], "description": "Sort results by field" }, "sort_order": { "enum": ["asc", "desc"], "type": "string", "x-enumNames": ["asc", "desc"], "description": "Sort order" } } }, "MyGuildMemberUpdateRequest": { "type": "object", "properties": { "nick": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The nickname to set for the member (1-32 characters)" }, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the member guild avatar" }, "banner": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the member guild banner" }, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The member guild profile bio (1-320 characters)" }, "pronouns": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The member guild profile pronouns (1-40 characters)" }, "accent_color": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 16777215, "format": "int32"}, {"type": "null"}], "description": "The accent color for the member guild profile as an integer" }, "profile_flags": {"anyOf": [{"$ref": "#/components/schemas/GuildMemberProfileFlags"}, {"type": "null"}]}, "mention_flags": { "anyOf": [ { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "Per-guild reply mention preference override for this member; NO_PREFERENCE inherits the user's account-wide setting" }, {"type": "null"} ] }, "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": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp until which the member is timed out" }, "timeout_reason": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The reason for timing out the member (1-512 characters)" }, "channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The voice channel ID to move the member to" }, "connection_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The voice connection ID for the member" } } }, "GuildMemberUpdateRequest": { "type": "object", "properties": { "nick": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The nickname to set for the member (1-32 characters)" }, "roles": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 250, "description": "Array of role IDs to assign to the member (max 250)" }, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the member guild avatar" }, "banner": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded image data for the member guild banner" }, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The member guild profile bio (1-320 characters)" }, "pronouns": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The member guild profile pronouns (1-40 characters)" }, "accent_color": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 16777215, "format": "int32"}, {"type": "null"}], "description": "The accent color for the member guild profile as an integer" }, "profile_flags": {"anyOf": [{"$ref": "#/components/schemas/GuildMemberProfileFlags"}, {"type": "null"}]}, "mention_flags": { "anyOf": [ { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "Per-guild reply mention preference override for this member; NO_PREFERENCE inherits the user's account-wide setting" }, {"type": "null"} ] }, "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": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp until which the member is timed out" }, "timeout_reason": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The reason for timing out the member (1-512 characters)" }, "channel_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The voice channel ID to move the member to" }, "connection_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The voice connection ID for the member" } } }, "GuildRoleCreateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the role (1-100 characters)"}, "color": { "type": "integer", "minimum": 0, "maximum": 16777215, "format": "int32", "description": "The color of the role as an integer (default: 0)" }, "permissions": {"$ref": "#/components/schemas/UnsignedInt64Type"} }, "required": ["name"] }, "GuildRolePositionsRequest": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "position": {"type": "integer", "format": "int53", "description": "The new position for the role"} }, "required": ["id"] } }, "GuildRoleHoistPositionsRequest": { "type": "array", "items": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "hoist_position": { "type": "integer", "format": "int53", "description": "The new hoist position for the role" } }, "required": ["id", "hoist_position"] } }, "GuildRoleUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the role (1-100 characters)"}, "color": { "type": "integer", "minimum": 0, "maximum": 16777215, "format": "int32", "description": "The color of the role as an integer" }, "permissions": {"$ref": "#/components/schemas/UnsignedInt64Type"}, "hoist": { "type": "boolean", "description": "Whether the role should be displayed separately in the member list" }, "hoist_position": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "The position of the role in the hoisted member list" }, "mentionable": {"type": "boolean", "description": "Whether the role can be mentioned by anyone"} } }, "GuildStickerCreateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the sticker (2-30 characters)"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Description of the sticker (1-500 characters)" }, "tags": { "type": "array", "items": {"type": "string"}, "minItems": 0, "maxItems": 10, "description": "Array of autocomplete/suggestion tags (max 10 tags, each 1-30 characters)" }, "image": {"$ref": "#/components/schemas/Base64ImageType"} }, "required": ["name", "image"] }, "GuildStickerWithUserListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerWithUserResponse"} }, "GuildStickerWithUserResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this sticker" }, "name": {"type": "string", "description": "The name of the sticker"}, "description": {"type": "string", "description": "The description of the sticker"}, "tags": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "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": {"$ref": "#/components/schemas/UserPartialResponse"} }, "required": ["id", "name", "description", "tags", "animated", "nsfw", "user"] }, "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"] }, "description": "Stickers that failed to create" } }, "required": ["success", "failed"] }, "GuildStickerBulkCreateRequest": { "type": "object", "properties": { "stickers": { "type": "array", "items": {"$ref": "#/components/schemas/GuildStickerCreateRequest"}, "minItems": 1, "maxItems": 50, "description": "Array of sticker objects to create (1-50 stickers per batch)" } }, "required": ["stickers"] }, "GuildStickerCloneRequest": { "type": "object", "properties": {"source_sticker_id": {"$ref": "#/components/schemas/SnowflakeType"}}, "required": ["source_sticker_id"] }, "GuildStickerUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the sticker (2-30 characters)"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Description of the sticker (1-500 characters)" }, "tags": { "type": "array", "items": {"type": "string"}, "minItems": 0, "maxItems": 10, "description": "Array of autocomplete/suggestion tags (max 10 tags, each 1-30 characters)" } }, "required": ["name"] }, "GuildTransferOwnershipRequest": { "type": "object", "properties": { "new_owner_id": {"$ref": "#/components/schemas/SnowflakeType"}, "password": {"$ref": "#/components/schemas/PasswordType"} }, "required": ["new_owner_id"] }, "GuildVanityURLResponse": { "type": "object", "properties": { "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The vanity URL code for the guild"}, "uses": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The number of times this vanity URL has been used" } }, "required": ["uses"] }, "GuildVanityURLUpdateResponse": { "type": "object", "properties": { "code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The new vanity URL code, or null when the vanity URL was removed" } }, "required": ["code"] }, "GuildVanityURLUpdateRequest": { "type": "object", "properties": { "code": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The new vanity URL code (2-32 characters, alphanumeric and hyphens)" } } }, "InviteResponseSchema": { "oneOf": [ {"$ref": "#/components/schemas/GuildInviteResponse"}, {"$ref": "#/components/schemas/GroupDmInviteResponse"} ] }, "GuildInviteResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "type": {"type": "integer", "enum": [0], "description": "The type of invite (guild)"}, "guild": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this guild" }, "name": {"type": "string", "description": "The name of the guild"}, "icon": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild icon"}, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild banner" }, "banner_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the guild banner in pixels" }, "banner_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the guild banner in pixels" }, "splash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the guild splash screen" }, "splash_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the guild splash in pixels" }, "splash_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the guild splash in pixels" }, "splash_card_alignment": { "type": "integer", "enum": [0, 1, 2], "description": "The alignment of the splash card" }, "embed_splash": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the embedded invite splash" }, "embed_splash_width": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The width of the embedded invite splash in pixels" }, "embed_splash_height": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The height of the embedded invite splash in pixels" }, "features": { "type": "array", "items": {"$ref": "#/components/schemas/GuildFeatureSchema"}, "description": "Array of guild feature flags" } }, "required": ["id", "name", "splash_card_alignment", "features"], "description": "The guild this invite is for" }, "channel": {"$ref": "#/components/schemas/ChannelPartialResponse"}, "inviter": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "The user who created the invite" }, "member_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The approximate total member count of the guild" }, "presence_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The approximate online member count of the guild" }, "expires_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the invite expires" }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"} }, "required": ["code", "type", "guild", "channel", "member_count", "presence_count", "temporary"] }, "GroupDmInviteResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique invite code"}, "type": {"type": "integer", "enum": [1], "description": "The type of invite (group DM)"}, "channel": {"$ref": "#/components/schemas/ChannelPartialResponse"}, "inviter": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "The user who created the invite" }, "member_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The current member count of the group DM" }, "expires_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the invite expires" }, "temporary": {"type": "boolean", "description": "Whether the invite grants temporary membership"} }, "required": ["code", "type", "channel", "member_count", "temporary"] }, "GeolocationResponse": { "type": "object", "properties": { "countryCode": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 3166-1 alpha-2 country code resolved for the client, or null when it cannot be resolved" }, "regionCode": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 3166-2 subdivision code resolved for the client, or null when it cannot be resolved" }, "latitude": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Approximate latitude of the client, or null when it cannot be resolved" }, "longitude": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Approximate longitude of the client, or null when it cannot be resolved" }, "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"] }, "GeoEntry": { "type": "object", "properties": { "countryCode": {"type": "string", "description": "ISO 3166-1 alpha-2 country code"}, "regionCode": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 3166-2 subdivision code, or null when the entry covers the whole country" } }, "required": ["countryCode", "regionCode"] }, "OAuth2MeResponse": { "type": "object", "properties": { "application": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the application" }, "name": {"type": "string", "description": "The name of the application"}, "icon": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The icon hash of the application" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the application" }, "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"], "description": "The application associated with the token" }, "scopes": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "The list of granted OAuth2 scopes" }, "expires": {"type": "string", "description": "The expiration timestamp of the token"}, "user": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the user" }, "username": {"type": "string", "description": "The username of the user"}, "discriminator": {"type": "string", "description": "The discriminator of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The global display name of the user" }, "avatar": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the user"}, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The default avatar color of the user" }, "bot": {"type": "boolean", "description": "Whether the user is a bot"}, "system": {"type": "boolean", "description": "Whether the user is a system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "email": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email address of the user" }, "verified": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the user has verified their email" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "description": "The user associated with the token" } }, "required": ["application", "scopes", "expires"] }, "ApplicationFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "description": "The application flags" }, "OAuth2AuthorizationsListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/OAuth2AuthorizationResponse"} }, "OAuth2AuthorizationResponse": { "type": "object", "properties": { "application": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the application" }, "name": {"type": "string", "description": "The name of the application"}, "icon": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The icon hash of the application" }, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the application" }, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"} }, "required": ["id", "name", "icon", "description", "bot_public"], "description": "The application that was authorized" }, "scopes": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "The list of granted OAuth2 scopes" }, "authorized_at": {"type": "string", "description": "The timestamp when the authorization was granted"} }, "required": ["application", "scopes", "authorized_at"] }, "OAuth2AuthorizationsBulkRevokeRequest": { "type": "object", "properties": { "application_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "minItems": 1, "maxItems": 100, "description": "Application IDs whose OAuth2 authorizations should be revoked" } }, "required": ["application_ids"] }, "ApplicationResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the application" }, "name": {"type": "string", "description": "The name of the application"}, "redirect_uris": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "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": {"type": "string", "description": "The client secret for OAuth2 authentication"}, "bot": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the bot user" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the bot"}, "banner": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The banner hash of the bot"}, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The bio or description of the bot" }, "token": {"type": "string", "description": "The bot token for authentication"}, "mfa_enabled": {"type": "boolean", "description": "Whether the bot has MFA enabled"}, "authenticator_types": { "type": "array", "items": {"$ref": "#/components/schemas/AuthenticatorType"}, "maxItems": 10, "description": "The types of authenticators enabled" }, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "description": "The bot user associated with the application" } }, "required": ["id", "name", "redirect_uris", "bot_public", "bot_require_code_grant"] }, "ApplicationCreateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the application"}, "redirect_uris": { "anyOf": [{"type": "array", "items": {"type": "string"}, "maxItems": 10}, {"type": "null"}], "description": "The redirect URIs for OAuth2 flows" }, "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"} }, "required": ["name"] }, "OAuth2ApplicationsMeResponse": { "oneOf": [ {"$ref": "#/components/schemas/ApplicationListResponse"}, {"$ref": "#/components/schemas/ApplicationsMeResponse"} ] }, "ApplicationListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/ApplicationResponse"}}, "ApplicationUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The name of the application"}, "redirect_uris": { "anyOf": [{"type": "array", "items": {"type": "string"}, "maxItems": 10}, {"type": "null"}], "description": "The redirect URIs for OAuth2 flows" }, "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"} } }, "BotProfileResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the bot user" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the bot"}, "banner": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The banner hash of the bot"}, "bio": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The bio or description of the bot"}, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "avatar", "banner", "bio", "flags"] }, "BotProfileUpdateRequest": { "type": "object", "properties": { "username": {"$ref": "#/components/schemas/UsernameType"}, "discriminator": {"$ref": "#/components/schemas/DiscriminatorType"}, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "The avatar image as base64" }, "banner": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "The banner image as base64" }, "bio": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The bio or description of the bot"}, "bot_flags": {"$ref": "#/components/schemas/BotFlags"} } }, "DiscriminatorType": {"type": "string", "pattern": "^\\d{1,4}$"}, "BotTokenResetResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "The new bot token"}, "bot": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the bot user" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the bot"}, "banner": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The banner hash of the bot"}, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The bio or description of the bot" }, "token": {"type": "string", "description": "The bot token for authentication"}, "mfa_enabled": {"type": "boolean", "description": "Whether the bot has MFA enabled"}, "authenticator_types": { "type": "array", "items": {"$ref": "#/components/schemas/AuthenticatorType"}, "maxItems": 10, "description": "The types of authenticators enabled" }, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "description": "Detailed bot user metadata" } }, "required": ["token", "bot"] }, "ApplicationPublicResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the application" }, "name": {"type": "string", "description": "The name of the application"}, "icon": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The icon hash of the application"}, "description": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The description of the application" }, "redirect_uris": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "description": "The registered redirect URIs for OAuth2" }, "scopes": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "The available OAuth2 scopes" }, "bot_public": {"type": "boolean", "description": "Whether the bot can be invited by anyone"}, "bot": { "anyOf": [ { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the bot user" }, "username": {"type": "string", "description": "The username of the bot"}, "discriminator": {"type": "string", "description": "The discriminator of the bot"}, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the bot" }, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The banner hash of the bot" }, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The bio or description of the bot" }, "token": {"type": "string", "description": "The bot token for authentication"}, "flags": {"$ref": "#/components/schemas/BotFlags"} }, "required": ["id", "username", "discriminator", "bio", "flags"], "description": "Detailed bot user metadata" }, {"type": "null"} ], "description": "The bot user associated with the application" }, "current_user": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "Partial user data for the authenticated requester, when a session token is present" } }, "required": ["id", "name", "icon", "description", "redirect_uris", "scopes", "bot_public", "bot"] }, "OAuth2ConsentResponse": { "type": "object", "properties": { "redirect_to": {"type": "string", "description": "The URL to redirect the user to after consent"} }, "required": ["redirect_to"] }, "AuthorizeConsentRequest": { "type": "object", "properties": { "response_type": {"type": "string", "description": "The OAuth2 response type"}, "client_id": {"$ref": "#/components/schemas/SnowflakeType"}, "redirect_uri": {"type": "string", "description": "The URI to redirect to after authorization"}, "scope": {"type": "string", "description": "The space-separated list of requested scopes"}, "state": {"type": "string", "description": "A random string for CSRF protection"}, "permissions": {"type": "string", "description": "The bot permissions to request"}, "guild_id": {"$ref": "#/components/schemas/SnowflakeType"}, "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "code_challenge": {"type": "string", "description": "The PKCE code challenge"}, "code_challenge_method": { "type": "string", "enum": ["S256", "plain"], "x-enumNames": ["S256", "PLAIN"], "x-enumDescriptions": ["SHA-256 hash of code verifier", "Plain text code verifier"], "description": "The PKCE code challenge method" } }, "required": ["client_id", "scope"] }, "OAuth2IntrospectResponse": { "type": "object", "properties": { "active": {"type": "boolean", "description": "Whether the token is currently active"}, "scope": {"type": "string", "description": "The space-separated list of scopes"}, "client_id": {"$ref": "#/components/schemas/SnowflakeType"}, "username": {"type": "string", "description": "The username of the token owner"}, "token_type": {"type": "string", "description": "The type of token"}, "exp": {"$ref": "#/components/schemas/Int32Type"}, "iat": {"$ref": "#/components/schemas/Int32Type"}, "sub": {"$ref": "#/components/schemas/SnowflakeType"} }, "required": ["active"] }, "IntrospectRequestForm": { "type": "object", "properties": { "token": {"type": "string", "description": "The token to introspect"}, "client_id": {"$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"type": "string", "description": "The application client secret"} }, "required": ["token"] }, "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": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The number of seconds until the access token expires" }, "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"] }, "TokenRequest": { "oneOf": [ {"$ref": "#/components/schemas/AuthorizationCodeTokenRequest"}, {"$ref": "#/components/schemas/RefreshTokenTokenRequest"} ] }, "AuthorizationCodeTokenRequest": { "type": "object", "properties": { "grant_type": { "type": "string", "enum": ["authorization_code"], "description": "The grant type for exchanging an authorization code" }, "code": {"type": "string", "description": "The authorization code received from the authorize endpoint"}, "redirect_uri": {"type": "string", "description": "The redirect URI used in the authorization request"}, "client_id": {"$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"type": "string", "description": "The application client secret"}, "code_verifier": {"type": "string", "description": "The PKCE code verifier for the authorization request"} }, "required": ["grant_type", "code", "redirect_uri"] }, "RefreshTokenTokenRequest": { "type": "object", "properties": { "grant_type": { "type": "string", "enum": ["refresh_token"], "description": "The grant type for refreshing an access token" }, "refresh_token": {"type": "string", "description": "The refresh token to exchange for a new access token"}, "client_id": {"$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"type": "string", "description": "The application client secret"} }, "required": ["grant_type", "refresh_token"] }, "RevokeRequestForm": { "type": "object", "properties": { "token": {"type": "string", "description": "The token to revoke"}, "token_type_hint": { "type": "string", "enum": ["access_token", "refresh_token"], "x-enumNames": ["ACCESS_TOKEN", "REFRESH_TOKEN"], "x-enumDescriptions": ["An OAuth2 access token", "An OAuth2 refresh token"], "description": "A hint about the type of token being revoked" }, "client_id": {"$ref": "#/components/schemas/SnowflakeType"}, "client_secret": {"type": "string", "description": "The application client secret"} }, "required": ["token"] }, "OAuth2UserInfoResponse": { "type": "object", "properties": { "sub": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The subject identifier of the user" }, "id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier of the user"}, "username": {"type": "string", "description": "The username of the user"}, "discriminator": {"type": "string", "description": "The discriminator of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The global display name of the user" }, "avatar": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The avatar hash of the user"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email address of the user"}, "verified": { "anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Whether the user has verified their email" }, "flags": {"$ref": "#/components/schemas/PublicUserFlags"} }, "required": ["sub", "id", "username", "discriminator", "global_name", "avatar"] }, "ChangeSubscriptionRequest": { "type": "object", "properties": { "billing_cycle": { "enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["monthly", "yearly"], "description": "The recurring billing cycle to switch the active subscription to" }, "effective_at": { "enum": ["now", "period_end"], "type": "string", "x-enumNames": ["now", "period_end"], "description": "When the billing cycle change should take effect" } }, "required": ["billing_cycle"] }, "CurrentSubscriptionPriceResponse": { "anyOf": [ { "type": "object", "properties": { "price_id": {"type": "string", "description": "The Stripe price ID the user is currently billed against"}, "amount_minor": { "type": "integer", "format": "int53", "description": "The amount the user is actually charged, in the currency minor unit" }, "currency": { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "description": "Currency of the charged amount" }, "billing_cycle": { "enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["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", "format": "int53"}, {"type": "null"}], "description": "The current list price for the same cycle/currency, in the currency minor unit" }, "list_price_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The current list Stripe price ID for the same cycle/currency" } }, "required": [ "price_id", "amount_minor", "currency", "billing_cycle", "is_grandfathered", "list_amount_minor", "list_price_id" ] }, {"type": "null"} ] }, "UrlResponse": { "type": "object", "properties": {"url": {"type": "string", "description": "The URL to redirect to"}}, "required": ["url"] }, "SuccessResponse": { "type": "object", "properties": { "success": {"type": "boolean", "enum": [true], "description": "Whether the operation succeeded"} }, "required": ["success"] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp when actual premium access first started" }, "premium_until": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp when actual premium access ends, including stacked gift time" }, "premium_will_cancel": { "type": "boolean", "description": "Whether the subscription is set to cancel at period end" }, "premium_billing_cycle": { "anyOf": [ {"enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["monthly", "yearly"]}, {"type": "null"} ], "description": "The actual recurring billing cycle, when known" }, "premium_lifetime_sequence": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Visionary sequence number, when applicable" }, "premium_grace_ends_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp when grace access ends, when applicable" }, "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" ] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Effective premium start timestamp exposed to the client" }, "premium_until": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Effective premium end timestamp exposed to the client, including stacked gift time" }, "premium_will_cancel": { "type": "boolean", "description": "Effective cancellation status exposed to the client" }, "premium_billing_cycle": { "anyOf": [ {"enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["monthly", "yearly"]}, {"type": "null"} ], "description": "Effective recurring billing cycle, when known" }, "premium_lifetime_sequence": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Effective Visionary sequence number, when applicable" }, "premium_grace_ends_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Effective grace timestamp exposed to the client" }, "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" ] }, "billing": { "type": "object", "properties": { "stripe_customer_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "current_subscription_price": { "anyOf": [{"$ref": "#/components/schemas/CurrentSubscriptionPriceResponse"}, {"type": "null"}] }, "pending_subscription_change": { "anyOf": [{"$ref": "#/components/schemas/PendingSubscriptionChangeResponse"}, {"type": "null"}] }, "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" ] }, "pricing": {"$ref": "#/components/schemas/PremiumPricingState"} }, "required": ["actual", "effective", "billing", "pricing"] }, "UserPremiumTypes": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "x-enumNames": ["NONE", "SUBSCRIPTION", "LIFETIME"], "x-enumDescriptions": [ "No premium subscription", "Active premium subscription", "Lifetime premium subscription" ], "description": "Premium subscription type" }, "PendingSubscriptionChangeResponse": { "anyOf": [ { "type": "object", "properties": { "schedule_id": { "type": "string", "description": "Stripe subscription schedule ID managing the pending change" }, "change_kind": { "enum": ["billing_cycle", "price"], "type": "string", "x-enumNames": ["billing_cycle", "price"], "description": "Whether the pending change moves the billing cycle or only the price within the same cycle" }, "current_billing_cycle": { "anyOf": [ {"enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["monthly", "yearly"]}, {"type": "null"} ], "description": "Current recurring billing cycle" }, "target_billing_cycle": { "enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Current Stripe price ID, when known" }, "target_price_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stripe price ID that will be used after the change" }, "target_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Unit amount of the price that will be used after the change, in the currency minor unit" }, "currency": { "anyOf": [ { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"] }, {"type": "null"} ], "description": "Currency for the pending change" }, "initial_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Estimated first invoice amount after one-time credits, in the currency minor unit" }, "recurring_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Estimated normal recurring amount after the first invoice, in the currency minor unit" }, "credit_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"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" ] }, {"type": "null"} ] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stripe price ID the subscription is billed against today" }, "current_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Amount the subscription is billed today, in the currency minor unit" }, "list_price_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Current list Stripe price ID for the same cycle and currency" }, "list_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Current list price for the same cycle and currency, in the currency minor unit" }, "currency": { "anyOf": [ { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"] }, {"type": "null"} ], "description": "Currency of both the current and the list amount" }, "billing_cycle": { "anyOf": [ {"enum": ["monthly", "yearly"], "type": "string", "x-enumNames": ["monthly", "yearly"]}, {"type": "null"} ], "description": "Recurring billing cycle the switch applies to" }, "effective_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp the switch takes effect, which is the end of the current billing period" } }, "required": [ "available", "reason", "pending", "current_price_id", "current_amount_minor", "list_price_id", "list_amount_minor", "currency", "billing_cycle", "effective_at" ] }, "ListPriceSwitchIneligibilityReason": { "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" ], "type": "string", "x-enumNames": [ "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" ] }, "PremiumBillingSubscriptionResponse": { "type": "object", "properties": { "id": {"type": "string"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "current_period_start": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "current_period_end": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "cancel_at_period_end": {"type": "boolean"}, "cancel_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "canceled_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "plan_interval": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "plan_amount_minor": {"anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}]}, "plan_currency": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "default_payment_method_id": {"anyOf": [{"type": "string"}, {"type": "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" ] }, "PremiumBillingInvoiceResponse": { "type": "object", "properties": { "id": {"type": "string"}, "number": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "amount_due": {"type": "integer", "format": "int53"}, "amount_paid": {"type": "integer", "format": "int53"}, "currency": {"type": "string"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "paid_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "billing_reason": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "subscription_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "hosted_invoice_url": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "invoice_pdf": {"anyOf": [{"type": "string"}, {"type": "null"}]} }, "required": [ "id", "number", "amount_due", "amount_paid", "currency", "status", "created_at", "paid_at", "billing_reason", "subscription_id", "hosted_invoice_url", "invoice_pdf" ] }, "PremiumBillingPaymentMethodResponse": { "type": "object", "properties": { "id": {"type": "string"}, "type": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "card_brand": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "card_last4": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "card_exp_month": {"anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}]}, "card_exp_year": {"anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}]}, "is_default": {"type": "boolean"} }, "required": ["id", "type", "card_brand", "card_last4", "card_exp_month", "card_exp_year", "is_default"] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Latest paid invoice considered for refund eligibility" }, "invoice_amount_paid_cents": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Amount paid on the latest invoice in the currency minor unit" }, "currency": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Currency of the latest paid invoice" }, "paid_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp the latest invoice was paid" }, "refund_window_expires_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp after which the 3-day refund window closes" }, "cooldown_expires_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO timestamp the 30-day cooldown ends, if currently active" }, "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" ] }, "SelfServeRefundIneligibilityReason": { "enum": ["no_refundable_purchase", "outside_refund_window", "cooldown_active", "feature_unavailable"], "type": "string", "x-enumNames": ["no_refundable_purchase", "outside_refund_window", "cooldown_active", "feature_unavailable"] }, "PremiumPricingState": { "type": "object", "properties": { "country_code": { "anyOf": [{"type": "string"}, {"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"] }, "PriceIdsResponse": { "type": "object", "properties": { "monthly": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stripe price ID for the monthly subscription" }, "yearly": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stripe price ID for the yearly subscription" }, "gift_1_month": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stripe price ID for the 1 month gift" }, "gift_1_year": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stripe price ID for the 1 year gift" }, "monthly_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Monthly price amount in the currency minor unit" }, "yearly_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Yearly price amount in the currency minor unit" }, "gift_1_month_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Gift 1 month price amount in the currency minor unit" }, "gift_1_year_amount_minor": { "anyOf": [{"type": "integer", "format": "int53"}, {"type": "null"}], "description": "Gift 1 year price amount in the currency minor unit" }, "currency": { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "description": "Currency for the prices" }, "gift_currency": { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "description": "Currency for gift prices" } }, "required": ["currency", "gift_currency"] }, "UpdatePremiumPerksDisabledRequest": { "type": "object", "properties": { "disabled": {"type": "boolean", "description": "Whether premium perks should be temporarily disabled"} }, "required": ["disabled"] }, "SelfServeRefundResponse": { "type": "object", "properties": { "invoice_id": {"type": "string"}, "payment_intent_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "charge_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "refund_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "refunded_amount_cents": { "type": "integer", "format": "int53", "description": "Amount actually refunded so far, in the currency minor unit; 0 until the provider confirms success" }, "invoice_amount_paid_cents": {"type": "integer", "format": "int53"}, "currency": {"type": "string"}, "subscription_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Subscription that was cancelled along with the refund, when applicable" }, "status": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Provider status of the refund (e.g. pending, succeeded, failed); money only moved once succeeded" } }, "required": [ "invoice_id", "payment_intent_id", "charge_id", "refund_id", "refunded_amount_cents", "invoice_amount_paid_cents", "currency", "subscription_id", "status" ] }, "SwitchToListPriceResponse": { "oneOf": [ {"$ref": "#/components/schemas/ScheduledSwitchToListPriceResponse"}, {"$ref": "#/components/schemas/AlreadyScheduledSwitchToListPriceResponse"}, {"$ref": "#/components/schemas/IneligibleSwitchToListPriceResponse"} ] }, "ScheduledSwitchToListPriceResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["scheduled"], "description": "The switch was scheduled for the end of the current billing period" }, "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", "format": "int53", "description": "Amount billed after the switch, in the currency minor unit" }, "current_amount_minor": { "type": "integer", "format": "int53", "description": "Amount billed before the switch, in the currency minor unit" }, "currency": { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "description": "Currency of both amounts" } }, "required": [ "status", "effective_at", "target_price_id", "target_amount_minor", "current_amount_minor", "currency" ] }, "AlreadyScheduledSwitchToListPriceResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["already_scheduled"], "description": "The switch was already scheduled by an earlier request" }, "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", "format": "int53", "description": "Amount billed after the switch, in the currency minor unit" }, "current_amount_minor": { "type": "integer", "format": "int53", "description": "Amount billed before the switch, in the currency minor unit" }, "currency": { "enum": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "type": "string", "x-enumNames": ["USD", "EUR", "BRL", "DKK", "INR", "NOK", "PLN", "SEK", "TRY"], "description": "Currency of both amounts" } }, "required": [ "status", "effective_at", "target_price_id", "target_amount_minor", "current_amount_minor", "currency" ] }, "IneligibleSwitchToListPriceResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["ineligible"], "description": "The subscription cannot be moved to the current list price" }, "reason": { "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" ], "type": "string", "x-enumNames": [ "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" ], "description": "Why the switch was refused" } }, "required": ["status", "reason"] }, "ReadStateAckResponse": { "type": "object", "properties": { "read_states": { "type": "array", "items": {"$ref": "#/components/schemas/ReadStateResponse"}, "description": "Authoritative read states after applying the acknowledgement" } }, "required": ["read_states"] }, "ReadStateResponse": { "type": "object", "properties": { "id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The channel ID for this read state"}, "mention_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Number of unread mentions in the channel" }, "last_message_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the last message read" }, "last_pin_timestamp": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of the last pinned message acknowledged" }, "version": { "type": "string", "pattern": "^\\d+$", "description": "Read-state version for ordering updates as a decimal uint64" } }, "required": ["id", "mention_count", "last_message_id", "last_pin_timestamp"] }, "ReadStateAckRequest": { "type": "object", "properties": { "read_states": { "type": "array", "items": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "message_id": {"$ref": "#/components/schemas/SnowflakeType"}, "mention_count": {"$ref": "#/components/schemas/Int32Type"}, "manual": { "type": "boolean", "description": "Whether this acknowledgement is an explicit manual read marker" } }, "required": ["channel_id", "message_id"] }, "minItems": 1, "maxItems": 100, "description": "Read-state acknowledgements to apply. Supports normal and manual acknowledgements." } }, "required": ["read_states"] }, "ReadStateAckBulkRequest": { "type": "object", "properties": { "read_states": { "type": "array", "items": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "message_id": {"$ref": "#/components/schemas/SnowflakeType"} }, "required": ["channel_id", "message_id"] }, "minItems": 1, "maxItems": 100, "description": "Array of channel/message pairs to acknowledge" } }, "required": ["read_states"] }, "ReportResponse": { "type": "object", "properties": { "report_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this report" }, "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"] }, "DsaReportRequest": { "oneOf": [ {"$ref": "#/components/schemas/MessageDsaReportRequest"}, {"$ref": "#/components/schemas/UserDsaReportRequest"}, {"$ref": "#/components/schemas/GuildDsaReportRequest"} ] }, "MessageDsaReportRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Verification ticket obtained from email verification"}, "additional_info": {"type": "string", "description": "Additional context or details about the report"}, "reporter_full_legal_name": { "type": "string", "description": "Full legal name of the person filing the report" }, "reporter_country_of_residence": { "type": "string", "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" ], "description": "EU country code of the reporter residence" }, "reporter_fluxer_tag": { "type": "string", "minLength": 3, "maxLength": 37, "description": "Fluxer tag of the reporter if they have an account" }, "report_type": {"type": "string", "enum": ["message"], "description": "Type of report"}, "category": { "type": "string", "enum": [ "harassment", "hate_speech", "violent_content", "spam", "nsfw_violation", "illegal_activity", "doxxing", "self_harm", "child_safety", "malicious_links", "impersonation", "other" ], "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" ], "description": "Category of the message report" }, "message_link": {"type": "string", "description": "Link to the message being reported"}, "reported_user_tag": { "type": "string", "minLength": 3, "maxLength": 37, "description": "Fluxer tag of the user who sent the message" } }, "required": [ "ticket", "reporter_full_legal_name", "reporter_country_of_residence", "report_type", "category", "message_link" ] }, "UserDsaReportRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Verification ticket obtained from email verification"}, "additional_info": {"type": "string", "description": "Additional context or details about the report"}, "reporter_full_legal_name": { "type": "string", "description": "Full legal name of the person filing the report" }, "reporter_country_of_residence": { "type": "string", "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" ], "description": "EU country code of the reporter residence" }, "reporter_fluxer_tag": { "type": "string", "minLength": 3, "maxLength": 37, "description": "Fluxer tag of the reporter if they have an account" }, "report_type": {"type": "string", "enum": ["user"], "description": "Type of report"}, "category": { "type": "string", "enum": [ "harassment", "hate_speech", "spam_account", "impersonation", "underage_user", "inappropriate_profile", "other" ], "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" ], "description": "Category of the user report" }, "user_id": {"$ref": "#/components/schemas/SnowflakeType"}, "user_tag": { "type": "string", "minLength": 3, "maxLength": 37, "description": "Fluxer tag of the user being reported" } }, "required": ["ticket", "reporter_full_legal_name", "reporter_country_of_residence", "report_type", "category"] }, "GuildDsaReportRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Verification ticket obtained from email verification"}, "additional_info": {"type": "string", "description": "Additional context or details about the report"}, "reporter_full_legal_name": { "type": "string", "description": "Full legal name of the person filing the report" }, "reporter_country_of_residence": { "type": "string", "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" ], "description": "EU country code of the reporter residence" }, "reporter_fluxer_tag": { "type": "string", "minLength": 3, "maxLength": 37, "description": "Fluxer tag of the reporter if they have an account" }, "report_type": {"type": "string", "enum": ["guild"], "description": "Type of report"}, "category": { "type": "string", "enum": [ "harassment", "hate_speech", "extremist_community", "illegal_activity", "child_safety", "raid_coordination", "spam", "malware_distribution", "other" ], "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" ], "description": "Category of the guild report" }, "guild_id": {"$ref": "#/components/schemas/SnowflakeType"}, "invite_code": {"type": "string", "description": "Invite code used to access the guild"} }, "required": [ "ticket", "reporter_full_legal_name", "reporter_country_of_residence", "report_type", "category", "guild_id" ] }, "OkResponse": { "type": "object", "properties": {"ok": {"type": "boolean", "description": "Whether the operation was successful"}}, "required": ["ok"] }, "DsaReportEmailSendRequest": { "type": "object", "properties": {"email": {"$ref": "#/components/schemas/EmailType"}}, "required": ["email"] }, "TicketResponse": { "type": "object", "properties": { "ticket": {"type": "string", "description": "A temporary ticket token for subsequent operations"} }, "required": ["ticket"] }, "DsaReportEmailVerifyRequest": { "type": "object", "properties": { "email": {"$ref": "#/components/schemas/EmailType"}, "code": {"type": "string", "description": "Verification code received via email"} }, "required": ["email", "code"] }, "ReportGuildRequest": { "type": "object", "properties": { "guild_id": {"$ref": "#/components/schemas/SnowflakeType"}, "category": { "type": "string", "enum": [ "harassment", "hate_speech", "extremist_community", "illegal_activity", "child_safety", "raid_coordination", "spam", "malware_distribution", "other" ], "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" ], "description": "Category of the guild report" }, "invite_code": { "type": "string", "description": "Invite code proving access to the guild (required when not a member of a non-discoverable guild)" } }, "required": ["guild_id", "category"] }, "ReportMessageRequest": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "message_id": {"$ref": "#/components/schemas/SnowflakeType"}, "category": { "type": "string", "enum": [ "harassment", "hate_speech", "violent_content", "spam", "nsfw_violation", "illegal_activity", "doxxing", "self_harm", "child_safety", "malicious_links", "impersonation", "other" ], "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" ], "description": "Category of the message report" } }, "required": ["channel_id", "message_id", "category"] }, "ReportUserRequest": { "type": "object", "properties": { "user_id": {"$ref": "#/components/schemas/SnowflakeType"}, "category": { "type": "string", "enum": [ "harassment", "hate_speech", "spam_account", "impersonation", "underage_user", "inappropriate_profile", "other" ], "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" ], "description": "Category of the user report" }, "guild_id": {"$ref": "#/components/schemas/SnowflakeType"} }, "required": ["user_id", "category"] }, "MessageSearchResponse": { "oneOf": [ {"$ref": "#/components/schemas/MessageSearchResultsResponse"}, { "type": "object", "properties": { "indexing": { "type": "boolean", "enum": [true], "description": "Indicates that one or more channels are being indexed" } }, "required": ["indexing"] } ] }, "MessageSearchResultsResponse": { "type": "object", "properties": { "messages": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this message" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel this message was sent in" }, "author": {"$ref": "#/components/schemas/UserPartialResponse"}, "webhook_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the webhook that sent this message" }, "type": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3, 4, 5, 6, 7, 19], "x-enumNames": [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "USER_JOIN", "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", "A reply message" ], "description": "The type of message" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "content": {"type": "string", "description": "The text content of the message"}, "timestamp": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp of when the message was created" }, "edited_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the message was last edited" }, "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": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageChannelMentionResponse"}}, {"type": "null"} ], "description": "Channels mentioned in the message that are visible to @everyone" }, "users": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}}, {"type": "null"} ], "description": "Users referenced from non-notifying content, embed, and snapshot text, included for client-side resolution" }, "embeds": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}}, {"type": "null"} ], "description": "The embeds attached to the message" }, "attachments": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageAttachmentResponse"}}, {"type": "null"} ], "description": "The files attached to the message" }, "stickers": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageStickerResponse"}}, {"type": "null"} ], "description": "The stickers sent with the message" }, "reactions": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageReactionResponse"}}, {"type": "null"} ], "description": "The reactions on the message" }, "message_reference": { "anyOf": [ { "type": "object", "properties": { "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel containing the referenced message" }, "message_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the referenced message" }, "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the guild containing the referenced message" }, "type": {"$ref": "#/components/schemas/MessageReferenceType"} }, "required": ["channel_id", "message_id", "type"] }, {"type": "null"} ], "description": "Reference data for replies or forwards" }, "message_snapshots": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/MessageSnapshotResponse"}}, {"type": "null"} ], "description": "Snapshots of forwarded messages" }, "nonce": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A client-provided value for message deduplication" }, "call": { "anyOf": [ { "type": "object", "properties": { "participants": { "type": "array", "items": {"type": "string"}, "description": "The user IDs of participants in the call" }, "ended_timestamp": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "The ISO 8601 timestamp of when the call ended" } }, "required": ["participants"] }, {"type": "null"} ], "description": "Call information if this message represents a call" } }, "required": [ "id", "channel_id", "author", "type", "flags", "content", "timestamp", "pinned", "mention_everyone", "tts", "mentions", "mention_roles" ] }, "description": "The messages matching the search query" }, "channels": { "type": "array", "items": {"$ref": "#/components/schemas/ChannelResponse"}, "description": "Serialized channels referenced by the returned messages" }, "total": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The total number of messages matching the search" }, "hits_per_page": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The maximum number of messages returned per page" }, "page": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The current page number" }, "cursor": { "type": "array", "items": {"type": "string"}, "description": "Opaque cursor for fetching the next page of results" } }, "required": ["messages", "channels", "total", "hits_per_page", "page"] }, "GlobalSearchMessagesRequest": { "type": "object", "properties": { "hits_per_page": { "type": "integer", "minimum": 1, "maximum": 25, "format": "int32", "description": "Number of results per page (1-25)" }, "page": { "type": "integer", "minimum": 1, "maximum": 400, "format": "int32", "description": "Page number for pagination (ignored when cursor is provided). Use cursor to page beyond this." }, "cursor": { "type": "array", "items": {"type": "string"}, "description": "Opaque cursor for search_after pagination. When provided, page is ignored." }, "max_id": {"$ref": "#/components/schemas/SnowflakeType"}, "min_id": {"$ref": "#/components/schemas/SnowflakeType"}, "content": {"type": "string", "description": "Text content to search for"}, "contents": { "type": "array", "items": {"type": "string"}, "maxItems": 100, "description": "Multiple content queries to search for" }, "exact_phrases": { "type": "array", "items": {"type": "string"}, "maxItems": 10, "description": "Exact phrases that must appear contiguously in message content" }, "channel_id": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "description": "Channel IDs to search in" }, "exclude_channel_id": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "description": "Channel IDs to exclude from search" }, "author_type": { "type": "array", "items": { "type": "string", "enum": ["user", "bot", "webhook"], "x-enumNames": ["user", "bot", "webhook"], "x-enumDescriptions": [ "A regular user account", "An automated bot account", "A webhook-generated message" ], "description": "The type of author who sent the message" }, "maxItems": 20, "description": "Author types to filter by" }, "exclude_author_type": { "type": "array", "items": { "type": "string", "enum": ["user", "bot", "webhook"], "x-enumNames": ["user", "bot", "webhook"], "x-enumDescriptions": [ "A regular user account", "An automated bot account", "A webhook-generated message" ], "description": "The type of author who sent the message" }, "maxItems": 20, "description": "Author types to exclude" }, "author_id": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Author user IDs to filter by" }, "exclude_author_id": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Author user IDs to exclude" }, "mentions": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "User IDs that must be mentioned" }, "exclude_mentions": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "User IDs that must not be mentioned" }, "mention_everyone": {"type": "boolean", "description": "Filter by whether message mentions everyone"}, "pinned": {"type": "boolean", "description": "Filter by pinned status"}, "has": { "type": "array", "items": { "type": "string", "enum": ["image", "sound", "video", "file", "sticker", "embed", "link", "poll", "snapshot"], "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" ], "description": "The type of content contained in a message. Upload filters inspect attachments; embed filters inspect generated or supplied message embeds." }, "maxItems": 20, "description": "Content flags the message must have. Use image, video, sound, or file for uploaded attachments and embed for link previews or rich embeds." }, "exclude_has": { "type": "array", "items": { "type": "string", "enum": ["image", "sound", "video", "file", "sticker", "embed", "link", "poll", "snapshot"], "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" ], "description": "The type of content contained in a message. Upload filters inspect attachments; embed filters inspect generated or supplied message embeds." }, "maxItems": 20, "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." }, "embed_type": { "type": "array", "items": { "type": "string", "enum": ["image", "video", "sound", "article"], "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" ], "description": "The type of generated or supplied embed content, not uploaded attachments" }, "maxItems": 20, "description": "Generated or supplied embed types to filter by; does not match uploaded attachments" }, "exclude_embed_type": { "type": "array", "items": { "type": "string", "enum": ["image", "video", "sound", "article"], "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" ], "description": "The type of generated or supplied embed content, not uploaded attachments" }, "maxItems": 20, "description": "Generated or supplied embed types to exclude; does not match uploaded attachments" }, "embed_provider": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "Embed providers to filter by" }, "exclude_embed_provider": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "Embed providers to exclude" }, "link_hostname": { "type": "array", "items": {"type": "string"}, "maxItems": 100, "description": "Link hostnames to filter by" }, "exclude_link_hostname": { "type": "array", "items": {"type": "string"}, "maxItems": 100, "description": "Link hostnames to exclude" }, "attachment_filename": { "type": "array", "items": {"type": "string"}, "maxItems": 100, "description": "Attachment filenames to filter by" }, "exclude_attachment_filename": { "type": "array", "items": {"type": "string"}, "maxItems": 100, "description": "Attachment filenames to exclude" }, "attachment_extension": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "File extensions to filter by" }, "exclude_attachment_extension": { "type": "array", "items": {"type": "string"}, "maxItems": 50, "description": "File extensions to exclude" }, "sort_by": { "type": "string", "enum": ["timestamp", "relevance"], "x-enumNames": ["timestamp", "relevance"], "x-enumDescriptions": ["Sort results by message timestamp", "Sort results by search relevance score"], "description": "Field to sort results by" }, "sort_order": { "type": "string", "enum": ["asc", "desc"], "x-enumNames": ["asc", "desc"], "x-enumDescriptions": [ "Sort in ascending order (oldest/lowest first)", "Sort in descending order (newest/highest first)" ], "description": "Sort order for results" }, "include_nsfw": {"type": "boolean", "description": "Whether to include NSFW channel results"}, "scope": { "type": "string", "enum": ["current", "open_dms", "all_dms", "all_guilds", "all", "open_dms_and_all_guilds"], "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" ], "description": "Scope to search within when querying messages" }, "context_channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "context_guild_id": {"$ref": "#/components/schemas/SnowflakeType"}, "channel_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "description": "Specific channel IDs to search in" } } }, "GuildStickerMetadataResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for this sticker" }, "guild_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The guild this sticker belongs to" }, "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"] }, "StreamPreviewUploadBodySchema": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "thumbnail": {"type": "string", "description": "Base64-encoded thumbnail image data"}, "content_type": {"type": "string", "description": "MIME type of the thumbnail image"} }, "required": ["channel_id", "thumbnail"] }, "StreamPreviewUploadUrlResponseSchema": { "type": "object", "properties": { "upload_url": {"type": "string", "description": "URL used to upload the stream preview with a PUT request"}, "method": {"type": "string", "enum": ["PUT"], "description": "HTTP method to use for the upload URL"}, "content_type": {"type": "string", "description": "MIME type that must be sent with the upload request"}, "expires_at": { "type": "string", "format": "date-time", "description": "ISO timestamp when the upload URL expires" }, "expires_in": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Number of seconds the upload URL remains valid" }, "max_bytes": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Maximum supported preview image size in bytes" } }, "required": ["upload_url", "method", "content_type", "expires_at", "expires_in", "max_bytes"] }, "StreamPreviewUploadUrlBodySchema": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "content_type": {"type": "string", "description": "MIME type of the thumbnail image"} }, "required": ["channel_id"] }, "StreamUpdateBodySchema": { "type": "object", "properties": { "region": {"type": "string", "description": "The preferred voice region for the stream (1-64 characters)"} } }, "CreateCheckoutSessionRequest": { "type": "object", "properties": { "price_id": {"type": "string", "description": "The Stripe price ID for the subscription plan"}, "country_code": { "type": "string", "description": "Two-letter country code used for regional pricing. Only used when the server cannot geolocate the request; otherwise the request GeoIP country wins." }, "client_geoip_country_code": { "type": "string", "description": "Two-letter country code observed by the client GeoIP store before checkout" }, "eu_withdrawal_waiver_accepted": { "type": "boolean", "description": "Whether the EU/EEA digital content withdrawal waiver was expressly accepted before checkout" }, "payment_method": {"$ref": "#/components/schemas/CheckoutPaymentMethodEnum"}, "is_business": { "type": "boolean", "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)." } }, "required": ["price_id"] }, "CheckoutPaymentMethodEnum": { "enum": ["card", "pix", "upi"], "type": "string", "x-enumNames": ["card", "pix", "upi"] }, "LocalizedCardPreapprovalContinueResponse": { "oneOf": [ {"$ref": "#/components/schemas/PendingLocalizedCardPreapprovalContinueResponse"}, {"$ref": "#/components/schemas/ReadyLocalizedCardPreapprovalContinueResponse"}, {"$ref": "#/components/schemas/RejectedLocalizedCardPreapprovalContinueResponse"}, {"$ref": "#/components/schemas/ExpiredLocalizedCardPreapprovalContinueResponse"} ] }, "PendingLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending"], "description": "The preapproval result is still being processed" } }, "required": ["status"] }, "ReadyLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["ready"], "description": "The preapproval succeeded and the paid checkout URL is ready" }, "url": {"type": "string", "description": "The URL to redirect to"} }, "required": ["status", "url"] }, "RejectedLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["rejected"], "description": "The preapproval failed and the paid checkout should not continue" }, "reason": { "enum": [ "country_mismatch", "missing_customer", "missing_payment_method", "missing_setup_intent", "payment_method_not_card", "unknown" ], "type": "string", "x-enumNames": [ "country_mismatch", "missing_customer", "missing_payment_method", "missing_setup_intent", "payment_method_not_card", "unknown" ], "description": "The reason the preapproval was rejected" }, "actual_country": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The detected card issuing country when available" } }, "required": ["status", "reason"] }, "ExpiredLocalizedCardPreapprovalContinueResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["expired"], "description": "The preapproval token has expired or is unknown" } }, "required": ["status"] }, "LocalizedCardPreapprovalContinueRequest": { "type": "object", "properties": { "token": {"type": "string", "description": "Continuation token for the localized card preapproval flow"} }, "required": ["token"] }, "WebhookReceivedResponse": { "type": "object", "properties": {"received": {"type": "boolean", "description": "Whether the webhook was successfully received"}}, "required": ["received"] }, "UnfurlResponse": { "type": "array", "items": {"$ref": "#/components/schemas/MessageEmbedResponse"}, "description": "The embeds resolved by the unfurler" }, "UnfurlRequest": { "type": "object", "properties": {"url": {"type": "string", "description": "The URL to unfurl"}}, "required": ["url"] }, "UserPrivateResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this user" }, "username": {"type": "string", "description": "The username of the user, not unique across the platform"}, "discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the user, if set" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user avatar image" }, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"type": "boolean", "description": "Whether the user is a bot account"}, "system": {"type": "boolean", "description": "Whether the user is an official system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "The user's account-wide reply mention preference" }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email address associated with the account" }, "email_bounced": { "type": "boolean", "description": "Whether the current email address is marked as bounced by the mail provider" }, "phone": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Always null. Retained for old-client backward compatibility — phone numbers are no longer stored on the user record." }, "has_verified_phone": { "type": "boolean", "description": "Whether this account has completed phone verification" }, "bio": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The user biography text"}, "pronouns": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The preferred pronouns of the user" }, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The user-selected accent color as an integer" }, "timezone": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The IANA timezone identifier saved by the user. Omitted unless the user has staff access." }, "timezone_privacy_flags": {"$ref": "#/components/schemas/ProfileFieldPrivacyFlags"}, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user profile banner image" }, "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": { "type": "array", "items": {"$ref": "#/components/schemas/UserAuthenticatorTypes"}, "description": "The types of authenticators configured for MFA" }, "verified": {"type": "boolean", "description": "Whether the email address has been verified"}, "premium_type": { "anyOf": [ {"$ref": "#/components/schemas/UserPremiumTypes", "description": "The type of premium subscription"}, {"type": "null"} ] }, "premium_since": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when premium was first activated" }, "premium_until": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when premium access ends, including stacked gift time" }, "premium_will_cancel": { "type": "boolean", "description": "Whether premium is set to cancel at the end of the billing period" }, "premium_billing_cycle": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The billing cycle for the premium subscription" }, "premium_lifetime_sequence": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The sequence number for lifetime premium subscribers" }, "premium_grace_ends_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp at which the post-cancel grace period ends. Set when the subscription is fully canceled in Stripe; perks remain active and the original premium_since is restored on resubscribe until this timestamp passes. Null when not in grace." }, "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" }, "force_inbound_phone_verification": { "type": "boolean", "description": "Whether this account is forced through the inbound (expensive-destination) phone verification flow regardless of prefix, for debugging" }, "password_last_changed_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of the last password change" }, "last_voice_activity_sharing_change_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of the last bulk voice-activity-sharing change. Drives the 24-hour cooldown for re-toggling the Active Now sharing default." }, "required_actions": { "type": "array", "items": {"type": "string"}, "description": "Actions the user must complete before full access" }, "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": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The number of unread gift inventory items" }, "pending_bulk_message_deletion": { "anyOf": [ { "type": "object", "properties": { "scheduled_at": { "type": "string", "description": "ISO8601 timestamp of when the deletion was scheduled" }, "channel_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The number of channels with messages to delete" }, "message_count": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The total number of messages to delete" } }, "required": ["scheduled_at", "channel_count", "message_count"] }, {"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": { "type": "boolean", "description": "Whether the user has verified their age as an adult via credit card verification" }, "terms_agreed_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when the user last agreed to the terms of service" }, "privacy_agreed_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when the user last agreed to the privacy policy" } }, "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" ] }, "ProfileFieldPrivacyFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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" } ], "description": "Bitfield controlling who can see the profile timezone" }, "UserAuthenticatorTypes": { "type": "integer", "format": "int32", "enum": [0, 2], "x-enumNames": ["TOTP", "WEBAUTHN"], "x-enumDescriptions": ["Time-based one-time password authenticator", "WebAuthn authenticator"], "description": "Authenticator type" }, "UserUpdateWithVerificationRequest": { "type": "object", "properties": { "username": {"$ref": "#/components/schemas/UsernameType"}, "discriminator": {"$ref": "#/components/schemas/DiscriminatorType"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name shown to other users" }, "email": {"$ref": "#/components/schemas/EmailType"}, "new_password": {"$ref": "#/components/schemas/PasswordType"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded avatar image" }, "banner": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "Base64-encoded profile banner image" }, "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "User biography text (max 320 characters)" }, "pronouns": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "User pronouns (max 40 characters)" }, "accent_color": { "anyOf": [{"type": "integer", "minimum": 0, "maximum": 16777215, "format": "int32"}, {"type": "null"}], "description": "Profile accent color as integer" }, "timezone": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Staff-only IANA timezone identifier saved for profile local time. Ignored for non-staff users." }, "timezone_privacy_flags": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Staff-only bitfield controlling who can see the profile timezone. Ignored for non-staff users." }, "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/MentionReplyPreferences", "description": "Account-wide reply mention preference (NO_PREFERENCE, PREFER_MENTION, PREFER_NO_MENTION)" }, "email_token": {"type": "string", "description": "Email change token for updating email"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} } }, "CreatePrivateChannelRequest": { "type": "object", "properties": { "recipient_id": {"$ref": "#/components/schemas/SnowflakeType"}, "recipients": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 49, "description": "Array of user IDs for creating a group DM (max 49)" } } }, "PreloadMessagesResponse": { "type": "object", "additionalProperties": {"anyOf": [{"$ref": "#/components/schemas/MessageResponseSchema"}, {"type": "null"}]}, "patternProperties": { "^(0|[1-9][0-9]*)$": {"anyOf": [{"$ref": "#/components/schemas/MessageResponseSchema"}, {"type": "null"}]} }, "x-keyType": "snowflake", "description": "A map of channel IDs to the latest message in each channel" }, "PreloadMessagesRequest": { "type": "object", "properties": { "channels": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 100, "description": "Array of channel IDs to preload messages from (max 100)" } }, "required": ["channels"] }, "ConnectionListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/ConnectionResponse"}}, "ConnectionResponse": { "type": "object", "properties": { "id": {"type": "string", "description": "The unique identifier for this connection"}, "type": {"type": "string", "enum": ["bsky", "domain"], "description": "The type of connection"}, "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": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "Bitfield controlling who can see this connection" }, "sort_order": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The display order of this connection" } }, "required": ["id", "type", "name", "verified", "visibility_flags", "sort_order"] }, "ConnectionVerificationResponse": { "type": "object", "properties": { "token": {"type": "string", "description": "The verification token to place in DNS or profile"}, "type": { "type": "string", "enum": ["bsky", "domain"], "description": "The type of connection being verified" }, "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"] }, "CreateConnectionRequest": { "type": "object", "properties": { "type": {"type": "string", "enum": ["bsky", "domain"], "description": "The type of connection to create"}, "identifier": {"type": "string", "description": "The connection identifier (handle or domain)"}, "visibility_flags": {"$ref": "#/components/schemas/Int32Type"} }, "required": ["type", "identifier"] }, "BlueskyAuthorizeResponse": { "type": "object", "properties": { "authorize_url": { "type": "string", "description": "The URL to redirect the user to for Bluesky authorisation" } }, "required": ["authorize_url"] }, "BlueskyAuthorizeRequest": { "type": "object", "properties": { "handle": { "type": "string", "minLength": 1, "maxLength": 253, "description": "The Bluesky handle to connect (e.g. alice.bsky.social)" } }, "required": ["handle"] }, "ReorderConnectionsRequest": { "type": "object", "properties": { "connection_ids": { "type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 20, "description": "Ordered list of connection IDs defining the new display order" } }, "required": ["connection_ids"] }, "VerifyAndCreateConnectionRequest": { "type": "object", "properties": { "initiation_token": { "type": "string", "description": "The signed initiation token returned from the create endpoint" }, "visibility_flags": {"$ref": "#/components/schemas/Int32Type"} }, "required": ["initiation_token"] }, "UpdateConnectionRequest": { "type": "object", "properties": { "visibility_flags": {"$ref": "#/components/schemas/Int32Type"}, "sort_order": {"$ref": "#/components/schemas/Int32Type"} } }, "EmailChangeApplyRequest": { "type": "object", "properties": { "email_token": {"type": "string", "description": "Email change token returned from verify-new"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} }, "required": ["email_token"] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp when the new email code can be resent" } }, "required": ["ticket", "new_email", "new_code_expires_at", "resend_available_at"] }, "EmailChangeBouncedRequestNewRequest": { "type": "object", "properties": {"new_email": {"$ref": "#/components/schemas/EmailType"}}, "required": ["new_email"] }, "EmailChangeTicketRequest": { "type": "object", "properties": {"ticket": {"type": "string", "description": "Email change ticket identifier"}}, "required": ["ticket"] }, "EmailChangeBouncedVerifyNewRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Email change ticket identifier"}, "code": {"type": "string", "description": "Verification code sent to the replacement email address"} }, "required": ["ticket", "code"] }, "EmailChangeRequestNewRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Email change ticket identifier"}, "new_email": {"$ref": "#/components/schemas/EmailType"}, "original_proof": {"type": "string", "description": "Proof token obtained from verifying the original email"}, "new_password": {"$ref": "#/components/schemas/PasswordType"} }, "required": ["ticket", "new_email", "original_proof"] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The original email address on record" }, "original_proof": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Proof token generated when original email verification is not required" }, "original_code_expires_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp when the original verification code expires" }, "resend_available_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp when the original verification code can be resent" } }, "required": [ "ticket", "require_original", "original_email", "original_proof", "original_code_expires_at", "resend_available_at" ] }, "EmptyBodyRequest": {"type": "object", "properties": {}}, "EmailTokenResponse": { "type": "object", "properties": { "email_token": {"type": "string", "description": "The email change token to use for updating email"} }, "required": ["email_token"] }, "EmailChangeVerifyNewRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Email change ticket identifier"}, "code": {"type": "string", "description": "Verification code sent to the original email address"}, "original_proof": {"type": "string", "description": "Proof token obtained from verifying the original email"} }, "required": ["ticket", "code", "original_proof"] }, "EmailChangeVerifyOriginalResponse": { "type": "object", "properties": { "original_proof": {"type": "string", "description": "Proof token issued after verifying the original email"} }, "required": ["original_proof"] }, "EmailChangeVerifyOriginalRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Email change ticket identifier"}, "code": {"type": "string", "description": "Verification code sent to the original email address"} }, "required": ["ticket", "code"] }, "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"] }, "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/SnowflakeType"} }, "required": ["scope_id", "sound_id"] } } }, "required": ["sounds", "selections"] }, "EntranceSoundResponse": { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/SnowflakeType"}, "name": {"type": "string"}, "hash": {"type": "string"}, "extension": { "enum": ["mp3", "ogg", "m4a", "wav"], "type": "string", "x-enumNames": ["mp3", "ogg", "m4a", "wav"] }, "content_type": {"type": "string"}, "duration_ms": {"type": "integer", "minimum": 0, "maximum": 5200, "format": "int32"}, "size_bytes": {"type": "integer", "minimum": 0, "maximum": 1048576, "format": "int32"}, "url": {"type": "string", "format": "uri"}, "created_at": {"type": "string", "format": "date-time"} }, "required": [ "id", "name", "hash", "extension", "content_type", "duration_ms", "size_bytes", "url", "created_at" ] }, "EntranceSoundUploadRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "Display label for the sound"}, "audio": {"$ref": "#/components/schemas/Base64ImageType"} }, "required": ["name", "audio"] }, "EntranceSoundRenameRequest": { "type": "object", "properties": {"name": {"type": "string"}}, "required": ["name"] }, "ResolveGifUrlsResponse": { "type": "object", "properties": { "entries": { "type": "array", "items": {"$ref": "#/components/schemas/ResolvedGifEntrySchema"}, "description": "Resolved GIF entries with proxy metadata" } }, "required": ["entries"] }, "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", "format": "int53", "description": "Width of the GIF in pixels (0 if unknown)"}, "height": {"type": "integer", "format": "int53", "description": "Height of the GIF in pixels (0 if unknown)"}, "media": { "type": "object", "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormat"}, "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." }, "content_type": { "type": "string", "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." }, "placeholder": { "anyOf": [{"type": "string"}, {"type": "null"}], "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." } }, "required": ["url", "proxy_url", "width", "height"] }, "ResolveGifUrlsBodySchema": { "type": "object", "properties": { "urls": { "type": "array", "items": {"type": "string", "format": "uri"}, "minItems": 1, "maxItems": 200, "description": "GIF URLs to resolve into entries with proxy metadata" } }, "required": ["urls"] }, "GiftCodeMetadataResponse": { "type": "object", "properties": { "code": {"type": "string", "description": "The unique gift code string"}, "duration_type": { "enum": ["days", "weeks", "months", "years"], "type": "string", "x-enumNames": ["days", "weeks", "months", "years"], "description": "Duration unit for the gift entitlement" }, "duration_quantity": { "type": "integer", "format": "int53", "description": "Duration quantity for the selected duration unit" }, "created_at": { "type": "string", "format": "date-time", "description": "Timestamp when the gift code was created" }, "created_by": {"$ref": "#/components/schemas/UserPartialResponse"}, "redeemed_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "Timestamp when the gift code was redeemed" }, "redeemed_by": { "anyOf": [{"$ref": "#/components/schemas/UserPartialResponse"}, {"type": "null"}], "description": "The user who redeemed the gift code" } }, "required": ["code", "duration_type", "duration_quantity", "created_at", "created_by"] }, "UserGuildSettingsResponse": { "type": "object", "properties": { "guild_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when the mute expires" }, "selected_time_window": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The selected mute duration in seconds" } }, "required": ["end_time", "selected_time_window"] }, {"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", "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when the mute expires" }, "selected_time_window": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The selected mute duration in seconds" } }, "required": ["end_time", "selected_time_window"] }, {"type": "null"} ], "description": "The mute configuration for this channel" }, "unread_badges": { "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Unread badges level override for this channel" }, {"type": "null"} ], "description": "Unread badges level override for this channel (null = inherit)" } }, "required": ["collapsed", "message_notifications", "muted", "mute_config"] }, "patternProperties": { "^(0|[1-9][0-9]*)$": { "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp of when the mute expires" }, "selected_time_window": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The selected mute duration in seconds" } }, "required": ["end_time", "selected_time_window"] }, {"type": "null"} ], "description": "The mute configuration for this channel" }, "unread_badges": { "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Unread badges level override for this channel" }, {"type": "null"} ], "description": "Unread badges level override for this channel (null = inherit)" } }, "required": ["collapsed", "message_notifications", "muted", "mute_config"] } }, "x-keyType": "snowflake" }, {"type": "null"} ], "description": "Per-channel notification overrides" }, "unread_badges": { "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Default unread badges level for the guild" }, {"type": "null"} ], "description": "Default unread badges level for the guild (null = follows message_notifications)" }, "version": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The version number of these settings for sync" } }, "required": [ "guild_id", "message_notifications", "muted", "mute_config", "mobile_push", "suppress_everyone", "suppress_roles", "hide_muted_channels", "channel_overrides", "version" ] }, "UserNotificationSettings": { "type": "integer", "format": "int32", "enum": [0, 1, 2, 3], "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" ], "description": "Notification level preference" }, "UserGuildSettingsUpdateRequest": { "type": "object", "properties": { "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Default guild notification level" }, "muted": {"type": "boolean", "description": "Guild muted"}, "mute_config": { "anyOf": [ { "type": "object", "properties": { "end_time": { "oneOf": [ { "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, "format": "int53"}, {"type": "null"} ], "description": "When the mute expires" }, "selected_time_window": { "type": "integer", "format": "int53", "description": "Selected mute duration" } }, "required": ["selected_time_window"] }, {"type": "null"} ], "description": "Guild mute configuration" }, "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", "additionalProperties": { "type": "object", "properties": { "collapsed": {"type": "boolean", "description": "Channel category collapsed"}, "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Channel notification level" }, "muted": {"type": "boolean", "description": "Channel muted"}, "mute_config": { "anyOf": [ { "type": "object", "properties": { "end_time": { "oneOf": [ { "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, "format": "int53"}, {"type": "null"} ], "description": "When the mute expires" }, "selected_time_window": { "type": "integer", "format": "int53", "description": "Selected mute duration" } }, "required": ["selected_time_window"] }, {"type": "null"} ], "description": "Channel mute configuration" }, "unread_badges": { "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Unread badges level override for this channel" }, {"type": "null"} ], "description": "Unread badges level override for this channel (null = inherit)" } }, "required": ["collapsed", "message_notifications", "muted"] }, "patternProperties": { "^(0|[1-9][0-9]*)$": { "type": "object", "properties": { "collapsed": {"type": "boolean", "description": "Channel category collapsed"}, "message_notifications": { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Channel notification level" }, "muted": {"type": "boolean", "description": "Channel muted"}, "mute_config": { "anyOf": [ { "type": "object", "properties": { "end_time": { "oneOf": [ { "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, "format": "int53"}, {"type": "null"} ], "description": "When the mute expires" }, "selected_time_window": { "type": "integer", "format": "int53", "description": "Selected mute duration" } }, "required": ["selected_time_window"] }, {"type": "null"} ], "description": "Channel mute configuration" }, "unread_badges": { "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Unread badges level override for this channel" }, {"type": "null"} ], "description": "Unread badges level override for this channel (null = inherit)" } }, "required": ["collapsed", "message_notifications", "muted"] } }, "x-keyType": "snowflake" }, {"type": "null"} ], "description": "Per-channel overrides" }, "unread_badges": { "anyOf": [ { "$ref": "#/components/schemas/UserNotificationSettings", "description": "Default unread badges level for the guild" }, {"type": "null"} ], "description": "Default unread badges level for the guild (null = follows message_notifications)" } } }, "HarvestCreationResponseSchema": { "type": "object", "properties": { "harvest_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Unique identifier for the harvest request" }, "status": { "type": "string", "enum": ["pending", "processing", "completed", "failed"], "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" ], "description": "Current status of the harvest request" }, "created_at": {"type": "string", "description": "ISO 8601 timestamp when the harvest request was created"} }, "required": ["harvest_id", "status", "created_at"] }, "HarvestSelfDataRequest": { "type": "object", "properties": { "scope": { "type": "string", "enum": ["selected", "inaccessible_only"], "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." ], "description": "Which set of contexts the deletion targets" }, "include_dms": {"type": "boolean", "description": "Include 1:1 direct messages the caller still has open."}, "include_dms_closed": { "type": "boolean", "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." }, "include_group_dms": {"type": "boolean", "description": "Include group DMs the caller is still a member of."}, "include_guilds": { "type": "boolean", "description": "Include text channels in guilds the caller is a member of." }, "guild_filter_mode": { "type": "string", "enum": ["exclude", "include_only"], "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." ], "description": "How the guild filter list is interpreted when include_guilds is true." }, "excluded_guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "description": "Guild IDs to leave untouched. Used when include_guilds is true, guild_filter_mode is exclude, and scope is selected." }, "included_guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "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." }, "start_date": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "Inclusive ISO8601 lower bound for message timestamps. Null/omitted means unbounded in the past." }, "end_date": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "Exclusive ISO8601 upper bound for message timestamps. Null/omitted means unbounded in the future." } } }, "HarvestStatusResponseSchemaNullable": { "anyOf": [{"$ref": "#/components/schemas/HarvestStatusResponseSchema"}, {"type": "null"}] }, "HarvestStatusResponseSchema": { "type": "object", "properties": { "harvest_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Unique identifier for the harvest request" }, "status": { "type": "string", "enum": ["pending", "processing", "completed", "failed"], "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" ], "description": "Current status of the harvest request" }, "created_at": {"type": "string", "description": "ISO 8601 timestamp when the harvest request was created"}, "started_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 8601 timestamp when the harvest started, or null if pending" }, "completed_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 8601 timestamp when the harvest completed, or null otherwise" }, "failed_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 8601 timestamp when the harvest failed, or null otherwise" }, "file_size": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Final file size of the downloaded data, expressed as a string, or null if not available" }, "progress_percent": { "type": "number", "description": "Harvest progress as a percentage value between 0 and 100" }, "progress_step": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Textual description of the current harvest step, if available" }, "error_message": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Error message when the harvest fails, or null otherwise" }, "download_url_expires_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 8601 timestamp when the download URL expires, or null if unavailable" }, "expires_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO 8601 timestamp when the harvest download expires, or null if unavailable" } }, "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" ] }, "HarvestDownloadUrlResponse": { "type": "object", "properties": { "download_url": {"type": "string", "description": "The temporary URL to download the harvest archive"}, "expires_at": {"type": "string", "description": "ISO 8601 timestamp when the harvest download expires"} }, "required": ["download_url", "expires_at"] }, "FavoriteMemeListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/FavoriteMemeResponse"}}, "CreateFavoriteMemeFromUrlBodySchema": { "type": "object", "properties": { "alt_text": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Alternative text description for accessibility" }, "tags": { "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "Tags for categorizing and searching the meme" }, "url": { "type": "string", "format": "uri", "description": "URL of the image or video to save as a favorite meme" }, "gif_slug": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Provider-issued slug or slug-id token for the GIF, when sourced from a provider" }, "gif_provider": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Stable name of the GIF provider that issued gif_slug. New provider GIFs are sourced from KLIPY." }, "media": { "anyOf": [ {"type": "object", "additionalProperties": {"$ref": "#/components/schemas/GifMediaFormat"}}, {"type": "null"} ], "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." }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Display name for the meme"} }, "required": ["url"] }, "UpdateFavoriteMemeBodySchema": { "type": "object", "properties": { "name": {"type": "string", "description": "Display name for the meme"}, "alt_text": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Alternative text description for accessibility" }, "tags": { "anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "null"}], "description": "New tags for categorizing and searching the meme" } } }, "MessageListResponse": {"type": "array", "items": {"$ref": "#/components/schemas/MessageResponseSchema"}}, "MarkMentionsReadRequest": { "type": "object", "properties": { "message_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "minItems": 1, "maxItems": 100, "description": "Recent mention message IDs to remove from the current user mention list" } }, "required": ["message_ids"] }, "BulkDeleteSelfMessagesRequest": { "type": "object", "properties": { "scope": { "type": "string", "enum": ["selected", "inaccessible_only"], "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." ], "description": "Which set of contexts the deletion targets" }, "include_dms": {"type": "boolean", "description": "Include 1:1 direct messages the caller still has open."}, "include_dms_closed": { "type": "boolean", "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." }, "include_group_dms": {"type": "boolean", "description": "Include group DMs the caller is still a member of."}, "include_guilds": { "type": "boolean", "description": "Include text channels in guilds the caller is a member of." }, "guild_filter_mode": { "type": "string", "enum": ["exclude", "include_only"], "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." ], "description": "How the guild filter list is interpreted when include_guilds is true." }, "excluded_guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "description": "Guild IDs to leave untouched. Used when include_guilds is true, guild_filter_mode is exclude, and scope is selected." }, "included_guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 500, "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." }, "start_date": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "Inclusive ISO8601 lower bound for message timestamps. Null/omitted means unbounded in the past." }, "end_date": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "Exclusive ISO8601 upper bound for message timestamps. Null/omitted means unbounded in the future." }, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} } }, "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"] }, "description": "List of backup codes" } }, "required": ["backup_codes"] }, "MfaBackupCodesRequest": { "type": "object", "properties": { "regenerate": {"type": "boolean", "description": "Whether to regenerate backup codes"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} }, "required": ["regenerate"] }, "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"] }, "MfaBackupCodesChallengeRegenerateRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Backup codes challenge ticket identifier"}, "verification_proof": {"type": "string", "description": "Proof token obtained from verifying the email code"} }, "required": ["ticket", "verification_proof"] }, "MfaBackupCodesChallengeResendRequest": { "type": "object", "properties": {"ticket": {"type": "string", "description": "Backup codes challenge ticket identifier"}}, "required": ["ticket"] }, "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"] }, "description": "List of backup codes" }, "verification_proof": { "type": "string", "description": "Proof token authorizing backup code regeneration on this ticket" } }, "required": ["backup_codes", "verification_proof"] }, "MfaBackupCodesChallengeVerifyRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Backup codes challenge ticket identifier"}, "code": {"type": "string", "description": "Verification code sent to the email address"} }, "required": ["ticket", "code"] }, "DisableTotpRequest": { "type": "object", "properties": { "code": {"type": "string", "description": "The TOTP code to verify"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} }, "required": ["code"] }, "EnableMfaTotpRequest": { "type": "object", "properties": { "secret": {"type": "string", "description": "The TOTP secret key"}, "code": {"type": "string", "description": "The TOTP verification code"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} }, "required": ["secret", "code"] }, "WebAuthnCredentialListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/WebAuthnCredentialResponse"} }, "WebAuthnCredentialResponse": { "type": "object", "properties": { "id": {"type": "string", "description": "The credential ID"}, "name": {"type": "string", "description": "User-assigned name for the credential"}, "created_at": {"type": "string", "description": "When the credential was registered"}, "last_used_at": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "When the credential was last used" } }, "required": ["id", "name", "created_at", "last_used_at"] }, "WebAuthnRegisterRequest": { "type": "object", "properties": { "response": {"type": "object", "description": "WebAuthn registration response"}, "challenge": {"type": "string", "description": "The challenge from registration options"}, "name": {"type": "string", "description": "User-assigned name for the credential"} }, "required": ["response", "challenge", "name"] }, "WebAuthnChallengeResponse": { "type": "object", "properties": {"challenge": {"type": "string", "description": "The WebAuthn challenge"}}, "required": ["challenge"] }, "WebAuthnCredentialUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "New name for the credential"}, "password": {"$ref": "#/components/schemas/PasswordType"}, "mfa_method": { "type": "string", "enum": ["totp", "webauthn"], "x-enumNames": ["TOTP", "WebAuthn"], "x-enumDescriptions": [ "Time-based one-time password authentication via authenticator app", "Security key or biometric authentication" ], "description": "MFA method to use for verification" }, "mfa_code": {"type": "string", "description": "MFA verification code from an authenticator app"}, "webauthn_response": {"type": "object", "description": "WebAuthn authentication response"}, "webauthn_challenge": {"type": "string", "description": "WebAuthn challenge string"} }, "required": ["name"] }, "RegisterMobileDeviceResponse": { "type": "object", "properties": { "device_id": { "type": "string", "pattern": "^[a-f0-9]{32}$", "description": "The unique identifier for the registered device" } }, "required": ["device_id"] }, "RegisterMobileDeviceRequest": { "type": "object", "properties": { "platform": { "type": "string", "enum": ["android_fcm", "ios_apns", "android_unified_push"], "description": "The mobile push notification platform" }, "token": {"type": "string", "description": "The platform-specific push notification token or endpoint URL"}, "user_agent": {"type": "string", "description": "The user agent string identifying the device"}, "app_id": { "type": "string", "description": "Client app channel or bundle mapping identifier, such as stable, beta, or canary" }, "provider_environment": { "type": "string", "enum": ["production", "development"], "x-enumNames": ["PRODUCTION", "DEVELOPMENT"], "x-enumDescriptions": [ "Production push provider environment", "Development or sandbox push provider environment" ], "description": "Push provider environment. For APNs, production uses api.push.apple.com and development uses api.sandbox.push.apple.com." }, "encryption_key": { "type": "string", "description": "The P-256 ECDH public key for UnifiedPush encryption (base64url)" }, "auth_secret": { "type": "string", "description": "The authentication secret for UnifiedPush encryption (base64url)" } }, "required": ["platform", "token"] }, "MobileDevicesListResponse": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "device_id": { "type": "string", "pattern": "^[a-f0-9]{32}$", "description": "The unique identifier for the device" }, "platform": {"type": "string", "description": "The mobile push notification platform"}, "app_id": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Client app channel or bundle mapping identifier for this device" }, "provider_environment": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Push provider environment used for this device" }, "user_agent": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The user agent that registered this device" } }, "required": ["device_id", "platform", "app_id", "provider_environment", "user_agent"] }, "description": "Array of registered mobile push devices" } }, "required": ["devices"] }, "UnregisterMobileDeviceRequest": { "type": "object", "properties": { "platform": { "type": "string", "enum": ["android_fcm", "ios_apns", "android_unified_push"], "description": "The mobile push notification platform" }, "token": {"type": "string", "description": "The platform-specific push notification token to unregister"}, "app_id": { "type": "string", "description": "Client app channel or bundle mapping identifier, such as stable, beta, or canary" }, "provider_environment": { "type": "string", "enum": ["production", "development"], "x-enumNames": ["PRODUCTION", "DEVELOPMENT"], "x-enumDescriptions": [ "Production push provider environment", "Development or sandbox push provider environment" ], "description": "Push provider environment used for this registration" } }, "required": ["platform", "token"] }, "UserNotesRecordResponse": { "type": "object", "additionalProperties": {"type": "string"}, "patternProperties": {"^(0|[1-9][0-9]*)$": {"type": "string"}}, "x-keyType": "snowflake", "description": "A map of user IDs to note text" }, "UserNoteResponse": { "type": "object", "properties": {"note": {"type": "string", "description": "The note text for this user"}}, "required": ["note"] }, "UserNoteUpdateRequest": { "type": "object", "properties": { "note": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The note text (max 256 characters)"} } }, "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"] }, "PasswordChangeCompleteRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Password change ticket identifier"}, "verification_proof": {"type": "string", "description": "Proof token obtained from verifying the email code"}, "new_password": {"$ref": "#/components/schemas/PasswordType"} }, "required": ["ticket", "verification_proof", "new_password"] }, "PasswordChangeTicketRequest": { "type": "object", "properties": {"ticket": {"type": "string", "description": "Password change ticket identifier"}}, "required": ["ticket"] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO8601 timestamp when the code can be resent" } }, "required": ["ticket", "code_expires_at", "resend_available_at"] }, "PasswordChangeVerifyResponse": { "type": "object", "properties": { "verification_proof": {"type": "string", "description": "Proof token issued after verifying the email code"} }, "required": ["verification_proof"] }, "PasswordChangeVerifyRequest": { "type": "object", "properties": { "ticket": {"type": "string", "description": "Password change ticket identifier"}, "code": {"type": "string", "description": "Verification code sent to the email address"} }, "required": ["ticket", "code"] }, "InboundSmsChallengeStartResponse": { "type": "object", "properties": { "challenge_code": {"type": "string", "description": "The numeric code the user must text to our number"}, "our_number": {"type": "string", "description": "The Twilio number the user must text the code to (E.164)"}, "expires_at": {"type": "string", "description": "ISO timestamp at which the challenge becomes invalid"} }, "required": ["challenge_code", "our_number", "expires_at"] }, "PhoneSendVerificationResponse": { "oneOf": [ { "type": "object", "properties": { "channel": { "type": "string", "enum": ["sms"], "description": "Channel actually used for delivery (may differ from request when server adjusts)" } }, "required": ["channel"] }, { "type": "object", "properties": { "channel": { "type": "string", "enum": ["inbound_challenge"], "description": "The user must send Fluxer an SMS instead of receiving one" }, "challenge_code": {"type": "string", "description": "The numeric code the user must text to our number"}, "our_number": { "type": "string", "description": "The Twilio number the user must text the code to (E.164)" }, "expires_at": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when this inbound challenge expires" }, "reason": { "enum": [ "voip", "canadian", "unknown_line_type", "expensive_destination", "account_forced", "behavioural_risk" ], "type": "string", "x-enumNames": [ "voip", "canadian", "unknown_line_type", "expensive_destination", "account_forced", "behavioural_risk" ], "description": "Why inbound verification is required" } }, "required": ["channel", "challenge_code", "our_number", "expires_at", "reason"] } ] }, "PhoneSendVerificationRequest": { "type": "object", "properties": { "phone": {"$ref": "#/components/schemas/PhoneNumberType"}, "channel": { "enum": ["sms", "inbound_challenge"], "type": "string", "x-enumNames": ["sms", "inbound_challenge"], "description": "Channel to deliver the OTP on. Defaults to the first available channel from server policy. Server may override to an available fallback when the requested channel is disabled." } }, "required": ["phone"] }, "PhoneNumberType": {"type": "string", "pattern": "^\\+[1-9]\\d{1,14}$"}, "PhoneVerifyResponse": { "type": "object", "properties": { "verified": { "type": "boolean", "enum": [true], "description": "Indicates the phone number was verified successfully" } }, "required": ["verified"] }, "PhoneVerifyRequest": { "type": "object", "properties": { "phone": {"$ref": "#/components/schemas/PhoneNumberType"}, "code": {"type": "string", "description": "The verification code"} }, "required": ["phone", "code"] }, "PushSubscribeResponse": { "type": "object", "properties": { "subscription_id": {"type": "string", "description": "The unique identifier for the push subscription"} }, "required": ["subscription_id"] }, "PushRotateRequest": { "type": "object", "properties": { "old_endpoint": { "type": "string", "description": "The previous push subscription endpoint URL being rotated out" }, "endpoint": {"type": "string", "description": "The new push subscription endpoint URL"}, "keys": { "type": "object", "properties": { "p256dh": {"type": "string", "description": "The P-256 ECDH public key (base64url)"}, "auth": {"type": "string", "description": "The authentication secret (base64url)"} }, "required": ["p256dh", "auth"], "description": "Encryption keys for the new push subscription" }, "user_agent": {"type": "string", "description": "The user agent string identifying the client"} }, "required": ["old_endpoint", "endpoint", "keys"] }, "PushSubscribeRequest": { "type": "object", "properties": { "endpoint": {"type": "string", "description": "The push subscription endpoint URL"}, "keys": { "type": "object", "properties": { "p256dh": {"type": "string", "description": "The P-256 ECDH public key (base64url)"}, "auth": {"type": "string", "description": "The authentication secret (base64url)"} }, "required": ["p256dh", "auth"], "description": "Encryption keys for the push subscription" }, "user_agent": {"type": "string", "description": "The user agent string identifying the client"} }, "required": ["endpoint", "keys"] }, "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": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The user agent that created this subscription" } }, "required": ["subscription_id", "user_agent"] }, "description": "Array of push notification subscriptions" } }, "required": ["subscriptions"] }, "RelationshipResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier for the relationship" }, "type": { "$ref": "#/components/schemas/RelationshipTypes", "description": "The type of relationship (friend, blocked, pending, etc.)" }, "user": {"$ref": "#/components/schemas/UserPartialResponse"}, "since": { "type": "string", "format": "date-time", "description": "ISO8601 timestamp of when the relationship was established" }, "nickname": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "A custom nickname set for the related user" }, "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"] }, "RelationshipTypes": { "type": "integer", "format": "int32", "enum": [1, 2, 3, 4], "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" ], "description": "Relationship type" }, "FriendRequestByTagRequest": { "type": "object", "properties": { "username": {"$ref": "#/components/schemas/UsernameType"}, "discriminator": {"$ref": "#/components/schemas/DiscriminatorType"} }, "required": ["username", "discriminator"] }, "BulkIgnoreFriendRequestsResponse": { "type": "object", "properties": {"ignored_count": {"type": "integer", "format": "int53"}}, "required": ["ignored_count"] }, "BulkIgnoreFriendRequestsRequest": { "type": "object", "properties": { "filter": {"enum": ["all", "new_accounts"], "type": "string", "x-enumNames": ["all", "new_accounts"]}, "max_account_age_seconds": { "type": "integer", "maximum": 9007199254740991, "exclusiveMinimum": 0, "format": "int53" } } }, "FriendRequestCreateRequest": { "type": "object", "properties": { "staff_force_accept": {"type": "boolean", "description": "Staff-only: immediately create the friendship"} } }, "RelationshipTypePutRequest": { "type": "object", "properties": { "type": {"$ref": "#/components/schemas/RelationshipTypes", "description": "Type of relationship to create"} } }, "RelationshipNicknameUpdateRequest": { "type": "object", "properties": { "nickname": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Custom nickname for this friend (max 256 characters)" } }, "required": ["nickname"] }, "PhoneGateEscapePreviewResponse": { "type": "object", "properties": { "available": { "type": "boolean", "description": "Whether this account can set the deferred phone verification check aside right now" }, "guilds": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for the community" }, "name": {"type": "string", "description": "The community name"} }, "required": ["id", "name"] }, "description": "Communities that trigger the phone check and will be left when the escape runs" }, "owned_guilds": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for the community" }, "name": {"type": "string", "description": "The community name"} }, "required": ["id", "name"] }, "description": "Communities that trigger the phone check but are owned by this user, so they are kept" } }, "required": ["available", "guilds", "owned_guilds"] }, "SavedMessageEntryListResponse": { "type": "array", "items": {"$ref": "#/components/schemas/SavedMessageEntryResponse"} }, "SavedMessageEntryResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "Unique identifier for the saved message entry" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the channel containing the message" }, "message_id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "ID of the saved message"}, "status": { "type": "string", "enum": ["available", "missing_permissions"], "description": "Availability status of the saved message" }, "message": { "anyOf": [{"$ref": "#/components/schemas/MessageResponseSchema"}, {"type": "null"}], "description": "The message content if available" } }, "required": ["id", "channel_id", "message_id", "status", "message"] }, "SaveMessageRequest": { "type": "object", "properties": { "channel_id": {"$ref": "#/components/schemas/SnowflakeType"}, "message_id": {"$ref": "#/components/schemas/SnowflakeType"} }, "required": ["channel_id", "message_id"] }, "UserSettingsResponse": { "type": "object", "properties": { "status": {"type": "string", "description": "The current online status of the user"}, "status_resets_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the status will reset" }, "status_resets_to": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The status to reset to after the scheduled reset" }, "theme": {"type": "string", "description": "The UI theme preference"}, "locale": {"$ref": "#/components/schemas/Locale"}, "restricted_guilds": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "Guild IDs where direct messages are restricted" }, "bot_restricted_guilds": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "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": { "anyOf": [ {"type": "integer", "minimum": -2147483648, "maximum": 2147483647, "format": "int32"}, {"type": "null"} ], "description": "The unique identifier for the folder (-1 for uncategorized)" }, "name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the folder" }, "color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The color of the folder as an integer" }, "flags": {"$ref": "#/components/schemas/GuildFolderFlags"}, "icon": { "type": "string", "enum": ["folder", "star", "heart", "bookmark", "game_controller", "shield", "music_note"], "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" ], "description": "Selected icon for the guild folder" }, "guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "description": "The IDs of guilds contained in this folder" } }, "required": ["guild_ids"] }, "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": { "type": "integer", "minimum": 0, "maximum": 2147483647, "format": "int32", "description": "The idle timeout in seconds before going AFK" }, "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", "description": "Sensitive media filter level for community channels" }, "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/SnowflakeType"}, "description": "User IDs that bypass self-mention suppression" }, "staff_dm_access_user_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "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" ] }, "StickerAnimationOptions": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "x-enumNames": ["ALWAYS_ANIMATE", "ANIMATE_ON_INTERACTION", "NEVER_ANIMATE"], "x-enumDescriptions": [ "Always animate stickers", "Animate stickers on hover/interaction", "Never animate stickers" ], "description": "Sticker animation preference" }, "RenderSpoilers": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "x-enumNames": ["ALWAYS", "ON_CLICK", "IF_MODERATOR"], "x-enumDescriptions": [ "Always reveal spoiler content", "Reveal spoiler content on click", "Reveal spoiler content if moderator" ], "description": "Spoiler rendering preference" }, "FriendSourceFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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" } ], "description": "Friend source flags" }, "IncomingCallFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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" } ], "description": "Incoming call settings" }, "GroupDmAddPermissionFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "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"} ], "description": "Group DM add permissions" }, "GuildFolderFlags": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 2147483647, "x-bitflagValues": [ { "name": "SHOW_ICON_WHEN_COLLAPSED", "value": "1", "description": "Show the selected icon instead of guild previews when the folder is collapsed" } ], "description": "Bitfield for guild folder display behaviour" }, "CustomStatusResponse": { "type": "object", "properties": { "text": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The custom status message text"}, "expires_at": { "anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "description": "ISO8601 timestamp of when the custom status expires" }, "emoji_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "The ID of the custom emoji used in the status" }, "emoji_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the emoji used in the status" }, "emoji_animated": {"type": "boolean", "description": "Whether the status emoji is animated"} }, "required": ["emoji_animated"] }, "TimeFormatTypes": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "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" ], "description": "Time format preference" }, "SensitiveMediaFilterLevel": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "x-enumNames": ["SHOW", "BLUR", "BLOCK"], "x-enumDescriptions": [ "Show sensitive media without any filter", "Blur sensitive media until manually revealed", "Completely hide sensitive media" ], "description": "Sensitive media filter level" }, "SensitiveMediaGuildFilterLevel": { "type": "integer", "format": "int32", "enum": [0, 1], "x-enumNames": ["SHOW", "BLUR"], "x-enumDescriptions": [ "Show sensitive media without any filter", "Blur sensitive media until manually revealed" ], "description": "Sensitive media filter level for community channels" }, "ProfilePrivacyLevel": { "type": "integer", "format": "int32", "enum": [0, 1, 2], "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" ], "description": "Profile privacy visibility level" }, "UserSettingsUpdateRequest": { "type": "object", "properties": { "flags": {"$ref": "#/components/schemas/FriendSourceFlags"}, "status": { "type": "string", "enum": ["online", "dnd", "idle", "invisible"], "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" ], "description": "User online status" }, "status_resets_at": { "oneOf": [ { "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, "format": "int53"}, {"type": "null"} ], "description": "When status resets" }, "status_resets_to": { "anyOf": [ { "type": "string", "enum": ["online", "dnd", "idle", "invisible"], "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" ], "description": "User online status" }, {"type": "null"} ] }, "theme": { "type": "string", "enum": ["dark", "dark_legacy", "coal", "light", "system"], "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" ], "description": "UI theme preference" }, "locale": {"$ref": "#/components/schemas/Locale"}, "restricted_guilds": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 200, "description": "Guilds with DM restrictions" }, "bot_restricted_guilds": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 200, "description": "Guilds with bot DM restrictions" }, "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/StickerAnimationOptions", "description": "Sticker animation preference" }, "render_spoilers": { "$ref": "#/components/schemas/RenderSpoilers", "description": "Spoiler rendering preference" }, "message_display_compact": {"type": "boolean", "description": "Compact message display"}, "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": { "type": "integer", "minimum": -2147483648, "maximum": 2147483647, "format": "int32", "description": "Unique identifier for the folder (-1 for uncategorized)" }, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Display name of the folder"}, "color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Color of the folder as integer" }, "flags": {"$ref": "#/components/schemas/GuildFolderFlags"}, "icon": { "type": "string", "enum": ["folder", "star", "heart", "bookmark", "game_controller", "shield", "music_note"], "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" ], "description": "Selected icon for the guild folder" }, "guild_ids": { "type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 200, "description": "Guild IDs in this folder" } }, "required": ["id", "guild_ids"] }, "maxItems": 200, "description": "Guild folder organization" }, "custom_status": { "anyOf": [{"$ref": "#/components/schemas/CustomStatusPayload"}, {"type": "null"}], "description": "Custom status" }, "afk_timeout": {"type": "integer", "format": "int53", "description": "AFK timeout in seconds"}, "time_format": {"$ref": "#/components/schemas/TimeFormatTypes", "description": "Time format preference"}, "developer_mode": {"type": "boolean", "description": "Developer mode enabled"}, "trusted_domains": { "type": "array", "items": {"type": "string", "minLength": 1, "maxLength": 253}, "maxItems": 1000, "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/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", "description": "Sensitive media filter level for community channels" }, "suppress_unprivileged_self_mentions": { "type": "boolean", "description": "Suppress direct mentions and reply mentions from unprivileged users" }, "suppress_unprivileged_self_mentions_bypass_user_ids": { "anyOf": [{"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"}], "description": "User IDs that bypass self-mention suppression" }, "staff_dm_access_user_ids": { "anyOf": [{"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}}, {"type": "null"}], "description": "User IDs with Staff DM Access enabled" }, "profile_privacy": { "$ref": "#/components/schemas/ProfilePrivacyLevel", "description": "Controls who sees the full profile: all guild members, only small-guild members, or only friends" }, "synced_preferences": { "anyOf": [{"type": "string", "maxLength": 699052}, {"type": "null"}], "description": "Account-wide client preferences as a base64-encoded protobuf snapshot. Replaces the entire stored snapshot; pass null to clear it." } } }, "CustomStatusPayload": { "type": "object", "properties": { "text": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Custom status text (max 128 characters)" }, "expires_at": { "oneOf": [ { "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, "format": "int53"}, {"type": "null"} ], "description": "When the custom status expires" }, "emoji_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of custom emoji to display" }, "emoji_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Unicode emoji to display (ignored when emoji_id is provided)" } } }, "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." }, "SudoMfaMethodsResponse": { "type": "object", "properties": { "totp": {"type": "boolean", "description": "Whether TOTP is enabled"}, "webauthn": {"type": "boolean", "description": "Whether WebAuthn is enabled"}, "has_mfa": {"type": "boolean", "description": "Whether any MFA method is enabled"} }, "required": ["totp", "webauthn", "has_mfa"] }, "ThemeCreateResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^[a-f0-9]{16}$", "description": "The unique identifier for the created theme" } }, "required": ["id"] }, "ThemeCreateRequest": { "type": "object", "properties": {"css": {"type": "string", "minLength": 1, "description": "CSS text to store and share"}}, "required": ["css"] }, "UserTagCheckResponse": { "type": "object", "properties": { "taken": {"type": "boolean", "description": "Whether the username/discriminator combination is already taken"} }, "required": ["taken"] }, "UserProfileFullResponse": { "type": "object", "properties": { "user": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for this user" }, "username": {"type": "string", "description": "The username of the user, not unique across the platform"}, "discriminator": {"type": "string", "description": "The four-digit discriminator tag of the user"}, "global_name": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The display name of the user, if set" }, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the user avatar image" }, "avatar_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "The dominant avatar color of the user as an integer" }, "bot": {"type": "boolean", "description": "Whether the user is a bot account"}, "system": {"type": "boolean", "description": "Whether the user is an official system user"}, "flags": {"$ref": "#/components/schemas/PublicUserFlags"}, "mention_flags": { "$ref": "#/components/schemas/MentionReplyPreferences", "description": "The user's account-wide reply mention preference" } }, "required": ["id", "username", "discriminator", "global_name", "avatar", "avatar_color", "flags"], "description": "The user object" }, "user_profile": { "type": "object", "properties": { "bio": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "User biography text"}, "pronouns": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "User pronouns"}, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Hash of the profile banner image" }, "banner_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Default banner color if no custom banner" }, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "User-selected accent color" } }, "required": ["bio", "pronouns", "banner", "accent_color"], "description": "The user profile data" }, "guild_member": {"$ref": "#/components/schemas/GuildMemberResponse"}, "guild_member_profile": { "anyOf": [ { "type": "object", "properties": { "bio": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild-specific biography text" }, "pronouns": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Guild-specific pronouns" }, "banner": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Hash of the guild-specific banner image" }, "accent_color": { "anyOf": [{"$ref": "#/components/schemas/Int32Type"}, {"type": "null"}], "description": "Guild-specific accent color" } }, "required": ["bio", "pronouns", "banner", "accent_color"] }, {"type": "null"} ], "description": "Guild-specific profile data" }, "premium_type": { "$ref": "#/components/schemas/UserPremiumTypes", "description": "The type of premium subscription" }, "premium_since": {"type": "string", "description": "ISO8601 timestamp of when premium was activated"}, "premium_lifetime_sequence": {"$ref": "#/components/schemas/Int32Type"}, "mutual_friends": { "type": "array", "items": {"$ref": "#/components/schemas/UserPartialResponse"}, "description": "Array of mutual friends" }, "mutual_guilds": { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the mutual guild"}, "nick": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The nickname of the target user in this guild" } }, "required": ["id", "nick"] }, "description": "Array of mutual guilds" }, "connected_accounts": { "type": "array", "items": {"$ref": "#/components/schemas/ConnectionResponse"}, "description": "Array of verified external connections" }, "timezone_offset": { "anyOf": [ {"type": "integer", "minimum": -2147483648, "maximum": 2147483647, "format": "int32"}, {"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": { "type": "boolean", "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." } }, "required": ["user", "user_profile", "timezone_offset"] }, "EntranceSoundPlayRequest": { "type": "object", "properties": {"sound_id": {"$ref": "#/components/schemas/SnowflakeType"}}, "required": ["sound_id"] }, "WebhookUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The new name of the webhook"}, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "The new avatar image as a base64-encoded data URI" }, "channel_id": {"$ref": "#/components/schemas/SnowflakeType"} } }, "WebhookTokenResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The unique identifier (snowflake) for the webhook" }, "guild_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the guild this webhook belongs to" }, "channel_id": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$", "description": "The ID of the channel this webhook posts to" }, "name": {"type": "string", "description": "The display name of the webhook"}, "avatar": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "The hash of the webhook avatar image" }, "token": {"type": "string", "description": "The secure token used to execute the webhook"} }, "required": ["id", "guild_id", "channel_id", "name", "token"] }, "WebhookTokenUpdateRequest": { "type": "object", "properties": { "name": {"type": "string", "description": "The new name of the webhook"}, "avatar": { "anyOf": [{"$ref": "#/components/schemas/Base64ImageType"}, {"type": "null"}], "description": "The new avatar image as a base64-encoded data URI" } } }, "WebhookMessageRequest": { "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" }, "message_reference": { "anyOf": [{"$ref": "#/components/schemas/MessageReferenceRequest"}, {"type": "null"}], "description": "Reference to another message (for replies or forwards)" }, "allowed_mentions": { "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}], "description": "Controls which mentions trigger notifications" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "nonce": {"$ref": "#/components/schemas/MessageNonceRequest"}, "favorite_meme_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of a favorite meme to attach" }, "sticker_ids": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 3}, {"type": "null"} ], "description": "Array of sticker IDs to include (max 3)" }, "tts": {"type": "boolean", "description": "Whether this is a text-to-speech message"}, "username": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Override the default username of the webhook for this message" }, "avatar_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Override the default avatar URL of the webhook for this message" }, "attachments": { "type": "array", "items": {"$ref": "#/components/schemas/ClientUploadedAttachmentRequest"}, "description": "Array of attachments uploaded through the presigned upload endpoint" } } }, "WebhookMultipartMessageRequest": { "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" }, "message_reference": { "anyOf": [{"$ref": "#/components/schemas/MessageReferenceRequest"}, {"type": "null"}], "description": "Reference to another message (for replies or forwards)" }, "allowed_mentions": { "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}], "description": "Controls which mentions trigger notifications" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "nonce": {"$ref": "#/components/schemas/MessageNonceRequest"}, "favorite_meme_id": { "anyOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"type": "null"}], "description": "ID of a favorite meme to attach" }, "sticker_ids": { "anyOf": [ {"type": "array", "items": {"$ref": "#/components/schemas/SnowflakeType"}, "maxItems": 3}, {"type": "null"} ], "description": "Array of sticker IDs to include (max 3)" }, "tts": {"type": "boolean", "description": "Whether this is a text-to-speech message"}, "username": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Override the default username of the webhook for this message" }, "avatar_url": { "anyOf": [{"type": "string"}, {"type": "null"}], "description": "Override the default avatar URL of the webhook for this message" }, "attachments": { "type": "array", "items": { "type": "object", "properties": { "id": { "oneOf": [{"$ref": "#/components/schemas/SnowflakeType"}, {"$ref": "#/components/schemas/Int32Type"}], "description": "Attachment ID for referencing uploaded files" }, "filename": {"type": "string", "description": "Name of the file (1-1024 characters)"}, "description": { "type": "string", "description": "Description for the attachment (max 4096 characters)" }, "content_type": {"type": "string", "description": "MIME type of the file"}, "size": {"$ref": "#/components/schemas/NonNegativeSafeIntegerType"}, "url": {"type": "string", "description": "URL of the attachment"}, "proxy_url": {"type": "string", "description": "Proxied URL of the attachment"}, "height": {"type": "integer", "format": "int53", "description": "Height of the image/video in pixels"}, "width": {"type": "integer", "format": "int53", "description": "Width of the image/video in pixels"}, "ephemeral": {"type": "boolean", "description": "Whether this attachment is ephemeral"}, "duration": {"type": "number", "description": "Duration of audio file in seconds"}, "waveform": {"type": "string", "description": "Base64-encoded bytearray of audio waveform"}, "flags": {"$ref": "#/components/schemas/MessageAttachmentFlags"} } }, "description": "Array of multipart attachment metadata objects" } } }, "GitHubWebhook": { "type": "object", "properties": { "action": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "body": {"type": "string"} }, "required": ["id", "html_url", "user", "body"] }, {"type": "null"} ] }, "check_run": { "anyOf": [ { "type": "object", "properties": { "conclusion": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"}, "html_url": {"type": "string"}, "check_suite": { "type": "object", "properties": { "conclusion": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "head_branch": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "output": { "anyOf": [ { "type": "object", "properties": { "title": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "summary": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "head_branch": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"} }, "required": ["name"] } }, "required": ["id", "url", "message", "author"] } }, {"type": "null"} ] }, "compare": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "discussion": { "anyOf": [ { "type": "object", "properties": { "title": {"type": "string"}, "number": {"$ref": "#/components/schemas/Int32Type"}, "html_url": {"type": "string"}, "answer_html_url": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "body": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "boolean"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "null"}]} }, "required": ["id", "number", "html_url", "user", "title"] }, {"type": "null"} ] }, "ref_type": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "ref": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "release": { "anyOf": [ { "type": "object", "properties": { "id": {"$ref": "#/components/schemas/Int32Type"}, "tag_name": {"type": "string"}, "html_url": {"type": "string"}, "body": {"anyOf": [{"type": "string"}, {"type": "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": {"anyOf": [{"type": "string"}, {"type": "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"] }, "Int64Type": {"type": "string", "format": "int64", "pattern": "^-?[0-9]+$"}, "InstatusWebhook": { "type": "object", "properties": { "meta": { "anyOf": [ { "type": "object", "properties": { "unsubscribe": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "documentation": {"anyOf": [{"type": "string"}, {"type": "null"}]} } }, {"type": "null"} ] }, "page": { "anyOf": [ { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status_indicator": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status_description": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}]} } }, {"type": "null"} ] }, "incident": { "anyOf": [ { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "backfilled": {"anyOf": [{"type": "boolean"}, {"type": "null"}]}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "resolved_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "incident_updates": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "incident_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "markdown": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}]} } } }, {"type": "null"} ] }, "affected_components": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]} } } }, {"type": "null"} ] } } }, {"type": "null"} ] }, "maintenance": { "anyOf": [ { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "maintenance_start_date": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "maintenance_end_date": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "backfilled": {"anyOf": [{"type": "boolean"}, {"type": "null"}]}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "resolved_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "maintenance_updates": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "maintenance_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "markdown": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}]} } } }, {"type": "null"} ] }, "affected_components": { "anyOf": [ { "type": "array", "items": { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]} } } }, {"type": "null"} ] } } }, {"type": "null"} ] }, "component_update": { "anyOf": [ { "type": "object", "properties": { "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "new_status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "component_id": {"anyOf": [{"type": "string"}, {"type": "null"}]} } }, {"type": "null"} ] }, "component": { "anyOf": [ { "type": "object", "properties": { "id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}]} } }, {"type": "null"} ] } } }, "WebhookMessageEditRequest": { "type": "object", "properties": { "content": { "anyOf": [{"$ref": "#/components/schemas/MessageContentRequest"}, {"type": "null"}], "description": "The new message content (up to 4000 characters)" }, "embeds": { "type": "array", "items": {"$ref": "#/components/schemas/RichEmbedRequest"}, "description": "Array of embed objects to include in the message" }, "flags": {"$ref": "#/components/schemas/MessageFlags"}, "allowed_mentions": { "anyOf": [{"$ref": "#/components/schemas/AllowedMentionsRequest"}, {"type": "null"}], "description": "Controls which mentions trigger notifications" } } }, "SlackWebhookRequest": { "type": "object", "properties": { "text": {"type": "string", "description": "Main text content of the message"}, "username": {"type": "string", "description": "Override the default username of the webhook"}, "icon_url": {"type": "string", "description": "Override the default icon of the webhook"}, "attachments": { "type": "array", "items": { "type": "object", "properties": { "fallback": {"type": "string", "description": "Fallback text for notifications"}, "pretext": {"type": "string", "description": "Text that appears above the attachment block"}, "text": {"type": "string", "description": "Main text content of the attachment"}, "color": {"type": "string", "description": "Colour of the attachment sidebar (hex code or preset)"}, "title": {"type": "string", "description": "Title of the attachment"}, "title_link": {"type": "string", "description": "URL to link from the title"}, "fields": { "type": "array", "items": { "type": "object", "properties": { "title": {"type": "string", "description": "Title of the field"}, "value": {"type": "string", "description": "Value of the field"}, "short": { "type": "boolean", "description": "Whether the field should be displayed as a short column" } } }, "description": "Array of field objects" }, "footer": {"type": "string", "description": "Footer text displayed at the bottom"}, "ts": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "format": "int53", "description": "Unix timestamp for the attachment footer" }, "author_name": {"type": "string", "description": "Name of the author"}, "author_link": {"type": "string", "description": "URL to link from the author name"}, "author_icon": {"type": "string", "description": "URL for the author icon image"}, "image_url": {"type": "string", "description": "URL of the main image to display"}, "thumb_url": {"type": "string", "description": "URL of a thumbnail image"} } }, "description": "Array of attachment objects" } } } }, "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": "Downloads", "description": "App downloads"}, {"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": "Connections"}, {"name": "Messages"}, {"name": "Donations"}, {"name": "Geolocation"}, {"name": "GIFs"}, {"name": "GIFs (Deprecated)"}, {"name": "Discovery"}, {"name": "Emojis"}, {"name": "Stickers"}, {"name": "Debug"}, {"name": "Voice"} ] }