📋 Tickets

GET /api/v1/tickets

Lista tickets com paginação e filtros.

Query Parameters

  • page (opcional): Número da página
  • page_size (opcional): Itens por página
  • status (opcional): Filtrar por status (open, closed, pending)

Response: 200 OK

{
  "data": [
    {
      "id": "uuid",
      "ticket_code": "TKT-001",
      "contact_id": "uuid",
      "subject": "Problema de acesso",
      "description": "Não consigo aceder ao sistema",
      "status": "open",
      "priority": "normal",
      "source": "email",
      "client_id": "uuid",
      "service_id": "uuid",
      "assigned_to": "uuid",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "page": 1,
  "page_size": 25,
  "total": 50
}

POST /api/v1/tickets

Cria um novo ticket.

Request

{
  "ticket_code": "TKT-001",
  "contact_id": "uuid",
  "subject": "Problema de acesso",
  "description": "Não consigo aceder ao sistema",
  "status": "open",
  "priority": "normal",
  "source": "email",
  "client_id": "uuid",
  "service_id": "uuid"
}

Response: 201 Created

{
  "id": "uuid",
  "ticket_code": "TKT-001",
  ...
}

GET /api/v1/tickets/[id]

Obtém um ticket específico.

Response: 200 OK

PATCH /api/v1/tickets/[id]

Atualiza um ticket.

Request

{
  "status": "closed",
  "assigned_to": "uuid"
}

DELETE /api/v1/tickets/[id]

Deleta um ticket.

Response: 204 No Content

GET /api/v1/tickets/[id]/messages

Lista mensagens de um ticket.

Response: 200 OK

{
  "data": [
    {
      "id": "uuid",
      "ticket_id": "uuid",
      "author_type": "user",
      "author_id": "uuid",
      "message": "Olá, como posso ajudar?",
      "is_internal": false,
      "created_at": "2024-01-01T00:00:00Z"
    }
  ]
}

POST /api/v1/tickets/[id]/messages

Adiciona uma mensagem a um ticket.

Request

{
  "author_type": "user",
  "author_id": "uuid",
  "message": "Resposta à mensagem",
  "is_internal": false
}