Pular para o conteúdo

Mostra um chamado com a conversa

GET /portal/support/tickets/{id}

Escopo do token: support:read. Recurso: Chamados.

Abrir o chamado marca as respostas da equipe como lidas. Chamado de outra conta: 404. Depois do prazo de guarda (1 ano após a resolução) a conversa vem vazia e purged é verdadeiro.

Os exemplos leem o token da variável de ambiente HALVER_API_TOKEN (um token sc_live_… criado em Desenvolvedores › Tokens de API). Nunca escreva o token no código.

Janela do terminal
curl "https://dash.halver.com.br/api/v1/portal/support/tickets/f638f2ab-a5a5-45f6-886a-51b17661e088" \
-H "Authorization: Bearer $HALVER_API_TOKEN"
  • id string (uuid) obrigatório

    Exemplo: f638f2ab-a5a5-45f6-886a-51b17661e088.

Chamado.

Campos da resposta
  • can_rate boolean obrigatório

    Resolvido por alguém há até 28 dias; pode ser avaliado.

  • category string obrigatório

    Do que se trata: vendas, suporte técnico, financeiro, bare metal ou privacidade (pedidos do titular, LGPD art. 18). Um de: sales, technical, billing, bare_metal, privacy.

  • closed boolean obrigatório

    Resolvido há mais dias que close_days; uma mensagem nova abre um chamado de continuação.

  • created_at string (date-time) obrigatório
  • expected qualquer obrigatório pode ser nulo

    Quando a equipe deve responder (só enquanto espera a equipe).

    • due_at string (date-time) obrigatório
    • target string obrigatório
  • follow_up_of qualquer obrigatório pode ser nulo
    • id string (uuid) obrigatório
    • number string obrigatório
  • id string (uuid) obrigatório
  • last_from string obrigatório

    Um de: customer, staff, "" (vazio).

  • last_message_at string (date-time) obrigatório
  • merged_into qualquer obrigatório pode ser nulo
    • id string (uuid) obrigatório
    • number string obrigatório
  • messages array de object

    A conversa (só no detalhe).

    • attachments array de object obrigatório
      • content_type string obrigatório

        Um de: image/png, image/jpeg, image/gif, image/webp, application/pdf, text/plain.

      • created_at string (date-time) obrigatório
      • file_name string obrigatório
      • id string (uuid) obrigatório
      • size_bytes integer obrigatório
    • author string obrigatório

      Um de: customer, staff, system.

    • author_name string obrigatório

      Quem escreveu; toda mensagem da equipe aparece como “Equipe Halver” e as do sistema como “Halver”.

    • body string obrigatório
    • created_at string (date-time) obrigatório
    • id string (uuid) obrigatório
  • number string obrigatório
  • priority string obrigatório

    Prioridade: baixa, normal, alta ou urgente (define o SLA). Um de: low, normal, high, urgent.

  • purged boolean obrigatório

    A conversa foi apagada pelo prazo de guarda (1 ano após a resolução).

  • rating qualquer obrigatório pode ser nulo
    • comment string obrigatório
    • rated_at string (date-time) obrigatório
    • rating string obrigatório

      Um de: good, bad.

  • resolved_at string (date-time) obrigatório pode ser nulo
  • server qualquer obrigatório pode ser nulo
    • hostname string obrigatório
    • id string (uuid) obrigatório
  • status string obrigatório

    open: espera a equipe; answered: espera o cliente; resolved: resolvido. Um de: open, answered, resolved.

  • subject string obrigatório
  • unread boolean obrigatório

    Há resposta da equipe que a conta ainda não leu.

Exemplo de resposta
{
"can_rate": false,
"category": "sales",
"closed": false,
"created_at": "2026-10-20T18:00:00Z",
"expected": {
"due_at": "2026-10-20T18:00:00Z",
"target": "até 4 horas úteis"
},
"follow_up_of": {
"id": "0e37dfb9-2f9b-4ac0-a557-346d5265ae2f",
"number": "FAT-0000123"
},
"id": "f638f2ab-a5a5-45f6-886a-51b17661e088",
"last_from": "customer",
"last_message_at": "2026-10-20T18:00:00Z",
"merged_into": {
"id": "0e37dfb9-2f9b-4ac0-a557-346d5265ae2f",
"number": "FAT-0000123"
},
"messages": [
{
"attachments": [
{
"content_type": "image/png",
"created_at": "2026-10-20T18:00:00Z",
"file_name": "",
"id": "bab8d9c9-1562-4059-820d-444a4445a168",
"size_bytes": 0
}
],
"author": "customer",
"author_name": "Ana Souza",
"body": "Obrigado, voltou a responder.",
"created_at": "2026-10-20T18:00:00Z",
"id": "90bd97e4-e575-44de-9d55-2b401363292c"
}
],
"number": "SUP-000123",
"priority": "low",
"purged": false,
"rating": {
"comment": "",
"rated_at": "2026-10-20T18:00:00Z",
"rating": "good"
},
"resolved_at": null,
"server": {
"hostname": "web-01",
"id": "b71b4464-1ef5-411f-a6f2-c5450d0a7616"
},
"status": "open",
"subject": "Servidor sem rede depois da reinstalação",
"unread": false
}

Todo erro vem como application/problem+json (RFC 9457), com um code estável, a mensagem em português em detail, o motivo de cada campo em errors (nos erros de validação) e o request_id, que você informa ao suporte. Veja a lista completa de códigos.

Status Quando Códigos
400 Requisição inválida (JSON malformado, campo desconhecido, parâmetro inválido ou falha de validação). validation_failed
401 Não autenticado (token ausente, inválido ou expirado; credenciais inválidas). auth.unauthorized
403 Autenticado, mas sem permissão para a área ou a operação. api_token.insufficient_scope
404 Recurso não encontrado (ou fora do escopo do usuário). ticket.not_found
Exemplo de erro
{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "o token não tem o escopo support:read; crie um token com esse escopo em Desenvolvedores › Tokens de API",
"code": "api_token.insufficient_scope",
"request_id": "6f1c0b2a9e4d7c3b5a8f0e1d"
}