Pular para o conteúdo
Decoding Chat API

Relatórios Admin

Um relatório é uma denúncia registrada contra uma mensagem, uma conta ou um servidor (guild), juntamente com a evidência capturada quando foi registrado. Essas rotas listam e pesquisam relatórios, retornam essa evidência e resolvem um relatório com um comentário mostrado ao relator.

O envio de relatórios pertence ao recurso público Relatórios, que define os registros de categoria de onde category é extraído.

Os campos de contato do relator requerem report:view:reporter_pii além de report:view. Sem isso, reporter_email, reporter_full_legal_name e reporter_country_of_residence são nulos em todos os relatórios, então um campo redigido parece um campo que o relator nunca forneceu.

Um relatório é escrito uma vez, quando o relator o registra. Atualizar relatório o move de PENDING (pendente) para RESOLVED (resolvido) com um comentário opcional. Agendar exclusão de usuário por qualquer motivo diferente de uma solicitação do usuário também resolve todos os relatórios pendentes contra a conta excluída, sem comentário público e sem notificação ao relator.

Listar relatórios retorna esse objeto sem o contexto da mensagem. Obter relatório retorna o Objeto de detalhe do relatório admin, que o estende.

CampoTipoDescrição
report_idsnowflakeO ID do relatório
reporter_id1?snowflakeA conta que registrou o relatório
reporter_tag1 2?stringO nome de usuário do relator e o discriminador de quatro dígitos unidos por #
reporter_username1 2?stringO nome de usuário do relator
reporter_global_name1 2?stringO nome de exibição do relator, ou null quando não definido
reporter_discriminator1 2?stringO discriminador do relator de quatro dígitos preenchido com zeros
reporter_email3?stringO endereço de e-mail do relator
reporter_full_legal_name3?stringO nome legal fornecido com um aviso da Lei de Serviços Digitais
reporter_country_of_residence3?stringO país de residência fornecido com um aviso da Lei de Serviços Digitais
reported_atISO8601 timestampQuando o relatório foi enviado
statusintegerO status do relatório
report_typeintegerO tipo de relatório
category?stringA categoria sob a qual o relator registrou o relatório
additional_info?stringO detalhe em texto livre que o relator forneceu
reported_user_id?snowflakeA conta relatada, ou null para um relatório de servidor
reported_user_tag2?stringO nome de usuário relatado e o discriminador de quatro dígitos unidos por #
reported_user_username2?stringO nome de usuário da conta relatada
reported_user_global_name2?stringO nome de exibição da conta relatada, ou null quando não definido
reported_user_discriminator2?stringO discriminador da conta relatada de quatro dígitos preenchido com zeros
reported_user_avatar_hash4?stringO hash do avatar da conta relatada, ou null quando não definido
reported_guild_id?snowflakeO servidor relatado, ou null quando o relatório não nomeia nenhum
reported_guild_name4?stringO nome do servidor relatado
reported_guild_icon_hash4?stringO hash do ícone do servidor relatado, ou null quando não definido
reported_message_id?snowflakeA mensagem relatada, ou null para um relatório de usuário ou servidor
reported_channel_id?snowflakeO canal no qual o conteúdo relatado foi enviado
reported_channel_name4?stringO nome do canal, ou null para um canal de mensagem direta
reported_channel_nsfw5?booleanO estado NSFW efetivo do canal relatado
reported_guild_invite_code4?stringO código de convite pelo qual o servidor relatado foi alcançado
reported_guild_nsfw_level6?integerO nível NSFW do servidor
reported_guild_nsfw?4 7?booleanSe o servidor relatado foi marcado como NSFW
reported_guild_content_warning_level?4 7?integerO nível de aviso de conteúdo do servidor
reported_guild_content_warning_text?4 7?stringO texto de aviso de conteúdo do servidor (no máximo 200 caracteres)
reported_channel_nsfw_override?4 7?booleanA substituição NSFW definida no próprio canal relatado
reported_channel_content_warning_level?4 7?integerO nível de aviso de conteúdo definido no próprio canal
reported_channel_content_warning_text?4 7?stringO texto de aviso de conteúdo definido no próprio canal (no máximo 200 caracteres)
reported_channel_effective_nsfw?7 8?booleanSe o canal era NSFW depois de aplicar a configuração do servidor
reported_channel_effective_content_warning_level?7 8?integerO nível de aviso de conteúdo do canal depois de aplicar a configuração do servidor
reported_channel_effective_content_warning_text?7 8?stringO texto de aviso de conteúdo do canal depois de aplicar a configuração do servidor
resolved_at9?ISO8601 timestampQuando o relatório foi resolvido
resolved_by_admin_id9?snowflakeA conta Admin que resolveu o relatório
public_comment9?stringO comentário mostrado ao relator (no máximo 512 caracteres)

