Help Desk & SLA
Gerencie tickets de suporte, comentarios e consulte politicas de SLA.
Listar Tickets
GET /external/v1/tickets
Retorna uma lista paginada de tickets de suporte.
Query Parameters:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
status | string | Nao | Filtro por status: OPEN, IN_PROGRESS, WAITING_CUSTOMER, RESOLVED, CLOSED |
priority | string | Nao | Filtro por prioridade: LOW, MEDIUM, HIGH, URGENT |
category | string | Nao | Filtro por categoria: INCIDENT, REQUEST, QUESTION |
assigneeId | string | Nao | Filtro por responsavel |
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/tickets?page=1&limit=10&status=OPEN&priority=HIGH" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"data": [
{
"id": "clx4g8l3n1001tk9ykxwz2r4t",
"code": "TKT-2048",
"title": "Erro ao gerar relatorio financeiro mensal",
"description": "Ao tentar exportar o relatorio financeiro de marco, o sistema retorna erro 500.",
"category": "INCIDENT",
"priority": "HIGH",
"status": "OPEN",
"requestedByPersonId": "clx1a2b3c4d5e6f7g8h9i0j1",
"requestedByName": "Ana Paula Mendes",
"assigneeId": null,
"assigneeName": null,
"resolvedAt": null,
"createdAt": "2026-03-25T14:30:00.000Z"
}
],
"meta": {
"total": 23,
"page": 1,
"limit": 10,
"totalPages": 3
}
}
Buscar Ticket por ID
GET /external/v1/tickets/:id
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/tickets/clx4g8l3n1001tk9ykxwz2r4t" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"id": "clx4g8l3n1001tk9ykxwz2r4t",
"code": "TKT-2048",
"title": "Erro ao gerar relatorio financeiro mensal",
"description": "Ao tentar exportar o relatorio financeiro de marco, o sistema retorna erro 500. Ocorre apenas com o filtro de centro de custo ativo.",
"category": "INCIDENT",
"priority": "HIGH",
"status": "OPEN",
"requestedByPersonId": "clx1a2b3c4d5e6f7g8h9i0j1",
"requestedByName": "Ana Paula Mendes",
"assigneeId": null,
"assigneeName": null,
"resolvedAt": null,
"createdAt": "2026-03-25T14:30:00.000Z"
}
Criar Ticket
POST /external/v1/tickets
Body:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
title | string | Sim | Titulo do ticket (max: 255) |
description | string | Sim | Descricao detalhada do problema ou solicitacao |
category | string | Sim | Categoria: INCIDENT, REQUEST, QUESTION |
priority | string | Sim | Prioridade: LOW, MEDIUM, HIGH, URGENT |
requestedByPersonId | string | Nao | ID da pessoa que solicitou (personId) |
Exemplo de requisicao:
curl -X POST "https://api.tesselys.com.br/external/v1/tickets" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"title": "Solicitar acesso ao modulo de estoque",
"description": "Novo colaborador precisa de acesso ao modulo de estoque para realizar inventario.",
"category": "REQUEST",
"priority": "MEDIUM",
"requestedByPersonId": "clx2b3c4d5e6f7g8h9i0j1k2"
}'
Resposta (201):
{
"id": "clx5h9m4o2002ul0zlywb3s5u",
"code": "TKT-2049",
"title": "Solicitar acesso ao modulo de estoque",
"description": "Novo colaborador precisa de acesso ao modulo de estoque para realizar inventario.",
"category": "REQUEST",
"priority": "MEDIUM",
"status": "OPEN",
"requestedByPersonId": "clx2b3c4d5e6f7g8h9i0j1k2",
"requestedByName": "Carlos Ferreira",
"assigneeId": null,
"assigneeName": null,
"resolvedAt": null,
"createdAt": "2026-03-26T10:00:00.000Z"
}
O ticket e criado com status OPEN. O campo code e gerado automaticamente pelo sistema.
Atualizar Ticket
PUT /external/v1/tickets/:id
Atualiza os dados de um ticket existente. Envie apenas os campos que deseja alterar.
Body (campos opcionais):
| Campo | Tipo | Descricao |
|---|---|---|
title | string | Novo titulo |
status | string | Novo status |
priority | string | Nova prioridade |
assigneeId | string | ID do responsavel (companyUserId) |
description | string | Nova descricao |
Exemplo de requisicao:
curl -X PUT "https://api.tesselys.com.br/external/v1/tickets/clx4g8l3n1001tk9ykxwz2r4t" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"status": "IN_PROGRESS",
"assigneeId": "clx3c4d5e6f7g8h9i0j1k2l3",
"priority": "URGENT"
}'
Resposta (200):
{
"id": "clx4g8l3n1001tk9ykxwz2r4t",
"code": "TKT-2048",
"title": "Erro ao gerar relatorio financeiro mensal",
"description": "Ao tentar exportar o relatorio financeiro de marco, o sistema retorna erro 500. Ocorre apenas com o filtro de centro de custo ativo.",
"category": "INCIDENT",
"priority": "URGENT",
"status": "IN_PROGRESS",
"requestedByPersonId": "clx1a2b3c4d5e6f7g8h9i0j1",
"requestedByName": "Ana Paula Mendes",
"assigneeId": "clx3c4d5e6f7g8h9i0j1k2l3",
"assigneeName": "Lucas Ribeiro",
"resolvedAt": null,
"createdAt": "2026-03-25T14:30:00.000Z"
}
Comentarios de Ticket
Listar Comentarios de Ticket
GET /external/v1/ticket-comments
Retorna uma lista paginada de comentarios de um ticket.
Query Parameters:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
ticketId | string | Nao | Filtro por ticket |
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/ticket-comments?ticketId=clx4g8l3n1001tk9ykxwz2r4t&page=1&limit=10" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"data": [
{
"id": "clx6i0n5p3003cm1amzxc4t6v",
"ticketId": "clx4g8l3n1001tk9ykxwz2r4t",
"content": "Consegui reproduzir o erro. O problema ocorre quando o filtro de centro de custo retorna mais de 500 registros.",
"isInternal": true,
"authorId": "clx3c4d5e6f7g8h9i0j1k2l3",
"authorName": "Lucas Ribeiro",
"createdAt": "2026-03-25T16:00:00.000Z"
},
{
"id": "clx7j1o6q4004dn2bnayf5u7w",
"ticketId": "clx4g8l3n1001tk9ykxwz2r4t",
"content": "Estamos trabalhando na correcao. Previsao de resolucao ate amanha.",
"isInternal": false,
"authorId": "clx3c4d5e6f7g8h9i0j1k2l3",
"authorName": "Lucas Ribeiro",
"createdAt": "2026-03-25T16:15:00.000Z"
}
],
"meta": {
"total": 2,
"page": 1,
"limit": 10,
"totalPages": 1
}
}
Buscar Comentario por ID
GET /external/v1/ticket-comments/:id
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/ticket-comments/clx6i0n5p3003cm1amzxc4t6v" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"id": "clx6i0n5p3003cm1amzxc4t6v",
"ticketId": "clx4g8l3n1001tk9ykxwz2r4t",
"content": "Consegui reproduzir o erro. O problema ocorre quando o filtro de centro de custo retorna mais de 500 registros.",
"isInternal": true,
"authorId": "clx3c4d5e6f7g8h9i0j1k2l3",
"authorName": "Lucas Ribeiro",
"createdAt": "2026-03-25T16:00:00.000Z"
}
Criar Comentario de Ticket
POST /external/v1/ticket-comments
Body:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
ticketId | string | Sim | ID do ticket |
content | string | Sim | Conteudo do comentario |
isInternal | boolean | Nao | Comentario interno, nao visivel ao solicitante (default: false) |
Exemplo de requisicao:
curl -X POST "https://api.tesselys.com.br/external/v1/ticket-comments" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"ticketId": "clx4g8l3n1001tk9ykxwz2r4t",
"content": "Correcao aplicada em producao. Por favor, teste novamente e confirme se o problema foi resolvido.",
"isInternal": false
}'
Resposta (201):
{
"id": "clx8k2p7r5005eo3cpbzg6v8x",
"ticketId": "clx4g8l3n1001tk9ykxwz2r4t",
"content": "Correcao aplicada em producao. Por favor, teste novamente e confirme se o problema foi resolvido.",
"isInternal": false,
"authorId": "clx3c4d5e6f7g8h9i0j1k2l3",
"authorName": "Lucas Ribeiro",
"createdAt": "2026-03-26T09:30:00.000Z"
}
Comentarios com isInternal: true sao visiveis apenas para a equipe interna. Comentarios publicos (isInternal: false) sao visiveis tambem para o solicitante do ticket.
Politicas de SLA
Endpoints somente leitura para consultar as politicas de SLA configuradas.
Listar Politicas de SLA
GET /external/v1/sla-policies
Retorna uma lista paginada de politicas de SLA.
Query Parameters:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/sla-policies?page=1&limit=10" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"data": [
{
"id": "clx9l3q8s6001sl4dpczh7w9y",
"name": "SLA Premium - Incidentes Criticos",
"description": "Politica de atendimento prioritario para incidentes criticos de clientes premium.",
"firstResponseTime": 30,
"resolutionTime": 240,
"priority": "URGENT",
"isActive": true
},
{
"id": "clx0m4r9t7002tm5eqdai8x0z",
"name": "SLA Padrao - Solicitacoes Gerais",
"description": "Politica padrao para solicitacoes e duvidas gerais.",
"firstResponseTime": 120,
"resolutionTime": 1440,
"priority": "MEDIUM",
"isActive": true
}
],
"meta": {
"total": 4,
"page": 1,
"limit": 10,
"totalPages": 1
}
}
Buscar Politica de SLA por ID
GET /external/v1/sla-policies/:id
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/sla-policies/clx9l3q8s6001sl4dpczh7w9y" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"id": "clx9l3q8s6001sl4dpczh7w9y",
"name": "SLA Premium - Incidentes Criticos",
"description": "Politica de atendimento prioritario para incidentes criticos de clientes premium.",
"firstResponseTime": 30,
"resolutionTime": 240,
"priority": "URGENT",
"isActive": true
}
Os campos firstResponseTime e resolutionTime sao expressos em minutos. Exemplo: 240 minutos = 4 horas.
Valores de Enum
status (Ticket)
| Valor | Descricao |
|---|---|
OPEN | Aberto — aguardando atendimento |
IN_PROGRESS | Em andamento |
WAITING_CUSTOMER | Aguardando resposta do solicitante |
RESOLVED | Resolvido |
CLOSED | Encerrado |
category (Ticket)
| Valor | Descricao |
|---|---|
INCIDENT | Incidente — problema ou falha |
REQUEST | Solicitacao — pedido de acesso, recurso, etc. |
QUESTION | Duvida — pergunta ou esclarecimento |
priority (Ticket)
| Valor | Descricao |
|---|---|
LOW | Baixa |
MEDIUM | Media |
HIGH | Alta |
URGENT | Urgente |