Files
2026-05-09 14:00:04 -04:00

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 Nombre del proyecto (pg, feduro)
task string Nombre del reporte
start_date string Fecha inicio (YYYY-MM-DD)
end_date string 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 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

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