3.8 KiB
3.8 KiB
API Reference
Descripción General
DataTransferV2 incluye una API REST construida con Flask para consultar y descargar datos de reportes.
Base URL
http://localhost:5000/api
Endpoints
GET /download
Descarga datos de un reporte específico en formato JSON.
Parámetros de Query
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| project | string | Sí | Nombre del proyecto (pg, feduro) |
| task | string | Sí | Nombre del reporte |
| start_date | string | Sí | Fecha inicio (YYYY-MM-DD) |
| end_date | string | Sí | Fecha fin (YYYY-MM-DD) |
Ejemplos de Uso
# Cobertura PG
curl "http://localhost:5000/api/download?project=pg&task=Cobertura&start_date=2024-01-01&end_date=2024-01-31"
# QualityDisplay FEDURO
curl "http://localhost:5000/api/download?project=feduro&task=QualityDisplay&start_date=2024-01-15&end_date=2024-01-15"
Respuesta Exitosa (200)
{
"status": "success",
"project": "pg",
"task": "Cobertura",
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"data": [
{
"fecha": "2024-01-01",
"tienda": "001",
"categoria": "A",
"ventas": 1500.50,
"unidades": 25
},
{
"fecha": "2024-01-02",
"tienda": "001",
"categoria": "B",
"ventas": 2100.75,
"unidades": 35
}
],
"count": 62,
"execution_time": "2.34s"
}
Respuestas de Error
400 Bad Request - Parámetros Inválidos
{
"status": "error",
"message": "Parámetros requeridos faltantes: project, task, start_date, end_date",
"code": 400
}
404 Not Found - Proyecto/Reporte No Encontrado
{
"status": "error",
"message": "Proyecto 'invalid' no encontrado. Proyectos disponibles: pg, feduro",
"code": 404
}
500 Internal Server Error
{
"status": "error",
"message": "Error de conexión a base de datos",
"code": 500
}
Autenticación
Actualmente no requiere autenticación. Para producción, considera implementar:
- Bearer Token:
Authorization: Bearer <token> - API Key:
X-API-Key: <key>
Rate Limiting
No implementado actualmente. Recomendado para producción.
Formatos de Datos
Fechas
- Formato:
YYYY-MM-DD - Validación: Fechas válidas, start_date <= end_date
Nombres de Proyecto
pg: Pentagono Groupfeduro: Proyecto FEDUROcorripio: Proyecto Corripio (deshabilitado)
Nombres de Reportes
PG (16 reportes)
- Cobertura
- Negociadas
- Promociones
- QualityDisplay
- Checkout
- QualityShelf
- SOS
- OsaAnalogo
- OsaFotografico
- Fmot
- ModuloTareas
- NegociadasIS001
FEDURO (18 reportes)
- Cobertura
- Checkout
- OsaAnalogo
- OsaFotografico
- Promociones
- QualityDisplay
- QualityShelf
- SOS
- Fmot
- ModuloTareas
- NegociadasIS001
Limitaciones
- Máximo de registros: No limitado (considera paginación)
- Timeout: 30 segundos por defecto
- Formato de respuesta: Solo JSON (considera CSV/XML)
Ejemplos de Integración
Python
import requests
url = "http://localhost:5000/api/download"
params = {
"project": "pg",
"task": "Cobertura",
"start_date": "2024-01-01",
"end_date": "2024-01-31"
}
response = requests.get(url, params=params)
data = response.json()
if data["status"] == "success":
print(f"Obtenidos {data['count']} registros")
# Procesar data["data"]
JavaScript
fetch('http://localhost:5000/api/download?project=pg&task=Cobertura&start_date=2024-01-01&end_date=2024-01-31')
.then(response => response.json())
.then(data => {
if (data.status === 'success') {
console.log(`Datos obtenidos: ${data.count} registros`);
// Procesar data.data
}
});
Monitoreo
Los requests a la API se registran en Logs/api.log con:
- Timestamp
- Endpoint
- Parámetros
- Tiempo de respuesta
- Código de estado