Saltar al contenido principal
Lerian SCR expone una única superficie REST. Una instalación atiende a una institución.

Superficie de la API


Las operaciones de credencial existen solo cuando un vault de escritura respalda el despliegue. De lo contrario, la credencial proviene del entorno. GET /v1/scr/audit y GET /v1/scr/consultations/{id} pueden devolver el CPF o la raíz del CNPJ consultado completo, en el campo document. Concede scr:audit:read solo a las personas que puedan verlo.

Autenticación


Un consumidor se autentica con un token OAuth2 de client-credentials en Authorization: Bearer. Con PLUGIN_AUTH_ENABLED=true, el servidor de autorización decide cada solicitud protegida. Un ámbito tiene la forma scr:<resource>:<action>. Consulta Access Manager. Toda solicitud bajo /v1/scr también pasa por la compuerta de licencia de Lerian: una solicitud que la licencia rechaza responde 403 con un código LCS-. /v1/system, /v1/client-system, /v1/streaming/manifest y las sondas no pasan por ella. Consulta Variables de entorno. Un token faltante responde SCR-0201, y un ámbito faltante SCR-0202. Un servidor de autorización inalcanzable responde SCR-1002, porque el control falla en modo cerrado. Uno que no responde a tiempo responde SCR-1003.

Idempotencia


Las dos operaciones con efectos exigen un header X-Idempotency, y una solicitud sin él responde SCR-0004. Cuando Lerian SCR almacena un resultado 2xx o 4xx, un reintento dentro de una ventana de cinco minutos repite ese resultado y no paga una segunda tarifa. Un reintento mientras la primera solicitud sigue en ejecución responde SCR-0006. Envíalo de nuevo después de Retry-After. Una clave reutilizada con una solicitud distinta responde SCR-0003. Una respuesta de más de 1 MB no se almacena. Un reintento bajo la clave de una solicitud completada de ese tipo responde SCR-0007: la solicitud no se ejecuta de nuevo, y no se cobra una segunda tarifa. Lee el resultado original en GET /v1/scr/consultations/{id} o en la pista de auditoría. Una respuesta con X-Idempotency-Fenced: true retiene su clave durante la ventana, y un reintento con esa clave responde SCR-0005 sin ejecutarse. Un 5xx sin ese header libera la clave, y un reintento vuelve a ejecutar la operación. Con X-Idempotency-Fenced: false, la solicitud puede haberse ejecutado y la clave no está protegida. Concilia el resultado antes de enviar la solicitud de nuevo. Un duplicado que no es una repetición de respuesta, porque una solicitud anterior retiene su clave, trae X-Idempotency-Held: true. Sin Redis, ambas operaciones responden SCR-9002.

Errores


Un fallo responde application/problem+json conforme a RFC 9457, con el código y el estado.

Eventos


Lerian SCR emite un evento por cada consulta terminal a través de un outbox transaccional. La fila de auditoría y el evento hacen commit juntos.
  • studio.lerian.br-scr.consulta.completed: la consulta devolvió una respuesta, una posición o ninguna.
  • studio.lerian.br-scr.consulta.failed: la consulta no devolvió ninguna respuesta.
El id del evento es el id de auditoría de la consulta. Para una consulta atendida, es el id que devuelve POST /v1/scr/consultations. Ambos tipos viajan por el topic lerian.streaming.br-scr, y los mensajes envenenados por lerian.streaming.br-scr.dlq. Ninguna variable establece el topic, así que aprovisiona ambos. Consulta Streaming Hub. Cuando un operador desactiva la emisión, el despachador no arranca. Las filas permanecen pendientes y se envían después de que la emisión vuelve a activarse y el servicio se reinicia.

Convenciones de integración


  • Correlación. X-Request-ID lleva un UUID a través de los logs y las trazas.
  • Fechas de referencia. Los rangos de consulta y los filtros de auditoría usan AAAAMM, un año y mes de seis dígitos. El resumen operativo toma en cambio un rango de fecha y hora.
  • Filtros. El filtro de documento toma de 8 a 14 dígitos, comparados a través del índice ciego. El tipo de cliente 1 es una persona, 2 una empresa.
  • Paginación. El listado de auditoría toma un cursor opaco y un limit de 1 a 200, con valor por defecto 50.