1. Objetivo
Garantir a extração completa de todos os tickets de um ambiente via API, fornecendo práticas para otimizar a performance das requisições e evitar o Erro 500.
2. Escopo
Aplica-se a:
Usuários que buscam realizar a extração completa de todos os tickets de seus ambientes.
Requisições que utilizam as rotas /tickets/ e /tickets/past/.
Otimização de requisições de API que utilizam parâmetros como $select, $expand, $skip, e $filter.
Não se aplica a:
Procedimentos de autenticação da API ou mapeamento de campos ENUM.
Tratativa de erros de limite de acesso da API (Status: 429 Too Many Requests).
3. Responsáveis
O procedimento é de responsabilidade da empresa que utiliza a API para realizar a extração e análise avançada de dados de ambientes.
4. Pré-requisitos
Possuir um token válido para acesso à API do Movidesk.
Ter conhecimento sobre as duas rotas de Tickets: /tickets/ e /tickets/past/.
Entender a aplicação dos parâmetros de requisição como $select, $expand, $skip, e $filter.
5. Procedimento (passo a passo)
Para realizar a extração completa e otimizada de todos os tickets do ambiente:
Entenda as Rotas de Tickets: A rota /tickets/ extrai tickets com data de atualização (lastUpdate) inferior a 90 dias, enquanto a rota /tickets/past/ deve ser usada em conjunto para buscar tickets mais antigos, com lastUpdate acima de 90 dias.
Faça Requisições para Ambas as Rotas: Para extrair todos os tickets, é obrigatório fazer requisições para a rota /tickets/ e a rota /tickets/past/.
Otimize a Performance Evitando o Erro 500:
Evite utilizar o parâmetro $skip em valores muito elevados, especialmente se combinado com muitos parâmetros em $select, $expand e $filter, pois isso pode causar um Erro 500.
O ideal é utilizar um $filter de data de criação (createdDate) nos chamados, o que permite que o sistema limite a busca e mantenha o $skip em valores menores.
Exemplifica a Requisição Otimizada (Filtro por Data de Criação):
Para buscar os primeiros 1000 tickets de um período (Ex: Janeiro de 2023), utilize o $filter nas duas rotas.
Exemplo Rota /tickets: https://api.movidesk.com/public/v1/tickets?token=SEUTOKEN&$select=id,subject,createdDate&$filter=createdDate gt 2023-01-1T00:00:00.00z and createdDate lt 2023-01-31 T00:00:00.00z
Exemplo Rota /tickets/past: https://api.movidesk.com/public/v1/tickets/past?token=SEUTOKEN&$select=id,subject,createdDate&$filter=createdDate gt 2023-01-1T00:00:00.00z and createdDate lt 2023-01-31 T00:00:00.00z
Realize a Paginação: Para buscar os próximos 1000 tickets dentro do período filtrado, aumente o $skip de 1000 em 1000.
Exemplo de requisição mais completa
https://api.movidesk.com/public/v1/tickets?token=TOKEN&$select=id,subject,createdDate,resolvedIn,Status,Justification,serviceFull,urgency,category&$expand=owner($select=id,businessName),clients($expand=organization($select=businessName);$select=id,businessName),customfieldvalues&$filter=createdDate gt 2025-01-01T00:00:00.00z and createdDate lt 2025-01-31T00:00:00.00z
Nota: se quiser saber mais sobre as rotas da API de Tickets do Movidesk, veja os artigos públicos:
Rota /tickets: https://atendimento.movidesk.com/kb/pt-br/article/256/movidesk-ticket-api?menuId=22479-61185-256&ticketId=&q=
Rota /tickets/past: https://atendimento.movidesk.com/kb/pt-br/article/446011/movidesk-ticket-api-past?menuId=22479-61185-446011&ticketId=&q=
Importante
A paginação via $skip apresenta limitações de desempenho. Em cenários com elevado volume de dados, a API pode exceder o tempo limite de resposta (timeout) durante a busca.
Recomendação: Utilize a filtragem incremental no parâmetro $filter com a condição "id gt {NumeroDoTicket}" retirando o $skip da requisição
Essa abordagem otimiza a consulta, retornando os registros a partir do ID informado com maior eficiência.
Importante utilizar com o "$orderby=id" para ordenar em ordem crescente os valores
Exemplificando -
http://api.movidesk.com/public/v1/tickets/past?token=SEUTOKEN&$select=id,subject,status,createdDate,serviceFull,lastActionDate,resolvedIn,reopenedIn,closedIn,lifetimeWorkingTime&$expand=clients($expand=organization),owner,createdBy,ownerHistories($expand=owner),statusHistories&$filter=createdDate ge 2026-01-01T00:00:00Z and createdDate le 2026-01-08T00:00:00Z and id gt 1234&$orderby=id