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:
- Validación de entrada y conversión de datos
- Obtención del origen de la petición
- Verificación del estado de la API (encendido/apagado)
- Consulta del servicio por número de teléfono
- Validación de tecnología del servicio
- Validación de medios de acceso a plataformas
- Consulta paralela a múltiples plataformas de TV
- Registro de verificación de eventos
- 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
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| WSRequestHeader | object | Sí | Cabecera de la petición con información del sistema |
Body
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Audit | object | No | Auditoría de la aplicación |
| Phone | string | Sí | Número de conexión |
Estructura de objetos anidados:
Estructura de WSRequestHeader
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| System | object | Sí | Información asociada al sistema |
| Property | array | No | Propiedades asociadas al consumo del servicio web |
Estructura de WSRequestHeader.System
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Name | string | Sí | Nombre del sistema |
| CorrelationID | string | Sí | Identificador de la petición |
| ProcessingServer | string | Sí | Servidor de procesamiento del sistema |
Estructura de WSRequestHeader.Property
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Name | string | Sí | Nombre de la propiedad |
| Value | string | Sí | Valor de la propiedad |
Estructura de Audit
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Canal | string | No | Canal sobre el cual se hizo la petición |
| Id_Device | string | No | Identificador del dispositivo móvil |
| SO | string | No | Sistema operativo del dispositivo |
| IP_Address | string | No | Dirección IP desde donde se realiza la petición |
| WhatsApp_Phone_Number | string | No | Número de Whatsapp desde donde se realiza la petición |
Respuesta esperada (Response)
Headers
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| WSResponseHeader | object | Sí | Cabecera de la respuesta con información del sistema y servicio |
Body
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| ADDITIONAL_CHANNELS | object | No | Consulta a plataformas para los canales adicionales |
| ADDITIONAL_SERVICES | object | No | Consulta a plataformas para los servicios adicionales |
| Phone | string | No | Número de conexión |
| DECOS | object | No | Consulta a plataformas para el estado de las deco |
| Service_Account | string | No | Cuenta de servicio |
| SUSCRIBER_ID_STATE | object | No | Consulta a plataformas para el estado de suscriber |
| Technology | string | No | Tecnología asociada al servicio |
Estructura de objetos anidados:
Estructura de WSResponseHeader
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| System | object | No | Información asociada al sistema |
| Service | object | No | Información asociada a la ejecución del servicio |
| Property | array | No | Arreglo de propiedades asociado al servicio |
Estructura de WSResponseHeader.System
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Name | string | No | Nombre del sistema |
| CorrelationID | string | No | Identificador de la petición |
| ProcessingServer | string | No | Servidor de procesamiento del sistema |
Estructura de WSResponseHeader.Service
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Status | string | No | Estado de la ejecución del servicio web |
| ResponseDate | DateTime | No | Fecha de la respuesta |
| ProcessingServer | string | No | Servidor de procesamiento de la solicitud |
| StatusDetail | array | No | Detalle del procesamiento de la solicitud |
Estructura de WSResponseHeader.Property
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Name | string | No | Nombre de la propiedad |
| Value | string | No | Valor de la propiedad |
Estructura de ADDITIONAL_CHANNELS
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Execution_Date | DateTime | No | Fecha de ejecución de la consulta de medios de acceso |
| Semaphore | string | No | Semaforo asociado a la ejecución de la consulta a plataformas |
| Semaphore_Description | string | No | Descripción del semaforo |
Estructura de ADDITIONAL_SERVICES
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Execution_Date | DateTime | No | Fecha de ejecución de la consulta de medios de acceso |
| Semaphore | string | No | Semaforo asociado a la ejecución de la consulta a plataformas |
| Semaphore_Description | string | No | Descripción del semaforo |
Estructura de DECOS
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Execution_Date | DateTime | No | Fecha de ejecución de la consulta de medios de acceso |
| Semaphore | string | No | Semaforo asociado a la ejecución de la consulta a plataformas |
| Semaphore_Description | string | No | Descripción del semaforo |
Estructura de SUSCRIBER_ID_STATE
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Execution_Date | DateTime | No | Fecha de ejecución de la consulta de medios de acceso |
| Semaphore | string | No | Semaforo asociado a la ejecución de la consulta a plataformas |
| Semaphore_Description | string | No | Descripción del semaforo |
Manejo de errores
| Código | Descripción | Ejemplo |
|---|---|---|
| ERROR_04 | El request es nulo | Error en la conversión de datos de entrada |
| ERROR_06 | No se encontró el servicio | El número de teléfono no está asociado a un servicio |
| ERROR_07 | Error al consultar cuenta de servicio | Error en la consulta de información del servicio |
| ERROR_08 | Error al consultar inventario | Error en la consulta de inventario del servicio |
| ERROR_09 | Error en consulta de inventario | Error interno en la consulta de inventario |
| ERROR_11 | Error al consultar canales adicionales decodes | Error en la configuración de canales adicionales |
| ERROR_12 | Error en consulta de canales adicionales decodes | Error interno en la consulta de canales |
| ERROR_13 | Error al consultar canales adicionales | Error en la consulta de canales adicionales |
| ERROR_15 | Error al consultar servicios adicionales decodes | Error en la configuración de servicios adicionales |
| ERROR_16 | Error en consulta de servicios adicionales decodes | Error interno en la consulta de servicios |
| ERROR_17 | Error al consultar servicios adicionales | Error en la consulta de servicios adicionales |
| ERROR_18 | Error al consultar MAC | Error en la consulta de equipos (MAC) |
| ERROR_19 | Error en consulta de plataformas | Error en la consulta paralela a plataformas |
| ERROR_20 | Error en validación de medios de acceso | Error 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)
{
"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
{
"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
{
"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
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
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 --> ServiceUtil3.3 Secuencia de ejecución
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 JSONEvaluació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:
- El servicio está marcado como obsoleto, se recomienda migrar a /api/soporte1n/v2/normalizetv
- Implementar cache para consultas frecuentes de inventario
- Optimizar consultas paralelas a plataformas
Optimizaciones posibles:
- Implementar circuit breaker para consultas a plataformas externas
- Agregar métricas de performance por plataforma
- Implementar retry automático para consultas fallidas
Consideraciones de mantenimiento importantes:
- Monitorear el estado de las plataformas externas
- Mantener actualizada la configuración de filtros de canales y servicios
- Revisar periódicamente los códigos de error y mensajes
Sugerencias de seguridad aplicables:
- Implementar rate limiting más granular
- Agregar validación de tokens JWT
- Implementar logging de auditoría más detallado
- Considerar encriptación de datos sensibles en tránsito