Pular para o conteúdo

Lista os apontamentos de um ticket

GET
/v1/tickets/{ticketId}/appointments
Code sample: Shell / cURL
curl --request GET \
--url 'https://public-api.mspdesk.com.br/v1/tickets/1/appointments?filter%5Bid%5D%5Bin%5D=1%2C2%2C3&filter%5BagentId%5D%5Bin%5D=1%2C2%2C3&filter%5BserviceType%5D%5Beq%5D=INTERNAL&filter%5BserviceType%5D%5Bin%5D=INTERNAL%2CEXTERNAL&filter%5Bdate%5D%5Bgte%5D=2026-09-23T14%3A30&filter%5Bdate%5D%5Blte%5D=2026-09-23T14%3A30&limit=25&sort=-date&fields=id%2CagentId%2Cdescription&expand=customer%2Cagent' \
--header 'Authorization: Bearer <token>'

Escopo exigido: tickets:read. Paginação por cursor opaco (?cursor=), nunca por página/offset — use nextCursor da resposta anterior. A ordenação padrão é a da aba: -date, desempatada pelo id na mesma direção.

sort= aceita só date e id. createdAt e updatedAt são filtro e não ordenação: são colunas novas, nulas no que foi registrado antes desta API, e um valor nulo não serve de chave de paginação estável.

O atendimento em andamento também aparece na lista, com open: true: ele ainda não tem fim, então date traz o instante em que começou. Use filter[open][eq]=false para ver só o que já foi encerrado.

filter[date][gte] e filter[date][lte] recebem data e hora sem fuso (2026-09-23T14:30), porque é isso que a coluna guarda; filter[createdAt][gte] e filter[updatedAt][gte], ao contrário, exigem o fuso (2026-09-23T14:30:00Z).

ticketId
required
integer format: int64

ID do ticket

Exemplo
1
filter[id][eq]
integer format: int64

Filtra por id igual ao valor informado.

filter[id][in]
string
Exemplo
1,2,3

Filtra por id igual a um dos valores informados, separados por vírgula (até 100).

filter[agentId][eq]
integer format: int64

Filtra por agentId igual ao valor informado.

filter[agentId][in]
string
Exemplo
1,2,3

Filtra por agentId igual a um dos valores informados, separados por vírgula (até 100).

filter[serviceType][eq]
string
Allowed values: INTERNAL EXTERNAL

Filtra por serviceType igual ao valor informado.

filter[serviceType][in]
string
Exemplo
INTERNAL,EXTERNAL

Filtra por serviceType igual a um dos valores informados, separados por vírgula (até 100).

filter[open][eq]
boolean

Filtra por open igual ao valor informado.

filter[slaEligible][eq]
boolean

Filtra por slaEligible igual ao valor informado.

filter[date][gte]
string
Exemplo
2026-09-23T14:30

Filtra por date maior ou igual ao valor informado.

filter[date][lte]
string
Exemplo
2026-09-23T14:30

Filtra por date menor ou igual ao valor informado.

filter[createdAt][gte]
string format: date-time

Filtra por createdAt maior ou igual ao valor informado.

filter[createdAt][lte]
string format: date-time

Filtra por createdAt menor ou igual ao valor informado.

filter[updatedAt][gte]
string format: date-time

Filtra por updatedAt maior ou igual ao valor informado.

filter[updatedAt][lte]
string format: date-time

Filtra por updatedAt menor ou igual ao valor informado.

limit
integer format: int32
default: 25 >= 1 <= 100

Itens por página. 1 a 100; padrão 25.

cursor
string

Cursor opaco da próxima página, devolvido em nextCursor da resposta anterior. Omita na primeira página.

sort
string

Campo de ordenação: date, id (padrão -date). Prefixe com - para descendente (ex.: sort=-date); sempre desempatado por id na mesma direção.

Exemplo
-date
fields
string

Campos de primeiro nível a retornar, separados por vírgula (id sempre volta): id, agentId, description, serviceType, slaEligible, open, date, startTime, endTime, timeSpent, backdateReason, attachmentIds, createdAt, updatedAt.

Exemplo
id,agentId,description
expand
string

Objetos a acrescentar à resposta, separados por vírgula, até 3 por requisição: . Sem o escopo exigido de algum item pedido: 403 insufficient_scope.

Exemplo
customer,agent

Página de apontamentos

Media typeapplication/json
object
data
Array<object>

Apontamento (atendimento registrado) de um ticket.

object
agentId

Agente que assina o apontamento.

integer format: int64
nullable
attachmentIds

Anexos do ticket vinculados a este apontamento. Somente leitura: quem vincula arquivo é o envio de anexo, não a criação do apontamento.

Array<integer>
nullable
backdateReason

Justificativa do lançamento retroativo, quando houve.

string
nullable
createdAt

Instante de criação do registro. Nulo em apontamento anterior a esta API.

string format: date-time
nullable
date

Data e hora do apontamento, sem fuso, em yyyy-MM-ddTHH:mm:ss — os segundos saem sempre, mesmo zerados. Enquanto o atendimento está em andamento, é o instante em que ele começou. Nulo apenas em registro antigo que não tem data nenhuma gravada; ele existe, é listado e ordena antes de todos os outros.

string
nullable
description

Descrição do atendimento, em HTML.

string
nullable
endTime

Hora de término, sem fuso.

string
nullable
id

Identificador do apontamento.

integer format: int64
open

O atendimento ainda está em andamento: true enquanto ninguém o encerrou. Um apontamento em andamento não entra no resumo de horas.

boolean
nullable
serviceType

Tipo de serviço do atendimento.

string
nullable
Allowed values: INTERNAL EXTERNAL
slaEligible

O apontamento conta para o SLA de resposta.

boolean
nullable
startTime

Hora de início, sem fuso.

string
nullable
timeSpent

Tempo gasto no formato HH:mm.

string
nullable
updatedAt

Instante da última alteração do registro. Nulo em apontamento anterior a esta API que nunca foi alterado desde então.

string format: date-time
nullable
nextCursor

Cursor opaco da próxima página; null quando não há mais páginas.

string
nullable
Exemplo
{
"data": [
{
"agentId": 42,
"attachmentIds": [],
"backdateReason": null,
"createdAt": "2026-01-10T13:02:00Z",
"date": "2026-01-10T09:00:00",
"description": "<p>Driver da impressora reinstalado e fila de impressão limpa.</p>",
"endTime": "10:00",
"id": 3021,
"open": false,
"serviceType": "INTERNAL",
"slaEligible": true,
"startTime": "09:00",
"timeSpent": "01:00",
"updatedAt": "2026-01-10T13:02:00Z"
}
],
"nextCursor": "eyJpZCI6MTA0Mn0"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Requisição malformada ou parâmetros de consulta inválidos

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Chave de API ausente, inválida, revogada ou expirada

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}

Acesso negado: empresa inativa (account_inactive), API pública desabilitada para a empresa (public_api_disabled), escopo liberado só com a API pública (scope_requires_public_api) ou escopo insuficiente (insufficient_scope)

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Recurso inexistente, de outra empresa, ou rota inexistente

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Limite de uso atingido (rate_limited); o campo layer indica a camada: ip, company, key, operation ou concurrency

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Retry-After
integer format: int32

Segundos até poder repetir

Erro interno inesperado

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo