Reordena uma tarefa do ticket
curl --request POST \ --url https://public-api.mspdesk.com.br/v1/tickets/1/tasks/512/move \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "afterTaskId": 511, "beforeTaskId": 513 }'Escopo exigido: tickets:write. Move a tarefa para entre duas vizinhas, e devolve a tarefa relida com a posição que ficou gravada. A posição não é escolhida pelo integrador: o produto pode reescrever a de todas as tarefas do ticket para abrir espaço, e o valor da resposta é o do banco depois disso.
O mapeamento é o da leitura, não o da tela: afterTaskId é a tarefa que fica antes desta na lista (logo acima) e beforeTaskId é a que fica depois (logo abaixo). Numa lista A, B, C, mover C com {"afterTaskId": A, "beforeTaskId": B} resulta em A, C, B.
Basta uma âncora: só afterTaskId põe a tarefa logo depois dela, e só beforeTaskId, logo antes — a outra vizinha é a que está ao lado da âncora hoje. Para levar ao topo, envie só beforeTaskId com a primeira tarefa; ao fim, só afterTaskId com a última. Os dois nulos não dizem para onde mover: a resposta é 422 validation_failed com required em afterTaskId. Com as duas, elas precisam ser vizinhas e nessa ordem; as duas iguais, a própria tarefa como âncora, âncoras invertidas ou com outra tarefa entre elas respondem 422 validation_failed com inconsistent_reference no campo, e nada muda. Uma âncora que pertença a outro ticket responde 404 not_found no campo que a enviou.
Nenhum parâmetro de consulta é aceito.
Autorizações
Seção intitulada “Authorizations”Parâmetros
Seção intitulada “Parameters”Parâmetros de caminho
Seção intitulada “Path Parameters”ID do ticket
Exemplo
1ID da tarefa
Exemplo
512Parâmetros de cabeçalho
Seção intitulada “Header Parameters”Garante que repetir a mesma requisição não duplique o efeito. 1 a 255 caracteres ASCII visíveis. Repetir a mesma chave devolve a mesma resposta (cabeçalho Idempotent-Replayed: true); a mesma chave com um corpo diferente é 422 idempotency_key_reused. A resposta repetida é a original: o corpo mantém o requestId e o idioma da primeira requisição; o cabeçalho X-Request-Id é o da requisição nova. A repetição também consome o limite de uso.
Corpo da requisiçãorequired
Seção intitulada “Request Bodyrequired”Destino da tarefa na ordem da aba.
object
Tarefa que passa a ficar logo acima desta. Ausente ou nula, a tarefa vai para o topo da lista (e aí beforeTaskId é obrigatório).
Tarefa que passa a ficar logo abaixo desta. Ausente ou nula, a tarefa vai para o fim da lista (e aí afterTaskId é obrigatório).
Exemplo
{ "afterTaskId": 511, "beforeTaskId": 513}Respostas
Seção intitulada “Responses”A tarefa com a posição nova
Tarefa (item da lista de afazeres) de um ticket.
object
Agente responsável pela tarefa. Nulo quando ninguém responde por ela — e sempre nulo em um título de grupo.
A tarefa está concluída. Sempre false em um título de grupo.
Instante de criação do registro. Nulo em tarefa anterior a esta API.
Agente que criou a tarefa. Nunca é nulo.
Prazo da tarefa, sem fuso, em yyyy-MM-ddTHH:mm:ss — os segundos saem sempre, mesmo zerados, e a entrada os aceita como opcionais. Nulo quando a tarefa não tem prazo.
Descrição livre. Sempre nula em um título de grupo.
A linha é um título de grupo: um separador que agrupa as tarefas abaixo dele, sem prazo, responsável, descrição nem conclusão próprios.
Identificador da tarefa.
Posição na ordem da aba, crescente. Nula em tarefa anterior a esta API, que nunca recebeu posição; a listagem a ordena antes de todas as outras. Pode ser negativa: é um número de ordenação relativo, não um índice. Não é editável pelo PATCH: quem a muda é POST /tasks/{taskId}/move.
Título da tarefa.
Instante da última alteração do registro. Nulo em tarefa anterior a esta API que nunca foi alterada desde então.
Exemplo
{ "agentId": 42, "completed": false, "createdAt": "2026-01-10T12:30:00Z", "createdById": 42, "deadline": "2026-01-12T09:30:00", "description": "Conferir se o job noturno terminou sem erro.", "groupTitle": false, "id": 512, "position": 200, "title": "Validar o backup do servidor", "updatedAt": "2026-01-10T12:30:00Z"}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
Requisição malformada ou parâmetros de consulta inválidos
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"}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)
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: o ticket, a tarefa ou uma das âncoras não pertence a este ticket
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
Conflito — unicidade, recurso em uso, ou Idempotency-Key em execução
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
Corpo da requisição acima de 1 MB
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
Content-Type não suportado
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
validation_failed: nenhuma âncora (required), ou âncoras incoerentes (inconsistent_reference)
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
idempotency_unavailable: Redis indisponível para avaliar o cabeçalho Idempotency-Key presente na requisição.
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