> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Operación diaria

> El trabajo diario del operador de JD Courier: motores y sus credenciales, el mapa de titularidad, movimientos de cuentas, mensajes retenidos, la detención del canal SPB y los rechazos de lectura, la suspensión del riel SPB, envíos indeterminados, conciliación y la exportación de tiempos.

Esta página es para el operador de tu institución que opera el Courier. Cada tarea usa la API del operador que sirve el rol `admin`.

Tu propia aplicación de Access Manager puede llamar a la API del operador cuando tiene el rol `admin` de Access Manager. Una aplicación que también es sujeto de credencial de un motor recibe `403`. La disponibilidad del tenant y las rutas del systemplane aceptan solo a una persona.

En modo single-tenant, toda solicitud del operador actúa como el tenant `local`, cualquiera que sea el tenant que nombra el token, si hay alguno. En modo multi-tenant, el tenant viene del token validado.

## Motores

***

Registra cada motor una vez, a través de la [API de motores](https://docs.lerian.studio/es/reference/interfaces/jd-courier/register-an-engine.md). Un motor tiene un ID, un nombre visible, sus ISPBs participantes y las direcciones en las que recibe las llamadas Pix y las TED entre cores.

No existe eliminación. Para detener un motor, [deshabilítalo](https://docs.lerian.studio/es/reference/interfaces/jd-courier/enable-disable-or-rename-an-engine.md) con un motivo. Un motor deshabilitado no recibe nuevas entregas ni nuevas claves. Mantiene las claves de las que es dueño, así que los mensajes nuevos de esas claves quedan retenidos hasta que habilites el motor de nuevo o muevas las claves.

Un motor tiene una aplicación de Access Manager para cada producto que llama al Courier. El registro vincula la primera. [Vincula](https://docs.lerian.studio/es/reference/interfaces/jd-courier/bind-one-more-credential-to-the-engine.md) cada una de las demás y [desvincula](https://docs.lerian.studio/es/reference/interfaces/jd-courier/unbind-one-of-the-engines-credentials.md) una aplicación que el motor ya no usa. Una desvinculación no revoca nada: elimina una aplicación filtrada en tu Access Manager.

También emites y revocas la [credencial del canal SOAP](https://docs.lerian.studio/es/reference/interfaces/jd-courier/issue-the-engine-s-soap-channel-credential.md) y la [credencial del tránsito Pix](https://docs.lerian.studio/es/reference/interfaces/jd-courier/issue-the-engines-pix-transit-credential.md) de cada motor. Registrar un motor, vincular o desvincular una aplicación y emitir o revocar una credencial requieren el rol `admin` de Access Manager.

## El mapa de titularidad

***

Un motor puede reclamar las cuentas que abre, el CNPJ de cada cobrador de Pix Automático que atiende y sus recurrencias. [Asigna](https://docs.lerian.studio/es/reference/interfaces/jd-courier/assign-a-key-to-an-engine.md) a cada motor las claves que no reclama. Un mensaje para una cuenta sin dueño queda retenido.

Para encontrar el dueño de una clave, [lista las asignaciones](https://docs.lerian.studio/es/reference/interfaces/jd-courier/list-ownership-assignments.md) con el tipo y el valor de la clave. Para leer los cambios de una clave, usa su [historial de auditoría](https://docs.lerian.studio/es/reference/interfaces/jd-courier/ownership-history-for-one-key.md).

Cuando [eliminas una clave](https://docs.lerian.studio/es/reference/interfaces/jd-courier/unassign-a-key.md), un motor puede reclamarla, y la primera reclamación se la lleva.

## Mover cuentas entre motores

***

Una ola de migración mueve cuentas de un motor a otro. [Mueve cada clave](https://docs.lerian.studio/es/reference/interfaces/jd-courier/move-a-key-to-another-engine.md) con un motivo. El Courier registra el dueño anterior y el motivo en el historial de auditoría. Después del movimiento, la siguiente consulta responde el nuevo dueño.

Algunos mensajes no siguen el movimiento:

* En SPB, la respuesta a un envío va al motor que hizo el envío.
* En Pix, un mensaje que un intento anterior envió al dueño anterior queda retenido. El Courier no lo envía al nuevo dueño.
* En Pix Automático, un débito, su reversión y un estado de cancelación del agendamiento siguen su etapa anterior. Consulta [Qué clave enruta cada llamada](https://docs.lerian.studio/es/interfaces/jd-courier/jd-courier-routing.md#which-key-routes-each-call).

## Mensajes retenidos

***

Revisa los [mensajes retenidos](https://docs.lerian.studio/es/reference/interfaces/jd-courier/list-retained-messages.md) todos los días. Para estos motivos, corrige la causa:

| Motivo | Qué hacer |
| - | - |
| `ACCOUNT_UNASSIGNED` | Asigna a su motor la clave que muestra la lista, o pide al motor que la reclame. En Pix Automático, pide al motor que declare la etapa anterior. |
| `DELIVERY_FAILED` | Revisa el motor, su dirección Pix y su credencial. |
| `UNRECOGNIZED_TYPE` | Para un código que no es de dinero, declara un [modo de entrega](https://docs.lerian.studio/es/interfaces/jd-courier/jd-courier-routing.md#delivery-modes) para el código. |
| `OWNERSHIP_DECISION_UNAVAILABLE` | Confirma que la base de datos del Courier está disponible y que los motores declaran sus ISPBs participantes. |

Cuando la causa desaparece, el mensaje sale por su cuenta en la siguiente verificación. Para verificarlo primero, [pide una reevaluación](https://docs.lerian.studio/es/reference/interfaces/jd-courier/run-a-retained-message-s-routing-decision-again.md) con un motivo. Tú no eliges el motor: lo eligen las reglas de enrutamiento.

## Detención del canal SPB

***

El rol `spb-consumer` detiene el canal SPB cuando una lectura de JD puede haber eliminado un mensaje que el Courier no recibió. Por ejemplo, JD responde con un estado `5xx` distinto de `503`, o la lectura agota el tiempo después de que salió la solicitud. La detención interrumpe los mensajes SPB entrantes para cada motor.

Mientras el canal está detenido, el Courier no lee de JD, no enruta y no verifica de nuevo los mensajes SPB retenidos. Un reinicio no levanta la detención.

1. Lee el motivo de la detención en la [lista de canales](https://docs.lerian.studio/es/reference/interfaces/jd-courier/list-the-registered-rails-their-declared-properties-and-their-state.md).
2. Verifica con JD si la lectura eliminó un mensaje que el Courier no recibió.
3. [Levanta la detención](https://docs.lerian.studio/es/reference/interfaces/jd-courier/lift-a-durable-channel-halt.md) con una nota de 10 a 500 caracteres sobre lo que verificaste.

El Courier no puede obtener de nuevo un mensaje eliminado. Pide el mensaje a JD y entrégalo al equipo del motor dueño de su cuenta.

## Rechazos de lectura de SPB

***

Cuando JD rechaza la credencial JD del Courier, o falla antes de leer, el rol `spb-consumer` no guarda nada y espera. La verificación `rail_spb` de `/readyz` informa `degraded`, con el motivo `vendor_refused` para una credencial rechazada y `vendor_unavailable` para una falla de JD. Un log de advertencia nombra el código de JD. La siguiente lectura que JD acepta borra el motivo.

## Suspender el riel SPB

***

Para que el Courier deje de leer los mensajes SPB, [suspende el riel SPB](https://docs.lerian.studio/es/reference/interfaces/jd-courier/suspend-a-rail-for-the-caller-s-tenant.md) con un motivo. JD guarda los mensajes hasta que [actives el riel](https://docs.lerian.studio/es/interfaces/jd-courier/jd-courier-deployment.md#activate-the-rails) de nuevo. El historial y los mensajes retenidos se mantienen. El [historial de activación](https://docs.lerian.studio/es/reference/interfaces/jd-courier/a-rails-activation-history-for-the-callers-tenant.md) lista cada activación y cada suspensión, con su operador y el motivo de cada suspensión.

No puedes suspender el riel Pix. La solicitud responde `422 JDC-0304`. Para detener Pix, pide a JD que deje de enviar las llamadas Pix al Courier.

## Envíos indeterminados

***

Un envío indeterminado es un envío SPB que salió del Courier sin un veredicto de JD. Una consulta del motor con `ConsultaNumCtrlIF` puede resolverlo. Para ver los envíos que siguen abiertos, [lista el registro de envíos](https://docs.lerian.studio/es/reference/interfaces/jd-courier/list-spb-sends.md) con `open=true`.

Cuando encuentras el resultado fuera del Courier, por ejemplo con el motor o con el soporte de JD, [cierra el envío manualmente](https://docs.lerian.studio/es/reference/interfaces/jd-courier/close-an-indeterminate-send-by-hand.md). Da una referencia a la evidencia y una nota.

El cierre es solo un registro:

* El resultado sigue siendo `INDETERMINATE`.
* El número de control sigue bloqueado para un nuevo envío.
* Una consulta posterior del motor todavía va a JD.
* El envío ya no cuenta como un envío abierto.

El Courier no tiene cierre como `NOT_SENT`. Si un operador se equivocara sobre un envío que "nunca salió", un segundo envío del mismo número de control podría llegar a BACEN.

## Conciliación

***

El rol `admin` ejecuta un ciclo de conciliación para cada riel cada minuto. Un ciclo revisa una ventana de tiempo pasada. El [informe de conciliación](https://docs.lerian.studio/es/reference/interfaces/jd-courier/reconciliation-report-for-a-rail.md) muestra estos conteos:

* **Esperados**: los resultados que esperan los mensajes de la ventana.
* **Completados**: las entregas a los motores, para cada motor.
* **Retenidos**: los mensajes que siguen retenidos.
* **Rechazados**: los mensajes rechazados por un modo de entrega.

La divergencia es el conteo esperado menos los otros tres. Una divergencia distinta de cero es un posible mensaje perdido: investígala. El informe también lista los envíos SPB que JD aceptó y cuya respuesta no llegó dentro de la ventana de retorno. Para ejecutar un ciclo ahora, [dispara uno](https://docs.lerian.studio/es/reference/interfaces/jd-courier/trigger-a-reconciliation-cycle-for-a-rail.md). Un riel que ya ejecuta un ciclo responde `409 JDC-0601`.

El informe da los hallazgos abiertos del riel, del más antiguo al más reciente. Un hallazgo sigue abierto hasta que un operador lo cierra. Después de investigar un hallazgo, [ciérralo](https://docs.lerian.studio/es/reference/interfaces/jd-courier/close-a-reconciliation-finding.md):

* Da una nota de 10 a 500 caracteres sobre lo que verificaste.
* Da el `updatedAt` del hallazgo, tal como lo leíste. Si un ciclo encontró el hallazgo de nuevo después de tu lectura, el cierre responde `409 JDC-0008`. Lee el hallazgo de nuevo.

Un hallazgo cerrado se mantiene en el historial. El informe también lista los hallazgos cerrados, del cierre más reciente al más antiguo, con quién cerró cada uno, cuándo y la nota. Para leer cierres más antiguos, envía `closedCursor`. Cuando un ciclo posterior encuentra una nueva divergencia, abre un nuevo hallazgo.

Una divergencia de conteo es un hallazgo para cada riel mientras está abierta: cada ciclo divergente antes del cierre vuelve a señalar el mismo hallazgo. Para ver esos ciclos, [lista los ciclos del hallazgo](https://docs.lerian.studio/es/reference/interfaces/jd-courier/cycles-a-count-divergence-merged.md).

## Exportación de tiempos de las transacciones

***

El Courier da los instantes que solo él ve. [Expórtalos](https://docs.lerian.studio/es/reference/interfaces/jd-courier/export-the-per-transaction-instants-the-courier-observed.md) para un riel y una ventana de tiempo:

* Cuándo llegó el mensaje.
* Cuándo la decisión de titularidad nombró al motor.
* En Pix, cuándo el Courier dio la respuesta a JD.

Un instante que el Courier no vio es `null`. Para leer un mensaje, da también su `endToEndId` o su clave natural. En Pix, correlaciona una transacción por su `endToEndId`. Una validación de cuenta asíncrona da una fila para cada crédito.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.