Envío saliente
La institución, o un producto upstream de Lerian, almacena el archivo en el bucket de Lerian STA y crea una transferencia cuya referencia de archivo es
outbound/<file name>. Cuando TRANSFER_SCHEDULER_ENABLED es true, un worker calcula el SHA-256 y el tamaño del archivo y obtiene de BACEN un número de protocolo que los declara. Sube los bytes del archivo. BACEN valida los bytes contra el SHA-256 declarado.
Una creación de transferencia por POST /v1/transfers necesita un header X-Idempotency de como máximo 256 bytes. Sin él, Lerian STA responde 400 con STA-0001. Si tu servicio crea transferencias en reacción a un evento, envía una clave derivada del identificador de ese evento. Así, los reintentos de un mismo disparador llevan la misma clave.
Lerian CCS v1.0.0 envía sus lotes ACCS001 sin el header X-Idempotency, y Lerian STA v1.2.0 los rechaza. Si ejecutas Lerian CCS v1.0.0, mantén Lerian STA en v1.1.0.
Durante 7 días, una repetición con la misma clave y la misma solicitud reproduce la primera respuesta con X-Idempotency-Replayed: true. La misma clave con una solicitud diferente devuelve 422. Después de los 7 días, Lerian STA sigue sin crear una segunda transferencia para la clave mientras exista la primera transferencia. Después de un 4xx con un código STA-NNNN, envía la solicitud corregida con la misma clave.
Después de un 5xx sin el header X-Idempotency-Fenced, reintenta con la misma clave. Un 5xx con ese header significa que la transferencia puede existir. Con true, Lerian STA rechaza toda repetición de la clave durante 7 días. Con false, la clave no está protegida. En los dos casos, consulta GET /v1/transfers y envía una clave nueva solo si Lerian STA no creó ninguna transferencia. La lista de errores de STA describe cada respuesta de idempotencia.
La transferencia avanza a través del ciclo de vida de BACEN:
En el tope, Lerian STA cancela la transferencia. Cada transferencia también lleva un TTL de reloj de pared (44 horas de forma predeterminada), contado desde que BACEN asigna su protocolo. Cuando el TTL se agota, Lerian STA cancela la transferencia, o la marca como Evaluación no confirmada si BACEN aún debía un veredicto.
Descubrimiento y descarga entrantes
Cuando
TRANSFER_INBOUND_ENABLED es true, Lerian STA consulta a BACEN por archivos disponibles. Cada configuración de fuente entrante define su intervalo de polling, de 15 a 1,800 segundos. Para iniciar una consulta entrante en el momento, envía POST /v1/inbound-source-configs/{id}/trigger-poll con un header X-Idempotency. Durante 7 días, una repetición con la misma clave reproduce una respuesta 200 o 202 y no consulta de nuevo.
Para cada archivo, Lerian STA compara el código de sistema de BACEN del archivo contra las configuraciones de fuente entrante. Un archivo que no coincide con ninguna recibe el producto de origen unrouted. Luego Lerian STA descarga los bytes. Verifica los bytes contra el SHA-256 reportado por BACEN. Almacena el archivo de forma duradera en el almacenamiento de objetos.
Cuando el archivo verificado es un archivo ZIP con una sola entrada, Lerian STA extrae la entrada y la entrega en lugar del archivo ZIP. El claim-check describe entonces el archivo extraído: object_key, file_name, size_bytes y sha256 se refieren a la entrada. Lerian STA calcula ese sha256 sobre los bytes extraídos. TRANSFER_INBOUND_EXTRACT_MAX_EXPANSION_RATIO y TRANSFER_INBOUND_EXTRACT_MAX_EXTRACTED_BYTES limitan el tamaño extraído. Cuando Lerian STA no extrae una entrada, entrega el archivo tal como lo recibió. El claim-check lleva entonces el hash y el tamaño que BACEN reportó.
Cuando el hash no coincide, Lerian STA hace hasta 3 intentos de forma predeterminada y luego termina la transferencia como inconsistente. Cuando una descarga falla, hace hasta 5 intentos de forma predeterminada y luego cancela la transferencia. Cuando BACEN se niega a autorizar la descarga, la transferencia termina de inmediato como no autorizada. En cada caso, Lerian STA no entrega el archivo a su producto de origen.
Acciones del operador
Un operador solo puede actuar donde el estado y la configuración de la transferencia lo permiten:
- Cancelar cuando la máquina de estados permite una transición a
Canceled, lo que excluye Verificación de integridad y Entregado. La cancelación es local. Lerian STA no envía nada a BACEN. - Reintentar una transferencia saliente cuando es no terminal, tiene menos de 5 intentos de carga y su TTL no ha expirado. Este umbral se mantiene en 5, sin importar el tope configurado. Cada reintento cuenta como un intento.
- Marcar como urgente, cuando
TRANSFER_INBOUND_ENABLEDestrue, una transferencia entrante enAvailableForDownloadcuyo producto de origen tiene la urgencia habilitada en todas las configuraciones habilitadas. De lo contrario, falla de forma cerrada.

