Método: https://oms.tpl.com.br/api/get/ticket_details

Objetivo: Retorna os detalhes completos de um chamado, incluindo dados locais (banco), threads/conversas do Zoho Desk e anexos. Identifica o chamado via ticket_number, zoho_id ou chamado_id. Opcionalmente busca dados atualizados do Zoho com refresh=1.
          
            
Método: GET
URL: https://oms.tpl.com.br/api/get/ticket_details

Autenticação
Token base64 gerado pelo endpoint /api/get/auth (campo "auth")

JSON de Envio (via body)
{
"auth": "TOKEN_BASE64",
"ticket_number": "12345",
"zoho_id": "123456789012345678",
"chamado_id": "99",
"refresh": 1
}
Obs: Informe ao menos um dos identificadores: ticket_number, zoho_id ou chamado_id.
Obs: Este endpoint NÃO aceita parâmetros na URL (apenas JSON no body).
Obs: O campo "refresh" (opcional, default 0) quando =1 busca dados atualizados diretamente do Zoho Desk.
Campos obrigatórios: auth + (ticket_number ou zoho_id ou chamado_id)

JSON de Retorno (Sucesso - HTTP 200)
{
"success": true,
"ticket": {
"id": 99,
"ticket_number": "12345",
"zoho_id": "123456789012345678",
"webUrl": "https://desk.zoho.com/...",
"status": "Open",
"created_at": "2026-05-10 14:30:00",
"updated_at": "2026-05-12 09:15:00",
"subject": "Assunto do chamado",
"description": "Descrição detalhada",
"department": "TECNOLOGIA",
"category": "Suporte",
"numero_pedido": "12345",
"numero_nf": "67890",
"cliente": {
"id": 100,
"apelido": "EMPRESA LTDA",
"cnpj": "12345678000100"
},
"usuario": {
"nome": "Nome do Usuário",
"email": "usuario@empresa.com"
}
},
"zoho": {
"id": "123456789012345678",
"ticketNumber": "12345",
"subject": "Assunto do chamado",
"description": "Descrição detalhada",
"status": "Open",
"priority": "Medium",
"category": "Suporte",
"departmentName": "TECNOLOGIA",
"createdTime": "2026-05-10T17:30:00.000Z",
"modifiedTime": "2026-05-12T12:15:00.000Z",
"webUrl": "https://desk.zoho.com/...",
"cf": {
"cf_numero_do_pedido": "12345",
"cf_numero_da_nota_fiscal": "67890"
}
},
"threads": [
{
"id": "111222333",
"data": "2026-05-10 14:30:00",
"canal": "EMAIL",
"direcao": "in",
"autor": "Nome do Usuário",
"autor_email": "usuario@empresa.com",
"summary": "Resumo da mensagem...",
"conteudo": "Conteúdo completo da mensagem...",
"hasAttach": false,
"attachmentCount": 0,
"visibility": "public"
},
{
"id": "444555666",
"data": "2026-05-11 10:00:00",
"canal": "EMAIL",
"direcao": "out",
"autor": "Atendente",
"autor_email": "suporte@empresa.com",
"summary": "Resposta do suporte...",
"conteudo": "Conteúdo da resposta...",
"hasAttach": true,
"attachmentCount": 1,
"visibility": "public"
}
],
"attachments": [
{
"id": "777888999",
"name": "arquivo.pdf",
"contentType": "application/pdf",
"size": 102400,
"sizeFormatted": "100 KB",
"href": "https://desk.zoho.com/api/v1/...",
"createdTime": "2026-05-11 10:00:00",
"threadId": "444555666"
}
]
}
Obs: O campo "zoho" só é retornado quando refresh=1 e o chamado possui zoho_id.
Obs: "threads" e "attachments" são buscados automaticamente do Zoho quando o chamado possui zoho_id.
Obs: As datas dos threads são convertidas para o fuso horário de São Paulo (America/Sao_Paulo).

JSON de Retorno (Erro)
HTTP 400:
{ "success": false, "error": "Informe ticket_number, zoho_id ou chamado_id" }
{ "success": false, "error": "Este endpoint aceita apenas JSON no body (sem parâmetros na URL)" }
HTTP 401:
{ "success": false, "error": "auth é obrigatório" }
{ "success": false, "error": "auth inválido" }
{ "success": false, "error": "Credenciais inválidas" }
HTTP 403:
{ "success": false, "error": "Cliente bloqueado" }
HTTP 404:
{ "success": false, "error": "Chamado não encontrado" }
HTTP 405:
{ "success": false, "error": "Método não permitido" }
HTTP 500:
{ "success": false, "error": "Erro interno: ..." }