Skip to content

Valida la identidad de clientes ETB - customers-v1-identityvalidation

Información del Servicio

Endpoint: /api/customers/v1/identityvalidation
Método: POST
Versión: v1
Categoría: Gestión de Clientes / Seguridad

Documentación del Servicio

Descripción general

El servicio customers-v1-identityvalidation permite validar la identidad de un cliente ETB a partir de sus datos personales y contexto de negocio (proceso, producto, canal, etc.). Este servicio es fundamental para procesos de venta, activación de servicios y prevención de fraude, ya que verifica que los datos proporcionados coincidan con la información registrada en los sistemas de ETB.

Categoría de negocio: Gestión de Clientes / Seguridad

Casos de uso principales:

  • Validación de identidad en ventas presenciales y digitales
  • Prevención de fraude y suplantación de identidad
  • Automatización de flujos comerciales que requieren verificación de identidad
  • Validación previa a la activación de servicios móviles y fijos

Especificación técnica

  • Endpoint completo: /api/customers/v1/identityvalidation
  • Método HTTP: POST
  • Capas involucradas:
    • Controlador: CustomersController (método IdentityValidation_v1)
    • Lógica de negocio: CustomerBusiness.IdentityValidation_v1
    • Acceso a datos: CustomerUtil, ConfigurationUtil, AuditUtil, OrderUtil, LSIMModel

Flujo de procesamiento:

  1. El controlador recibe el request y construye un objeto BaseRequest
  2. Se valida y completa la información base del request
  3. Se delega la lógica a CustomerBusiness.IdentityValidation_v1
  4. Se audita la entrada y se convierte el request a modelo de negocio
  5. Se valida la presencia y formato de los campos obligatorios
  6. Se obtiene el origen y tipologías de configuración
  7. Se verifica si el endpoint está habilitado para el canal
  8. Se consulta el cliente y se validan los datos contra la base
  9. Se ejecuta la validación de identidad vía LSIM (sistema externo)
  10. Se actualiza la fase de la orden si aplica
  11. Se construye la respuesta con el estado y detalles
  12. Se audita la salida y se registra la validación

Dependencias principales:

  • Modelos: BaseRequestIdentityValidation, IdentityValidationRequest, BaseResponseIdentityValidation, BotBaseRequestHeader, BotBaseResponseHeader, Audit
  • Utilidades: CustomerUtil, ConfigurationUtil, AuditUtil, OrderUtil, LSIMModel
  • Servicios externos: LSIM (sistema de validación de identidad)

Consideraciones de seguridad:

  • Requiere autenticación JWT y validación de canal/sistema
  • Valida origen, canal y correlación de la petición
  • Audita todas las operaciones de entrada y salida
  • Integra con sistema LSIM para validación biométrica

Parámetros de entrada (Request)

Headers

CampoTipoObligatorioDescripción
System.namestringNombre del sistema que realiza la petición
System.correlationIDstringIdentificador único de la transacción
System.processingServerstringServidor de procesamiento
PropertyarrayNo*Propiedades adicionales del request (condicional según integración)

Body

CampoTipoObligatorioDescripción
AuditobjectInformación de auditoría de la petición
Document_NumberstringNúmero de identificación del cliente
Document_TypestringTipo de identificación (CC, CE, NIT, etc.)
Expedition_DatestringFecha de expedición del documento (dd/MM/yyyy)
Pre_OrderstringNoNúmero de pre-orden asociado
ProcessstringProceso asociado (ej: VTA, ACTIVA_SIM)
ProductstringNoProducto asociado (ej: FIJA, MOVIL)
StratumstringNoEstrato asociado a la solicitud
Sub_ProcessstringNoSubproceso asociado (ej: PREPAGO, POSPAGO)
SurnamestringPrimer apellido del cliente

Estructura de objetos anidados:

Objeto anidado: Audit
CampoTipoObligatorioDescripción
CanalstringCanal sobre el cual se hace la petición
Id_DevicestringNoIdentificador del dispositivo
SOstringNoSistema operativo del dispositivo
IP_AddressstringNoDirección IP de origen
IP_LatitudestringNoLatitud de la ubicación
IP_LongitudestringNoLongitud de la ubicación
WhatsApp_Phone_NumberstringNoNúmero de WhatsApp
Facebook_UserstringNoUsuario de Facebook
Twitter_UserstringNoUsuario de Twitter

Respuesta esperada (Response)

