Pular para o conteúdo principal

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:

ParametroTipoObrigatorioDescricao
pagenumberNaoPagina atual (default: 1)
limitnumberNaoItens por pagina (default: 20, max: 100)
statusstringNaoFiltro por status: OPEN, IN_PROGRESS, WAITING_CUSTOMER, RESOLVED, CLOSED
prioritystringNaoFiltro por prioridade: LOW, MEDIUM, HIGH, URGENT
categorystringNaoFiltro por categoria: INCIDENT, REQUEST, QUESTION
assigneeIdstringNaoFiltro 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:

CampoTipoObrigatorioDescricao
titlestringSimTitulo do ticket (max: 255)
descriptionstringSimDescricao detalhada do problema ou solicitacao
categorystringSimCategoria: INCIDENT, REQUEST, QUESTION
prioritystringSimPrioridade: LOW, MEDIUM, HIGH, URGENT
requestedByPersonIdstringNaoID 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"
}
Nota

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):

CampoTipoDescricao
titlestringNovo titulo
statusstringNovo status
prioritystringNova prioridade
assigneeIdstringID do responsavel (companyUserId)
descriptionstringNova 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:

ParametroTipoObrigatorioDescricao
pagenumberNaoPagina atual (default: 1)
limitnumberNaoItens por pagina (default: 20, max: 100)
ticketIdstringNaoFiltro 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:

CampoTipoObrigatorioDescricao
ticketIdstringSimID do ticket
contentstringSimConteudo do comentario
isInternalbooleanNaoComentario 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"
}
Nota

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:

ParametroTipoObrigatorioDescricao
pagenumberNaoPagina atual (default: 1)
limitnumberNaoItens 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
}
Nota

Os campos firstResponseTime e resolutionTime sao expressos em minutos. Exemplo: 240 minutos = 4 horas.

Valores de Enum

status (Ticket)

ValorDescricao
OPENAberto — aguardando atendimento
IN_PROGRESSEm andamento
WAITING_CUSTOMERAguardando resposta do solicitante
RESOLVEDResolvido
CLOSEDEncerrado

category (Ticket)

ValorDescricao
INCIDENTIncidente — problema ou falha
REQUESTSolicitacao — pedido de acesso, recurso, etc.
QUESTIONDuvida — pergunta ou esclarecimento

priority (Ticket)

ValorDescricao
LOWBaixa
MEDIUMMedia
HIGHAlta
URGENTUrgente