Skip to content

Validación de Estado de Televisión - soporte1n-v1-validatetv.md

Información del Servicio

Endpoint: /api/soporte1n/v1/validatetv
Método: POST
Versión: v1
Categoría: Gestión de servicios

Documentación del Servicio

Descripción general

El servicio soporte1n-v1-validatetv es un endpoint para validar el estado de la plataforma televisión. Este servicio permite consultar el estado de la plataforma televisión (canales adicionales, servicios adicionales, decodificadores y estado del subscriptor).

Categoría: Gestión de servicios.

Casos de uso principales:

  • Validación del estado de canales adicionales en plataformas de TV
  • Verificación de servicios adicionales contratados
  • Consulta del estado de decodificadores (STB)
  • Validación del estado del subscriptor en plataformas de TV

Especificación técnica

  • Endpoint completo: /api/soporte1n/v1/validatetv
  • Método HTTP: POST
  • Capas involucradas:
    • Controlador: Soporte1NController
    • Lógica de negocio: Soporte1NBusiness
    • Acceso a datos: Soporte1NUtil

Flujo de procesamiento:

  1. Validación de entrada y conversión de datos
  2. Obtención del origen de la petición
  3. Verificación del estado de la API (encendido/apagado)
  4. Consulta del servicio por número de teléfono
  5. Validación de tecnología del servicio
  6. Validación de medios de acceso a plataformas
  7. Consulta paralela a múltiples plataformas de TV
  8. Registro de verificación de eventos
  9. Auditoría y respuesta final

Dependencias principales:

  • Soporte1NUtil para validaciones específicas de TV
  • ServiceUtil para consulta de servicios
  • ConfigurationUtil para configuraciones
  • ASAPServiceClient para comunicación con plataformas

Consideraciones de seguridad:

  • Validación de autenticación y autorización
  • Auditoría completa de peticiones y respuestas
  • Validación de origen de la petición
  • Control de acceso por canal y sistema

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
PhonestringNúmero de conexión

Estructura de objetos anidados:

Estructura de WSRequestHeader

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

Estructura de WSRequestHeader.System

CampoTipoObligatorioDescripción
NamestringNombre del sistema
CorrelationIDstringIdentificador de la petición
ProcessingServerstringServidor 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 y servicio

Body

CampoTipoObligatorioDescripción
ADDITIONAL_CHANNELSobjectNoConsulta a plataformas para los canales adicionales
ADDITIONAL_SERVICESobjectNoConsulta a plataformas para los servicios adicionales
PhonestringNoNúmero de conexión
DECOSobjectNoConsulta a plataformas para el estado de las deco
Service_AccountstringNoCuenta de servicio
SUSCRIBER_ID_STATEobjectNoConsulta a plataformas para el estado de suscriber
TechnologystringNoTecnología asociada al servicio

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 ADDITIONAL_CHANNELS

CampoTipoObligatorioDescripción
Execution_DateDateTimeNoFecha de ejecución de la consulta de medios de acceso
SemaphorestringNoSemaforo asociado a la ejecución de la consulta a plataformas
Semaphore_DescriptionstringNoDescripción del semaforo

Estructura de ADDITIONAL_SERVICES

CampoTipoObligatorioDescripción
Execution_DateDateTimeNoFecha de ejecución de la consulta de medios de acceso
SemaphorestringNoSemaforo asociado a la ejecución de la consulta a plataformas
Semaphore_DescriptionstringNoDescripción del semaforo

Estructura de DECOS

CampoTipoObligatorioDescripción
Execution_DateDateTimeNoFecha de ejecución de la consulta de medios de acceso
SemaphorestringNoSemaforo asociado a la ejecución de la consulta a plataformas
Semaphore_DescriptionstringNoDescripción del semaforo

Estructura de SUSCRIBER_ID_STATE

CampoTipoObligatorioDescripción
Execution_DateDateTimeNoFecha de ejecución de la consulta de medios de acceso
SemaphorestringNoSemaforo asociado a la ejecución de la consulta a plataformas
Semaphore_DescriptionstringNoDescripción del semaforo

Manejo de errores

CódigoDescripciónEjemplo
ERROR_04El request es nuloError en la conversión de datos de entrada
ERROR_06No se encontró el servicioEl número de teléfono no está asociado a un servicio
ERROR_07Error al consultar cuenta de servicioError en la consulta de información del servicio
ERROR_08Error al consultar inventarioError en la consulta de inventario del servicio
ERROR_09Error en consulta de inventarioError interno en la consulta de inventario
ERROR_11Error al consultar canales adicionales decodesError en la configuración de canales adicionales
ERROR_12Error en consulta de canales adicionales decodesError interno en la consulta de canales
ERROR_13Error al consultar canales adicionalesError en la consulta de canales adicionales
ERROR_15Error al consultar servicios adicionales decodesError en la configuración de servicios adicionales
ERROR_16Error en consulta de servicios adicionales decodesError interno en la consulta de servicios
ERROR_17Error al consultar servicios adicionalesError en la consulta de servicios adicionales
ERROR_18Error al consultar MACError en la consulta de equipos (MAC)
ERROR_19Error en consulta de plataformasError en la consulta paralela a plataformas
ERROR_20Error en validación de medios de accesoError en la validación de acceso a plataformas

Análisis de Componentes

Modelos y componentes

Modelos base utilizados:

  • BaseRequestValidateTv: Contenedor de la petición
  • BaseResponseValidateTv: Contenedor de la respuesta
  • ValidateTvRequest: Body de la petición
  • ValidateTvResponse: Body de la respuesta
  • ValidateTvItemResponse: Resultado de consulta de plataformas

Utilidades y servicios comunes:

  • Soporte1NUtil: Validaciones específicas de TV
  • ServiceUtil: Consulta de servicios
  • ConfigurationUtil: Configuraciones del sistema
  • AuditUtil: Auditoría de peticiones

Patrones de diseño implementados:

  • Singleton pattern para utilidades
  • Factory pattern para creación de respuestas
  • Strategy pattern para validaciones por tecnología

Componentes reutilizados:

  • BotBaseRequestHeader: Cabecera base de peticiones
  • BotBaseResponseHeader: Cabecera base de respuestas
  • Audit: Modelo de auditoría

Referencias cruzadas:

  • Soporte1NController: Controlador principal
  • Soporte1NBusiness: Lógica de negocio
  • MiETBProxyBusiness: Proxy para MiETB

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.2609072297485403",
      "processingServer": null
    },
    "Property": [
      {
        "name": null,
        "value": null
      }
    ]
  },
  "WSRequestBody": {
    "Phone": "6012450001",
    "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": "11:13:46"
    }
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.2609072297485403",
      "processingServer": null
    },
    "Service": {
      "status": "OK",
      "responseDate": "2025-08-04T11:13:47.0968145Z",
      "processingServer": null,
      "statusDetail": [
        {
          "errorCode": "OK_01",
          "errorDetailCode": "La solicitud fue exitosa",
          "errorMessage": "La solicitud LUZ-0.2609072297485403 fue exitosa",
          "errorMessageUser": null
        }
      ]
    },
    "Property": [
      {
        "name": null,
        "value": null
      },
      {
        "name": null,
        "value": null
      }
    ]
  },
  "WSResponseBody": {
    "ADDITIONAL_CHANNELS": {
      "Execution_Date": "2025-08-04T11:14:14.4876376Z",
      "Semaphore": "Green",
      "Semaphore_Description": "Los canales adicionales encontrados en plataforma son los mismos configurados en MSS"
    },
    "ADDITIONAL_SERVICES": {
      "Execution_Date": "2025-08-04T11:14:14.8938883Z",
      "Semaphore": "Red",
      "Semaphore_Description": "Los servicios adicionales encontrados en plataforma no son los mismos configurados en MSS. Se debe normalizar"
    },
    "Phone": "6012450001",
    "DECOS": {
      "Execution_Date": "2025-08-04T11:14:18.4407868Z",
      "Semaphore": "Green",
      "Semaphore_Description": "Los MACs encontrados en plataforma son los mismos configurados en MSS"
    },
    "Service_Account": "CS-905967",
    "SUSCRIBER_ID_STATE": {
      "Execution_Date": "2025-08-04T11:14:14.0813833Z",
      "Semaphore": "Green",
      "Semaphore_Description": "El estado en la plataforma es 1 y en MSS es 1. No requiere normalización"
    },
    "Technology": "FTTH"
  }
}

Respuesta de error

json
{
  "WSResponseHeader": {
    "System": {
      "Name": "SistemaCliente",
      "CorrelationID": "123456789",
      "ProcessingServer": "Server01"
    },
    "Service": {
      "Status": "ERROR",
      "ResponseDate": "2024-12-19T10:30:00",
      "ProcessingServer": "Server01",
      "StatusDetail": [
        {
          "ErrorCode": "ERROR_06",
          "ErrorDetailCode": "No se encontró el servicio",
          "ErrorMessage": "El número de teléfono no está asociado a un servicio activo",
          "ErrorMessageUser": "No se encontró información del servicio"
        }
      ]
    }
  },
  "WSResponseBody": null
}

Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[Soporte1NController]
  B --> C[Soporte1NBusiness.ValidateTv_v1]
  C --> D[Validación de entrada]
  D --> E[Consulta de servicio]
  E --> F[Validación de tecnología]
  F --> G[Soporte1NUtil.Validate_TV]
  G --> H[Consulta paralela a plataformas]
  H --> I[Respuesta consolidada]
  I --> J[Auditoría y respuesta]

3.2 Arquitectura de clases

mermaid
classDiagram
  class Soporte1NController {
    +ValidateTV_v1(BaseRequestValidateTv)
  }
  class Soporte1NBusiness {
    +ValidateTv_v1(BaseRequest, string)
  }
  class Soporte1NUtil {
    +Validate_TV(RequestModel, string, ConfigurationModel)
  }
  class ServiceUtil {
    +GetServiceAccount(string)
    +GetTechnology(string)
  }
  Soporte1NController --> Soporte1NBusiness
  Soporte1NBusiness --> Soporte1NUtil
  Soporte1NBusiness --> ServiceUtil

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant Controller
  participant Business
  participant Util
  participant ServiceUtil
  participant Plataformas
  Cliente->>Controller: POST /api/soporte1n/v1/validatetv
  Controller->>Business: ValidateTv_v1()
  Business->>Business: Validación de entrada
  Business->>ServiceUtil: GetServiceAccount()
  Business->>ServiceUtil: GetTechnology()
  Business->>Util: Validate_TV()
  Util->>Plataformas: Consulta paralela
  Plataformas-->>Util: Respuestas
  Util-->>Business: ValidateTvResponse
  Business-->>Controller: BaseResponseValidateTv
  Controller-->>Cliente: Respuesta JSON

Evaluación TM Forum

Categorización TM Forum

Categoría TM Forum sugerida: Service Management

TMF_ID correspondiente: TMF640 - Service Management

Justificación de la selección: El servicio ValidateTV se alinea con la categoría Service Management de TM Forum ya que realiza validaciones del estado de servicios de televisión, incluyendo canales adicionales, servicios adicionales, decodificadores y estado del subscriptor. Según la documentación TMF640, esta categoría incluye operaciones de monitoreo y validación del estado de servicios, que es exactamente lo que realiza este endpoint. El servicio consulta múltiples plataformas para validar la integridad y estado de los servicios de TV, lo cual corresponde a las funcionalidades de Service Management definidas en el framework TM Forum.


Políticas y Consideraciones

Políticas de seguridad

Mecanismos de autenticación y autorización:

  • Validación de headers de sistema obligatorios
  • Verificación de origen de la petición
  • Control de acceso por canal y sistema

Validaciones de seguridad implementadas:

  • Validación de CorrelationID único
  • Verificación de IP de origen
  • Auditoría completa de peticiones y respuestas

Límites de tasa (rate limits):

  • Control por sistema origen
  • Validación de frecuencia de peticiones por usuario

SLAs aplicables:

  • Tiempo de respuesta máximo: 30 segundos
  • Disponibilidad: 99.9%

Recomendaciones y mejores prácticas

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

  1. El servicio está marcado como obsoleto, se recomienda migrar a /api/soporte1n/v2/normalizetv
  2. Implementar cache para consultas frecuentes de inventario
  3. Optimizar consultas paralelas a plataformas

Optimizaciones posibles:

  1. Implementar circuit breaker para consultas a plataformas externas
  2. Agregar métricas de performance por plataforma
  3. Implementar retry automático para consultas fallidas

Consideraciones de mantenimiento importantes:

  1. Monitorear el estado de las plataformas externas
  2. Mantener actualizada la configuración de filtros de canales y servicios
  3. Revisar periódicamente los códigos de error y mensajes

Sugerencias de seguridad aplicables:

  1. Implementar rate limiting más granular
  2. Agregar validación de tokens JWT
  3. Implementar logging de auditoría más detallado
  4. Considerar encriptación de datos sensibles en tránsito