Skip to content

Obtener Formulario de Confronta - customers-v1-getformconfronta

Información del Servicio

Endpoint: /api/customers/v1/getformconfronta
Método: POST
Versión: v1
Categoría: Gestión de clientes

Documentación del Servicio

Descripción general

El servicio customers-v1-getformconfronta es un endpoint para obtener las preguntas de validación de identidad (confronta) de un cliente. Este servicio permite validar la identidad del cliente mediante un formulario de preguntas personalizadas basadas en su información crediticia y personal.

Categoría: Gestión de clientes.

Casos de uso principales:

  • Validación de identidad para trámites de cambio de plan
  • Verificación de cliente antes de realizar operaciones sensibles
  • Obtención de preguntas de confronta para autenticación
  • Validación de score crediticio del cliente

Especificación técnica

  • Endpoint completo: /api/customers/v1/getformconfronta
  • Método HTTP: POST
  • Capas involucradas:
    • Controlador: CustomersController
    • Lógica de negocio: CustomerBusiness
    • Acceso a datos: CustomerUtil, LSIM

Flujo de procesamiento:

  1. Validación de parámetros de entrada obligatorios
  2. Obtención del origen y configuración del servicio
  3. Consulta del cliente en la base de datos
  4. Validación de características del producto para confronta
  5. Obtención de preguntas desde el servicio LSIM
  6. Actualización de fase para órdenes de venta LTE
  7. Construcción de respuesta con preguntas o score

Dependencias principales:

  • CustomerUtil para consulta de clientes
  • LSIM para obtención de preguntas de confronta
  • ConfigurationUtil para validaciones de configuración
  • AuditUtil para auditoría de transacciones

Consideraciones de seguridad:

  • Validación de parámetros obligatorios
  • Auditoría completa de entrada y salida
  • Validación de origen de la petición
  • Control de acceso por configuración

Parámetros de entrada (Request)

Headers

CampoTipoObligatorioDescripción
WSRequestHeaderobjectCabecera de la petición con información del sistema

Body

CampoTipoObligatorioDescripción
AuditobjectNoAuditoría de la aplicación
Document_NumberstringNúmero de identificación del cliente
Document_TypestringTipo de identificación del cliente
Expedition_DatestringFecha de expedición del documento (dd/MM/yyyy)
Num_OrderstringNoNúmero de la orden de venta fija asociada
ProcessstringTrámite asociado a la validación (ej: VTA, ACTIVA_SIM)
ProductstringProducto asociado (MOVIL o FIJA)
Sub_ProcessstringSubtramite asociado (ej: PREPAGO, POSPAGO)
SurnamestringPrimer apellido del cliente

Estructura de objetos anidados:

Estructura de WSRequestHeader

CampoTipoObligatorioDescripción
SystemobjectInformación asociada al sistema
PropertyarrayNoPropiedades asociadas al consumo del servicio

Estructura de WSRequestHeader.System

CampoTipoObligatorioDescripción
NamestringNombre del sistema
CorrelationIDstringIdentificador de la petición
ProcessingServerstringNoServidor de procesamiento del sistema

Estructura de WSRequestHeader.Property

CampoTipoObligatorioDescripción
NamestringNombre de la propiedad
ValuestringValor de la propiedad

Estructura de Audit

CampoTipoObligatorioDescripción
CanalstringNoCanal sobre el cual se hizo la petición
Id_DevicestringNoIdentificador del dispositivo móvil
SOstringNoSistema operativo del dispositivo
IP_AddressstringNoDirección IP desde donde se realiza la petición
WhatsApp_Phone_NumberstringNoNúmero de WhatsApp desde donde se realiza la petición

Respuesta esperada (Response)

Headers

CampoTipoObligatorioDescripción
WSResponseHeaderobjectCabecera de la respuesta con información del sistema

Body

CampoTipoObligatorioDescripción
Form_IdstringNoIdentificación del formulario de confronta
NeedConfrontaboolNoBandera que determina si el cliente requiere confronta
QuestionsarrayNoLista de preguntas del formulario de confronta
Score_CustomerstringNoScore obtenido por el cliente en caso de validación reciente

Estructura de objetos anidados:

Estructura de WSResponseHeader

CampoTipoObligatorioDescripción
SystemobjectNoInformación asociada al sistema
ServiceobjectNoInformación asociada a la ejecución del servicio
PropertyarrayNoArreglo de propiedades asociado al servicio

Estructura de WSResponseHeader.System

CampoTipoObligatorioDescripción
NamestringNoNombre del sistema
CorrelationIDstringNoIdentificador de la petición
ProcessingServerstringNoServidor de procesamiento del sistema

Estructura de WSResponseHeader.Service