Headers

CampoTipoObligatorioDescripción
Content-Typestringapplication/json
Cache-ControlstringNoControl de caché

Body

CampoTipoObligatorioDescripción
WSResponseHeaderobjectCabecera de la respuesta

Estructura de objetos anidados:

Objeto anidado: WSResponseHeader
CampoTipoObligatorioDescripción
SystemobjectInformación del sistema
ServiceobjectInformación del servicio
PropertyarrayNoPropiedades adicionales
Objeto anidado: System
CampoTipoObligatorioDescripción
namestringNombre del sistema
correlationIDstringIdentificador de correlación
processingServerstringNoServidor de procesamiento
Objeto anidado: Service
CampoTipoObligatorioDescripción
statusstringEstado de la ejecución (OK, Error, etc.)
responseDatedatetimeFecha de la respuesta
processingServerstringNoServidor de procesamiento
statusDetailarrayDetalles de estado y errores
Objeto anidado: statusDetail
CampoTipoObligatorioDescripción
errorCodestringCódigo del error o estado
errorDetailCodestringNoDetalle funcional del error
errorMessagestringNoMensaje técnico del error
errorMessageUserstringNoMensaje funcional para el usuario

Manejo de errores

CódigoDescripciónEjemplo
OK_01El cliente fue validado exitosamente"La solicitud {0} fue exitosa"
OK_02Validación deshabilitada, se permite continuar"La solicitud {0} fue exitosa"
ERROR_04Faltan campos obligatorios o formato incorrecto"Uno de los campos obligatorios no fue enviado o la fecha tiene un formato incorrecto"
ERROR_06Canal no habilitado o error de configuración"El canal enviado no está habilitado para la consulta"
ERROR_08Validación de cliente no exitosa"Datos incorrectos, por favor verificar"

Análisis de Componentes

Modelos y componentes

Modelos base utilizados:

  • BaseRequestIdentityValidation (request completo)
  • IdentityValidationRequest (body de la petición)
  • BaseResponseIdentityValidation (respuesta principal)
  • BotBaseRequestHeader y BotBaseResponseHeader (cabeceras)
  • Audit (auditoría de la petición)

Utilidades y servicios comunes:

  • CustomerUtil (gestión y consulta de clientes)
  • ConfigurationUtil (gestión de tipologías y configuración)
  • AuditUtil (auditoría de requests y respuestas)
  • OrderUtil (actualización de fases de orden)
  • LSIMModel (validación de identidad)

Patrones de diseño implementados:

  • Singleton para utilidades (GetInstance)
  • Separación de capas (Controller, Business, Util, Model)
  • Manejo centralizado de auditoría y errores

Componentes reutilizados:

  • Modelos de cabecera y auditoría se usan en otros endpoints de clientes
  • Utilidades de configuración y auditoría son transversales

Referencias cruzadas:

  • Relacionado con /api/customers/v1/mecna (listas negras)
  • Utiliza lógica y modelos comunes de validación de clientes

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.6875654170768943",
      "processingServer": null
    },
    "Property": []
  },
  "WSRequestBody": {
    "Document_Type": "CC",
    "Document_Number": "12808270",
    "Expedition_Date": "11/05/2002",
    "Surname": "SANTIAGO DIAZ",
    "Process": "MAX_DEFAULT",
    "Product": "",
    "Audit": {
      "Canal": "WEB",
      "Date": "2025-07-24",
      "Hour": "23:12:41"
    }
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.6875654170768943",
      "processingServer": null
    },
    "Service": {
      "status": "OK",
      "responseDate": "2025-07-24T23:12:42.5236065Z",
      "processingServer": null,
      "statusDetail": [
        {
          "errorCode": "OK_01",
          "errorDetailCode": "El cliente fue validado exitosamente",
          "errorMessage": "La solicitud LUZ-0.6875654170768943 fue exitosa",
          "errorMessageUser": null
        }
      ]
    },
    "Property": []
  }
}

Respuesta de error

