4 endpointsGET · 2PUT · 1DELETE · 1 GET/dashboardDiseño de la persona: alcance (general o personal), si lo personalizó y cada widget con sus topes, su lugar y si está visible
Cabeceras de la petición
| Cabecera | Valor | Para qué |
|---|
Authorization | Bearer trazo_… | Token de sesión que entrega el ingreso |
Accept | application/json | La API siempre responde JSON (o un archivo, en la exportación) |
Respuesta 200
| Campo | Tipo |
|---|
data | objeto |
data.scope | "general" | "personal" |
data.customized | sí/no |
data.columns | entero |
data.widgets | lista de objeto |
{
"data": {
"scope": "general",
"customized": true,
"columns": 1,
"widgets": [
"texto"
]
}
}
| Cabecera de la respuesta | Para qué |
|---|
X-Request-Id | Identificador de la petición; es el trace_id de los errores |
Errores posibles
- 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.
Ver el módulo en la bibliotecaGET/dashboard/metricsDatos de los widgets pedidos. trend_days admite 7, 30 o 90. meta.generated_at dice cuándo se calculó el dato más antiguo
Cabeceras de la petición
| Cabecera | Valor | Para qué |
|---|
Authorization | Bearer trazo_… | Token de sesión que entrega el ingreso |
Accept | application/json | La API siempre responde JSON (o un archivo, en la exportación) |
Parámetros
| Nombre | Dónde | Tipo | Obligatorio |
|---|
widgets[] | Consulta | lista de objeto | No |
trend_days | Consulta | "7" | "30" | "90" | No |
Respuesta 200
| Campo | Tipo |
|---|
data | texto |
meta | objeto |
meta.generated_at | texto |
{
"data": "texto",
"meta": {
"generated_at": "2026-11-01T14:30:00Z"
}
}
| Cabecera de la respuesta | Para qué |
|---|
X-Request-Id | Identificador de la petición; es el trace_id de los errores |
Errores posibles
- 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
- 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)
Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.
Ver el módulo en la bibliotecaPUT/dashboard/layoutGuarda el diseño completo: widgets: [{code, x, y, w, h, visible}]
Cabeceras de la petición
| Cabecera | Valor | Para qué |
|---|
Authorization | Bearer trazo_… | Token de sesión que entrega el ingreso |
Accept | application/json | La API siempre responde JSON (o un archivo, en la exportación) |
Content-Type | application/json | Cuerpo en JSON |
X-Socket-ID | opcional | Para no recibir en tiempo real el aviso de tu propio cambio |
Cuerpo
| Campo | Tipo | Obligatorio |
|---|
widgets | lista de objeto | Sí |
widgets[].code | "operation_pulse" | "risk_map" | "status_flow" | "backlog_balance" | "total_incidents" | "pending_incidents" | "overdue_incidents" | "unassigned_incidents" | "incidents_by_status" | "incidents_by_priority" | "created_vs_resolved" | "due_soon" | "assigned_to_me" | "workload_by_agent" | Sí |
widgets[].x | entero · ≥ 0 · ≤ 11 | Sí |
widgets[].y | entero · ≥ 0 · ≤ 200 | Sí |
widgets[].w | entero · ≥ 1 · ≤ 12 | Sí |
widgets[].h | entero · ≥ 1 · ≤ 50 | Sí |
widgets[].visible | sí/no | Sí |
{
"widgets": [
{
"code": "operation_pulse",
"x": 0,
"y": 0,
"w": 1,
"h": 1,
"visible": true
}
]
}
Respuesta 200
| Campo | Tipo |
|---|
data | objeto |
data.scope | "general" | "personal" |
data.customized | sí/no |
data.columns | entero |
data.widgets | lista de objeto |
{
"data": {
"scope": "general",
"customized": true,
"columns": 1,
"widgets": [
"texto"
]
}
}
| Cabecera de la respuesta | Para qué |
|---|
X-Request-Id | Identificador de la petición; es el trace_id de los errores |
Errores posibles
- 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
- 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)
Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.
Ver el módulo en la bibliotecaDELETE/dashboard/layoutVuelve al diseño original (borra lo guardado)
Cabeceras de la petición
| Cabecera | Valor | Para qué |
|---|
Authorization | Bearer trazo_… | Token de sesión que entrega el ingreso |
Accept | application/json | La API siempre responde JSON (o un archivo, en la exportación) |
X-Socket-ID | opcional | Para no recibir en tiempo real el aviso de tu propio cambio |
Respuesta 200
| Campo | Tipo |
|---|
data | objeto |
data.scope | "general" | "personal" |
data.customized | sí/no |
data.columns | entero |
data.widgets | lista de objeto |
{
"data": {
"scope": "general",
"customized": true,
"columns": 1,
"widgets": [
"texto"
]
}
}
| Cabecera de la respuesta | Para qué |
|---|
X-Request-Id | Identificador de la petición; es el trace_id de los errores |
Errores posibles
- 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.
Ver el módulo en la biblioteca