CampoTipoObligatorioDescripción
StatusstringNoEstado de la ejecución del servicio web
ResponseDateDateTimeNoFecha de la respuesta
ProcessingServerstringNoServidor de procesamiento de la solicitud
StatusDetailarrayNoDetalle del procesamiento de la solicitud

Estructura de WSResponseHeader.Property

CampoTipoObligatorioDescripción
NamestringNoNombre de la propiedad
ValuestringNoValor de la propiedad

Estructura de Questions

CampoTipoObligatorioDescripción
QuestionstringNoPregunta del formulario de confronta
AnswersarrayNoLista de respuestas asociadas a una pregunta

Estructura de Questions.Answers

CampoTipoObligatorioDescripción
AnswerstringNoRespuesta asociada a una pregunta en el formulario de confronta

Manejo de errores

CódigoDescripciónEjemplo
ERROR_04La solicitud no fue exitosa. Fueron enviados objetos no acordes a la peticiónParámetros obligatorios faltantes
ERROR_08Cliente no encontradoEl cliente no existe en la base de datos
ERROR_09Error en obtención de preguntasNo fue posible obtener las preguntas del servicio LSIM
ERROR_10Mock activoServicio en modo de prueba

Análisis de Componentes

Modelos y componentes

Modelos base utilizados:

  • BaseRequestGetFormContronta
  • BaseResponseGetFormConfronta
  • GetFormControntaRequest
  • GetFormConfrontaResponse

Utilidades y servicios comunes:

  • CustomerUtil para consulta de clientes
  • LSIM para validación de identidad
  • ConfigurationUtil para configuraciones
  • AuditUtil para auditoría

Patrones de diseño implementados:

  • Singleton para CustomerBusiness
  • Factory para creación de respuestas
  • Strategy para diferentes tipos de validación

Componentes reutilizados:

  • BotBaseRequestHeader/ResponseHeader
  • Audit para auditoría
  • ResultModel para manejo de errores

Referencias cruzadas:

  • ReplyFormConfronta_v1 para responder preguntas
  • CustomerBusiness para lógica de negocio
  • LSIM para servicio de validación

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.4384614908304255",
      "processingServer": null
    },
    "Property": [
      {
        "name": null,
        "value": null
      }
    ]
  },
  "WSRequestBody": {
    "Document_Type": "CC",
    "Document_Number": "80008820",
    "Expedition_Date": "10/09/1997",
    "Surname": "Perez",
    "Min_Score": "0",
    "Product": "FIJA",
    "Process": "PRCH_FJ_WEB",
    "Sub_Process": "UPGRADE",
    "Audit": {
      "Canal": "whatsapp",
      "IP_Address": "169.60.82.89",
      "IP_Latitud": "4.8094",
      "IP_Longitude": "-74.0980",
      "IP_City": "COTA",
      "IP_Country": "COLOMBIA",
      "Date": "2025-08-04",
      "Hour": "09:46:51",
      "WhatsApp_Phone_Number": "",
      "Facebook_User": "",
      "Twitter_User": ""
    }
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.4384614908304255",
      "processingServer": null
    },
    "Service": {
      "status": "OK",
      "responseDate": "2025-08-04T09:46:51.9759664Z",
      "processingServer": null,
      "statusDetail": [
        {
          "errorCode": "OK_01",
          "errorDetailCode": "La solicitud LUZ-0.4384614908304255 fue exitosa",
          "errorMessage": "Se obtuvieron las preguntas de validación confronta",
          "errorMessageUser": null
        }
      ]
    },
    "Property": [
      {
        "name": null,
        "value": null
      },
      {
        "name": null,
        "value": null
      }
    ]
  },
  "WSResponseBody": {
    "Form_Id": "3336463",
    "NeedConfronta": true,
    "Questions": [
      {
        "Answers": [
          {
            "Answer": "SI"
          },
          {
            "Answer": "NO"
          }
        ],
        "Question": "¿En algún momento usted ha tenido línea celular con MOVISTAR?"
      },
      {
        "Answers": [
          {
            "Answer": "COOMEVA COOPERATIVA FINANCIERA"
          },
          {
            "Answer": "BANAGRARIO"
          },
          {
            "Answer": "BBVA"
          },
          {
            "Answer": "Ninguna de las anteriores"
          }
        ],
        "Question": "¿Con cuál de las siguientes entidades usted tiene una cuenta de ahorros?"
      },
      {
        "Answers": [
          {
            "Answer": "3118769816"
          },
          {
            "Answer": "3125584253"
          },
          {
            "Answer": "3143700537"
          },
          {
            "Answer": "Ninguno de los anteriores"
          }
        ],
        "Question": "¿Con cuál de los siguientes números de teléfono tiene o ha tenido relación?"
      },
      {
        "Answers": [
          {
            "Answer": "ESTAR COMO DEUDOR PRINCIPAL DE LA OBLIGACIÓN"
          },
          {
            "Answer": "ESTAR COMO CODEUDOR, FIADOR, DEUDOR SOLIDARIO Ó AVALISTA DE LA OBLIGACIÓN"
          },
          {
            "Answer": "No estoy relacionado en ningún crédito de vivienda con esta entidad actualmente"
          }
        ],
        "Question": "En su crédito de vivienda con BBVA, su relación con la obligación es:"
      },
      {
        "Answers": [
          {
            "Answer": "MASTER CARD"
          },
          {
            "Answer": "VISA"
          },
          {
            "Answer": "DINERS"
          },
          {
            "Answer": "Ninguna de las anteriores"
          }
        ],
        "Question": "¿De qué marca es su tarjeta de crédito con BBVA?"
      }
    ],
    "Score_Customer": "0"
  }
}