1 Nulo para um aviso anônimo da Lei de Serviços Digitais, que é registrado sem uma conta do Decoding Chat, portanto cada campo de identidade do relator é nulo exatamente quando reporter_id é nulo

2 Resolvido a partir da conta quando a resposta é produzida, e nulo quando a conta não pode mais ser lida

3 Nulo a menos que o chamador tenha report:view:reporter_pii, e nulo quando o relator não forneceu nenhum valor

4 Capturado quando o relatório foi registrado e nunca atualizado depois

5 O estado efetivo capturado quando o relatório gravou um, caso contrário, o estado NSFW atual do canal relatado

6 Derivado da flag NSFW do servidor capturada, onde true é o nível 3 e false é o nível 0. Caso contrário, é lido do servidor relatado, do servidor de registro ou do servidor do canal

7 Sempre emitido, então um membro ausente e um membro nulo significam a mesma coisa

8 Calculado quando o relatório foi registrado, aplicando a configuração do servidor sobre a configuração do canal

9 Nulo enquanto o relatório for PENDING e definido quando for movido para RESOLVED

{
"report_id": "1502771904419102720",
"reporter_id": "1483920011884392448",
"reporter_tag": "wren#0042",
"reporter_email": null,
"reported_at": "2026-03-04T18:22:10.441Z",
"status": 0,
"report_type": 0,
"category": "harassment",
"additional_info": "Repeated after being asked to stop.",
"reported_user_id": "1490118377238528000",
"reported_guild_id": "1471002884199612416",
"reported_message_id": "1502771119476146176",
"reported_channel_id": "1471002884199612420",
"reported_channel_nsfw": false,
"reported_guild_nsfw_level": 0,
"resolved_at": null,
"resolved_by_admin_id": null,
"public_comment": null
}
ValorNomeDescrição
0PENDINGO relatório aguarda revisão
1RESOLVEDO relatório foi revisado e resolvido
ValorNomeDescrição
0MESSAGEUma mensagem foi relatada
1USERUm usuário foi relatado
2GUILDUm servidor foi relatado

O objeto de detalhe estende o Objeto de relatório admin com as evidências grandes demais para retornar em uma página de lista. Obter relatório emite esses membros e Listar relatórios os omite.

CampoTipoDescrição
mutual_dm_channel_id1?snowflakeO canal de mensagem direta compartilhado pelo relator e pela conta relatada
message_context2array[objeto de contexto de mensagem de relatório]As mensagens capturadas em torno do conteúdo relatado
message_responses3array[objeto de mensagem]O estado atual das mesmas mensagens, lido ao vivo

1 Definido apenas para um relatório USER que tenha relator e uma conta relatada, e nulo quando os dois não compartilham nenhum canal de mensagem direta

2 Vazio para um relatório que não capturou contexto de mensagem, que é todo relatório de usuário e todo relatório de servidor

3 Resolvido quando a resposta é produzida, portanto uma mensagem editada difere de sua entrada capturada

Uma entrada de contexto preserva uma mensagem como estava quando o relatório foi registrado. Edições ou exclusões posteriores não a alteram, e a evidência de anexo sobrevive à exclusão do original.

Um relatório de mensagem captura a mensagem relatada juntamente com no máximo 25 mensagens antes e no máximo 25 depois dela, para um máximo de 51 entradas. Uma mensagem cuja conta de autor o Decoding Chat não pôde ler no momento da captura fica ausente do relatório.

CampoTipoDescrição
idsnowflakeO ID da mensagem
channel_id1stringO canal do qual as mensagens capturadas foram lidas
channel_nsfw2?booleanO estado NSFW atual daquele canal
channel_content_warning_level?3 4?integerO nível de aviso de conteúdo do canal
channel_content_warning_text?3 4?stringO texto de aviso de conteúdo do canal
guild_id5?snowflakeO servidor ao qual o relatório tem escopo, ou null quando o relatório não nomeia nenhum
guild_nsfw_level2?integerO nível NSFW atual do servidor
guild_nsfw?3 4?booleanSe o servidor está marcado como NSFW
guild_content_warning_level?3 4?integerO nível de aviso de conteúdo do servidor
guild_content_warning_text?3 4?stringO texto de aviso de conteúdo do servidor
contentstringO conteúdo da mensagem capturada, vazio quando a mensagem não tinha nenhum
timestamp6ISO8601 timestampQuando a mensagem foi enviada
attachments7array[objeto de anexo de mensagem de relatório]As cópias de anexo capturadas
author_idsnowflakeO autor da mensagem
author_usernamestringO nome de usuário capturado do autor
author_global_name4?stringO nome de exibição do autor
author_discriminatorstringO discriminador do autor de quatro dígitos preenchido com zeros capturado
author_avatar?stringO hash do avatar do autor capturado, ou null quando não definido
user_prior_ncmec_report_ids?3 8array[string]Os IDs de relatórios da NCMEC arquivados anteriormente contra o autor

1 O canal da entrada capturada, caso contrário o canal relatado. Uma string vazia quando nenhum deles grava um, então isso nem sempre analisa como um snowflake

2 Lido do canal ou servidor atual, e nulo quando o registro não pode mais ser lido

3 Sempre emitido, então um membro ausente e um membro nulo significam a mesma coisa

4 Sempre nulo, porque a captura não armazena valor para isso

5 O servidor relatado, ou o servidor a partir do qual o relatório foi arquivado, para que cada entrada de um relatório tenha o mesmo valor

6 Derivado do ID da mensagem

7 O Decoding Chat descarta uma cópia de evidência que não grava nenhum nome de arquivo, não resolve para nenhum canal ou não recebe nenhuma URL de download, então essa matriz pode ser mais curta do que a original

8 Classificado em ordem crescente, com no máximo 100 entradas, e vazio quando nenhum relatório da NCMEC foi arquivado contra o autor

CampoTipoDescrição
idsnowflakeO ID do anexo
filenamestringO nome de arquivo capturado
url9stringO URL de download para a cópia de evidência
nsfw?booleanSe o anexo foi marcado como NSFW
content_type?stringO tipo MIME capturado, ou nulo quando desconhecido
width?integerA largura em pixels, ou nulo para um anexo que não seja imagem
height?integerA altura em pixels, ou nulo para um anexo que não seja imagem
size?3?integerO tamanho em bytes, ou nulo quando desconhecido
ncmec_status10stringO Status de envio à NCMEC
ncmec_report_id?stringO ID do relatório da NCMEC, ou nulo quando o anexo nunca foi enviado
ncmec_failure_reason?stringO detalhe da falha, ou nulo a menos que ncmec_status seja failed

9 A URL expira após cinco minutos. Busque o relatório novamente para obter novos links de anexos

10 Um envio em trânsito é armazenado como submitting, um valor que o registro abaixo não lista

ValorDescrição
not_submittedO anexo nunca foi enviado à NCMEC
submittedO anexo foi enviado à NCMEC
failedO envio à NCMEC foi tentado e falhou

Uma resolução de relatório é a visualização reduzida que Atualizar relatório retorna. Tem os campos que a atualização grava e nada mais.

CampoTipoDescrição
report_idsnowflakeO ID do relatório
statusintegerO status do relatório, sempre RESOLVED em uma atualização bem-sucedida
resolved_at?ISO8601 timestampQuando o relatório foi resolvido
public_comment?stringO comentário mostrado ao relator, ou nulo quando nenhum for fornecido
{
"report_id": "1502771904419102720",
"status": 1,
"resolved_at": "2026-03-05T11:04:53.902Z",
"public_comment": "Thanks for the report. We actioned the account."
}
GET/v1/admin/reportsAudit reason

Retorna uma página de objetos Relatório admin sem contexto de mensagem. Requer report:view.

A operação possui estes ramos. Fornecer q, report_type, category, reporter_id, reported_user_id, reported_guild_id, reported_channel_id, guild_context_id ou resolved_by_admin_id pesquisa o índice de relatórios e retorna total, offset e limit ao lado da página. Não fornecer nenhum deles lista por status apenas e retorna apenas reports.

O ramo apenas de status padroniza como PENDING, de modo que uma solicitação sem string de consulta retorna apenas relatórios pendentes. O ramo de pesquisa não aplica filtro de status quando status é omitido. sort_by e sort_order atingem apenas o ramo de pesquisa. O ramo de apenas status sempre ordena por reported_at decrescente.

Uma instância sem backend de pesquisa retorna 403 FEATURE_TEMPORARILY_DISABLED em ambos os ramos.

CampoTipoDescrição
q?1stringConsulta em texto livre para corresponder contra os campos de relatório pesquisáveis (1-1024 caracteres)
status?pending | resolvedRestringir os resultados a um status de relatório
report_type?message | user | guildRestringir os resultados a um tipo de relatório
category?stringRestringir os resultados a uma categoria enviada (1-128 caracteres)
reporter_id?snowflakeRestringir os resultados a um relator
reported_user_id?snowflakeRestringir os resultados a uma conta relatada
reported_guild_id?snowflakeRestringir os resultados a um servidor relatado
reported_channel_id?2snowflakeRestringir os resultados a um canal relatado
guild_context_id?snowflakeRestringir resultados a relatórios registrados de dentro de um servidor
resolved_by_admin_id?snowflakeRestringir resultados a uma conta de Admin que resolveu
sort_by?3created_at | reported_at | resolved_atCampo de ordenação (padrão reported_at)
sort_order?asc | descDireção de ordenação, onde asc é o mais antigo primeiro (padrão desc)
limit?integerMáximo de relatórios a retornar (1-200, padrão 50)
offset?4integerRelatórios a pular (0-10000, padrão 0)

1 Correspondido apenas contra category, additional_info, reported_guild_name e reported_channel_name. Omiti-lo corresponde a todos os relatórios que satisfazem os filtros restantes

2 A rota aceita-o e fornecer sem outro filtro ainda seleciona o ramo de pesquisa. A pesquisa ignora o seu valor e retorna relatórios correspondentes de todos os canais

3 created_at ordena pelo tempo codificado no ID do relatório, e reported_at pelo tempo de envio armazenado no relatório

4 A próxima página é solicitada com um offset maior

CampoTipoDescrição
reports1array[objeto de relatório admin]Relatórios nesta página, sem contexto de mensagem
total?2 3integerAcertos no índice correspondentes aos filtros, menos os acertos nesta página que não resolvem mais
offset?2integerO deslocamento com o qual esta página foi lida
limit?2integerO limite com o qual esta página foi lida

1 Uma ocorrência de índice cujo registro de relatório não existe mais é descartada e a solicitação ainda é bem-sucedida, portanto, uma página completa pode conter menos entradas que o limit

2 Presente apenas no ramo de pesquisa, de modo que o ramo de apenas status não relata total

3 Reduzido apenas pelas correspondências irresolvíveis da página que foi lida, por isso é um limite superior para o que o chamador pode percorrer

StatusCorpoCondição
200corpo da respostaPágina de relatório foi retornada
403resposta de erroNenhum backend de pesquisa configurado para a instância e a solicitação retorna FEATURE_TEMPORARILY_DISABLED

A operação registra uma entrada de auditoria de Admin com a ação search_reports, o tipo de destino report e ID de destino 0 em ambos os ramos. As chaves de metadados são limit, offset, result_count para os relatórios nesta página e total. O ramo de pesquisa adiciona sort_by e sort_order. Um q fornecido adiciona has_query com o valor true, e o texto da pesquisa não é registrado. Os filtros fornecidos adicionam status, report_type, reported_user_id, reported_guild_id e reported_channel_id em seus próprios nomes, reporter_id como reporter_user_id, guild_context_id como context_guild_id e resolved_by_admin_id como resolved_by_admin_user_id. category não é registrada. Um 403 não registra nada.

200 solicitações por minuto para cada usuário autenticado, no bucket admin:lookup.

GET/v1/admin/reports/{report_id}Audit reason

Retorna um Objeto de detalhe do relatório admin, que adiciona o contexto de mensagem capturado e o estado atual dessas mensagens. Requer report:view.

A operação responde mesmo quando o índice de pesquisa de relatório não está disponível. Os campos de contato do relator são redigidos aqui exatamente como são em Listar relatórios.

CampoTipoDescrição
report_idsnowflakeO ID do relatório
StatusCorpoCondição
200Objeto de detalhe de relatório adminRelatório foi retornado
404resposta de erroRelatório não existe e a requisição retorna UNKNOWN_REPORT

A operação registra uma entrada de auditoria de Admin com a ação get_report, tipo de alvo report, o ID do relatório como ID do alvo e chaves de metadados report_type e status com os valores inteiros do relatório. Os URLs de download de anexos não são registrados. Um 404 não registra nada.

200 solicitações por minuto para cada usuário autenticado, no bucket admin:lookup.

PATCH/v1/admin/reports/{report_id}Audit reason

Resolve um relatório e retorna um objeto de resolução de relatório. Requer report:resolve.

status é obrigatório e resolved é o único valor que aceita, então essa rota não altera nenhum outro campo.

CampoTipoDescrição
report_idsnowflakeO ID do relatório
CampoTipoDescrição
statusresolvedO status para mover o relatório
public_comment?1stringO comentário mostrado ao relator (0-512 caracteres)

1 Armazenado como nulo quando omitido ou vazio, e mostrado ao relator no aviso de resolução caso contrário

StatusCorpoCondição
200objeto de resolução de relatórioO relatório foi resolvido
400resposta de erroO relatório já está resolvido e a requisição retorna REPORT_ALREADY_RESOLVED
404resposta de erroRelatório não existe e a requisição retorna UNKNOWN_REPORT

O relatório move para RESOLVED e registra resolved_at, resolved_by_admin_id e o comentário público.

O Decoding Chat registra uma entrada de auditoria de Admin com tipo de alvo report, ID de alvo igual ao ID do relatório e ação resolve_report. Os metadados são report_id e report_type.

O Decoding Chat notifica o relator quando o relatório tem uma conta de relator que ainda existe. O relator recebe uma mensagem direta do sistema e um e-mail quando a conta tem um endereço. Um aviso anônimo da Lei de Serviços Digitais não tem conta de relator e é resolvido sem notificação.

Um relator que ainda não tenha o canal do sistema aberto recebe Channel Create, e todas as sessões do relator recebem Message Create. O Decoding Chat registra uma falha de entrega e a solicitação ainda é bem-sucedida.

200 solicitações por minuto para cada usuário autenticado, no bucket admin:lookup.