— significa sin valor predeterminado.
Con
ENVIRONMENT_NAME=production, el servicio no inicia a menos que todas estas condiciones sean verdaderas: POSTGRES_PASSWORD está definida, POSTGRES_SSLMODE no es disable, PLUGIN_AUTH_ENABLED es true, TRUSTED_PROXIES está definida, REDIS_TLS es true, AUDIT_MONGO_URI pide TLS, y ni ALLOW_CORS_WILDCARD ni ALLOW_RATELIMIT_FAIL_OPEN es true.Runtime y servidor
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
ENVIRONMENT_NAME | Nombre del entorno. production activa las verificaciones de inicio de la nota anterior. ENV_NAME se lee cuando ENVIRONMENT_NAME no está definida. | development | No |
DEPLOYMENT_MODE | local, byoc o saas. | local | No |
LOG_LEVEL | Nivel de log. | info | No |
SERVER_ADDRESS | Dirección en la que escucha el HTTP. | :8080 | No |
HTTP_BODY_LIMIT_BYTES | Cuerpo más grande que acepta el servidor HTTP, en bytes. Un cuerpo más grande recibe 413 TED-9003. | 104857600 | No |
SERVER_TLS_CERT_FILE, SERVER_TLS_KEY_FILE | Certificado y clave para TLS en el propio servicio. Define las dos o ninguna. | — | No |
TLS_TERMINATED_UPSTREAM | true cuando un proxy delante del servicio termina el TLS. El servicio entonces escucha en HTTP simple. | false | No |
TRUSTED_PROXIES | IPs o CIDRs, separados por comas, de los proxies delante del servicio. El servicio los usa para encontrar la IP del cliente. | — | En producción |
CORS_ALLOWED_ORIGINS | Orígenes CORS permitidos. | http://localhost:3000 | No |
CORS_ALLOWED_METHODS | Métodos CORS permitidos. | GET,POST,PUT,PATCH,DELETE,OPTIONS | No |
CORS_ALLOWED_HEADERS | Headers CORS permitidos. | Origin,Content-Type,Accept,Authorization,X-Request-ID | No |
CORS_EXPOSE_HEADERS | Headers expuestos al navegador. | — | No |
CORS_ALLOW_CREDENTIALS | Permite credenciales en las solicitudes CORS. | false | No |
SWAGGER_ENABLED | Sirve el documento OpenAPI del servicio. | false | No |
SYSTEMPLANE_ENABLED | Activa las configuraciones de runtime y su API. | false | Para enviar TED |
INFRA_CONNECT_TIMEOUT_SEC | Límite de tiempo para conectar con los almacenes de datos al iniciar, en segundos. | 30 | No |
Autenticación y licencia
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
PLUGIN_AUTH_ENABLED | Verifica el token y el permiso de Access Manager en cada llamada. | true | No |
PLUGIN_AUTH_HOST | Dirección base de Access Manager, una URL http o https absoluta. TED Lerian también obtiene de ella el token de sus llamadas al CRM y a Lerian SPB. | — | Sí |
CRM_CLIENT_ID, CRM_CLIENT_SECRET | Aplicación de Access Manager que TED Lerian usa en sus llamadas al CRM y a Lerian SPB. El secret es sensible. | — | Sí |
LICENSE_ENABLED | Verifica la licencia del producto para cada organización. | false | No |
LICENSE_APPLICATION_ID | Nombre de la aplicación enviado a la verificación de licencia. | plugin-br-ted-lerian | No |
LICENSE_KEY | Clave de licencia que usa la verificación de licencia. Sensible. | — | No |
ORGANIZATION_IDS | Organizaciones, separadas por comas, que cubre la licencia. | — | No |
PostgreSQL
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
POSTGRES_HOST | Host primario. | localhost | No |
POSTGRES_PORT | Puerto primario. | 5432 | No |
POSTGRES_USER | Usuario de la base de datos. | plugin-br-ted-lerian | No |
POSTGRES_PASSWORD | Contraseña de la base de datos. Sensible. | — | En producción |
POSTGRES_NAME | Nombre de la base de datos. | plugin-br-ted-lerian | No |
POSTGRES_SSLMODE | Modo TLS de libpq. | disable | No |
POSTGRES_REPLICA_HOST, POSTGRES_REPLICA_PORT, POSTGRES_REPLICA_USER, POSTGRES_REPLICA_PASSWORD, POSTGRES_REPLICA_NAME, POSTGRES_REPLICA_SSLMODE | Réplica de lectura opcional, con el mismo significado que los valores del primario. | — | No |
POSTGRES_MAX_OPEN_CONNS | Número más grande de conexiones abiertas. | 25 | No |
POSTGRES_MAX_IDLE_CONNS | Número más grande de conexiones inactivas. | 5 | No |
POSTGRES_CONN_MAX_LIFETIME_MINS | Tiempo de vida de una conexión, en minutos. | 30 | No |
POSTGRES_CONN_MAX_IDLE_TIME_MINS | Tiempo inactivo antes de que una conexión se cierre, en minutos. | 5 | No |
POSTGRES_CONNECT_TIMEOUT_SEC | Límite de tiempo de la conexión, en segundos. | 10 | No |
Valkey
Valkey guarda los registros de idempotencia, los contadores de rate limit y los contadores de los límites de uso.| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
REDIS_HOST | Dirección, host:port. | localhost:6379 | No |
REDIS_MASTER_NAME | Nombre del master de Sentinel, cuando usas Sentinel. | — | No |
REDIS_PASSWORD | Contraseña. Sensible. | — | No |
REDIS_DB | Número de la base de datos. | 0 | No |
REDIS_PROTOCOL | Versión del protocolo. | 3 | No |
REDIS_TLS | Conecta con TLS. | false | En producción |
REDIS_CA_CERT | Bundle de CA, en base64, para un certificado de servidor emitido por una CA privada. | — | No |
REDIS_POOL_SIZE | Tamaño del pool de conexiones. | 10 | No |
REDIS_MIN_IDLE_CONNS | Número más pequeño de conexiones inactivas. | 2 | No |
REDIS_READ_TIMEOUT, REDIS_WRITE_TIMEOUT | Límites de tiempo de lectura y escritura, en segundos. | 3 | No |
REDIS_DIAL_TIMEOUT | Límite de tiempo de la conexión, en segundos. | 5 | No |
REDIS_POOL_TIMEOUT | Espera por una conexión libre, en segundos. | 2 | No |
REDIS_MAX_RETRIES | Reintentos de un comando que falló. | 3 | No |
REDIS_MIN_RETRY_BACKOFF | Espera más corta entre reintentos, en milisegundos. | 8 | No |
REDIS_MAX_RETRY_BACKOFF | Espera más larga entre reintentos, en segundos. | 1 | No |
Registro de auditoría
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
AUDIT_MONGO_URI | Cadena de conexión de MongoDB del registro de auditoría. En producción, debe pedir TLS (tls=true, o una URI mongodb+srv://). | — | Sí |
Midaz
TED Lerian retiene, liquida y acredita el dinero en el ledger de Midaz, y encuentra cuentas y titulares en el CRM.| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
MIDAZ_LEDGER_ENABLED | Conecta con el ledger de Midaz. Sin ella, TED Lerian no puede mover dinero en Midaz. | false | No |
MIDAZ_LEDGER_BASE_URL | Dirección base del ledger de Midaz. | — | No |
MIDAZ_ORGANIZATION_ID, MIDAZ_LEDGER_ID | Organización y ledger de esta instalación. TED Lerian acredita allí las TED entrantes, y un vínculo de ISPB debe apuntar a este par. | — | Si el ledger está habilitado |
MIDAZ_ACCESS_MANAGER_ADDRESS | Dirección de Access Manager para las llamadas al ledger de Midaz. | — | Si el ledger está habilitado, a menos que MIDAZ_ANONYMOUS sea true |
MIDAZ_CLIENT_ID, MIDAZ_CLIENT_SECRET | Aplicación de Access Manager para las llamadas al ledger de Midaz. El secret es sensible. | — | Si el ledger está habilitado, a menos que MIDAZ_ANONYMOUS sea true |
MIDAZ_ANONYMOUS | Llama a un Midaz local que no tiene autenticación. Solo para desarrollo local. | false | No |
MIDAZ_IDEMPOTENCY_TTL_SECONDS | Durante cuánto tiempo Midaz guarda la clave de idempotencia de cada llamada al ledger, en segundos, de 3600 a 604800. Un valor fuera de ese rango detiene el inicio. | 86400 | No |
MIDAZ_CRM_ENABLED | Conecta con el CRM, donde TED Lerian encuentra cuentas y titulares. | false | No |
MIDAZ_CRM_BASE_URL | Dirección base del CRM, una URL http o https absoluta. Debe ser https cuando ENVIRONMENT_NAME no es development, local, test o ci. | — | Si el CRM está habilitado |
Lerian SPB
La dirección de Lerian SPB es una configuración de runtime de cada institución.RAIL_ALLOWED_HOSTS limita los hosts que TED Lerian acepta allí.
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
RAIL_ALLOWED_HOSTS | Valores host:port de Lerian SPB, separados por comas. TED Lerian no llama a una dirección de Lerian SPB en ningún otro host. | — | Sí |
CIRCUIT_BREAKER_ENABLED | Protege las llamadas a Lerian SPB con un circuit breaker. | false | No |
Política y operaciones
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
POLICY_USAGE_LIMITS_MODE | enforced aplica los límites de uso. disabled rechaza todo envío con TED-0080. noop no verifica ningún límite. Cualquier otro valor detiene el inicio. | enforced | No |
RECONCILIATION_QUEUE_CURSOR_KEY | Clave que firma los cursores de la cola de conciliación: el base64 de exactamente 32 bytes. Sensible. Una clave nueva invalida los cursores en uso. | — | Sí |
Idempotencia y rate limits
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
IDEMPOTENCY_MIN_TTL_SEC, IDEMPOTENCY_MAX_TTL_SEC | X-TTL más bajo y más alto que acepta el servicio, en segundos. Un valor fuera de ellos se ajusta a ellos. | 30, 604800 | No |
RATE_LIMIT_ENABLED | Activa los rate limits. | true | No |
RATE_LIMIT_MAX, RATE_LIMIT_WINDOW_SEC | Solicitudes permitidas en cada ventana, y la ventana en segundos, para las rutas estándar. | 500, 60 | No |
AGGRESSIVE_RATE_LIMIT_MAX, AGGRESSIVE_RATE_LIMIT_WINDOW_SEC | Lo mismo, para las rutas estrictas. | 100, 60 | No |
RELAXED_RATE_LIMIT_MAX, RELAXED_RATE_LIMIT_WINDOW_SEC | Lo mismo, para las rutas flexibles. | 1000, 60 | No |
Eventos
TED Lerian escribe cada evento en su outbox, en la misma transacción que el cambio de estado. El relay del outbox luego lo publica. La conexión con el broker viene de las configuraciones compartidasSTREAMING_* en Streaming y outbox.
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
STREAMING_ENABLED | Publica eventos. Requiere OUTBOX_ENABLED=true. | false | No |
STREAMING_CLOUDEVENTS_SOURCE | Source de CloudEvents. Debe ser br-ted cuando el streaming está activado. | — | Si el streaming está activado |
STREAMING_HEALTH_CHECK_TIMEOUT | Límite de tiempo de la verificación de disponibilidad del broker (duración Go). | 2s | No |
OUTBOX_ENABLED | Activa el relay del outbox. | false | Si el streaming está activado |
OUTBOX_DISPATCH_INTERVAL_SEC | Tiempo entre ciclos del relay mientras hay eventos en espera, en segundos. | 2 | No |
OUTBOX_COLD_DISPATCH_INTERVAL_SEC | Tiempo entre ciclos del relay mientras el outbox no tiene actividad reciente, en segundos. El primer evento después de un período inactivo puede esperar ese tiempo. | 60 | No |
OUTBOX_BATCH_SIZE | Número más grande de eventos en un ciclo. | 50 | No |
OUTBOX_PUBLISH_MAX_ATTEMPTS | Intentos de publicación de cada evento. | 3 | No |
OUTBOX_PUBLISH_BACKOFF_MS | Espera base entre intentos de publicación, en milisegundos. | 200 | No |
OUTBOX_RETRY_WINDOW_SEC | Espera antes de que un evento que falló se intente de nuevo, en segundos. | 300 | No |
OUTBOX_MAX_DISPATCH_ATTEMPTS | Intentos de despacho antes de que un evento se marque como inválido. | 10 | No |
OUTBOX_PROCESSING_TIMEOUT_SEC | Tiempo después del cual el relay retoma un evento atascado en procesamiento, en segundos. | 600 | No |
OUTBOX_MAX_FAILED_PER_BATCH | Eventos fallidos que cada ciclo retoma para un reintento. | 25 | No |
OUTBOX_PRIORITY_EVENT_TYPES | Tipos de evento, separados por comas, que cada ciclo toma primero. | — | No |
OUTBOX_TABLE_NAME | Nombre de la tabla del outbox. | outbox_events | No |
RABBITMQ_ENABLED | Abre una conexión RabbitMQ que solo usa la verificación de disponibilidad. TED Lerian no publica ningún evento por ella. | false | No |
RABBITMQ_URL, RABBITMQ_HOST, RABBITMQ_PORT_AMQP, RABBITMQ_PORT_HOST, RABBITMQ_DEFAULT_USER, RABBITMQ_DEFAULT_PASS, RABBITMQ_VHOST, RABBITMQ_QUEUE | Conexión RabbitMQ. RABBITMQ_URL o RABBITMQ_HOST es obligatoria cuando RabbitMQ está habilitado. | RABBITMQ_HOST: localhost | Si RabbitMQ está habilitado |
RABBITMQ_HEALTH_CHECK_URL, RABBITMQ_HEALTH_CHECK_ALLOWED_HOSTS, RABBITMQ_REQUIRE_HEALTH_ALLOWED_HOSTS, RABBITMQ_ALLOW_INSECURE_HEALTH_CHECK, RABBITMQ_ALLOW_INSECURE_TLS | Configuraciones de health check y TLS de RabbitMQ. | — | No |
Telemetría
| Variable | Descripción | Predeterminado | Obligatoria |
|---|---|---|---|
ENABLE_TELEMETRY | Exporta traces y métricas de OpenTelemetry. | false | No |
OTEL_EXPORTER_OTLP_ENDPOINT | Dirección del colector OTLP. | localhost:4317 | No |
OTEL_RESOURCE_SERVICE_NAME | Nombre del servicio en la telemetría. | plugin-br-ted-lerian | No |
OTEL_RESOURCE_DEPLOYMENT_ENVIRONMENT | Nombre del entorno en la telemetría. | development | No |
OTEL_LIBRARY_NAME | Nombre de la biblioteca de instrumentación. | Predeterminado del servicio | No |
OTEL_TRUST_INBOUND_TRACE_CONTEXT | Continúa el trace que un llamador envía en los headers de la solicitud. | false | No |

