Aplicações
Uma aplicação é um cliente OAuth2 pertencente a uma conta de usuário, e cada conta bot é registrada sob uma aplicação. Um usuário possui no máximo 25 aplicações. A concessão de código de autorização, o registro de escopos e os tokens emitidos para clientes de terceiros pertencem ao recurso OAuth2.
Regras de acesso
Seção intitulada “Regras de acesso”Cada rota, exceto Obter aplicação pública, requer uma credencial. Uma rota exclusiva para usuário rejeita token de bot e bearer OAuth2 com 403 ACCESS_DENIED. Toda rota nesta página aceita uma conta com uma ação obrigatória pendente.
As rotas protegidas por modo sudo lêem X-Fluxer-Sudo-Mode-JWT. Um token sudo válido nesse cabeçalho, emitido para a conta autenticada, satisfaz o modo sudo sem prova no corpo da requisição. O Decoding Chat retorna o mesmo token no cabeçalho de resposta X-Fluxer-Sudo-Mode-JWT. O Decoding Chat não emite token para uma conta sem autenticador, portanto essa conta comprova o modo sudo enviando password no corpo.
Limites de taxa (Rate limits)
Seção intitulada “Limites de taxa (Rate limits)”Um bucket cujo nome termina em ::client_id dá ao usuário autenticado uma cota. Requisições para cada aplicação que aquele usuário possui contam contra essa cota única. Listar aplicações próprias, Obter aplicação atual, Obter aplicação, Obter aplicação pública e Listar autorizações OAuth2 consomem da mesma cota oauth_dev:clients:list. Obter aplicação do bot consome do mesmo bucket, chaveado pela conta bot nomeada pelo token. Essa cota é separada da do proprietário.
Objeto de aplicação
Seção intitulada “Objeto de aplicação”O registro da aplicação como seu proprietário o vê.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
| name | string | O nome da aplicação (1-100 caracteres) |
| redirect_uris1 | array[string] | Os URIs de redirecionamento registrados para a aplicação |
| bot_public | boolean | Se qualquer usuário elegível pode instalar o bot |
| bot_require_code_grant | boolean | Se a instalação do bot requer uma concessão de código OAuth2 |
| client_secret?2 | string | O segredo do cliente que autentica troca de token, introspecção e revogação |
| bot?3 | bot de aplicação object | A conta bot que a aplicação possui |
1 Sempre emitido, e um array vazio quando a aplicação não registrou nenhum. Criar aplicação e Atualizar aplicação aceitam no máximo 10 entradas
2 Presente apenas na resposta a Criar aplicação e Redefinir segredo do cliente, que são as únicas operações que o emitem
3 Presente em todas as respostas exceto Redefinir segredo do cliente, e ausente para uma aplicação que não possui conta bot ou cujo registro de conta bot não pode mais ser lido
Exemplo
Seção intitulada “Exemplo”{ "id": "1501314428688998182", "name": "Party Parrot", "redirect_uris": ["https://example.com/callback"], "bot_public": true, "bot_require_code_grant": false}Objeto de bot de aplicação
Seção intitulada “Objeto de bot de aplicação”A conta bot que uma aplicação possui. Criar aplicação cria exatamente uma conta bot com a aplicação, portanto o snowflake do usuário bot é sempre igual ao ID da aplicação.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID do usuário bot, sempre igual ao ID da aplicação |
| username | string | O nome de usuário da conta bot, de 1 a 32 letras ASCII, dígitos ou sublinhados |
| discriminator | string | O discriminador da conta bot, sempre quatro dígitos decimais com zeros à esquerda |
| avatar?1 2 | ?string | O hash do avatar da conta bot, ou null quando nenhum está armazenado |
| banner?1 2 | ?string | O hash do banner da conta bot, ou null quando nenhum está armazenado |
| bio | ?string | A biografia do perfil da conta bot, ou null quando nenhuma está armazenada |
| token?3 | string | O token de bot emitido para a conta |
| mfa_enabled?4 | boolean | Se a conta bot tem um autenticador configurado |
| authenticator_types?4 | array[integer] | Os tipos de autenticador configurados na conta bot |
| flags5 | integer | Flags de bot |
1 Declarado opcional pelo schema e sempre emitido
2 Um hash animado mantém seu prefixo a_, que é o indicador de animação para este objeto. Uma conta bot sempre possui os direitos de avatar animado e banner animado, portanto nenhum dos hashes é removido ou suprimido
3 Presente apenas na resposta a Criar aplicação. Redefinir token de bot retorna o novo token no objeto pai de redefinição de token de bot em seu lugar
4 Declarado opcional pelo schema e sempre emitido, exceto no objeto de aplicação pública, que omite ambos. authenticator_types é um array vazio quando a conta não tem autenticador, e mfa_enabled é true exatamente quando esse array não está vazio
5 O bitfield representa os flags públicos de usuário da conta, e Atualizar perfil de bot define apenas os flags de bot nele
Um token de bot inválido retorna o mesmo erro, independentemente de sua aplicação existir ou não.
Objeto de aplicação pública
Seção intitulada “Objeto de aplicação pública”A aplicação como qualquer chamador a vê, incluindo um chamador que não apresenta credenciais.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
| name | string | O nome da aplicação |
| icon1 | ?string | O hash do avatar da conta bot, usado como ícone da aplicação |
| description | ?string | Sempre null neste objeto |
| redirect_uris | array[string] | Os URIs de redirecionamento registrados para a aplicação |
| scopes2 | array[string] | Escopos OAuth2 para os quais a aplicação pode ser autorizada atualmente |
| bot_public3 | boolean | Se o solicitante pode instalar o bot |
| bot4 | ?bot de aplicação object | A conta bot que a aplicação possui |
| current_user?5 | ?usuário parcial object | A conta solicitante |
1 Null quando a aplicação não tem conta bot ou essa conta não tem avatar. Caso contrário, é o hash do avatar armazenado da conta bot, e um hash animado mantém seu prefixo a_
2 Contém bot quando a aplicação possui uma conta bot, e é caso contrário vazio
3 Reportado como true para o proprietário da aplicação mesmo quando o bot não é público
4 Null quando a aplicação não tem conta bot. Seus campos token, mfa_enabled e authenticator_types nunca são definidos aqui
5 Declarado opcional pelo schema e sempre emitido, e null quando a requisição não tem credencial que resolva para uma conta
Objeto de aplicação bot atual
Seção intitulada “Objeto de aplicação bot atual”A aplicação que emitiu o token de bot solicitante, como retornada para aquele token.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
| name | string | O nome da aplicação |
| icon1 | ?string | O hash do avatar da conta bot, usado como ícone da aplicação |
| description1 | ?string | A biografia da conta bot, usada como descrição da aplicação |
| bot_public | boolean | Se qualquer usuário elegível pode instalar o bot |
| bot_require_code_grant | boolean | Se a instalação do bot requer uma concessão de código OAuth2 |
| verify_key2 | string | Um indicador de posição de compatibilidade |
| owner3 | usuário parcial object | A conta proprietária da aplicação |
| bot?4 | bot de aplicação object | A conta bot que a aplicação possui |
| redirect_uris?5 | array[string] | Os URIs de redirecionamento registrados para a aplicação |
1 Lido a partir da conta bot, portanto muda com Atualizar perfil de bot, e é null quando a aplicação não possui conta bot
2 Sempre 64 caracteres 0, pois não há chave de assinatura de aplicação disponível
3 A requisição falha com 401 INVALID_TOKEN quando a conta proprietária não existe mais
4 Ausente quando a aplicação não possui conta bot, e seu token nunca é definido aqui
5 Declarado opcional pelo schema e sempre emitido, e um array vazio quando a aplicação não registrou nenhum URI de redirecionamento
Objeto de perfil de bot
Seção intitulada “Objeto de perfil de bot”Os campos de perfil da conta bot após uma atualização. Atualizar perfil de bot é a única operação que retorna esta estrutura. O objeto não tem campo token.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID do usuário bot |
| username | string | O nome de usuário da conta bot |
| discriminator | string | O discriminador da conta bot, sempre quatro dígitos decimais com zeros à esquerda |
| avatar1 | ?string | O hash do avatar da conta bot, ou null quando nenhum está armazenado |
| banner1 | ?string | O hash do banner da conta bot, ou null quando nenhum está armazenado |
| bio | ?string | A biografia do perfil da conta bot, ou null quando nenhuma está armazenada |
| flags | integer | Flags de bot |
1 Um hash animado mantém seu prefixo a_, que é o indicador de animação para este objeto. O banner armazenado da conta bot nunca é suprimido
Flags de bot
Seção intitulada “Flags de bot”| Valor | Nome | Descrição |
|---|---|---|
| 1 << 4 | FRIENDLY_BOT | O bot aceita pedidos de amizade de usuários |
| 1 << 5 | FRIENDLY_BOT_MANUAL_APPROVAL | O bot requer aprovação manual para pedidos de amizade |
Estes bits são um subconjunto dos flags públicos de usuário da conta, portanto uma conta bot que também tem STAFF, PARTNER, BUG_HUNTER ou SPAMMER reporta esse bit no mesmo campo. Um cliente DEVE ignorar um bit que não reconhecer.
Objeto de redefinição de token de bot
Seção intitulada “Objeto de redefinição de token de bot”A resposta a Redefinir token de bot.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| token | string | O token de bot recém-emitido |
| bot1 | bot de aplicação object | A conta bot a qual o token pertence |
1 O objeto aninhado omite seu próprio membro token
Listar aplicações próprias
Seção intitulada “Listar aplicações próprias”GET/v1/users/@me/applicationsRetorna todos os objetos de aplicação que o usuário atual possui.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | array[aplicação object] | As aplicações foram retornadas |
| 403 | resposta de erro | A credencial é um token de bot ou bearer (ACCESS_DENIED) |
A listagem não é paginada porque um usuário pode possuir no máximo 25 aplicações. Nenhuma entrada possui segredo de cliente ou token de bot. A aplicação nativa Fluxer Admin pertence à conta de sistema e nunca aparece aqui.
Rate limit
Seção intitulada “Rate limit”60 requisições por minuto para cada usuário autenticado, no bucket oauth_dev:clients:list.
Obter aplicação atual
Seção intitulada “Obter aplicação atual”GET/v1/oauth2/applications/@meRetorna as aplicações próprias do chamador, selecionadas pelo tipo de credencial. Uma sessão de usuário retorna o mesmo array de Listar aplicações próprias. Um token de bot retorna o objeto de aplicação bot atual para a aplicação que emitiu o token.
Uma credencial bearer OAuth2 é rejeitada.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | array[aplicação object] | aplicação bot atual object | Os dados da aplicação atual foram retornados |
| 401 | resposta de erro | Autenticação ausente ou inválida (UNAUTHORIZED) |
| 401 | resposta de erro | O token de bot apresentado pertence a uma aplicação cuja conta proprietária não existe mais (INVALID_TOKEN) |
| 403 | resposta de erro | A credencial é um token bearer (ACCESS_DENIED) |
Rate limit
Seção intitulada “Rate limit”60 requisições por minuto para cada usuário autenticado, no bucket oauth_dev:clients:list.
Obter aplicação do bot
Seção intitulada “Obter aplicação do bot”GET/v1/applications/@meRetorna o objeto de aplicação bot atual para a aplicação que emitiu o token de bot apresentado. A rota aceita apenas o esquema Bot no cabeçalho Authorization.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | aplicação bot atual object | A aplicação foi retornada |
| 401 | resposta de erro | O cabeçalho está ausente ou não usa o esquema Bot (INVALID_TOKEN) |
| 401 | resposta de erro | O cabeçalho não resolve para um token de bot ativo (INVALID_TOKEN) |
| 401 | resposta de erro | O token nomeia uma aplicação ou conta proprietária que não existe mais (INVALID_TOKEN) |
Toda rejeição reporta o mesmo INVALID_TOKEN, portanto um chamador não pode distinguir uma credencial malformada de um segredo válido cuja aplicação tenha sido excluída desde então.
Rate limit
Seção intitulada “Rate limit”60 requisições por minuto para cada conta autenticada, ou para cada endereço IP do cliente quando nenhuma conta for resolvida, no bucket oauth_dev:clients:list.
Obter aplicação pública
Seção intitulada “Obter aplicação pública”GET/v1/oauth2/applications/{id}/publicRetorna o objeto de aplicação pública para qualquer aplicação. Autenticação não é necessária. Uma credencial que resolve para uma conta também define current_user, e uma que resolve para o proprietário da aplicação reporta bot_public como true mesmo quando o bot não for público.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | aplicação pública object | A aplicação foi retornada |
| 400 | resposta de erro | O ID da aplicação não é um snowflake válido |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION) |
Esta representação expõe a lista completa de URIs de redirecionamento registrados e o perfil do bot para chamadores anônimos. Não possui segredo do cliente, token de bot, identidade do proprietário e nenhuma informação sobre o registro MFA do proprietário. Um proprietário de aplicação não deve registrar um URI de redirecionamento cujo nome de host seja sensível.
Rate limit
Seção intitulada “Rate limit”60 requisições por minuto para cada usuário autenticado, ou para cada endereço IP do cliente quando a requisição não possui credencial, no bucket oauth_dev:clients:list.
Criar aplicação
Seção intitulada “Criar aplicação”POST/v1/oauth2/applicationsCria uma aplicação juntamente com sua conta bot. Retorna o objeto de aplicação com o segredo do cliente inicial e o token de bot.
Uma conta não reivindicada não pode criar uma aplicação. Uma conta é considerada não reivindicada enquanto não possuir credencial de senha, não for um bot e não tiver sido vinculada a uma identidade de login único.
Cabeçalhos da requisição
Seção intitulada “Cabeçalhos da requisição”| Campo | Tipo | Descrição |
|---|---|---|
| X-Captcha-Token?1 | string | O comprovante de CAPTCHA para a requisição |
| X-Captcha-Type?2 | string | O provedor de CAPTCHA contra o qual verificar, hcaptcha ou turnstile |
1 Um comprovante ausente retorna 400 CAPTCHA_REQUIRED e um comprovante rejeitado retorna 400 INVALID_CAPTCHA. O Decoding Chat pula a verificação quando o CAPTCHA está desabilitado na instância, quando a conta possui o flag de isenção de CAPTCHA, ou quando a política de conta da instância concede ao e-mail do chamador a capacidade de isenção de CAPTCHA, como descrito em Tratamento de CAPTCHA
2 O Decoding Chat verifica contra o provedor configurado da instância quando o cabeçalho está ausente
Corpo JSON
Seção intitulada “Corpo JSON”| Campo | Tipo | Descrição |
|---|---|---|
| name1 | string | O nome da aplicação (1-100 caracteres) |
| redirect_uris?2 3 | ?array[string] | Os URIs de redirecionamento a registrar, no máximo 10 |
| bot_public? | boolean | Se qualquer usuário elegível pode instalar o bot (padrão true) |
| bot_require_code_grant? | boolean | Se a instalação do bot requer concessão de código OAuth2 (padrão false) |
1 Rejeitado com 403 CONTENT_BLOCKED quando a moderação de conteúdo bloqueia o valor
2 Null não registra nenhum URI de redirecionamento. Cada entrada é normalizada e depois limitada a 1 a 256 caracteres
3 Cada URI deve ser analisável como URL absoluta com um host e deve usar HTTPS. HTTP é aceito apenas quando o host for localhost, um subdomínio .localhost, um literal IPv4 ou um literal IPv6 entre colchetes. Um URI que a moderação de conteúdo bloqueia é rejeitado com 403 CONTENT_BLOCKED
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | aplicação object | A aplicação e seu bot foram criados |
| 400 | resposta de erro | O corpo falha na validação |
| 400 | resposta de erro | Comprovante de CAPTCHA ausente (CAPTCHA_REQUIRED) ou rejeitado (INVALID_CAPTCHA) |
| 400 | resposta de erro | A conta não foi reivindicada4 |
| 400 | resposta de erro | O proprietário já possui 25 aplicações (MAX_APPLICATIONS) |
| 403 | resposta de erro | A credencial é um token de bot ou bearer (ACCESS_DENIED) |
| 403 | resposta de erro | O nome, um URI de redirecionamento ou o nome de usuário derivado do bot foi bloqueado (CONTENT_BLOCKED) |
| 500 | resposta de erro | Ocorre uma falha interna inesperada, inclusive quando nenhum nome de usuário de bot puder ser alocado (BOT_USER_GENERATION_FAILED) |
4 UNCLAIMED_ACCOUNT_CANNOT_CREATE_APPLICATIONS
O Decoding Chat deriva o nome de usuário do bot a partir do nome da aplicação quando esse nome produz uma tag disponível, e caso contrário atribui um nome de usuário aleatório. O nome de usuário e o discriminador resultantes podem ambos diferir do nome da aplicação.
Efeitos colaterais
Seção intitulada “Efeitos colaterais”O Decoding Chat cria a aplicação e a conta bot juntas. O bot começa sem avatar, banner, biografia ou nome de exibição global. Nenhum Dispatch de Gateway é emitido.
Rate limit
Seção intitulada “Rate limit”10 requisições por hora para cada usuário autenticado, no bucket oauth_dev:clients:create.
Obter aplicação
Seção intitulada “Obter aplicação”GET/v1/oauth2/applications/{id}Retorna um objeto de aplicação. Apenas o proprietário pode lê-lo.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | aplicação object | A aplicação foi retornada |
| 400 | resposta de erro | O ID da aplicação não é um snowflake válido |
| 403 | resposta de erro | A credencial é um token de bot ou bearer, ou o chamador não possui a aplicação (ACCESS_DENIED) |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION) |
Uma aplicação existente pertencente a outra conta retorna 403 ACCESS_DENIED.
Rate limit
Seção intitulada “Rate limit”60 requisições por minuto para cada usuário autenticado, no bucket oauth_dev:clients:list.
Atualizar aplicação
Seção intitulada “Atualizar aplicação”PATCH/v1/oauth2/applications/{id}Atualiza uma aplicação e retorna o objeto de aplicação resultante. Apenas o proprietário pode atualizá-la.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Corpo JSON
Seção intitulada “Corpo JSON”| Campo | Tipo | Descrição |
|---|---|---|
| name?1 | string | O nome da aplicação (1-100 caracteres) |
| redirect_uris?2 | ?array[string] | Os URIs de redirecionamento a registrar, no máximo 10 |
| bot_public? | boolean | Se qualquer usuário elegível pode instalar o bot |
| bot_require_code_grant? | boolean | Se a instalação do bot requer uma concessão de código OAuth2 |
1 Rejeitado com 403 CONTENT_BLOCKED quando a moderação de conteúdo bloqueia o valor
2 Cada entrada é normalizada, limitada a 1 a 256 caracteres e validada nos mesmos termos de Criar aplicação. Um array fornecido torna-se o conjunto registrado completo, null limpa todos os URIs registrados, e um campo omitido deixa o conjunto atual inalterado
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | aplicação object | A aplicação foi atualizada |
| 403 | resposta de erro | A credencial é um token de bot ou bearer, ou o chamador não possui a aplicação (ACCESS_DENIED) |
| 403 | resposta de erro | O nome ou um URI de redirecionamento está bloqueado (CONTENT_BLOCKED) |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION) |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”Cada campo enviado substitui o valor armazenado daquele campo. Nenhuma credencial é rotacionada e nenhum Dispatch de Gateway é emitido.
Rate limit
Seção intitulada “Rate limit”30 requisições por minuto para cada usuário autenticado, no bucket oauth_dev:clients:update::client_id, compartilhado com Atualizar perfil de bot.
Atualizar perfil de bot
Seção intitulada “Atualizar perfil de bot”PATCH/v1/oauth2/applications/{id}/botAtualiza a conta bot que uma aplicação possui e retorna o objeto de perfil de bot resultante. O chamador deve possuir a aplicação.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Corpo JSON
Seção intitulada “Corpo JSON”| Campo | Tipo | Descrição |
|---|---|---|
| username?1 | string | O novo nome de usuário para a conta bot (1-32 caracteres) |
| discriminator?2 | string | integer | O discriminador, 1 a 4 dígitos decimais analisados como inteiro |
| avatar?3 | ?string | A imagem de avatar codificada em base64, ou null para limpar o avatar armazenado |
| banner?3 | ?string | A imagem de banner codificada em base64, ou null para limpar o banner armazenado |
| bio?4 | ?string | A biografia do perfil (0-1024 caracteres), ou null para limpar o valor armazenado |
| bot_flags?5 | integer | Flags de bot |
1 Removido espaços antes da validação e restrito a letras ASCII, dígitos e sublinhados. O valor não pode ser everyone ou here e não pode conter fluxer ou system message. Uma alteração que modifica mais do que maiúsculas/minúsculas sempre realoca o discriminador. Um nome de usuário que a lista de bloqueio de substrings de perfil rejeita retorna 403 CONTENT_BLOCKED
2 Aceito apenas quando igual ao discriminador atual do bot. Qualquer outro valor retorna o código de campo BOT_DISCRIMINATOR_CANNOT_BE_CHANGED
3 O valor pode incluir um prefixo data:...;base64,, que o Decoding Chat remove antes de medir o payload. O payload base64 restante é limitado a 13981016 caracteres para ambos os campos, a extensão codificada de uma imagem de 10485760 bytes inteiros, e um valor maior é rejeitado com o código de campo BASE64_LENGTH_INVALID
4 Rejeitado com 403 CONTENT_BLOCKED quando a moderação de conteúdo ou a lista de bloqueio de substrings de perfil bloqueia o valor
5 O Decoding Chat lê apenas os flags de bot a partir do bitfield fornecido e define ou limpa cada um para corresponder. Ignora qualquer outro bit
O Decoding Chat verifica os bytes decodificados de avatar e banner contra o teto de bytes de avatar da instância, que se aplica a ambos os campos e tem padrão de 10 MiB. Uma imagem em um formato que o campo não aceita, uma imagem animada em um campo que não aceita animação e qualquer AVIF animado retornam o código de campo INVALID_IMAGE_FORMAT. As dimensões em pixels nunca são verificadas.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | perfil de bot object | O perfil foi atualizado |
| 400 | resposta de erro | O caminho ou o corpo falha na validação |
| 400 | resposta de erro | Nenhum discriminador pode ser alocado para o nome de usuário solicitado (USERNAME_NOT_AVAILABLE) |
| 400 | resposta de erro | O discriminador difere do atual |
| 400 | resposta de erro | A imagem é malformada, sobredimensionada ou tem um formato não suportado |
| 400 | resposta de erro | A cota de alteração de tag foi esgotada |
| 403 | resposta de erro | A credencial é um token de bot ou bearer, ou o chamador não possui a aplicação (ACCESS_DENIED) |
| 403 | resposta de erro | O nome de usuário ou a biografia está bloqueado (CONTENT_BLOCKED) |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION), ou ela não possui conta bot (BOT_USER_NOT_FOUND) |
Esta operação sempre limpa o nome de exibição global do bot, portanto um bot é sempre apresentado pelo seu nome de usuário. A escrita consome a cota de alteração de tag apenas quando altera o nome de usuário ou o discriminador. O Decoding Chat reporta uma cota esgotada como uma entrada de validação de corpo em username com o código USERNAME_CHANGED_TOO_MANY_TIMES, nunca como 429.
Efeitos colaterais
Seção intitulada “Efeitos colaterais”O Decoding Chat aplica os campos de perfil fornecidos à conta bot. Assets de avatar e banner substituídos param de aparecer após a atualização. Uma alteração de nome de usuário que modifica mais do que maiúsculas/minúsculas também substitui o discriminador por um aleatório livre para o novo nome de usuário. A operação emite um Dispatch de Gateway de User Update para as sessões da própria conta bot.
Rate limit
Seção intitulada “Rate limit”30 requisições por minuto para cada usuário autenticado, no bucket oauth_dev:clients:update::client_id, compartilhado com Atualizar aplicação, e uma alteração na tag resultante também é limitada a 5 alterações a cada 3 horas para cada conta bot.
Redefinir token de bot
Seção intitulada “Redefinir token de bot”POST/v1/oauth2/applications/{id}/bot/reset-tokenRotaciona o token de bot e retorna o objeto de redefinição de token de bot com o novo token. O chamador deve possuir a aplicação e comprovar o modo sudo.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Corpo JSON
Seção intitulada “Corpo JSON”O corpo é um objeto de verificação sudo. Seus campos não são obrigatórios quando a requisição já possui um comprovante válido.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | redefinição de token de bot object | O token foi rotacionado |
| 400 | resposta de erro | O caminho ou o corpo sudo falha na validação, ou a senha ou código MFA fornecido está incorreto |
| 403 | resposta de erro | A credencial é um token de bot ou bearer, ou o chamador não possui a aplicação (ACCESS_DENIED) |
| 403 | resposta de erro | O modo sudo é obrigatório e não foi comprovado (SUDO_MODE_REQUIRED) |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION), ou ela não possui conta bot (BOT_USER_NOT_FOUND) |
Um bot em execução se reconecta apenas após seu operador instalar o token retornado.
Efeitos colaterais
Seção intitulada “Efeitos colaterais”O Decoding Chat armazena o novo token e encerra todas as sessões ativas no Gateway principal mantidas pela conta bot. As participações do bot em servidores, em mensagens diretas em grupo e suas concessões OAuth2 permanecem inalteradas, e nenhum Dispatch de recurso é emitido.
Rate limit
Seção intitulada “Rate limit”10 requisições por hora para cada usuário autenticado, no bucket oauth_dev:clients:rotate_secret::client_id, compartilhado com Redefinir segredo do cliente.
Redefinir segredo do cliente
Seção intitulada “Redefinir segredo do cliente”POST/v1/oauth2/applications/{id}/client-secret/resetRotaciona o segredo do cliente OAuth2 e retorna o objeto de aplicação com o novo segredo. O chamador deve possuir a aplicação e comprovar o modo sudo.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Corpo JSON
Seção intitulada “Corpo JSON”O corpo é um objeto de verificação sudo. Seus campos não são obrigatórios quando a requisição já possui um comprovante válido.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | aplicação object | O segredo do cliente foi rotacionado |
| 400 | resposta de erro | O caminho ou o corpo sudo falha na validação, ou a senha ou código MFA fornecido está incorreto |
| 403 | resposta de erro | A credencial é um token de bot ou bearer, ou o chamador não possui a aplicação (ACCESS_DENIED) |
| 403 | resposta de erro | O modo sudo é obrigatório e não foi comprovado (SUDO_MODE_REQUIRED) |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION) |
O objeto de aplicação retornado possui o novo client_secret e nenhum membro bot. Um chamador que precise de ambos consulta Obter aplicação em seguida.
Efeitos colaterais
Seção intitulada “Efeitos colaterais”Troca de token, introspecção e revogação param de aceitar o segredo do cliente anterior imediatamente. Tokens de acesso e atualização existentes permanecem válidos até que expirem ou sejam revogados, e nenhum Dispatch de Gateway é emitido.
Rate limit
Seção intitulada “Rate limit”10 requisições por hora para cada usuário autenticado, no bucket oauth_dev:clients:rotate_secret::client_id, compartilhado com Redefinir token de bot.
Excluir aplicação
Seção intitulada “Excluir aplicação”DELETE/v1/oauth2/applications/{id}Exclui uma aplicação própria e anonimiza sua conta bot, retornando 204 com um corpo vazio. O chamador deve possuir a aplicação e comprovar o modo sudo.
Remover o bot de seus servidores emite um Dispatch de Gateway de Guild Member Remove por servidor, e cada remoção também entrega Guild Delete às sessões do próprio Gateway do bot.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| id | snowflake | O ID da aplicação |
Corpo JSON
Seção intitulada “Corpo JSON”O corpo é um objeto de verificação sudo. Seus campos não são obrigatórios quando a requisição já possui um comprovante válido.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 204 | vazio | A aplicação foi excluída |
| 400 | resposta de erro | O caminho ou o corpo sudo falha na validação, ou a senha ou código MFA fornecido está incorreto |
| 403 | resposta de erro | A credencial é um token de bot ou bearer, ou o chamador não possui a aplicação (ACCESS_DENIED) |
| 403 | resposta de erro | O modo sudo é obrigatório e não foi comprovado (SUDO_MODE_REQUIRED) |
| 404 | resposta de erro | A aplicação não existe (UNKNOWN_APPLICATION) |
Uma resposta 204 significa que a remoção foi concluída. Repetir a requisição em seguida retorna 404 UNKNOWN_APPLICATION.
Efeitos colaterais
Seção intitulada “Efeitos colaterais”As mensagens do bot permanecem atribuídas a uma conta excluída, e sua tag fica disponível para reutilização. O bot é removido de todos os servidores e seu perfil é anonimizado como DeletedUser#0000, com o nome global Deleted User.
O token de bot e o segredo do cliente param de funcionar. Troca de token, atualização, introspecção e revogação também falham. Um token de acesso existente ainda pode autenticar uma rota restrita por escopo até expirar, mas Obter autorização OAuth2 atual e Obter informações do usuário OAuth2 retornam 401 INVALID_TOKEN.
Rate limit
Seção intitulada “Rate limit”10 requisições por hora para cada usuário autenticado, no bucket oauth_dev:clients:delete::client_id.

