Los errores usan otro envelope. Ver Códigos de error.
data en POST /analyze
risk_score y risk_level son de primer nivel de data. flags también. No hay un objeto
risk anidado, y flags no vive dentro de decision.recommendation
Es un string de prosa, en el idioma configurado para tu compañía. Resume la decisión y,
cuando hay señales, puede citar códigos públicos de flags.
No es un contrato programable:
- No hagas
switchsobre el texto. - No parsees los códigos desde la frase: ya están en
flagsy endecision.reason. - El texto puede cambiar de redacción sin aviso;
decision.typeno.
decision.type.
Sobre flags
Cada entrada es una señal que se activó, con cuatro campos. flags viene [] si no hay
señales. Las entradas están deduplicadas por code.
Nunca traen el nombre interno de la señal ni un peso numérico.
El catálogo completo de code —un solo lugar, no se duplica en otras páginas— está en
Catálogo de flags.
Sobre decision.reason
Lista de strings, no de objetos. Lectura corta para ramificar sin recorrer flags:
Si te llega un
BLOCK con entity_block:user_id:user-4471, la causa está en tu lista.