Skip to content

Chamados Internos ​

Os chamados do Timesheet são o canal do profissional com a gestão — tipicamente "esqueci de bater a saída dia 12". O chamado guarda o vínculo direto com o dia ou o apontamento em questão, o que transforma a correção num fluxo rastreável em vez de um ajuste silencioso.

Headers obrigatórios

Todas as requisições devem incluir X-Timesheet-Id e Authorization: Bearer {token}. O profissional abre e acompanha os próprios chamados; atribuir e mudar status exige gestor.


Tickets ​

Estrutura de Dados ​

CampoTipoDescrição
codeStringCódigo sequencial por instância, no formato TS-{ano}-{sequencial} — ex.: TS-2026-0012.
timesheetUserIdNumberSolicitante (o autor da abertura).
assigneeTimesheetUserIdNumberGestor responsável (opcional).
categoryStringpunch_correction, absence, payroll, project, access ou other (padrão).
statusStringopen, in_progress, waiting_user, resolved ou closed.
priorityStringlow, normal (padrão), high ou urgent.
subjectStringAssunto (máx. 250 caracteres).
bodyStringDescrição (opcional).
timesheetDayId / timesheetEntryIdNumberDia ou apontamento relacionado (opcionais).
resolutionStringTexto da resolução (preenchido ao resolver).
firstReplyAtDateTimePrimeira resposta de um gestor.
resolvedAt / closedAtDateTimeMarcos do fluxo.

Máquina de Estados ​

open ──> in_progress ⇄ waiting_user
  │          │
  ├──> resolved ──> closed
  └──> closed
DePara
openin_progress, waiting_user, resolved, closed
in_progresswaiting_user
waiting_userin_progress
resolvedclosed
closed— (final; reabertura só de resolved via reopen)

Transição fora da tabela falha com 422 INVALID_STAGE_MOVE.

Efeitos automáticos nas mensagens: a primeira resposta de um gestor move o chamado open para in_progress e grava firstReplyAt; resposta do solicitante em waiting_user devolve o chamado para in_progress.

Endpoints ​

http
GET   /v1/timesheet/tickets
POST  /v1/timesheet/tickets
GET   /v1/timesheet/tickets/:id
PATCH /v1/timesheet/tickets/:id/assign
PATCH /v1/timesheet/tickets/:id/status
PATCH /v1/timesheet/tickets/:id/reopen

Listar Chamados ​

Aceita page, perPage, timesheetUserId, status, priority e category. Profissionais só enxergam os próprios chamados (o filtro timesheetUserId é ignorado); gestores veem todos. A listagem é resumida — omite body, resolution e firstReplyAt, presentes apenas no detalhe.

Obter Chamado ​

GET /tickets/:id retorna o chamado completo, incluindo as mensagens (timesheetTicketMessages). Para não-gestores, as mensagens internas (isInternal) são omitidas e chamados de terceiros retornam 404.

Abrir Chamado ​

Qualquer profissional autenticado; o solicitante é sempre o autor da requisição.

AtributoTipoObrigatórioDescrição
subjectstringSimAssunto (máx. 250 caracteres).
categorystringNãoCategoria (padrão: other).
prioritystringNãoPrioridade (padrão: normal).
bodystringNãoDescrição.
timesheetDayIdnumberNãoDia relacionado.
timesheetEntryIdnumberNãoApontamento relacionado.

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/timesheet/tickets" \
  -H "X-Timesheet-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "punch_correction",
    "subject": "Esqueci de bater a saída dia 12",
    "body": "Saí às 18:10, mas não registrei a saída.",
    "timesheetDayId": 42
  }'

Respostas ​

201 Created

Retorna o ID e o código do chamado.

json
{
  "id": 12,
  "code": "TS-2026-0012"
}

Atribuir (gestor) ​

http
PATCH /v1/timesheet/tickets/:id/assign
AtributoTipoObrigatórioDescrição
assigneeTimesheetUserIdnumberSimGestor responsável (null remove a atribuição).

Mudar Status (gestor) ​

http
PATCH /v1/timesheet/tickets/:id/status
AtributoTipoObrigatórioDescrição
statusstringSimStatus de destino (conforme a máquina de estados).
resolutionstringNãoTexto da resolução (relevante ao mover para resolved).

Mover para resolved grava resolvedAt (e resolution, se informada); mover para closed grava closedAt.

Reabrir ​

PATCH /tickets/:id/reopen devolve um chamado resolved para open. O solicitante pode reabrir o próprio chamado; gestores, qualquer um. Chamados closed não reabrem (422 INVALID_STAGE_MOVE).


Mensagens (Ticket Messages) ​

A conversa do chamado, com flag de nota interna que o solicitante não vê.

Estrutura de Dados ​

CampoTipoDescrição
bodyStringTexto da mensagem.
isInternalBooleanNota interna da gestão — somente gestores podem criar e ler.
attachmentsArrayAnexos livres (JSONB, opcional).
timesheetUserIdNumberAutor da mensagem.

Endpoints ​

http
GET  /v1/timesheet/tickets/:ticketId/messages
POST /v1/timesheet/tickets/:ticketId/messages

O acesso segue o chamado: o solicitante e gestores podem ler e responder. Na listagem, mensagens isInternal só aparecem para gestores.

Enviar Mensagem ​

AtributoTipoObrigatórioDescrição
bodystringSimTexto da mensagem (mín. 1 caractere).
isInternalbooleanNãoNota interna (padrão: false) — exige gestor, demais recebem 403 FORBIDDEN.
attachmentsarrayNãoAnexos livres.

Respostas ​

201 Created / 200 OK

Envio retorna o ID da mensagem; a listagem é paginada (page/perPage).