Service Desk
El Service Desk centraliza la gestión de tickets de soporte, políticas SLA y base de conocimiento.
Tickets
Ciclo de vida
open → in_progress → resolved → closed
↘ escalated
↘ reopened
Listar tickets
GET /admin/crm/tickets
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
status | string | Estado del ticket |
priority | string | low, medium, high, urgent |
source | string | Origen del ticket |
assigned_to | uuid | Agente asignado |
q | string | Búsqueda |
Crear ticket
POST /admin/crm/tickets
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
subject | sí | string | Asunto |
description | no | string | Descripción detallada |
priority | no | string | low, medium (default), high, urgent |
source | no | string | manual, email, whatsapp, web_form, api, order_issue |
contact_name | no | string | Nombre del contacto |
contact_email | no | string | Email del contacto |
contact_phone | no | string | Teléfono del contacto |
order_number | no | string | Orden relacionada |
tags | no | []string | Tags |
assigned_to | no | uuid | Agente asignado |
Detalle de ticket
GET /admin/crm/tickets/:id
Acciones sobre tickets
| Acción | Método | Endpoint |
|---|---|---|
| Resolver | POST | /admin/crm/tickets/:id/resolve |
| Cerrar | POST | /admin/crm/tickets/:id/close |
| Reabrir | POST | /admin/crm/tickets/:id/reopen |
| Escalar | POST | /admin/crm/tickets/:id/escalate |
| Cambiar estado | POST | /admin/crm/tickets/:id/status |
| Agregar comentario | POST | /admin/crm/tickets/:id/comments |
Políticas SLA
Las políticas SLA definen tiempos de respuesta y resolución por prioridad.
Modelo SLA
{
"id": "uuid",
"name": "SLA Premium",
"is_default": false,
"business_hours_only": true,
"business_hours_tz": "America/Lima",
"business_hours_start": "09:00",
"business_hours_end": "18:00",
"business_days": [1, 2, 3, 4, 5],
"targets": [
{"priority": "urgent", "response_minutes": 15, "resolution_minutes": 120},
{"priority": "high", "response_minutes": 60, "resolution_minutes": 480},
{"priority": "medium", "response_minutes": 240, "resolution_minutes": 1440},
{"priority": "low", "response_minutes": 480, "resolution_minutes": 2880}
],
"active": true
}
Listar políticas
GET /admin/crm/settings/sla
Crear política
POST /admin/crm/settings/sla
Actualizar política
POST /admin/crm/settings/sla/:id
Eliminar política
DELETE /admin/crm/settings/sla/:id
Base de Conocimiento
Artículos (Admin)
| Acción | Método | Endpoint |
|---|---|---|
| Listar | GET | /admin/crm/kb |
| Nuevo editor | GET | /admin/crm/kb/articles/new |
| Editar | GET | /admin/crm/kb/articles/:id/edit |
| Crear | POST | /admin/crm/kb/articles |
| Actualizar | POST | /admin/crm/kb/articles/:id |
| Publicar | POST | /admin/crm/kb/articles/:id/publish |
| Archivar | POST | /admin/crm/kb/articles/:id/archive |
| Eliminar | DELETE | /admin/crm/kb/articles/:id |
Crear/actualizar artículo:
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
title | sí | string | Título |
slug | no | string | URL-friendly |
excerpt | no | string | Extracto |
body_markdown | sí | string | Contenido en Markdown |
status | no | string | draft, published, archived |
locale | no | string | Idioma (ej: es-PE) |
category_id | no | uuid | Categoría |
tags | no | []string | Tags |
author_name | no | string | Nombre del autor |
Categorías (Admin)
| Acción | Método | Endpoint |
|---|---|---|
| Listar | GET | /admin/crm/kb/categories |
| Crear | POST | /admin/crm/kb/categories |
| Actualizar | POST | /admin/crm/kb/categories/:id |
| Eliminar | DELETE | /admin/crm/kb/categories/:id |
Portal público
| Endpoint | Descripción |
|---|---|
GET /help/:tid | Home de la base de conocimiento |
GET /help/:tid/a/:slug | Artículo público |
POST /help/:tid/a/:slug/vote | Votar útil/no útil |