200 lines
3.8 KiB
Markdown
200 lines
3.8 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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)
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```json
|
|
{
|
|
"status": "error",
|
|
"message": "Parámetros requeridos faltantes: project, task, start_date, end_date",
|
|
"code": 400
|
|
}
|
|
```
|
|
|
|
##### 404 Not Found - Proyecto/Reporte No Encontrado
|
|
|
|
```json
|
|
{
|
|
"status": "error",
|
|
"message": "Proyecto 'invalid' no encontrado. Proyectos disponibles: pg, feduro",
|
|
"code": 404
|
|
}
|
|
```
|
|
|
|
##### 500 Internal Server Error
|
|
|
|
```json
|
|
{
|
|
"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 Group
|
|
- `feduro`: Proyecto FEDURO
|
|
- `corripio`: 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
|
|
|
|
```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
|
|
|
|
```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 |