C
Cotizera Docs

Dashboard

API de Dashboard

Un solo endpoint que devuelve todos los datos analíticos para la vista del dashboard, incluyendo KPIs con comparación de tendencia, datos para gráficas y desgloses de actividad.


Obtener Datos del Dashboard

GET /api/dashboard

Permiso: dashboard:view

Devuelve analíticas completas del tenant actual dentro de un período de tiempo determinado. Incluye comparación con el período equivalente anterior para el cálculo de tendencias.

Query Parameters:

Parameter Type Required Description
period string No day, week o month (por defecto: month)
from string No Fecha de inicio personalizada (ISO 8601). Sobrescribe period.
to string No Fecha de fin personalizada (ISO 8601). Por defecto es el momento actual.

Response 200 OK:

{
  "data": {
    "kpis": {
      "generated": { "value": 25, "trend": 12 },
      "won": { "value": 8, "rate": 32, "trend": -5 },
      "lost": { "value": 3, "rate": 12, "trend": 0 },
      "clients": { "value": 145, "newInPeriod": 7, "trend": 40 }
    },
    "amounts": {
      "quoted": 485000,
      "won": 195000,
      "prevQuoted": 420000
    },
    "chartData": [
      { "date": "2026-03-01", "generated": 3, "won": 1, "amount": 45000 },
      { "date": "2026-03-02", "generated": 1, "won": 0, "amount": 12000 }
    ],
    "statusDistribution": [
      { "name": "Generadas", "value": 10, "color": "#6366f1" },
      { "name": "Enviadas", "value": 8, "color": "#3b82f6" },
      { "name": "Ganadas", "value": 5, "color": "#10b981" },
      { "name": "Perdidas", "value": 2, "color": "#ef4444" }
    ],
    "recentQuotes": [
      {
        "id": "clxyz...",
        "quoteNumber": 42,
        "status": "SENT",
        "total": 17900,
        "createdAt": "2026-03-31T10:00:00.000Z",
        "clientName": "María López",
        "companyName": "Distribuidora del Norte S.A."
      }
    ],
    "topClients": [
      { "name": "María López", "company": "Distribuidora del Norte S.A.", "count": 5, "total": 89500 }
    ],
    "collaboratorActivity": [
      {
        "userId": "clxyz...",
        "name": "Carlos Méndez",
        "generated": 12,
        "won": 4,
        "lost": 1,
        "amount": 245000
      }
    ],
    "period": {
      "from": "2026-03-01T00:00:00.000Z",
      "to": "2026-03-31T18:30:00.000Z",
      "label": "month"
    }
  }
}

Campos de la respuesta:

Campo Descripción
kpis.generated Total de cotizaciones creadas en el período con tendencia % respecto al período anterior
kpis.won Cotizaciones ganadas con tasa de conversión y tendencia
kpis.lost Cotizaciones perdidas con tasa de pérdida y tendencia
kpis.clients Total de clientes (histórico), nuevos en el período y tendencia de nuevos
amounts Monto total cotizado, monto ganado y monto cotizado del período anterior
chartData Desglose diario de cotizaciones para gráficas de series de tiempo
statusDistribution Conteo por estado con colores para gráficas de dona/pastel (excluye estados con conteo cero)
recentQuotes Últimas 7 cotizaciones del período
topClients Top 5 clientes por monto cotizado en el período
collaboratorActivity Desglose por usuario (solo propietario/administrador; array vacío para colaboradores)

Errores:

Status Error Cuándo
401 "No autorizado" Sesión ausente o inválida
403 "Sin permisos" El rol no tiene dashboard:view

Ejemplo con cURL:

curl -X GET "https://cotizera.com/api/dashboard?period=month" \
  -H "Cookie: next-auth.session-token=YOUR_TOKEN"
© 2026 Cotizera. All rights reserved.