Configuración de la institución
Registra cada institución en la Mensageria y en el executor, con el mismo
institutionId. Operar Lerian SISBAJUD describe la solicitud de la Mensageria.
POST /v1/institutions registra una institución en el executor. El cuerpo tiene estos campos:
La solicitud también crea el keyset de tokenización y el keyset de auditoría de la institución. Una segunda solicitud con el mismo
institutionId devuelve 409.
El executor se registra como dueño de la institución, a partir de su propia identidad M2M (EXECUTOR_M2M_SUBJECT). Ningún campo de la solicitud define el dueño, y un PATCH no lo cambia.
Metadatos del conector
Ledger del executor
El executor rechaza una solicitud de institución cuyo
executorLedger está presente y no es válido, con 400. Al iniciar, el executor deja fuera de su enrutamiento del ledger una institución que no tiene un executorLedger válido.
Credenciales del conector
PUT /v1/institutions/{institutionId}/connector-credentials escribe las credenciales de Midaz de la institución:
ledger_client_idyledger_client_secretson siempre obligatorios.crm_client_idycrm_client_secretson obligatorios concrmModelegacy. Conembedded, no los envíes.
PATCH /v1/institutions/{institutionId} rechaza un cuerpo con credenciales. Una credencial nueva no revoca la anterior en el Access Manager, así que revócala allí.
El executor obtiene el token de Midaz de la institución en {authAddress}/v1/login/oauth/access_token. Cuando la institución no tiene credenciales guardadas, el executor no envía el header Authorization a Midaz.
Cambiar la configuración
PATCH /v1/institutions/{institutionId}cambia los campos de la institución. UnconnectorMetadataen el cuerpo reemplaza el paquete completo, excepto las credenciales guardadas.PUT /v1/institutions/{institutionId}/connector-configreemplazaconnectorTypeyconnectorMetadata. Mantiene las credenciales guardadas y rechaza un cuerpo con credenciales.GET /v1/institutions/{institutionId}devuelve la configuración sin las credenciales.
Enrutamiento del ledger
Con
SYSTEMPLANE_ENABLED activo, el executor sirve los documentos de tenant de sus rutas contables en /tenant-system. El executor lee dos de ellos: routing.organizations activa las rutas contables de cada organización, y routing.ledger_bindings guarda las rutas. Con SYSTEMPLANE_ENABLED inactivo, el executor escribe sin rutas.
GET /v1/admin/ledger-routing/preflight verifica la configuración de enrutamiento frente al ledger de la institución. No escribe nada. Un executor single-tenant necesita el parámetro de consulta institutionId. El informe cubre estas verificaciones:
- Las rutas de transacción y las rutas de operación existen y coinciden con las escrituras del executor.
- Un ledger que valida tipos de cuenta tiene
sisbajud_blockregistrado. - La cuenta de depósito judicial en
executorLedgerexiste en el ledger y no está bloqueada.
ready indica si la configuración está lista. El informe muestra el executorLedger guardado. El executor en ejecución usa la configuración que leyó al iniciar.
Órdenes que necesitan atención
Cada decisión humana tiene un
humanDisposition:
GAVE_UP: el executor no intentó ninguna escritura en el ledger y respondióEXECUTOR_GAVE_UP.HELD_MONEY_MOVED: el executor intentó una escritura. El dinero puede haberse movido, y el executor no envió respuesta.
Rotación de la clave de credenciales
POST /v1/institutions/{institutionId}/security/credential-kek:rotate rota la clave que envuelve las credenciales de Midaz guardadas de la institución. Esta clave no es la clave de datos de la institución que rota la Mensageria.
- La rotación mueve las credenciales guardadas a la nueva versión de la clave. Los valores de las credenciales no cambian. Para reemplazar una credencial, usa
PUT /v1/institutions/{institutionId}/connector-credentials. - La respuesta muestra la versión anterior y la nueva versión de la clave.
- Una institución sin credenciales guardadas devuelve
404. - Mientras otra rotación de la misma institución está en curso, una rotación devuelve
409. - Con HashiCorp Vault como proveedor de claves y
STREAMING_ENABLEDactivo, la rotación publica un eventokek.rotatedconkeyPurposeCREDENTIALS.
PLUGIN_AUTH_ENABLED inactivo, el executor no sirve esta operación.
Verificación de auditoría
GET /v1/admin/audit/verify verifica un rango del log de auditoría de la institución, de fromIndex a toIndex. No descifra ningún payload. Informa alteraciones y entradas borradas.
Roles
Cada operación necesita un permiso:
El rol
admin tiene todos los permisos de esta tabla. Los roles operator, investigator y compliance-officer tienen admin:read. Los permisos systemplane de /system van al rol M2M editor, y a ningún rol de negocio.
El executor en la Mensageria
El executor llama a la API de ejecución de la Mensageria con su propio cliente M2M. Configura el cliente enMENSAGERIA_CLIENT_ID y MENSAGERIA_CLIENT_SECRET. El executor obtiene su token del Access Manager en PLUGIN_AUTH_HOST. En la Mensageria, el cliente tiene el rol br-sisbajud-executor-role. Integración con Lerian SISBAJUD describe sus permisos.
Listeners
El executor tiene dos listeners:
- API principal, en
SERVER_ADDRESS. Configúrala como:4029, el puerto que expone la imagen. Sirve las operaciones de la referencia de la API. También sirve/health,/readyzy/version. ConSYSTEMPLANE_ENABLEDactivo, sirve/systemy/tenant-system. ConSWAGGER_ENABLEDactivo, sirve/swagger. - Listener de webhook, en
EXECUTOR_HUB_WEBHOOK_ADDRESS. El valor predeterminado es:9082. Tiene una ruta,POSTenEXECUTOR_HUB_WEBHOOK_PATH, cuyo valor predeterminado es/v1/webhooks/hub. Expón este puerto al Streaming Hub y usa la dirección de tu ingress más esta ruta como URL de la suscripción.
DEPLOYMENT_MODE=local, el listener necesita su propio certificado TLS. Como alternativa, termina el TLS delante de él y configura EXECUTOR_HUB_WEBHOOK_UPSTREAM_TLS_VALIDATED=true.
/readyz incluye dos verificaciones del executor:
hub_webhook: el listener de webhook.executor_institutions: el número de instituciones de las que el executor es dueño y cuántas de ellas tienen enrutamiento del ledger. Esta verificación no hace fallar la disponibilidad.
Restricciones de despliegue
- Un tenant por proceso. El executor no inicia cuando su lista de tenants tiene más de un tenant.
- Su propia base de datos. El executor se ejecuta en su propia base de datos PostgreSQL vacía. Sus migraciones rechazan una base de datos que ya tiene otro historial de migraciones.
- Reinicio después de cambios de configuración. El executor lee sus instituciones al iniciar.
- Período de terminación. Configura el
terminationGracePeriodSecondsdel pod en al menos 90.

