Manual de Usuario - API de Reportes de Clipping
Bienvenido a la documentación oficial. Esta API le permite acceder a reportes detallados de monitoreo de medios de comunicación de forma programática e integrarlos directamente en sus sistemas.
https://clp.diuniversalcheck.net
🔐 Requisitos Previos
1. Obtener Credenciales
Contacte al equipo de soporte para iniciar el proceso:
- 📧 Email: soporte.clientes@diuniversalcheck.net
- 📞 Teléfono: +593 98 494 8766
El equipo de soporte le proporcionará:
- ID de Usuario (Ejemplo:
123) - Token de Empresa (Ejemplo:
ABC123XYZ456)
2. Herramientas Recomendadas
Para probar la API durante el desarrollo, recomendamos:
- Postman (Recomendado para principiantes)
- Insomnia
- cURL (Línea de comandos)
🔑 Autenticación (JWT)
La API utiliza JSON Web Tokens (JWT) para asegurar las peticiones. El proceso consta de dos pasos:
Paso 1: Obtener Token JWT
Intercambie sus credenciales permanentes por un token de acceso temporal.
Request Body (JSON)
{
"idUsuario": 123,
"token": "ABC123XYZ456"
}
Respuesta Exitosa (200 OK)
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1laWQiOiIxMjMi...",
"expiration": "2025-11-20T16:45:00",
"idUsuario": 123,
"codigoEmpresa": 5
}
Paso 2: Usar el Token en Peticiones
Todas las peticiones a los endpoints de reportes deben incluir el token obtenido en el header Authorization.
Formato del Header:
Authorization: Bearer {pegar_token_aqui}
Ejemplo:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
📡 Endpoints Disponibles
El recurso principal es el Reporte General. Puede acceder a él mediante POST (para consultas que requieran un cuerpo más complejo en el futuro).
2. Obtener Reporte de Clipping (POST)
Alternativa al GET. Los parámetros se envían en el cuerpo de la petición en formato JSON.
Request Body (JSON)
{
"pFechaInicial": "2025-11-20",
"pFechaFinal": "2025-11-20",
"pTipoMedio": "1,2,3"
}
📊 Parámetros y Valores Referenciales
Formato de Fechas
El formato requerido para todas las fechas es YYYY-MM-DD (ISO 8601).
Tipos de Medio (pTipoMedio)
Utilice los siguientes IDs para filtrar por tipo de medio. Puede combinar varios separándolos por comas (ej: 1,3).
| Valor (ID) | Descripción |
|---|---|
'1' | Televisión |
'2' | Radio |
'3' | Prensa Escrita |
'4' | Digital/Web |
| Vacío/Null | Todos los medios (Default) |
Validaciones y Reglas de Negocio
- ✅ Rango Máximo: El periodo entre fecha inicial y final no puede exceder los 7 días.
- ✅ Lógica de Fechas: La fecha inicial no puede ser posterior a la fecha final.
💻 Ejemplos de Integración
A continuación, se presentan ejemplos prácticos en los lenguajes de programación más comunes.
ABC123XYZ456 y {pegar_token_aqui} con sus credenciales reales.
cURL (Terminal)
1. Login y obtención del token
curl -X POST https://clp.diuniversalcheck.net/api/Auth/login \
-H "Content-Type: application/json" \
-d '{
"idUsuario": 123,
"token": "ABC123XYZ456"
}'
2. Obtener Reporte (Usando el token obtenido)
curl -X GET "https://clp.diuniversalcheck.net/api/v1/Reporte/reporte-general?pFechaInicial=2025-11-20&pFechaFinal=2025-11-20&pTipoMedio=1" \
-H "Authorization: Bearer {pegar_token_aqui}"
JavaScript / Node.js (Fetch API)
// 1. Función para hacer Login
async function login() {
const response = await fetch('https://clp.diuniversalcheck.net/api/Auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
idUsuario: 123,
token: 'ABC123XYZ456' // SUS CREDENCIALES
})
});
const data = await response.json();
return data.token;
}
// 2. Función para Obtener Reporte
async function obtenerReporte(jwtToken) {
const params = new URLSearchParams({
pFechaInicial: '2025-11-20',
pFechaFinal: '2025-11-20',
pTipoMedio: '1'
});
const response = await fetch(
`https://clp.diuniversalcheck.net/api/v1/Reporte/reporte-general?${params}`,
{
headers: {
'Authorization': `Bearer ${jwtToken}` // Inyectar el token
}
}
);
return await response.json();
}
// Uso del flujo
const token = await login();
const reportes = await obtenerReporte(token);
console.log(reportes);
Python (Requests)
import requests
# 1. Login
def login():
url = 'https://clp.diuniversalcheck.net/api/Auth/login'
data = { 'idUsuario': 123, 'token': 'ABC123XYZ456' }
response = requests.post(url, json=data)
return response.json()['token']
# 2. Obtener Reporte
def obtener_reporte(jwt_token):
url = 'https://clp.diuniversalcheck.net/api/v1/Reporte/reporte-general'
headers = { 'Authorization': f'Bearer {jwt_token}' }
params = {
'pFechaInicial': '2025-11-20',
'pFechaFinal': '2025-11-20',
'pTipoMedio': '1'
}
response = requests.get(url, headers=headers, params=params)
return response.json()
# Uso
token = login()
print(f"Token obtenido: {token[:20]}...")
reportes = obtener_reporte(token)
print(reportes)
(Nota: Se han omitido los ejemplos de C# y PHP por brevedad en esta vista, pero deberían seguir la misma estructura visual en la implementación final).
📋 Códigos de Respuesta HTTP
✅ Respuestas Exitosas
200 OK: La petición fue procesada correctamente. Devuelve un array JSON con los reportes.
[
{
"id": 1,
"fecha": "2025-11-20T10:30:00",
"medio": "Canal 1",
"tipoMedio": "Televisión",
"titulo": "Noticia de ejemplo",
"contenido": "Resumen de la noticia...",
"url": "https://ejemplo.com/noticia",
...
}
]
❌ Respuestas de Error
| Código | Descripción | Causa Común |
|---|---|---|
400 Bad Request |
Parámetros inválidos. | Formato de fecha erróneo, rango de fechas > 90 días, o fecha inicial > final. |
401 Unauthorized |
No autenticado. | Token JWT faltante, inválido, o expirado (más de 60 min). |
429 Too Many Requests |
Límite excedido. | Ha superado el límite de peticiones por minuto permitido. |
500 Internal Server Error |
Error del servidor. | Problema inesperado en el backend. Contacte a soporte. |
⚠️ Límites y Restricciones (Rate Limiting)
Para asegurar la estabilidad del servicio, la API implementa límites de uso estrictos.
Límite: 3 peticiones por minuto
Cada usuario puede realizar un máximo de 3 peticiones a los endpoints de reportes en una ventana móvil de 60 segundos.
¿Qué pasa si excedo el límite?
Recibirá una respuesta 429 Too Many Requests. El cuerpo de la respuesta indicará cuánto tiempo debe esperar.
{
"error": "Límite de peticiones excedido",
"message": "Has superado el límite. Intenta nuevamente en 45 segundos.",
"retryAfter": 45
}
retryAfter.
🔧 Solución de Problemas Comunes
Recibo constantemente "401 Unauthorized"
El token JWT expira cada 60 minutos. Asegúrese de que su código solicite un nuevo token al endpoint /api/Auth/login si recibe un 401, o preventivamente cada 55 minutos.
Error "SSL certificate problem" en desarrollo local
Esto ocurre si su entorno local no confía en el certificado SSL de la API. En entornos de desarrollo solamente, puede deshabilitar temporalmente la verificación SSL en su cliente HTTP (ej. en Postman: Settings → OFF "SSL certificate verification"). ⚠️ Nunca haga esto en producción.
Error 400 en las fechas
Verifique que está enviando el formato exacto YYYY-MM-DD (ej. 2025-01-30) y no otros formatos como DD/MM/YYYY.
📞 Soporte y Preguntas Frecuentes
FAQ Rápido
¿Puedo compartir mi token o credenciales con otros desarrolladores?
No. Cada usuario debe tener sus propias credenciales. El uso compartido puede llevar a bloqueos de cuenta por exceder los límites de velocidad combinados.
¿Puedo consultar más de 90 días de datos?
No en una sola petición. Si necesita un rango mayor, su aplicación debe realizar múltiples peticiones dividiendo el rango en bloques de 90 días.