REST API

AutoService expone una API REST completa para integrar con tus sistemas existentes. Todas las operaciones disponibles en la interfaz web también están disponibles vía API.

Autenticación

La API usa tokens Bearer para autenticación:

curl https://tu-empresa.autoservice.pe/api/v1/tickets \
  -H "Authorization: Bearer TU_API_TOKEN"

Obtener un token

Panel Admin → Configuración → API → Generar Token

Tipos de token:

  • Personal — Acceso con los permisos del usuario
  • Servicio — Para integraciones sistema-a-sistema

Seguridad: Nunca expongas tokens en código frontend. Úsalos solo en backend o scripts seguros.

URL base

https://tu-empresa.autoservice.pe/api/v1

Endpoints principales

Tickets

MétodoEndpointDescripción
GET/ticketsListar tickets
POST/ticketsCrear ticket
GET/tickets/:idObtener ticket
PUT/tickets/:idActualizar ticket
DELETE/tickets/:idEliminar ticket
POST/tickets/:id/replyResponder ticket
POST/tickets/:id/noteAgregar nota interna
PUT/tickets/:id/assignReasignar ticket
PUT/tickets/:id/closeCerrar ticket

Ejemplo: Crear ticket

curl -X POST https://tu-empresa.autoservice.pe/api/v1/tickets \
  -H "Authorization: Bearer TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "No puedo acceder al sistema ERP",
    "description": "Error 503 desde las 9:00 AM. Afecta a todo el departamento de contabilidad.",
    "requester_email": "maria@empresa.com",
    "priority": "high",
    "category_id": 3,
    "tags": ["erp", "acceso"]
  }'

Respuesta:

{
  "data": {
    "id": 1042,
    "subject": "No puedo acceder al sistema ERP",
    "status": "new",
    "priority": "high",
    "category": { "id": 3, "name": "Infraestructura" },
    "ai_classification": {
      "category_confidence": 0.96,
      "priority_confidence": 0.91,
      "suggested_team": "Infra & Redes"
    },
    "created_at": "2025-03-21T14:30:00-05:00"
  }
}

Ejemplo: Listar tickets con filtros

# Tickets abiertos de prioridad alta
curl "https://tu-empresa.autoservice.pe/api/v1/tickets?status=open&priority=high&page=1&per_page=20" \
  -H "Authorization: Bearer TU_TOKEN"

Parámetros de filtro:

ParámetroTipoDescripción
statusstringnew, open, in_progress, pending, resolved, closed
prioritystringlow, medium, high, critical
category_idintegerID de categoría
assigned_agent_idintegerID del agente asignado
team_idintegerID del equipo
requester_emailstringEmail del solicitante
created_afterdatetimeFecha mínima de creación
created_beforedatetimeFecha máxima de creación
searchstringBúsqueda en asunto y descripción
pageintegerPágina (default: 1)
per_pageintegerResultados por página (default: 20, max: 100)

Usuarios

MétodoEndpointDescripción
GET/usersListar usuarios
POST/usersCrear usuario
GET/users/:idObtener usuario
PUT/users/:idActualizar usuario

Categorías

MétodoEndpointDescripción
GET/categoriesListar categorías
POST/categoriesCrear categoría
PUT/categories/:idActualizar categoría

Base de Conocimiento

MétodoEndpointDescripción
GET/kb/articlesListar artículos
POST/kb/articlesCrear artículo
GET/kb/articles/:idObtener artículo
PUT/kb/articles/:idActualizar artículo
GET/kb/search?q=textoBuscar artículos

Equipos

MétodoEndpointDescripción
GET/teamsListar equipos
POST/teamsCrear equipo
GET/teams/:idObtener equipo

Paginación

La API usa paginación basada en cursor:

{
  "data": [...],
  "meta": {
    "current_page": 1,
    "per_page": 20,
    "total": 156,
    "last_page": 8
  }
}

Rate Limiting

PlanLímite
Básico60 req/min
Profesional300 req/min
Enterprise1000 req/min

Las cabeceras de respuesta incluyen:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 289
X-RateLimit-Reset: 1711042800

Webhooks

Recibe notificaciones en tiempo real cuando ocurren eventos:

Panel Admin → Configuración → Webhooks → Nuevo

Eventos disponibles:

  • ticket.created — Nuevo ticket
  • ticket.updated — Ticket actualizado
  • ticket.resolved — Ticket resuelto
  • ticket.assigned — Ticket asignado
  • sla.warning — SLA por vencer
  • sla.breached — SLA vencido

Payload de ejemplo:

{
  "event": "ticket.created",
  "timestamp": "2025-03-21T14:30:00-05:00",
  "data": {
    "id": 1042,
    "subject": "No puedo acceder al ERP",
    "priority": "high",
    "status": "new"
  }
}

SDKs y librerías

Próximamente:

  • JavaScript/TypeScriptnpm install @autoservice/sdk
  • Pythonpip install autoservice
  • PHPcomposer require autoservice/sdk

Mientras tanto, cualquier cliente HTTP funciona con la API REST.


Siguiente: Integraciones →