Executa um relatório personalizado
curl --request GET \ --url 'https://public-api.mspdesk.com.br/v1/reports/a1b2c3d4-e5f6-7890-abcd-ef1234567890/execute?limit=100' \ --header 'Authorization: Bearer <token>'Escopo exigido: reports:read. Lista as linhas do relatório, uma por ticket, em ordem crescente de ticket — paginação por cursor opaco (?cursor=), como toda listagem: use nextCursor da resposta anterior. Cada linha traz ticketId e uma chave por coluna (GET /v1/reports/{id}); valores tipados: número, booleano, código de enum, data ISO-8601 como em /v1/tickets (campo fixo em UTC, campo personalizado com o offset da empresa), duração em minutos. Campos personalizados vêm em customFields, na mesma forma de /v1/tickets (lista {id, name, type, value}; lista suspensa como a opção {id, label}). Total em GET /v1/reports/{id}/count. As linhas do relatório não trazem notas nem apontamentos do ticket — para esses dados, use /v1/tickets/{ticketId}/notes e /appointments, que exigem o escopo tickets:read; numa empresa com a API pública desabilitada cuja concessão libera só reports:read, essas duas rotas respondem 403 scope_requires_public_api. Substitui /v1/custom-reports/integrations/{uuid}/execute do serviço principal, com outro formato. Operação pesada: além dos limites de empresa e de chave, consome o limite report da empresa (10 por minuto, rajada de 2); ao atingi-lo a resposta é 429 com layer=operation e operation=report.
Autorizações
Seção intitulada “Authorizations”Parâmetros
Seção intitulada “Parameters”Parâmetros de caminho
Seção intitulada “Path Parameters”UUID do relatório
Exemplo
a1b2c3d4-e5f6-7890-abcd-ef1234567890Parâmetros de consulta
Seção intitulada “Query Parameters”Cursor opaco da próxima página, devolvido em nextCursor da resposta anterior. Omita na primeira página.
Linhas por página. 1 a 100; padrão 25.
Exemplo
100Respostas
Seção intitulada “Responses”Página de linhas
object
Uma linha do relatório: ticketId e uma chave por coluna (GET /v1/reports/{id} lista as chaves e os tipos). Campos personalizados ficam em customFields, na mesma forma de /v1/tickets.
object
Só quando o relatório tem coluna de campo personalizado: os valores do ticket nesses campos, na forma de customFields de /v1/tickets — ordem por id do campo, só campos preenchidos (lista vazia quando nenhum está).
Valor de um campo personalizado do ticket.
object
ID do campo personalizado.
Nome do campo personalizado.
Tipo do campo personalizado — governa o formato de value.
Valor do campo, no formato do tipo (type):
| Tipo | Formato de value |
|---|---|
TEXT, TEXT_AREA |
string |
INTEGER |
integer |
DECIMAL |
number |
DATETIME |
string date-time, com o offset da empresa no instante do valor |
CHECKBOX |
boolean |
DROPDOWN |
objeto {id, label} da opção selecionada; {id: null, label: <valor gravado>} quando a opção não existe mais |
object
ID do ticket da linha — use com /v1/tickets/{id} e os sub-recursos
Cursor opaco da próxima página; null quando não há mais páginas.
Exemplo
{ "data": [ { "customFields": [ { "id": 12, "name": "Contrato", "type": "DROPDOWN", "value": { "id": 7, "label": "Ouro" } } ], "ticketCode": 1042, "ticketCreatedAt": "2026-09-25T17:30:00Z", "ticketId": 1042, "ticketStatus": "IN_PROGRESS" } ], "nextCursor": "eyJ2IjoxLCJzIjoiaWQiLCJmIjoicmVwb3J0OmExYjIiLCJrIjpbXSwiaWQiOjEwNDJ9"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
invalid_query: id que não é UUID, limit fora de 1..100 ou parâmetro desconhecido (inclusive page, size e sort); invalid_cursor: cursor adulterado ou de outro relatório
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
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"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Chave de API ausente, inválida, revogada ou expirada
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
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"}account_inactive: a empresa está inativa; public_api_disabled: a API pública está desabilitada para a empresa e nenhum escopo foi liberado a ela por concessão; scope_requires_public_api: a API pública está desabilitada e reports:read não está entre os escopos liberados por concessão; insufficient_scope: a chave não tem reports:read
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
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"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
not_found: relatório inexistente, inativo ou de outra empresa
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
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"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
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
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
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"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Segundos até poder repetir
Erro interno inesperado
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
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"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo