Pular para o conteúdo
Decoding Chat API

Listas de bloqueio (Blocklists)

O Decoding Chat possui nove listas de bloqueio para acesso à conta e conteúdo do usuário. Cada uma define seus valores aceitos, regras de correspondência e metadados. O Decoding Chat normaliza um valor quando o adiciona e novamente quando o verifica.

Cada lista possui suas próprias ACLs Admin. Uma leitura requer a permissão check da lista selecionada, uma adição ou atualização requer sua permissão add e uma remoção requer sua permissão remove. Uma conta que possui ban:ip:add grava na lista ip e em nenhuma outra. Toda operação registra o motivo da auditoria nas entradas de auditoria Admin que produz, e cada leitura produz uma entrada. Uma entrada sobre uma lista possui um tipo de alvo construído a partir do nome da lista com cada hífen escrito como um sublinhado, portanto as entradas de url-domain usam url_domain. email-domain-suspicious é a única exceção e usa email_domain.

O Decoding Chat constrói cada nome de permissão a partir de ban:, do nome da lista com cada hífen escrito como um sublinhado e do verbo, portanto a lista url-domain usa ban:url_domain:check, ban:url_domain:add e ban:url_domain:remove. A lista email-domain-suspicious é a única exceção e usa suspicious_email_domain:check, suspicious_email_domain:add e suspicious_email_domain:remove.

ip, email e email-domain-suspicious controlam o acesso e o registro da conta. phrase, url, url-domain, file-sha, avatar-hash e profile-substring controlam o que uma conta pode postar, vincular, enviar ou exibir. email e email-domain-suspicious não armazenam nada além do valor. Uma linha ip também armazena um tipo de banimento, um motivo, uma expiração e seu momento de criação.

ValorDescrição
ip1Endereços IPv4, endereços IPv6 e intervalos CIDR com serviço negado
email2Endereços de email exatos bloqueados de registro e de serem configurados em uma conta
email-domain-suspicious2 3Domínios de email que permitem o registro e exigem que a nova conta verifique um número de telefone primeiro
phrase4Frases bloqueadas no conteúdo
url5URLs absolutos http e https bloqueados de serem postados
url-domain6Domínios bloqueados de serem vinculados
file-sha7Hashes SHA-256 bloqueados de serem enviados (uploaded)
avatar-hash8Hashes de avatar bloqueados de serem configurados
profile-substring4 9Substrings bloqueadas a partir de um campo de perfil nomeado

1 O Decoding Chat recusa um endereço com 400 IP_BAN_DECLINED quando ele está na lista de isenção de instâncias, ou quando os dados de pesquisa de IP mostram que um único endereço está em uma rede de operadora de celular, e registra ambas as recusas no log de auditoria Admin

2 Armazenado em letras minúsculas, de modo que um valor com maiúsculas e minúsculas não cria uma segunda linha

3 O Decoding Chat nunca mostra a lista ao titular da conta, que vê apenas a restrição do telefone verificado. Um domínio deve corresponder a ^[a-zA-Z0-9][a-zA-Z0-9\-.]*\.[a-zA-Z]{2,}$

4 Canonizado por normalização NFKC, remoção de caracteres de controle, formatação e seleção de variação, conversão para minúsculas e corte de espaços. Quando o Decoding Chat verifica a correspondência de um valor, ele também normaliza espaços em branco inseridos, pontuação e caracteres de compatibilidade

5 Canonizado antes do armazenamento. Um valor que o Decoding Chat não pode canonizar retorna 400 INVALID_FORM_BODY nomeando url

6 Armazenado em minúsculas e comparado ao hostname em minúsculas de um URL enviado. match_subdomains é armazenado na linha e o padrão é true, e a correspondência do hostname é exata independentemente do seu valor

7 Armazenado como hexadecimal em minúsculas

8 Armazenado como o hash de 8 caracteres com qualquer prefixo de animação a_ removido e o resto em minúsculas, de modo que as formas animada e estática de um avatar sejam a mesma linha

9 A única lista com escopo. Escopo e substring juntos identificam uma linha, de modo que a mesma substring possa ser armazenada uma vez por escopo

Os campos e as operações que uma lista aceita diferem de lista para lista. Leia o array fields e as flags supports_ de um objeto blocklist antes de gravar em uma lista.

Toda linha de url, url-domain, file-sha e avatar-hash tem uma categoria que nomeia de onde veio. Uma linha criada por meio deste recurso sem uma categoria explícita é armazenada como manual.

ValorDescrição
manualAdicionado por um Admin por meio deste recurso
urlhausImportado do URLhaus
phishtankImportado do PhishTank
google_safe_browsingImportado do Google Safe Browsing
malware_bazaarImportado do MalwareBazaar
ncmecImportado de um conjunto de hashes da NCMEC
gifctImportado de um conjunto de hashes do GIFCT
stop_nciiImportado de um conjunto de hashes do StopNCII

O campo de solicitação é uma string livre de 1 a 64 caracteres, de forma que um valor fora deste registro é aceito e armazenado literalmente. Tolere uma categoria armazenada fora do registro.

Toda linha de url, url-domain, file-sha e avatar-hash tem uma severidade. Uma linha criada sem uma severidade explícita é armazenada como 2.

ValorNomeDescrição
0ALLOWRegistra a correspondência e não toma nenhuma ação
1WARNRegistra a correspondência, avisa e permite o conteúdo
2BLOCKRecusa o conteúdo
3BLOCK_AND_REPORTRecusa o conteúdo e gera uma denúncia
ValorDescrição
usernameCompara a substring com o nome de usuário da conta
global_nameCompara a substring com o nome de exibição da conta
nicknameCompara a substring com o apelido de uma guilda
bioCompara a substring com a biografia do perfil
pronounsCompara a substring com os pronomes do perfil

Uma entrada do catálogo de listas de bloqueio retornada por List blocklists. O catálogo é fixo em cada versão e não reporta contagens.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio que esta entrada descreve
descriptionstringO resumo legível sobre o que a lista de bloqueio corresponde e como
value_field1stringO campo do corpo da solicitação que contém o valor ao adicionar
fields2array[string]Os nomes dos campos que as linhas desta lista de bloqueio aceitam além do valor (no máximo 8)
scoped3booleanSe as linhas têm o escopo de um campo de perfil e toda operação tem um escopo
supports_bulk_create4booleanSe Bulk add blocklist entries é aceito
supports_bulk_delete5booleanSe Bulk remove blocklist entries é aceito
supports_update6booleanSe Update blocklist entry é aceito

1 ip nomeia ip, email nomeia email, email-domain-suspicious e url-domain nomeiam domain, phrase nomeia phrase, url nomeia url, file-sha nomeia sha256_hex, avatar-hash nomeia hashes e profile-substring nomeia substrings

2 Vazio para ip, email, email-domain-suspicious e phrase. url nomeia category, severity, source_url e notes. url-domain adiciona match_subdomains, file-sha adiciona content_type e avatar-hash adiciona reason. profile-substring nomeia scope, reason e notes

3 Verdadeiro apenas para profile-substring

4 Verdadeiro apenas para file-sha

5 Verdadeiro apenas para avatar-hash e profile-substring

6 Verdadeiro para url, url-domain, file-sha, avatar-hash e profile-substring, que é exatamente o conjunto cujo array fields não está vazio

{
"list_type": "url-domain",
"description": "Domains blocked from being linked, optionally covering every subdomain rooted at the domain.",
"value_field": "domain",
"fields": ["match_subdomains", "category", "severity", "source_url", "notes"],
"scoped": false,
"supports_bulk_create": false,
"supports_bulk_delete": false,
"supports_update": true
}

Uma linha armazenada de uma lista de bloqueio. Todo campo está presente em toda entrada, e um campo que a lista de bloqueio da linha não armazena é nulo.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio à qual a linha pertence
value1stringO valor canônico armazenado (1-2048 caracteres)
scope2?stringO escopo da substring do perfil no qual a linha está armazenada
category3?stringA categoria da lista de bloqueio de conteúdo sob a qual a linha foi registrada
severity3?integerA severidade da lista de bloqueio de conteúdo aplicada quando a linha corresponde
source_url3?stringO URL do feed ou evidência a partir do qual a linha foi registrada
notes4?stringA nota interna armazenada juntamente com a linha
content_type5?stringA dica do tipo de mídia registrada junto com uma linha de file-sha
match_subdomains6?booleanSe uma linha de url-domain está sinalizada para cobrir subdomínios
reason7?stringO motivo armazenado na linha
expires_at7?ISO8601 timestampQuando a linha expira
created_at8?ISO8601 timestampQuando a linha foi adicionada
created_by_user_id8?snowflakeA conta Admin que adicionou a linha, ou nulo quando desconhecido

1 A string exata que as operações de entrada única e o cursor after aceitam para aquela linha

2 Não nulo apenas em profile-substring

3 Não nulo apenas em url, url-domain, file-sha e avatar-hash, onde category e severity são sempre definidos

4 Não nulo apenas em url, url-domain, file-sha, avatar-hash e profile-substring

5 Não nulo apenas em file-sha

6 Não nulo apenas em url-domain

7 Não nulo apenas em ip. Um endereço adicionado por meio de Add blocklist entry é escrito como um banimento permanente, portanto ele é lido de volta com o motivo platform_admin_enforcement e um expires_at nulo

8 Ambos nulos em email, email-domain-suspicious e phrase, que não armazenam nada além do valor. created_by_user_id também é nulo em ip

{
"list_type": "url-domain",
"value": "malicious.example.com",
"scope": null,
"category": "urlhaus",
"severity": 2,
"source_url": "https://urlhaus.example.com/entry/912",
"notes": null,
"content_type": null,
"match_subdomains": true,
"reason": null,
"expires_at": null,
"created_at": "2026-01-22T07:41:19.003Z",
"created_by_user_id": "1483920011884392448"
}

A decisão que Check blocklist entry retorna para um valor.

CampoTipoDescrição
banned1booleanSe o valor está atualmente bloqueado pela lista de bloqueio nomeada

1 Relata a decisão que o caminho de execução tomaria para esse valor

O corpo de Add blocklist entry possui uma forma por lista de bloqueio, e o segmento de caminho list_type seleciona a forma. O campo que possui o valor difere por lista de bloqueio, e dois dos nove aceitam um array, então uma solicitação pode adicionar até 1000 hashes de avatar ou substrings de perfil.

Lista de bloqueioCampoValor aceito
ipipEndereço IPv4, endereço IPv6 ou intervalo CIDR de 1 a 45 caracteres
emailemailEndereço de e-mail de 1 a 254 caracteres
email-domain-suspiciousdomainDomínio de 1 a 253 caracteres correspondente a ^[a-zA-Z0-9][a-zA-Z0-9\-.]*\.[a-zA-Z]{2,}$
phrasephraseFrase de 1 a 500 caracteres
urlurlURL absoluto http ou https de 1 a 2048 caracteres
url-domaindomainDomínio de 1 a 253 caracteres
file-shasha256_hexExatamente 64 caracteres hexadecimais
avatar-hash1hashes1 a 1000 hashes, cada um de 8 a 10 caracteres correspondentes a ^(a_)?[0-9a-fA-F]{8}$
profile-substring1 2substrings1 a 1000 substrings, cada uma de 1 a 500 caracteres

1 Cada valor é canonizado e gravado como sua própria linha com sua própria entrada de auditoria Admin

2 scope é obrigatório no mesmo corpo

Cada campo é uma string, exceto hashes e substrings, que são array[string].

avatar-hash desduplica o array após a canonização. profile-substring não o faz, então uma substring repetida em uma solicitação é gravada uma vez e auditada uma vez por ocorrência. Um valor de profile-substring que seja canonizado para uma string vazia é ignorado.

CampoTipoDescrição
scope3stringO escopo de substring de perfil para armazenar as linhas
category?4stringA categoria da lista de bloqueio de conteúdo (1-64 caracteres, padrão manual)
severity?4integerA severidade da lista de bloqueio de conteúdo (0-3, padrão 2)
match_subdomains?5booleanSe a linha está sinalizada como cobrindo subdomínios (padrão true)
content_type?6stringA dica do tipo de mídia (1-128 caracteres)
source_url?4stringO URL do feed ou evidência (1-2048 caracteres)
reason?7stringO motivo (1-1024 caracteres)
notes?8stringA nota interna (1-1024 caracteres)

3 Exigido por profile-substring. Todas as outras listas de bloqueio removem scope

4 Aceito apenas por url, url-domain, file-sha e avatar-hash

5 Aceito apenas por url-domain

6 Aceito apenas por file-sha

7 Aceito apenas por avatar-hash e profile-substring, e gravado nos metadados da entrada de auditoria

8 Aceito apenas por url, url-domain, file-sha, avatar-hash e profile-substring

GET/v1/admin/blocklistsAudit reason

Retorna um objeto blocklist para cada lista de bloqueio que esta instância mantém. Requer qualquer uma das permissões check.

A resposta é idêntica para todos os Admins.

CampoTipoDescrição
items1array[objeto blocklist]Toda lista de bloqueio exposta por esta instância

1 Sempre o catálogo completo em uma resposta. Não há cursor, nem has_more, e nem next_after

StatusCorpoCondição
200corpo da respostaO catálogo foi retornado

A operação registra uma entrada de auditoria Admin com a ação list_blocklists, o tipo de alvo blocklist, o ID do alvo 0 e a chave de metadados result_count.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

GET/v1/admin/blocklists/{list_type}/entriesAudit reason

Retorna uma página de cursor ordenada por valor de objetos blocklist entry. Exige a permissão check da lista selecionada.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio
CampoTipoDescrição
limit?integerMáximo de entradas a serem retornadas (1-200, padrão 50)
after?1stringRetorna as entradas ordenadas estritamente depois desse valor (1-2048 caracteres)
scope?2stringO escopo da substring do perfil a listar

1 Comparado como uma string em relação ao valor armazenado canônico. O Decoding Chat não o valida contra a lista de bloqueio selecionada, de modo que um cursor impossível não retorna nenhuma entrada

2 Obrigatório para profile-substring e rejeitado por todas as outras listas de bloqueio

CampoTipoDescrição
itemsarray[objeto blocklist entry]Entradas nesta página, ordenadas pelo valor ascendente
has_morebooleanSe outra página pode ser obtida com next_after
next_after3?stringO valor da entrada armazenado a ser enviado como after, ou nulo na última página

3 Um cursor de valor, portanto é retornado textualmente como after

StatusCorpoCondição
200corpo da respostaA página de entradas foi retornada
400resposta de erroscope é fornecido em uma lista de bloqueio sem escopo ou omitido em profile-substring, e a solicitação retorna INVALID_FORM_BODY

O custo de uma página não diminui conforme o cursor avança, então percorra uma lista grande com o maior limit que a operação aceitar.

A operação registra uma entrada de auditoria Admin com a ação list_blocklist_entries, o tipo de alvo da lista selecionada, ID do alvo 0 e chaves de metadados list_type, limit, result_count para as entradas nesta página e has_more. profile-substring adiciona scope, e se after for fornecido adiciona has_after. O valor do cursor e os valores de entrada não são gravados. Um 400 não registra nada.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

POST/v1/admin/blocklists/{list_type}/entriesAudit reason

Canoniza o valor ou os valores submetidos e os escreve na lista de bloqueio selecionada. Retorna 204 com um corpo vazio. Exige a permissão add da lista selecionada.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio

O corpo é um objeto de criação de blocklist entry. list_type seleciona a forma, então um corpo válido para uma lista de bloqueio falhará na validação em outra.

StatusCorpoCondição
204vazioOs valores foram gravados
400resposta de erroINVALID_FORM_BODY porque o valor não é válido para a lista ou um campo que a lista não aceita foi fornecido

Um campo de corpo que a lista de bloqueio selecionada não aceita é removido e nunca produz esse 400. Um url que o Decoding Chat não pode canonizar retorna 400 INVALID_FORM_BODY nomeando url no array errors.

O Decoding Chat se recusa a adicionar um ip com 400 IP_BAN_DECLINED quando o endereço está na lista de isenções da instância e quando um único endereço é classificado como uma rede de operadora móvel de alto raio de explosão. O Decoding Chat executa essa verificação da rede da operadora apenas para um único endereço, de modo que a verificação nunca recusa um intervalo CIDR. Quando a pesquisa de IP para a verificação falha, o Decoding Chat trata o endereço como de baixo risco e o escreve.

A resposta não tem corpo, portanto não reporta a forma canônica que foi armazenada. Leia-a de volta com List blocklist entries.

O Decoding Chat verifica as solicitações posteriores contra as linhas gravadas. Para toda lista exceto email e email-domain-suspicious, outros nós veem as linhas após um curto atraso de propagação. Nenhum Gateway Dispatch é emitido.

O Decoding Chat registra uma entrada de auditoria Admin por valor escrito, com esse valor em seus metadados. Ele também registra uma entrada para um ip recusado, sob a ação ban_ip_skipped_exempt ou ban_ip_skipped_cgnat, antes de retornar o 400.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

PUT/v1/admin/blocklists/{list_type}/entriesAudit reason

Enfileira um trabalho em segundo plano que adiciona até 10.000 hashes SHA-256 à lista de bloqueio file-sha e retorna o ID do trabalho imediatamente. Requer ban:file_sha:add.

Apenas file-sha aceita essa operação, reportada como supports_bulk_create por List blocklists. Qualquer outro tipo de lista retorna 400 INVALID_FORM_BODY.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio, que aqui é file-sha
CampoTipoDescrição
sha256_list1array[string]Os hashes SHA-256 a adicionar (1-10.000 itens de exatamente 64 caracteres)

1 O corpo impõe o comprimento de cada item. O trabalho verifica o alfabeto e registra um item não hexadecimal como uma falha invalid_sha256

CampoTipoDescrição
job_idsnowflakeO trabalho em segundo plano aplicando os hashes
StatusCorpoCondição
200corpo da respostaO trabalho foi enfileirado
400resposta de erroO tipo de lista não é file-sha e a solicitação retorna INVALID_FORM_BODY

A operação retorna antes que qualquer hash seja gravado. Leia o progresso e as contagens finais em Get job e pare o trabalho com Cancel job. O trabalho relata o progresso a cada 50 hashes e termina com um resumo informando quantos foram escritos e quantos falharam.

Cada hash é gravado com a categoria manual, a severidade 2 e um tipo de conteúdo, URL de origem e nota nulos. O caminho em massa não aceita metadados, portanto um hash que precisa de qualquer um desses dados passa por Add blocklist entry ou um futuro Update blocklist entry.

Cada hash é convertido em minúsculas e substitui qualquer entrada existente. As alterações se tornam visíveis em toda a instância quando o trabalho é interrompido, tendo sido executado até o final ou cancelado, de forma que um trabalho cancelado ainda aplica os hashes que já gravou. Nenhum Gateway Dispatch é emitido.

A solicitação registra uma entrada de auditoria Admin com a ação queue_bulk_job, tipo de alvo bulk_job, o ID do trabalho como ID do alvo e chaves de metadados task e entity_count. task é ban_file_shas e entity_count é o número de hashes enviados.

O trabalho registra uma entrada de auditoria Admin por hash escrito sob a ação ban_file_sha, com o hash em seus metadados, exatamente como em Add blocklist entry. Depois, ele registra uma entrada agregada sob a ação bulk_ban_file_shas, com as contagens de submetidos, processados, bem-sucedidos e falhos. Um trabalho cancelado registra as entradas para os hashes gravados e uma entrada agregada marcada como cancelled.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

DELETE/v1/admin/blocklists/{list_type}/entriesAudit reason

Canoniza até 1000 valores e remove suas linhas da lista de bloqueio selecionada. Retorna 204 com um corpo vazio. Exige a permissão remove da lista selecionada.

Apenas avatar-hash e profile-substring aceitam esta operação, reportada como supports_bulk_delete por List blocklists. Qualquer outro tipo de lista retorna 400 INVALID_FORM_BODY.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio, que aqui é avatar-hash ou profile-substring

O corpo é selecionado por list_type.

CampoTipoDescrição
hashes1array[string]Hashes de avatar a serem removidos (1-1000 itens de 8 a 10 caracteres correspondentes a ^(a_)?[0-9a-fA-F]{8}$)
scope2stringO escopo da substring de perfil em que as substrings estão armazenadas
substrings2array[string]Substrings a serem removidas (1-1000 itens de 1 a 500 caracteres)

1 Apenas para avatar-hash, onde ele é o corpo inteiro

2 Apenas para profile-substring, onde ambos são necessários. reason e notes são aceitos, mas ignorados

StatusCorpoCondição
204vazioOs valores foram processados
400resposta de erroA lista não aceita remoção em massa ou a validação do corpo falha, e a solicitação retorna INVALID_FORM_BODY

A operação é idempotente e não relata contagens. Um valor sem nenhuma linha armazenada ainda retorna 204. Leia a lista antes e depois para distinguir uma remoção de um não-operacional (no-op).

avatar-hash desduplica o array após a canonização. profile-substring não o faz, então uma substring repetida em uma solicitação é removida uma vez e auditada uma vez por ocorrência. Um valor de profile-substring que seja canonizado para uma string vazia é ignorado.

Depois que a remoção atinge cada nó, o Decoding Chat não verifica mais as solicitações posteriores contra as entradas removidas. Um valor pode permanecer bloqueado por outra entrada correspondente. Nenhum Gateway Dispatch é emitido.

A operação registra uma entrada de auditoria Admin por valor canônico processado.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

GET/v1/admin/blocklists/{list_type}/entries/{entry_value}Audit reason

Informa se um valor está atualmente bloqueado pela lista de bloqueio selecionada e retorna um objeto blocklist check. Exige a permissão check da lista selecionada.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio
entry_value1stringO valor codificado por porcentagem (percent-encoded) a verificar (1-2048 caracteres)

1 A codificação por porcentagem é necessária porque um valor canônico pode conter uma barra. O Decoding Chat verifica o valor apenas pelo comprimento, de modo que um valor no formato errado retorna 200 com banned false

CampoTipoDescrição
scope?2stringO escopo da substring de perfil para verificar o valor contra

2 Exigido por profile-substring e rejeitado por qualquer outra lista de bloqueio

Lista de bloqueioRegra
ip3 4O próprio endereço, qualquer intervalo CIDR armazenado que o contenha e qualquer endereço armazenado que a instância trata como da mesma origem
emailCorrespondência exata no endereço em minúsculas
email-domain-suspicious5Correspondência exata no domínio em minúsculas
phraseCorrespondência de frase normalizada, então uma forma disfarçada de uma frase armazenada ainda é lida como bloqueada
url6Correspondência exata no URL canonizado
url-domainCorrespondência exata no hostname em minúsculas
file-shaCorrespondência exata no hash hexadecimal em minúsculas
avatar-hashCorrespondência exata após o prefixo a_ ser removido e o hash ser convertido para minúsculas
profile-substringCorrespondência de substring normalizada dentro do escopo nomeado

3 Qualquer valor que não seja um único endereço, incluindo um intervalo CIDR, sempre lê como não bloqueado. Um endereço na lista de isenção da instância é lido como não bloqueado, mesmo quando existe uma linha

4 Dois endereços são a mesma origem quando eles compartilham uma chave de decisão, que é o endereço exato para IPv4 e o prefixo /64 para IPv6

5 Um domínio que a política de contas da instância marca como isento de verificações de reputação é lido como não bloqueado mesmo enquanto existe uma linha

6 Esta verificação não lê a lista url-domain, portanto, um URL que um domínio armazenado bloqueia será lido como não bloqueado. Verifique o hostname separadamente

StatusCorpoCondição
200objeto blocklist checkO valor foi verificado
400resposta de erroscope é fornecido em uma lista de bloqueio sem escopo ou omitido em profile-substring, e a solicitação retorna INVALID_FORM_BODY

Um valor sem nenhuma linha e nenhuma correspondência de cobertura retorna 200 com banned false, portanto esta operação nunca informa se uma linha específica existe. Use List blocklist entries para isso.

Para toda lista exceto email e email-domain-suspicious, uma linha gravada em outro nó se torna visível aqui após um curto atraso de propagação.

A operação registra uma entrada de auditoria Admin com a ação check_blocklist_entry, o tipo de alvo da lista selecionada, ID de alvo 0 e chaves de metadados list_type e banned. profile-substring adiciona scope. O valor verificado não é registrado. Um 400 não registra nada.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

PATCH/v1/admin/blocklists/{list_type}/entries/{entry_value}Audit reason

Reescreve os campos armazenados de uma linha sem removê-la e readicioná-la. Retorna 204 com um corpo vazio. Exige a permissão add da lista selecionada.

Apenas url, url-domain, file-sha, avatar-hash e profile-substring aceitam esta operação, reportada como supports_update por List blocklists. Uma lista sem campos armazenados não tem nada para atualizar e retorna 400 INVALID_FORM_BODY.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio
entry_valuestringO valor canônico percent-encoded da linha a ser gravada (1-2048 caracteres)

O corpo é o formato de criação da lista de bloqueio selecionada com o campo de valor removido, portanto a mesma lista de campos e os mesmos limites se aplicam.

CampoTipoDescrição
scope1stringO escopo de substring de perfil para gravar a linha sob ele
category?2stringA categoria da lista de bloqueio de conteúdo (1-64 caracteres, padrão manual)
severity?2integerA severidade da lista de bloqueio de conteúdo (0-3, padrão 2)
match_subdomains?3booleanSe a linha está sinalizada para cobrir subdomínios (padrão true)
content_type?4stringA dica de tipo de mídia (1-128 caracteres)
source_url?2stringO URL do feed ou evidência (1-2048 caracteres)
reason?5stringO motivo (1-1024 caracteres)
notes?6stringA nota interna (1-1024 caracteres)

1 Requerido por profile-substring. Esta operação não aceita parâmetros de consulta, portanto, o escopo vai no corpo, e qualquer outra lista de bloqueio o ignora lá

2 Aceito apenas por url, url-domain, file-sha e avatar-hash

3 Aceito apenas por url-domain

4 Aceito apenas por file-sha

5 Aceito apenas por avatar-hash e profile-substring, e gravado nos metadados da entrada de auditoria

6 Aceito apenas por url, url-domain, file-sha, avatar-hash e profile-substring

StatusCorpoCondição
204vazioA linha foi gravada
400resposta de erroA lista não aceita atualização ou a validação do corpo falha, e a solicitação retorna INVALID_FORM_BODY

Na lista de bloqueio url, um entry_value que o Decoding Chat não pode canonizar retorna 400 INVALID_FORM_BODY nomeando url no array errors.

A gravação é um upsert no valor canônico, de forma que um valor sem uma linha existente é criado. Esta operação nunca retorna 404. Uma url bloqueada apenas por uma linha mais ampla em url-domain não tem linha própria, e atualizá-la pelo URL cria silenciosamente uma nova linha de URL exato.

Mudar o scope de uma linha profile-substring grava uma segunda linha sob o novo escopo e mantém a original em seu lugar. A remoção do original exige a ação Remove blocklist entry.

Depois que a alteração atinge todos os nós, correspondências posteriores usam os campos atualizados. Nenhum Gateway Dispatch é emitido.

A gravação registra uma entrada de auditoria Admin sob a mesma ação de uma adição, com o valor canônico mas sem os valores prévios dos campos alterados.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

DELETE/v1/admin/blocklists/{list_type}/entries/{entry_value}Audit reason

Remove uma linha da lista de bloqueio selecionada. Retorna 204 com um corpo vazio. Requer a permissão remove da lista selecionada.

CampoTipoDescrição
list_typestringO tipo de lista de bloqueio
entry_value1stringO valor canônico percent-encoded da linha a ser removida (1-2048 caracteres)

1 Canonizado do mesmo modo que foi no momento da adição e com correspondência exata, portanto, um url bloqueado apenas por uma linha mais ampla em url-domain não pode ser removido através da URL

CampoTipoDescrição
scope?2stringO escopo de substring de perfil no qual a linha está armazenada

2 Exigido por profile-substring e rejeitado por qualquer outra lista de bloqueio

StatusCorpoCondição
204vazioO valor foi processado
400resposta de erroscope é fornecido em uma lista de bloqueio sem escopo ou omitido em profile-substring, e a solicitação retorna INVALID_FORM_BODY

Na lista de bloqueio url, um entry_value que o Decoding Chat não pode canonizar retorna 400 INVALID_FORM_BODY nomeando url no array errors.

A remoção é idempotente. Um valor sem linha armazenada retorna 204 e ainda registra uma entrada de auditoria Admin, portanto esta operação nunca retorna 404 e nunca reporta se algo foi removido.

A linha removida para de afetar as decisões subsequentes da lista de bloqueio. Para toda lista exceto email e email-domain-suspicious, outros nós param de aplicá-la após um curto atraso de propagação. Um valor pode permanecer bloqueado por outra linha que faça correspondência, como um único endereço coberto por um intervalo CIDR armazenado. Nenhum Gateway Dispatch é emitido.

A remoção registra uma entrada de auditoria Admin, com o valor canônico nos seus metadados.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.

POST/v1/admin/users/{user_id}/avatar-blockAudit reason

Adiciona o hash de avatar atual da conta à lista de bloqueio avatar-hash e retorna o hash armazenado. Requer ban:avatar_hash:add.

Isto é um atalho para Add blocklist entry para bloquear um avatar que um Admin esteja verificando. A operação lê o hash do avatar atual e remove qualquer prefixo de animação a_, portanto o valor armazenado é a forma de 8 caracteres. Ele grava a mesma linha que a operação adicionar, com a categoria manual, a severidade 2 e um URL de origem nulo. Ele não bane, suspende ou age de outra forma na conta.

CampoTipoDescrição
user_idsnowflakeA conta cujo avatar atual é bloqueado

Ambos os campos são opcionais, de modo que um corpo vazio e {} são solicitações válidas.

CampoTipoDescrição
reason?1stringO motivo (1-1024 caracteres)
notes?2stringA nota interna (1-1024 caracteres)

1 Gravado nos metadados da entrada de auditoria Admin, portanto nenhuma leitura da linha o retorna

2 Armazenado na linha. Omiti-lo armazena a nota gerada banned via user shortcut user_id=<user_id>

CampoTipoDescrição
hash_shortstringO hash do avatar armazenado de 8 caracteres
StatusCorpoCondição
200corpo da respostaO hash de avatar foi escrito
404resposta de erroUNKNOWN_USER quando a conta não existe, ou NOT_FOUND quando a conta não tem avatar

A conta mantém o avatar bloqueado até que ela defina um novo. Limpá-lo é uma solicitação separada nomeando avatar no array fields de Clear user profile fields.

O hash do avatar são os primeiros 8 caracteres do digest MD5 da imagem, de forma que toda conta usando aquela imagem tem o mesmo hash de avatar, logo o bloqueio do hash bloqueia a imagem para toda conta.

O hash bloqueia uploads de avatar subsequentes depois que a mudança se propaga por toda a instância. Nenhum Gateway Dispatch é emitido.

O Decoding Chat registra uma entrada de auditoria Admin sob a ação ban_avatar_hash, com o hash armazenado e o motivo fornecido.

60 solicitações por minuto para cada usuário autenticado, no bucket admin:ban:operation.