Respuesta de error

json
{
    "WSResponseHeader": {
        "System": {
            "name": "KIOSKOS",
            "correlationID": "KIOSKOS-11072022158",
            "processingServer": "SERVER01"
        },
        "Service": {
            "status": "FAIL",
            "responseDate": "2024-12-19T10:30:00",
            "processingServer": "SERVER01",
            "statusDetail": [
                {
                    "errorCode": "ERROR_08",
                    "message": "Cliente no encontrado"
                }
            ]
        },
        "Property": []
    },
    "WSResponseBody": null
}

Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[CustomersController]
  B --> C[CustomerBusiness.GetFormConfronta_v1]
  C --> D[Validación de parámetros]
  D --> E[Obtención de origen]
  E --> F[Consulta de cliente]
  F --> G[Validación de producto]
  G --> H[Obtención de preguntas LSIM]
  H --> I[Construcción de respuesta]
  I --> J[Auditoría de salida]
  J --> K[Respuesta al cliente]

3.2 Arquitectura de clases

mermaid
classDiagram
  class CustomersController {
    +GetFormConfronta_v1()
  }
  class CustomerBusiness {
    +GetFormConfronta_v1()
  }
  class CustomerUtil {
    +Get()
    +Get_Form_Confronta()
  }
  class LSIM {
    +GetQuestions()
  }
  CustomersController --> CustomerBusiness
  CustomerBusiness --> CustomerUtil
  CustomerBusiness --> LSIM

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant CustomersController
  participant CustomerBusiness
  participant CustomerUtil
  participant LSIM
  participant AuditUtil
  Cliente->>CustomersController: POST /api/customers/v1/getformconfronta
  CustomersController->>CustomerBusiness: GetFormConfronta_v1()
  CustomerBusiness->>AuditUtil: Save_Request (entrada)
  CustomerBusiness->>CustomerUtil: Get()
  CustomerUtil-->>CustomerBusiness: Customer
  CustomerBusiness->>LSIM: Get_Form_Confronta()
  LSIM-->>CustomerBusiness: Questions/Score
  CustomerBusiness->>AuditUtil: Save_Request (salida)
  CustomerBusiness-->>CustomersController: BaseResponseGetFormConfronta
  CustomersController-->>Cliente: Response

Evaluación TM Forum

Categorización TM Forum

Categoría TM Forum sugerida: Customer Management

TMF_ID correspondiente: TMF620

Justificación de la selección: Este servicio se alinea con la categoría Customer Management de TM Forum ya que maneja la validación de identidad de clientes mediante confronta, que es un componente fundamental de la gestión de clientes en telecomunicaciones. El servicio obtiene preguntas de validación personalizadas basadas en información crediticia del cliente, lo cual es parte del proceso de autenticación y verificación de identidad requerido en la gestión de relaciones con clientes (CRM).


Políticas y Consideraciones

Políticas de seguridad

Mecanismos de autenticación y autorización:

  • Validación de parámetros obligatorios en el request
  • Verificación de origen de la petición
  • Auditoría completa de transacciones

Validaciones de seguridad implementadas:

  • Validación de tipo y número de documento
  • Verificación de fecha de expedición
  • Control de acceso por configuración de API

Límites de tasa (rate limits):

  • Controlado por configuración de origen
  • Validación de intentos por cliente

SLAs aplicables:

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

Recomendaciones y mejores prácticas

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

  1. Implementar cache para preguntas frecuentes
  2. Optimizar consultas a base de datos
  3. Mejorar manejo de errores específicos

Optimizaciones posibles:

  1. Paralelizar consultas a servicios externos
  2. Implementar circuit breaker para LSIM
  3. Agregar métricas de rendimiento

Consideraciones de mantenimiento importantes:

  1. Monitoreo de respuestas del servicio LSIM
  2. Validación periódica de configuraciones
  3. Revisión de logs de auditoría

Sugerencias de seguridad aplicables:

  1. Implementar rate limiting por IP
  2. Agregar validación de tokens JWT
  3. Encriptar datos sensibles en logs