DECIDED tiene una decisión.
Estados
Los campos nulos no se envían: una verificación sin decidir no trae la clave
decision.
Comprueba ausencia, no null.
Decisiones
REVIEW no es una respuesta final. Es final para ese campo hasta que una persona resuelve el
caso en el panel; cuando lo hace, decision pasa a APPROVED o DECLINED. En tu producto, REVIEW
se parece más a “estamos revisando” que a un rechazo: mantén a la persona en ese estado y espera el
segundo aviso.
Una decisión que tu código no conoce se trata como REVIEW. El vocabulario puede ganar valores
nuevos; dejar pasar a alguien por un valor que nunca viste es la única forma en que eso se vuelve
un problema de seguridad.
Qué guardar
decision_rule es para explicar y auditar, no para decidir: ramifica siempre sobre decision.
Si aparece un código que no reconoces, trátalo como REVIEW.
flow_config_version no se mueve cuando editas tu política después. Por eso una decisión vieja
sigue siendo defendible: dice con qué reglas se tomó, no con las de hoy.
Fechas
Todas las fechas de las respuestas REST son UTC y vienen sin offset en el texto. Interprétalas como UTC. En los webhooks, en cambio,occurred_at y decided_at sí traen el offset (Z).
Mostrarlas como hora local sin asumir UTC corre cada verificación varias horas, en la dirección que
hace que una decisión parezca anterior a su propia solicitud.