# ===================================================================
# CONFIGURACIÓN GENERAL DE QUARKUS
# ===================================================================

# Nombre de la aplicación.
quarkus.application.name: bus-evaluate-customer-product
# Versión de la aplicación.
quarkus.application.version: 1.0.0
# Puerto HTTP en el que se ejecutará la aplicación.
quarkus.http.port: 8080
# Tiempo máximo de inactividad antes de que el servidor cierre una conexión HTTP.
quarkus.http.idle-timeout: 30s
# Ruta raíz para los endpoints que no son de la aplicación (ej. /health, /metrics).
quarkus.http.non-application-root-path: /actuator

# ===================================================================
# DOCUMENTACIÓN DE API (OPENAPI & SWAGGER UI)
# ===================================================================

# Habilita la generación de la especificación OpenAPI.
quarkus.smallrye-openapi.enable: true
# Ruta donde se expondrá la especificación OpenAPI (formato JSON/YAML).
quarkus.smallrye-openapi.path: /openapi
# Título que se mostrará en la documentación de la API.
quarkus.smallrye-openapi.info-title: bus-evaluate-customer-product
# Versión que se mostrará en la documentación de la API.
quarkus.smallrye-openapi.info-version: 1.0.0
# Descripción general de la API para la documentación.
quarkus.smallrye-openapi.info-description: API Bus evaluate customer accounts

# Habilita la interfaz de usuario de Swagger.
quarkus.swagger-ui.always-include: true
# Ruta donde estará disponible la interfaz de Swagger UI.
quarkus.swagger-ui.path: /swagger-ui

# ===================================================================
# CONFIGURACIÓN DE REDIS
# ===================================================================

# URL de conexión al servidor de Redis.
quarkus.redis.hosts: redis://localhost:6379
# Contraseña para la autenticación en Redis (si es necesaria).
quarkus.redis.password: redis
# Tiempo máximo de espera para las operaciones de Redis.
quarkus.redis.timeout: 3S
# Tamaño máximo del pool de conexiones hacia Redis.
quarkus.redis.max-pool-size: 32
# Tiempo máximo de espera para obtener una conexión del pool.
quarkus.redis.max-pool-waiting: 100

# ===================================================================
# CONFIGURACIÓN DE LA BASE DE DATOS (POSTGRESQL)
# ===================================================================

# Tipo de base de datos a utilizar.
quarkus.datasource.db-kind: postgresql
# URL de conexión JDBC a la base de datos.
quarkus.datasource.jdbc.url: jdbc:postgresql://localhost:5433/apiban001
# Tamaño del Pool
# Conexiones mínimas que el pool mantendrá abiertas.
quarkus.datasource.jdbc.min-size: 4
# Máximo de conexiones permitidas. ¡Ajusta esto según tu carga!
quarkus.datasource.jdbc.max-size: 10
# Conexiones que se crearán al iniciar la aplicación.
quarkus.datasource.jdbc.initial-size: 4
# Tiempos de Espera (Timeouts)
# Tiempo máximo (8 seg) que un hilo esperará por una conexión si el pool está lleno.
quarkus.datasource.jdbc.acquisition-timeout: 8s
# Cierra conexiones inactivas (por encima de min-size) cada 30 segundos.
quarkus.datasource.jdbc.idle-removal-interval: 30s
# Tiempo máximo de vida de una conexión (30 min) para forzar su renovación.
quarkus.datasource.jdbc.max-lifetime: 30m
# Valida conexiones inactivas en segundo plano cada 30 segundos.
quarkus.datasource.jdbc.background-validation-interval: 30s
quarkus.datasource.jdbc.validation-query: SELECT 1



# Usuario para la conexión a la base de datos.
quarkus.datasource.username: -------
# Contraseña para la conexión a la base de datos.
quarkus.datasource.password: --------

# ===================================================================
# CONFIGURACIÓN DE CLIENTES REST
# ===================================================================

# --- Cliente para verificar el estado de disponibilidad de un servicio.
quarkus.rest-client.get-service-status.url: http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status
quarkus.rest-client.get-service-status.scope: jakarta.inject.Singleton

# --- Cliente para el inicio de sesión de usuario.
quarkus.rest-client.user-login.url: http://api-get-user-login-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/user/login
quarkus.rest-client.user-login.scope: jakarta.inject.Singleton

# --- Cliente para validar el perfil de un cliente.
quarkus.rest-client.validate-profile.url: http://api-validate-profile-client-route-apis-banesco-qa.apps.desplakur3.desintra.banesco.com/security/profile/validate
quarkus.rest-client.validate-profile.scope: jakarta.inject.Singleton

# --- Cliente para codificar valores.
quarkus.rest-client.encode-value.url: http://api-encode-value-route-apis-banesco-qa.apps.desplakur3.desintra.banesco.com/security/encode
quarkus.rest-client.encode-value.scope: jakarta.inject.Singleton

# --- Cliente para validar el token OTP.
quarkus.rest-client.otp.url: http://api-validate-otp-route-apis-banesco-qa.apps.desplakur3.desintra.banesco.com/security/otp/validate
quarkus.rest-client.otp.scope: jakarta.inject.Singleton

# --- Cliente para obtener las cuentas de un cliente desde DB2.
quarkus.rest-client.customer-accounts.url: http://api-get-db2-accounts-client-v2-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/customer/accounts
quarkus.rest-client.customer-accounts.scope: jakarta.inject.Singleton

# --- Cliente para registrar la traza de seguridad.
quarkus.rest-client.register-security.url: http://api-register-security-route-apis-banesco-qa.apps.desplakur3.desintra.banesco.com/register-security/save
quarkus.rest-client.register-security.scope: jakarta.inject.Singleton

# ===================================================================
# PROPIEDADES ESPECÍFICAS DE LA APLICACIÓN
# ===================================================================

# Identificador único de la aplicación.
app.appId: BUS_EVALUATE_CUSTOMER_PRODUCTS
# (Propiedad personalizada) Tiempo de expiración por defecto para las claves en caché.
app.redis.expiration: 300
# Dominio específico de la aplicación.
app.domain.api.public.payment: osbp2p

# --- Parámetros para el servicio de OTP ---
# Canal utilizado para la validación OTP.
app.otp.channel: 2
# Nombre del servicio que solicita la validación OTP.
app.otp.servicio: APIFICACION

# --- Parámetros para la ventana de disponibilidad del servicio ---
app.account-client.availability.schedule.param.cod-ban: 1
app.account-client.availability.schedule.param.cod-eve: P2PVUEL
app.account-client.availability.schedule.param.cod-serv: APIFI
# Hora de inicio de la ventana de disponibilidad
app.account-client.availability.schedule.begin: 10:00:00
# Hora de fin de la ventana de disponibilidad
app.account-client.availability.schedule.finish: 23:00:00

# --- Parámetros para la Traza de Seguridad ---
# Código de evento para la traza.
app.register-security.event-cod: CPROD
# Código de banco para la traza.
app.register-security.bank-cod: 01
# Código de moneda para la traza.
app.register-security.cur-cod: BS
# Nombre del Stored Procedure para la traza.
app.register-security.sp: spAPI_ConsultaProducto

# --- Mapeo centralizado de códigos de respuesta de la aplicación ---
app.response-json: |
  [
        {
           "backend_code": "default",
           "http_code": "409",
           "status_code": "CONFLICT",
           "description": "Conflicto",
           "status": "error"
        },
        {
           "backend_code": "VRN_CONFIG_NOT_FOUND",
           "http_code": "400",
           "status_code": "400",
           "description": "Configuracion no encontrada",
           "status": "error"
        },
        {
           "backend_code": "200",
           "http_code": "200",
           "status_code": "200",
           "description": "Operacion exitosa",
           "status": "ok"
        },
        {
           "backend_code": "204",
           "http_code": "200",
           "status_code": "204",
           "description": "Cliente sin productos",
           "status": "ok"
        },
        {
           "backend_code": "503-URL",
           "http_code": "503",
           "status_code": "503",
           "description": "Incidencia con la resolución de CI",
           "status": "error"
        },
        {
           "backend_code": "500",
           "http_code": "503",
           "status_code": "500",
           "description": "Uso interno",
           "status": "error"
        },
        {
           "backend_code": "406",
           "http_code": "406",
           "status_code": "406",
           "description": "Respuesta no aceptable",
           "status": "error"
        },
        {
           "backend_code": "VRN01",
           "http_code": "401",
           "status_code": "401",
           "description": "VRN01 - Fallo en la validación del perfil del cliente",
           "status": "error"
        },
        {
           "backend_code": "VRN04",
           "http_code": "503",
           "status_code": "VRN04",
           "description": "Servicio en horario de mantenimiento",
           "status": "error"
        },
        {
           "backend_code": "VRN07",
           "http_code": "401",
           "status_code": "VRN07",
           "description": "VRN07 – Codigo de OTP Invalido",
           "status": "error"
        },
        {
           "backend_code": "409",
           "http_code": "409",
           "status_code": "CONFLICT",
           "description": "Conflicto",
           "status": "error"
        },
        {
           "backend_code": "VRN19",
           "http_code": "401",
           "status_code": "AUTH01",
           "description": "Usuario no existe",
           "status": "error"
        },
        {
           "backend_code": "VRN20",
           "http_code": "401",
           "status_code": "AUTH02",
           "description": "Usuario no existe",
           "status": "error"
        }
    ]