json
{
  "WSResponseHeader": {
    "System": {
      "name": "Kioskos",
      "correlationID": "KIOSKOS-11072022158",
      "processingServer": "Server01"
    },
    "Service": {
      "status": "Error",
      "responseDate": "2024-06-11T10:00:00Z",
      "processingServer": "Server01",
      "statusDetail": [
        {
          "errorCode": "ERROR_04",
          "errorDetailCode": null,
          "errorMessage": "Uno de los campos obligatorios no fue enviado o la fecha tiene un formato incorrecto",
          "errorMessageUser": "La solicitud no fue exitosa. En este momento no podemos atender tu solicitud, por favor acércate a una tienda"
        }
      ]
    },
    "Property": []
  }
}

Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[CustomersController]
  B --> C[CustomerBusiness]
  C --> D[CustomerUtil]
  C --> E[ConfigurationUtil]
  C --> F[AuditUtil]
  C --> G[OrderUtil]
  C --> H[LSIMModel]
  H --> I[Validación de identidad]
  C --> J[Construcción de respuesta]
  J --> K[Retorno al cliente]

3.2 Arquitectura de clases

mermaid
classDiagram
  class CustomersController {
    +IdentityValidation_v1(BaseRequestIdentityValidation)
  }
  class CustomerBusiness {
    +IdentityValidation_v1(BaseRequest, string)
  }
  class BaseRequestIdentityValidation {
    +BotBaseRequestHeader WSRequestHeader
    +IdentityValidationRequest WSRequestBody
  }
  class IdentityValidationRequest {
    +Audit Audit
    +string Document_Number
    +string Document_Type
    +string Expedition_Date
    +string Pre_Order
    +string Process
    +string Product
    +string Stratum
    +string Sub_Process
    +string Surname
  }
  class BaseResponseIdentityValidation {
    +BotBaseResponseHeader WSResponseHeader
  }
  CustomersController --> CustomerBusiness
  CustomersController --> BaseRequestIdentityValidation
  BaseRequestIdentityValidation --> IdentityValidationRequest
  CustomerBusiness --> BaseResponseIdentityValidation

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant API as CustomersController
  participant Negocio as CustomerBusiness
  participant Util as CustomerUtil
  participant Config as ConfigurationUtil
  participant Audit as AuditUtil
  participant Orden as OrderUtil
  participant LSIM as LSIMModel
  Cliente->>API: POST /api/customers/v1/identityvalidation
  API->>Negocio: IdentityValidation_v1(request)
  Negocio->>Audit: Save_Request (entrada)
  Negocio->>Config: Get_Origin, Get_By_Code
  Negocio->>Util: Get (cliente)
  Negocio->>LSIM: Validar identidad
  Negocio->>Orden: Update_Phase_VentaLTE (si aplica)
  Negocio->>Audit: Save_Request (salida)
  Negocio->>Audit: Save_Identity_Validation
  Negocio-->>API: BaseResponseIdentityValidation
  API-->>Cliente: Respuesta

Políticas y Consideraciones

Políticas de seguridad

Mecanismos de autenticación y autorización:

  • Requiere autenticación JWT y validación de canal/sistema
  • Valida origen, canal y correlación de la petición
  • Integra con sistema LSIM para validación biométrica

Validaciones de seguridad implementadas:

  • Validación de campos obligatorios y formato de datos
  • Verificación de habilitación del canal para el endpoint
  • Auditoría completa de entrada y salida
  • Validación contra base de datos de clientes

Límites de tasa (rate limits):

  • No se especifican límites explícitos en el código
  • Se recomienda implementar rate limiting por canal/sistema

SLAs aplicables:

  • Tiempo de respuesta esperado: < 5 segundos
  • Disponibilidad: 99.9%

Recomendaciones y mejores prácticas

Puntos de mejora específicos en el código:

  1. Implementar rate limiting por canal y sistema
  2. Agregar validación de formato de fecha más robusta
  3. Implementar cache para consultas frecuentes de configuración
  4. Mejorar el manejo de errores específicos de LSIM

Optimizaciones posibles:

  1. Implementar cache de tipologías de configuración
  2. Optimizar consultas a base de datos de clientes
  3. Implementar circuit breaker para integración con LSIM
  4. Agregar métricas de performance y monitoreo

Consideraciones de mantenimiento importantes:

  1. Mantener actualizada la configuración de canales habilitados
  2. Monitorear la integración con LSIM para detectar fallas
  3. Revisar periódicamente los logs de auditoría
  4. Validar que las tipologías de error estén actualizadas

Sugerencias de seguridad aplicables:

  1. Implementar encriptación de datos sensibles en tránsito
  2. Agregar validación de IP para prevenir ataques
  3. Implementar logging de seguridad para detectar intentos de fraude
  4. Revisar periódicamente los permisos de acceso al endpoint