MútuaDesk Documentação

Documentação da API

Conecte o sistema da sua associação ao fluxo de vistorias. Cadastre a equipe, distribua ordens e receba os resultados na sua operação.

REST · JSON · HTTPSVersão 1.14.0
URL base de produçãohttps://app.mutuadesk.com.br

Esta página é uma referência de leitura. Os exemplos usam dados fictícios e não executam chamadas nem solicitam suas credenciais.

Primeira conexão

  1. Crie a credencial da associação.

    No painel, abra Integrações → Nova credencial. Selecione apenas as permissões necessárias e confirme sua senha. Para o exemplo abaixo, habilite inspectors:read.

  2. Guarde o segredo no seu servidor.

    A credencial aparece uma única vez. Use um cofre de segredos ou variável de ambiente, como MUTUADESK_TOKEN. Não a inclua em código de navegador, repositórios, URLs ou logs.

  3. Consulte os vistoriadores.

    Execute a chamada a partir do seu sistema. Uma associação sem cadastros pode retornar uma lista vazia.

    cURL
    curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspectors?limit=50' \
      --header "Authorization: Bearer $MUTUADESK_TOKEN"

Ver parâmetros e resposta desta consulta →

Autenticação e permissões

As operações em /v1/integration usam a credencial da associação no cabeçalho Authorization: Bearer. O servidor verifica validade, revogação e permissões em cada chamada. A associação é determinada pela credencial; não envie associationId nos comandos de integração.

Permissões de leitura, escrita e publicação são independentes. Cada operação informa o acesso necessário. Credenciais existentes não recebem permissões novas automaticamente.

Use a credencial certa para cada fluxo.

O acesso do sistema da associação, a sessão pessoal do vistoriador e a sessão do associado são distintos. Consulte a identificação de autenticação em cada operação.

Sessão do vistoriador

Token pessoal opaco va_, emitido em /v1/auth/login. Expira em 15 minutos e é validado no SQL Server a cada chamada. Renovação com refresh vr_ rotativo, validade absoluta de 30 dias.

Credencial da integração

Credencial opaca vi_, criada pelo gestor no painel após confirmar sua senha. Hash armazenado no SQL Server; segredo exibido uma vez. Uma associação, permissões explícitas inspectors:read/write, templates:read/write/publish, assignments:read/write, results:read, webhooks:read/write e validade de 24 horas, 7 ou 30 dias (padrão). Credenciais anteriores preservam a expiração original. Revogável a qualquer momento. Novas permissões exigem nova credencial. Novas permissões: results:review, routes:read, routes:write. Credenciais existentes não recebem escopos adicionais automaticamente.

Assinatura do webhook

v1=hex(HMAC-SHA256(segredo, timestamp + "." + corpo JSON bruto)). O receptor verifica antes de interpretar JSON, compara em tempo constante, limita o relógio a 5 minutos e deduplica por ID de evento. Segredo de 32 bytes aleatórios em base64url, estabelecido na criação.

Sessão do associado

Sessão emitida por redeem, limitada à vistoria e validade do token pai. Banco verifica validade e revogação a cada chamada. Nunca aceita token compartilhável vs_ diretamente.

Limites de uso

Todas as chamadas em /v1/integration exigem o token no cabeçalho Authorization: Bearer. A credencial é vinculada à associação, com permissões, expiração e revogação verificadas no banco a cada chamada. Cookies ou tokens na URL não substituem esse cabeçalho.

Novas credenciais podem durar 24 horas, 7 ou 30 dias. O padrão recomendado para integrações entre servidores é de 30 dias. Crie a substituta antes do vencimento, atualize o sistema integrado e revogue a anterior. O painel avisa quando faltam até sete dias; não há renovação automática. Credenciais emitidas anteriormente mantêm sua validade original.

ControlePadrão por associação
Chamadas120 por janela de 60 segundos, somando todos os tokens.
Mapas e laudos30 operações por janela, também sujeitas à cota geral.
Fotos e PDFs256 MiB de downloads por janela.
Listagens paginadasAté 100 registros por página; padrão de 50, reduzido se a associação tiver um teto menor.

As cotas ficam no SQL Server e continuam valendo após reinícios ou em mais de uma instância. Criar outros tokens não aumenta a cota. O administrador do MútuaDesk pode ajustar esses valores por associação, com efeito na próxima chamada. O consumo já registrado é preservado.

A janela começa na primeira reserva de consumo e termina após o intervalo configurado. Chamadas autenticadas que retornam erros ou repetem uma operação idempotente também consomem chamadas. Downloads são reservados antes do envio; uma interrupção não devolve os bytes à cota.

Leia X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (segundos Unix), X-RateLimit-Window e X-RateLimit-Page-Limit. Ao receber 429, aguarde Retry-After antes de repetir, preservando a chave de idempotência. Os cabeçalhos de saldo são informativos e não reservam chamadas futuras.

Há ainda proteção de entrada por IP e concorrência. Distribua as consultas ao longo do tempo e use webhooks para evitar consultas repetitivas. A documentação e o login têm finalidade pública; as rotas que acessam dados da associação exigem autenticação.

Da vistoria ao resultado

  1. Prepare a equipe e os roteiros.

    Cadastre o vistoriador e provisione seu acesso. Crie checklists reutilizáveis e um roteiro adequado ao tipo de veículo. Publique a versão antes de distribuir a vistoria.

  2. Distribua a vistoria.

    Envie externalId, veículo, endereço, agendamento com fuso e templateRef com ID e versão publicados. O roteiro é preservado na ordem, mesmo que você publique versões posteriores. Use o cadastro individual ou lote de até 50 ordens.

  3. Escolha quem realiza a captura.

    O vistoriador recebe sua agenda no app. Para autovistoria, envie executionMode: "member", member e locationPolicy, sem inspectorId. O token é criado junto da ordem; consulte o acesso com assignments:write para compartilhá-lo. O associado usa o app Android, confere os dados e inicia a vistoria. A validade padrão é de 24 horas, com revogação e renovação disponíveis.

  4. Receba e analise.

    Consulte os resultados ou receba um webhook. A consulta individual inclui respostas e referências às fotos. A associação pode aprovar, reprovar ou solicitar correções e obter o laudo PDF.

Liberação, recebimento e aprovação são momentos diferentes.

queued permite ajustes. released indica liberação para a agenda e bloqueia alterações de distribuição nesta versão. O resultado recebido e o parecer da análise são consultados separadamente.

Reenvios e atualizações

Nas mutações administrativas indicadas na referência, envie Idempotency-Key. Gere uma chave por operação lógica e guarde-a com o comando. Se a resposta se perder, repita o mesmo método, caminho, corpo e If-Match com a mesma chave. A resposta é preservada por sete dias; alterar o pedido com a mesma chave retorna conflito.

Para atualizar um recurso, consulte-o primeiro e envie o ETag recebido no cabeçalho If-Match, incluindo as aspas. Ausência desse cabeçalho retorna 428; uma revisão antiga retorna 412.

HTTP
Authorization: Bearer <CREDENCIAL_DE_INTEGRACAO>
Content-Type: application/json
Idempotency-Key: operacao-unica-001
If-Match: "2"

Cabeçalhos ilustrativos. Verifique os exigidos por cada operação. Uploads do app e emissão de sessões têm regras próprias descritas na referência.

O externalId da vistoria é único dentro da associação, inclusive após cancelamento. Use-o para reconciliar pedidos antigos. Lotes são atômicos: uma ordem inválida rejeita o lote inteiro.

Paginação e filtros

Nas listagens que oferecem paginação, limit aceita 1 a 100 itens, com padrão 50. Continue com o nextCursor retornado até receber null, mantendo os mesmos filtros. Nem toda coleção usa paginação; consulte os parâmetros da operação.

Na consulta de resultados, search pesquisa código externo exato ou placa completa/parcial. Os filtros plate, externalId, inspectorId, reviewStatus, from e to podem ser combinados.

Períodos usam início inclusivo e fim exclusivo, sempre com horário e fuso. Nos resultados, a referência é a hora de recebimento no servidor. Codifique os parâmetros de URL, especialmente o sinal + do fuso. Cursores não congelam os dados entre chamadas; reconcilie os registros por ID se houver alterações simultâneas.

Receber webhooks

Cadastre um destino HTTPS com as permissões de webhook. O endereço deve usar domínio público, porta 443 e não conter credenciais, parâmetros ou fragmentos. O evento informa os IDs e a referência do resultado; consulte fotos e respostas pela API autenticada.

inspection.receivedinspection.approvedinspection.rejectedinspection.changes_requested
  1. Leia X-Vistoriador-Timestamp, X-Vistoriador-Event-Id e X-Vistoriador-Signature.
  2. Antes de interpretar o JSON, calcule HMAC-SHA256 usando o segredo do webhook e a mensagem timestamp + "." + corpo bruto. Compare em tempo constante com a assinatura hexadecimal após v1=.
  3. Rejeite tentativas com diferença de relógio superior a cinco minutos. Confira o ID do evento e persista-o para deduplicar.
  4. Responda com 2xx depois de persistir o evento ou colocá-lo em uma fila durável. O mesmo evento pode ser entregue mais de uma vez.

O segredo deve conter 32 bytes aleatórios codificados em base64url. Ele é definido na criação e não é devolvido pela API. Os cabeçalhos X-Vistoriador-* mantêm seus nomes por compatibilidade.

Falhas recebem até oito tentativas automáticas. Use entregas para acompanhar e reenvio manual quando necessário. Criar ou reativar um destino não gera eventos históricos.

Tratar erros

Confira o status HTTP e o code da resposta. O campo message explica a falha; a estrutura completa aparece nas respostas de cada operação.

Status Como tratar
400 / 422 Revise parâmetros, tipos e campos obrigatórios antes de repetir.
401 Verifique a credencial ou sessão: pode estar inválida, expirada ou revogada.
402 subscription_required: quando o controle comercial estiver ativo, novas vistorias exigem assinatura paga. Envios em andamento e resultados anteriores permanecem disponíveis.
403 Confira as permissões da credencial e o tipo de acesso aceito.
404 Confira o ID e a associação à qual o recurso pertence.
409 Consulte o estado atual. Pode haver conflito de idempotência, código duplicado ou uma ordem já liberada.
412 / 428 Consulte novamente o recurso e use seu ETag em If-Match. Reavalie a alteração antes de reenviar.
429 Respeite Retry-After quando presente e reduza a frequência das chamadas.
503 Tente novamente com espera progressiva, preservando a idempotência quando aplicável.

Referência das operações

Abra uma operação para ver autenticação, campos, exemplos e respostas.

v1.14.0

81 operações · 113 estruturas de dados

Vistoriadores vinculados

7 operações

Cadastros operacionais e provisionamento explícito de acesso ao app.

GETListar vistoriadores vinculados à associação/v1/integration/inspectors
Credencial da integraçãoLink desta operação ↗

Lista somente os vistoriadores da associação da credencial, com active=true por padrão. Use POST para cadastro operacional e /{inspectorId}/access para liberar login.

Permissões necessárias

inspectors:read

Parâmetros

NomeLocal / tipoDescrição e regras
limitopcionalquery
integer

O administrador pode reduzir o limite por associação. O padrão efetivo é o menor entre 50 e esse teto; consulte X-RateLimit-Page-Limit. Acima do teto retorna 400.

Mínimo: 1 · Máximo: 100 · Padrão inicial: 50
cursoropcionalquery
string

Cursor opaco vinculado à associação, ordenação e filtros; preservar os filtros ao continuar. A consulta não congela os registros entre páginas; reconciliar por ID se houver alterações simultâneas. Parâmetros desconhecidos ou repetidos retornam 400.

Tamanho mínimo: 1 · Tamanho máximo: 2048
activeopcionalquery
boolean
Padrão inicial: true

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspectors' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: InspectorPage

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCadastrar vistoriador da associação/v1/integration/inspectors
Credencial da integraçãoLink desta operação ↗

Cria o cadastro operacional. O login é provisionado separadamente em /access. A associação vem da credencial.

Permissões necessárias

inspectors:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: InspectorCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspectors' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

201Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedInspector

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

GETConsultar cadastro do vistoriador/v1/integration/inspectors/{inspectorId}
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

inspectors:read

Parâmetros

NomeLocal / tipoDescrição e regras
inspectorIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspectors/{inspectorId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedInspector

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Cadastro ou acesso não encontrado na associação.
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

PUTAtualizar cadastro do vistoriador/v1/integration/inspectors/{inspectorId}
Credencial da integraçãoLink desta operação ↗

Alterar a situação invalida sessões. E-mail com login vinculado não pode ser alterado por este endpoint. Desativação operacional com ordens queued é bloqueada; para bloquear imediatamente o login use PUT /access.

Permissões necessárias

inspectors:write

Parâmetros

NomeLocal / tipoDescrição e regras
inspectorIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: InspectorUpdate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PUT 'https://app.mutuadesk.com.br/v1/integration/inspectors/{inspectorId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedInspector

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Cadastro ou acesso não encontrado na associação.
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada.
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Envie If-Match com a revisão atual.
429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

GETConsultar vínculo de acesso ao app/v1/integration/inspectors/{inspectorId}/access
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

inspectors:read

Parâmetros

NomeLocal / tipoDescrição e regras
inspectorIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspectors/{inspectorId}/access' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: InspectorAccess

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Cadastro ou acesso não encontrado na associação.
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

POSTProvisionar conta ou vínculo do vistoriador/v1/integration/inspectors/{inspectorId}/access
Credencial da integraçãoLink desta operação ↗

If-Match usa revision do cadastro operacional. E-mail é o cadastrado no vistoriador. Conta nova exige senha temporária de 12–128 caracteres, válida por 7 dias, com troca obrigatória. Conta existente preserva senha e recebe vínculo pendente de aceite pessoal; temporaryPassword, se enviado neste caso, não é aplicado. Não retorna senha ou token. Um e-mail só pode ter um vínculo na mesma associação.

Permissões necessárias

inspectors:write

Parâmetros

NomeLocal / tipoDescrição e regras
inspectorIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: AccessProvision

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspectors/{inspectorId}/access' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

201Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: InspectorAccess

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Cadastro ou acesso não encontrado na associação.
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada.
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Envie If-Match com a revisão atual.
429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

PUTBloquear ou liberar acesso ao app/v1/integration/inspectors/{inspectorId}/access
Credencial da integraçãoLink desta operação ↗

If-Match usa revision de GET /access. Encerra sessões do titular em todos os aparelhos. Reativação exige novo login e preserva eventual aceite pendente. Não apaga dados locais.

Permissões necessárias

inspectors:write

Parâmetros

NomeLocal / tipoDescrição e regras
inspectorIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: AccessUpdate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PUT 'https://app.mutuadesk.com.br/v1/integration/inspectors/{inspectorId}/access' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: InspectorAccess

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Cadastro ou acesso não encontrado na associação.
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada.
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Envie If-Match com a revisão atual.
429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

Checklists

5 operações

Biblioteca reutilizável de perguntas e observações por associação.

GETListar checklists reutilizáveis/v1/integration/checklists
Credencial da integraçãoLink desta operação ↗

Lista a versão mais recente de cada checklist da associação, por id crescente. Cursor restrito à associação e ao tipo de recurso.

Permissões necessárias

templates:read

Parâmetros

NomeLocal / tipoDescrição e regras
limitopcionalquery
integer

O administrador pode reduzir o limite por associação. O padrão efetivo é o menor entre 50 e esse teto; consulte X-RateLimit-Page-Limit. Acima do teto retorna 400.

Mínimo: 1 · Máximo: 100 · Padrão inicial: 50
cursoropcionalquery
string

Cursor opaco vinculado à associação, ordenação e filtros; preservar os filtros ao continuar. A consulta não congela os registros entre páginas; reconciliar por ID se houver alterações simultâneas. Parâmetros desconhecidos ou repetidos retornam 400.

Tamanho mínimo: 1 · Tamanho máximo: 2048

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/checklists' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: ChecklistPage

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCriar checklist reutilizável/v1/integration/checklists
Credencial da integraçãoLink desta operação ↗

Cria a versão 1. O ID é único dentro da associação. Os itens são reutilizáveis em vários roteiros, por referência explícita à versão.

Permissões necessárias

templates:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: ChecklistCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/checklists' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "id": "conservacao",
  "name": "Conservação do veículo",
  "description": "Conferência comum aos roteiros de entrada e renovação.",
  "items": [
    {
      "id": "pneus",
      "title": "Pneus em bom estado?",
      "position": 1,
      "kind": "choice",
      "required": true,
      "options": [
        "Sim",
        "Não",
        "Não se aplica"
      ]
    },
    {
      "id": "avarias",
      "title": "Descreva as avarias",
      "position": 2,
      "kind": "text",
      "required": false
    }
  ]
}

Respostas

201Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedChecklist

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar a versão mais recente do checklist/v1/integration/checklists/{checklistId}
Credencial da integraçãoLink desta operação ↗

Retorna o checklist e seu ETag para editar com controle de concorrência.

Permissões necessárias

templates:read

Parâmetros

NomeLocal / tipoDescrição e regras
checklistIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/checklists/{checklistId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedChecklist

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

PUTSalvar uma nova versão do checklist/v1/integration/checklists/{checklistId}
Credencial da integraçãoLink desta operação ↗

Exige If-Match da versão mais recente. Cria a próxima versão imutável e preserva os roteiros existentes. Repetir a mesma Idempotency-Key, corpo e If-Match recupera a resposta. A adoção da nova versão em cada roteiro é explícita.

Permissões necessárias

templates:write

Parâmetros

NomeLocal / tipoDescrição e regras
checklistIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: ChecklistContent

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PUT 'https://app.mutuadesk.com.br/v1/integration/checklists/{checklistId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedChecklist

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar uma versão preservada do checklist/v1/integration/checklists/{checklistId}/versions/{version}
Credencial da integraçãoLink desta operação ↗

Consulta a versão exata da biblioteca da associação. Referências inexistentes ou de outra associação retornam 404.

Permissões necessárias

templates:read

Parâmetros

NomeLocal / tipoDescrição e regras
checklistIdobrigatóriopath
Identifier
versionobrigatóriopath
integer
Mínimo: 1 · Máximo: 2147483647

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/checklists/{checklistId}/versions/{version}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedChecklist

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

Roteiros

8 operações

Rascunhos editáveis, publicação imutável e arquivamento por versão.

GETListar os roteiros da associação/v1/integration/templates
Credencial da integraçãoLink desta operação ↗

name e vehicleTypes no resumo pertencem à versão mais recente. latestPublishedVersion identifica a versão disponível para novas ordens; pode ser null. Nenhuma versão é escolhida implicitamente na distribuição. O filtro vehicleType usa a versão mais recente; ordenação por id crescente.

Permissões necessárias

templates:read

Parâmetros

NomeLocal / tipoDescrição e regras
limitopcionalquery
integer

O administrador pode reduzir o limite por associação. O padrão efetivo é o menor entre 50 e esse teto; consulte X-RateLimit-Page-Limit. Acima do teto retorna 400.

Mínimo: 1 · Máximo: 100 · Padrão inicial: 50
cursoropcionalquery
string

Cursor opaco vinculado à associação, ordenação e filtros; preservar os filtros ao continuar. A consulta não congela os registros entre páginas; reconciliar por ID se houver alterações simultâneas. Parâmetros desconhecidos ou repetidos retornam 400.

Tamanho mínimo: 1 · Tamanho máximo: 2048
vehicleTypeopcionalquery
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/templates' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: TemplatePage

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCriar roteiro com a primeira versão em rascunho/v1/integration/templates
Credencial da integraçãoLink desta operação ↗

ID único dentro da associação da credencial. version=1, revision=1 e state=draft são gerados pelo servidor. Criar rascunho não o disponibiliza para vistorias. Aceita steps ou layout com referências de checklists. O servidor expande as versões indicadas e preserva o resultado.

Permissões necessárias

templates:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: TemplateCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/templates' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "id": "serra-carros",
  "name": "Vistoria de automóveis — Serra",
  "vehicleTypes": [
    "car"
  ],
  "steps": [
    {
      "id": "frente",
      "title": "Frente do veículo",
      "position": 1,
      "kind": "photo",
      "required": true,
      "instruction": "Enquadre toda a frente, com a placa legível e boa iluminação."
    },
    {
      "id": "traseira",
      "title": "Traseira do veículo",
      "position": 2,
      "kind": "photo",
      "required": true,
      "instruction": "Mostre a traseira inteira e a placa."
    },
    {
      "id": "painel",
      "title": "Painel de instrumentos",
      "position": 3,
      "kind": "photo",
      "required": true,
      "instruction": "Fotografe o painel com a quilometragem legível."
    },
    {
      "id": "vidros",
      "title": "Os vidros apresentam avarias?",
      "position": 4,
      "kind": "choice",
      "required": true,
      "instruction": "Selecione o que foi observado.",
      "options": [
        "Sim",
        "Não",
        "Não foi possível verificar"
      ]
    },
    {
      "id": "observacoes",
      "title": "Condições gerais do veículo",
      "position": 5,
      "kind": "text",
      "required": true,
      "instruction": "Descreva as condições observadas. Se não houver avarias, informe isso."
    }
  ]
}

Respostas

201Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedTemplateVersion

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar versões e seu estado/v1/integration/templates/{templateId}/versions
Credencial da integraçãoLink desta operação ↗

Ordenar por version decrescente. Incluir versões arquivadas para permitir consulta histórica.

Permissões necessárias

templates:read

Parâmetros

NomeLocal / tipoDescrição e regras
templateIdobrigatóriopath
Identifier
limitopcionalquery
integer

O administrador pode reduzir o limite por associação. O padrão efetivo é o menor entre 50 e esse teto; consulte X-RateLimit-Page-Limit. Acima do teto retorna 400.

Mínimo: 1 · Máximo: 100 · Padrão inicial: 50
cursoropcionalquery
string

Cursor opaco vinculado à associação, ordenação e filtros; preservar os filtros ao continuar. A consulta não congela os registros entre páginas; reconciliar por ID se houver alterações simultâneas. Parâmetros desconhecidos ou repetidos retornam 400.

Tamanho mínimo: 1 · Tamanho máximo: 2048

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: TemplateVersionPage

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCriar uma nova versão em rascunho/v1/integration/templates/{templateId}/versions
Credencial da integraçãoLink desta operação ↗

Enviar o conteúdo completo. O servidor atribui a próxima versão inteira sem reutilizar números; pedidos simultâneos recebem versões distintas. As versões anteriores e as ordens existentes permanecem preservadas. Aceita steps ou layout com referências de checklists. O servidor expande as versões indicadas e preserva o resultado.

Permissões necessárias

templates:write

Parâmetros

NomeLocal / tipoDescrição e regras
templateIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: TemplateContent

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "name": "Vistoria de automóveis — Serra",
  "vehicleTypes": [
    "car"
  ],
  "steps": [
    {
      "id": "frente",
      "title": "Frente do veículo",
      "position": 2,
      "kind": "photo",
      "required": true,
      "instruction": "Enquadre toda a frente, com a placa legível e boa iluminação."
    },
    {
      "id": "traseira",
      "title": "Traseira do veículo",
      "position": 3,
      "kind": "photo",
      "required": true,
      "instruction": "Mostre a traseira inteira e a placa."
    },
    {
      "id": "painel",
      "title": "Painel de instrumentos",
      "position": 1,
      "kind": "photo",
      "required": true,
      "instruction": "Fotografe o painel com a quilometragem legível."
    },
    {
      "id": "vidros",
      "title": "Os vidros apresentam avarias?",
      "position": 4,
      "kind": "choice",
      "required": true,
      "instruction": "Selecione o que foi observado.",
      "options": [
        "Sim",
        "Não",
        "Não foi possível verificar"
      ]
    },
    {
      "id": "observacoes",
      "title": "Condições gerais do veículo",
      "position": 5,
      "kind": "text",
      "required": true,
      "instruction": "Descreva as condições observadas. Se não houver avarias, informe isso."
    }
  ]
}

Respostas

201Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedTemplateVersion

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar uma versão do roteiro/v1/integration/templates/{templateId}/versions/{version}
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

templates:read

Parâmetros

NomeLocal / tipoDescrição e regras
templateIdobrigatóriopath
Identifier
versionobrigatóriopath
integer
Mínimo: 1 · Máximo: 2147483647

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions/{version}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedTemplateVersion

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

PUTSubstituir o conteúdo completo de um rascunho/v1/integration/templates/{templateId}/versions/{version}
Credencial da integraçãoLink desta operação ↗

Permitido apenas para state=draft. Versões publicadas ou arquivadas são imutáveis. Trocar fotos, posições ou obrigatoriedade de uma versão publicada exige nova versão. Aceita steps ou layout com referências de checklists. O servidor expande as versões indicadas e preserva o resultado.

Permissões necessárias

templates:write

Parâmetros

NomeLocal / tipoDescrição e regras
templateIdobrigatóriopath
Identifier
versionobrigatóriopath
integer
Mínimo: 1 · Máximo: 2147483647
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: TemplateContent

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PUT 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions/{version}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedTemplateVersion

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTPublicar uma versão para novas vistorias/v1/integration/templates/{templateId}/versions/{version}/publish
Credencial da integraçãoLink desta operação ↗

Transição draft → published. Validar estrutura, itens, posições exclusivas e tipos de veículo antes da publicação. Uma versão publicada não pode voltar a rascunho.

Permissões necessárias

templates:publish

Parâmetros

NomeLocal / tipoDescrição e regras
templateIdobrigatóriopath
Identifier
versionobrigatóriopath
integer
Mínimo: 1 · Máximo: 2147483647
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição opcional

application/json
Não aceita campos adicionais

Tipo: object

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions/{version}/publish' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedTemplateVersion

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTArquivar uma versão sem apagar o histórico/v1/integration/templates/{templateId}/versions/{version}/archive
Credencial da integraçãoLink desta operação ↗

Transição draft/published → archived; requer motivo. Impede novas atribuições usando essa versão. Vistorias já criadas conservam seu roteiro e continuam disponíveis. Arquivamento é terminal; para reutilizar, criar outra versão.

Permissões necessárias

templates:publish

Parâmetros

NomeLocal / tipoDescrição e regras
templateIdobrigatóriopath
Identifier
versionobrigatóriopath
integer
Mínimo: 1 · Máximo: 2147483647
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: Reason

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions/{version}/archive' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedTemplateVersion

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

Distribuição

7 operações

Ordens de uma associação, individualmente ou em lote. Alterações somente antes da liberação ao app.

GETConsultar a distribuição de vistorias/v1/integration/inspection-assignments
Credencial da integraçãoLink desta operação ↗

Inclui ordens canceladas. Filtra apenas a associação autenticada. Cursor usa ordenação estável por scheduledAt e id. status descreve distribuição, não execução ou conclusão no aparelho.

Permissões necessárias

assignments:read

Parâmetros

NomeLocal / tipoDescrição e regras
limitopcionalquery
integer

O administrador pode reduzir o limite por associação. O padrão efetivo é o menor entre 50 e esse teto; consulte X-RateLimit-Page-Limit. Acima do teto retorna 400.

Mínimo: 1 · Máximo: 100 · Padrão inicial: 50
cursoropcionalquery
string

Cursor opaco vinculado à associação, ordenação e filtros; preservar os filtros ao continuar. A consulta não congela os registros entre páginas; reconciliar por ID se houver alterações simultâneas. Parâmetros desconhecidos ou repetidos retornam 400.

Tamanho mínimo: 1 · Tamanho máximo: 2048
inspectorIdopcionalquery
Identifier
externalIdopcionalquery
Identifier
statusopcionalquery
DistributionStatus
fromopcionalquery
string

Início inclusivo do agendamento, com fuso.

Formato: "date-time"
toopcionalquery
string

Fim exclusivo do agendamento, com fuso; maior que from.

Formato: "date-time"

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: AssignmentPage

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCriar e atribuir uma vistoria a um vistoriador/v1/integration/inspection-assignments
Credencial da integraçãoLink desta operação ↗

Validar vínculo ativo do vistoriador e versão publicada compatível com vehicle.type. Copiar o roteiro completo para a ordem, definir distributionStatus=queued e gerar o id interno. externalId evita duplicatas mesmo após expirar a chave idempotente; duplicata retorna 409 external_id_exists. Não cria usuários ou veículos globais por efeito colateral. Com controle comercial ativado, exige período pago e pode retornar 402 subscription_required.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: AssignmentCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "externalId": "ordem-2026-001",
  "inspectorId": "vistoriador-001",
  "vehicle": {
    "id": "vehicle-001",
    "type": "car",
    "plate": "ABC1D23",
    "description": "Fiat Argo 1.0 · Automóvel"
  },
  "scheduledAt": "2026-09-29T09:00:00-03:00",
  "address": {
    "postalCode": "01001-000",
    "street": "Praça da Sé",
    "neighborhood": "Sé",
    "city": "São Paulo",
    "state": "SP",
    "number": "125",
    "complement": "Sala 2",
    "reference": "Portão azul"
  },
  "contactPhone": "",
  "templateRef": {
    "id": "serra-carros",
    "version": 1
  }
}

Respostas

201Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedAssignment

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

402Regularize a assinatura no painel para criar novas vistorias. Consulta e envios em andamento permanecem disponíveis.
application/json
Campos do objeto
CampoTipoDescrição e regras
codeobrigatóriostring
Valor fixo: "subscription_required"
messageobrigatóriostring
403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTDistribuir até 50 vistorias em uma transação/v1/integration/inspection-assignments/batch
Credencial da integraçãoLink desta operação ↗

Lote ATÔMICO. Todas as ordens são validadas antes de persistir; qualquer conflito, duplicata ou vínculo inválido rejeita o lote inteiro. Retornar resultados na ordem da entrada. Em timeout, repetir o mesmo lote com a mesma chave; nunca criar outra chave para a mesma tentativa. Não aceitar corpos acima de 2 MB.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: AssignmentBatchCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/batch' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "assignments": [
    {
      "externalId": "ordem-2026-002",
      "inspectorId": "vistoriador-001",
      "vehicle": {
        "id": "vehicle-001",
        "type": "car",
        "plate": "ABC1D23",
        "description": "Fiat Argo 1.0 · Automóvel"
      },
      "scheduledAt": "2026-09-29T09:00:00-03:00",
      "address": "Rua das Flores, 120, Centro, Belo Horizonte - MG",
      "contactPhone": "",
      "templateRef": {
        "id": "serra-carros",
        "version": 1
      }
    },
    {
      "externalId": "ordem-2026-003",
      "inspectorId": "vistoriador-002",
      "vehicle": {
        "id": "vehicle-002",
        "type": "car",
        "plate": "DEF4G56",
        "description": "Volkswagen Polo · Automóvel"
      },
      "scheduledAt": "2026-09-29T11:00:00-03:00",
      "address": "Rua das Flores, 120, Centro, Belo Horizonte - MG",
      "contactPhone": "",
      "templateRef": {
        "id": "serra-carros",
        "version": 1
      }
    }
  ]
}

Respostas

201Operação concluída.
application/json

Estrutura: AssignmentBatchResult

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

402Regularize a assinatura no painel para criar novas vistorias. Consulta e envios em andamento permanecem disponíveis.
application/json
Campos do objeto
CampoTipoDescrição e regras
codeobrigatóriostring
Valor fixo: "subscription_required"
messageobrigatóriostring
403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar uma vistoria e sua revisão/v1/integration/inspection-assignments/{assignmentId}
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

assignments:read

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedAssignment

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

PATCHAlterar agendamento, endereço, contato ou roteiro antes da liberação/v1/integration/inspection-assignments/{assignmentId}
Credencial da integraçãoLink desta operação ↗

Somente distributionStatus=queued. Uma nova templateRef precisa apontar para versão publicada da mesma associação e compatível com o veículo. Uma ordem released retorna 409 assignment_already_released, mesmo se ainda parecer não iniciada. Usar protocolo de reconciliação futuro para alterações após liberação.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: AssignmentPatch

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PATCH 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "scheduledAt": "2026-09-29T10:00:00-03:00",
  "reason": "Novo horário combinado antes da liberação ao app."
}

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedAssignment

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTTrocar o vistoriador antes da liberação ao app/v1/integration/inspection-assignments/{assignmentId}/reassign
Credencial da integraçãoLink desta operação ↗

Somente queued; validar novo vínculo ativo. Manter id, externalId e cópia do roteiro. Nunca transferir silenciosamente uma ordem já liberada ao aparelho. Registrar responsável anterior, novo responsável e motivo no histórico.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: Reassignment

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}/reassign' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "inspectorId": "vistoriador-002",
  "reason": "Redistribuição antes da liberação ao app."
}

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedAssignment

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCancelar uma vistoria antes da liberação ao app/v1/integration/inspection-assignments/{assignmentId}/cancel
Credencial da integraçãoLink desta operação ↗

Somente queued → cancelled. Guardar motivo e histórico; não apagar nem reutilizar externalId. Ordens cancelled não entram na agenda. Ordens released retornam 409 assignment_already_released até existir confirmação de cancelamento no app.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: Reason

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}/cancel' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "reason": "Atendimento cancelado antes da liberação ao app."
}

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: ManagedAssignment

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

Resultados

3 operações
GETListar resultados recebidos/v1/integration/inspection-results
Credencial da integraçãoLink desta operação ↗

Resumos paginados, sem carregar bytes das fotos. Ordenação por receivedAt crescente e ID do resultado. Datas e campos de consulta inválidos retornam 400; identificadores fora do formato retornam 422. Cursor vinculado à associação e aos filtros; leitura do conjunto atual, sem snapshot entre páginas.

Permissões necessárias

results:read

Parâmetros

NomeLocal / tipoDescrição e regras
limitopcionalquery
integer

O administrador pode reduzir o limite por associação. O padrão efetivo é o menor entre 50 e esse teto; consulte X-RateLimit-Page-Limit. Acima do teto retorna 400.

Mínimo: 1 · Máximo: 100 · Padrão inicial: 50
cursoropcionalquery
string

Cursor opaco vinculado à associação, ordenação e filtros; preservar os filtros ao continuar. A consulta não congela os registros entre páginas; reconciliar por ID se houver alterações simultâneas. Parâmetros desconhecidos ou repetidos retornam 400.

Tamanho mínimo: 1 · Tamanho máximo: 2048
searchopcionalquery
string

Busca unificada por código externo exato OU placa completa/parcial. Ignora maiúsculas e espaços nas extremidades; na placa também ignora espaços internos e hífens. Códigos mantêm sua pontuação literal. Combina com os demais filtros e vincula o cursor ao texto pesquisado.

Tamanho mínimo: 1 · Tamanho máximo: 100 · Padrão: "^[a-zA-Z0-9_.: -]{1,100}$"
plateopcionalquery
string

Placa completa ou trecho contido nela. Ignora maiúsculas, espaços e hífens. Após normalizar, deve conter de 1 a 7 letras ASCII ou números. Filtra a placa preservada no resultado e combina com os demais filtros. Preservar o mesmo filtro ao usar nextCursor.

Tamanho mínimo: 1 · Tamanho máximo: 16
externalIdopcionalquery
Identifier
inspectorIdopcionalquery
Identifier
fromopcionalquery
string

Horário de recebimento pelo servidor: from inclusivo, to exclusivo.

Formato: "date-time"
toopcionalquery
string

Horário de recebimento pelo servidor: from inclusivo, to exclusivo.

Formato: "date-time"
reviewStatusopcionalquery
ReviewStatus

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: ResultPage

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar fotos e respostas de uma vistoria/v1/integration/inspection-results/{assignmentId}
Credencial da integraçãoLink desta operação ↗

Caminho usa o ID da vistoria, não o ID do resultado. Inclui respostas e cópia congelada da ordem/roteiro. IDs de fotos são referências, não endereços públicos.

Permissões necessárias

results:read

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results/{assignmentId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: InspectionResult

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETBaixar uma foto recebida/v1/integration/inspection-results/{assignmentId}/photos/{photoId}
Credencial da integraçãoLink desta operação ↗

Download autenticado em partes a partir do SQL Server; somente fotos referenciadas no resultado recebido desta associação.

Permissões necessárias

results:read

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
photoIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results/{assignmentId}/photos/{photoId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Bytes da foto confirmada, acessíveis somente à associação. Sem URL pública; resposta privada e sem cache.
image/jpeg
Formato: "binary"

Tipo: string

image/png
Formato: "binary"

Tipo: string

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

Análise e laudos

4 operações
GETConsultar análise e histórico da vistoria/v1/integration/inspection-results/{assignmentId}/review
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

results:read

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results/{assignmentId}/review' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Consultar análise e histórico da vistoria
Cabeçalhos de resposta
  • ETag — Revisão para If-Match.
application/json

Estrutura: ReviewDetails

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

POSTAprovar, reprovar ou solicitar correções/v1/integration/inspection-results/{assignmentId}/review
Credencial da integraçãoLink desta operação ↗

Uma única decisão por entrega, com If-Match e idempotência. Correção cria outra ordem queued com somente os itens selecionados, todos obrigatórios, mesmo vistoriador e vínculo à original. Evidências anteriores permanecem imutáveis. Até dez rodadas; agendamento omitido usa o horário do servidor. O recebimento da correção gera outra análise pendente.

Permissões necessárias

results:review

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: ReviewCommand

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-results/{assignmentId}/review' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'If-Match: "1"' \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "decision": "changes_requested",
  "notes": "Refaça a foto frontal com a placa legível.",
  "stepIds": [
    "frente"
  ],
  "scheduledAt": "2026-10-01T14:00:00-03:00"
}

Respostas

200Aprovar, reprovar ou solicitar correções
Cabeçalhos de resposta
  • ETag — Revisão para If-Match.
application/json

Estrutura: InspectionReview

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

GETBaixar laudo PDF consolidado/v1/integration/inspection-results/{assignmentId}/report
Credencial da integraçãoLink desta operação ↗

Retrato no momento da geração, com dados do veículo, fotos, respostas, parecer e histórico. Itens corrigidos exibem a evidência mais recente; originais continuam disponíveis nos resultados. Sem assinatura digital certificada. Requer credencial ativa. Limite de 30 gerações por 15 minutos por identidade e duas gerações simultâneas por processo.

Permissões necessárias

results:read

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results/{assignmentId}/report' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Baixar laudo PDF consolidado
application/pdf
Formato: "binary"

Tipo: string

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

GETConsultar o parecer de uma vistoria própria/v1/inspection-assignments/{assignmentId}/review
Sessão do vistoriadorLink desta operação ↗

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/review' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Consultar o parecer de uma vistoria própria
application/json

Estrutura: ReviewDetails

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

Webhooks

6 operações
GETListar avisos automáticos/v1/integration/webhooks
Credencial da integraçãoLink desta operação ↗

Até dez endpoints, incluindo desativados. Segredos nunca são retornados.

Permissões necessárias

webhooks:read

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/webhooks' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: WebhookList

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTCadastrar webhook para novos resultados/v1/integration/webhooks
Credencial da integraçãoLink desta operação ↗

Endpoint nasce ativo e recebe apenas eventos futuros. Não há envio de eventos históricos. O cadastro valida a URL; resolução pública de DNS e TLS são verificados a cada tentativa. Segredo criptografado no servidor, nunca retornado ou guardado em texto no cache idempotente.

Permissões necessárias

webhooks:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: WebhookCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/webhooks' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

201Operação concluída.
application/json

Estrutura: WebhookEndpoint

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar configuração e revisão do webhook/v1/integration/webhooks/{webhookId}
Credencial da integraçãoLink desta operação ↗

Use o ETag para alterar o estado.

Permissões necessárias

webhooks:read

Parâmetros

NomeLocal / tipoDescrição e regras
webhookIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/webhooks/{webhookId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: WebhookEndpoint

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

PATCHAtivar ou desativar o webhook/v1/integration/webhooks/{webhookId}
Credencial da integraçãoLink desta operação ↗

Desativar cancela tentativas pendentes. Uma chamada já em andamento pode terminar. Reativar habilita futuros eventos; não reenvia entregas canceladas automaticamente. URL e segredo não são editáveis nesta versão.

Permissões necessárias

webhooks:write

Parâmetros

NomeLocal / tipoDescrição e regras
webhookIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: WebhookPatch

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PATCH 'https://app.mutuadesk.com.br/v1/integration/webhooks/{webhookId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
Cabeçalhos de resposta
  • ETag — Revisão do recurso entre aspas, por exemplo "2". Usar em If-Match na próxima alteração.
    Padrão: "^\"[1-9][0-9]*\"$"
application/json

Estrutura: WebhookEndpoint

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

428Cabeçalho If-Match obrigatório.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar as últimas entregas/v1/integration/webhooks/{webhookId}/deliveries
Credencial da integraçãoLink desta operação ↗

Até 100 entregas, ordenadas por criação decrescente. Respostas HTTP do destino não são armazenadas; somente código e erro resumido. Tentativas automáticas até oito, com intervalo exponencial de 30 segundos até uma hora. Entrega pelo menos uma vez: receptor deve deduplicar pelo eventId.

Permissões necessárias

webhooks:read

Parâmetros

NomeLocal / tipoDescrição e regras
webhookIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/webhooks/{webhookId}/deliveries' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: WebhookDeliveryList

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTReenviar uma entrega com falha ou cancelada/v1/integration/webhooks/{webhookId}/deliveries/{deliveryId}/retry
Credencial da integraçãoLink desta operação ↗

Exige endpoint ativo e estado failed/cancelled; demais estados retornam 409. Reinicia o ciclo de tentativas, preservando ID e corpo do evento. Repetir com a mesma chave recupera a operação anterior. Uma nova tentativa manual depois de nova falha deve usar nova chave.

Permissões necessárias

webhooks:write

Parâmetros

NomeLocal / tipoDescrição e regras
webhookIdobrigatóriopath
Identifier
deliveryIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: EmptyObject

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/webhooks/{webhookId}/deliveries/{deliveryId}/retry' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: WebhookRetry

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

Rotas de visitas

8 operações
GETConsultar rotas do dia/v1/integration/visit-routes
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

routes:read

Parâmetros

NomeLocal / tipoDescrição e regras
dateobrigatórioquery
string
Formato: "date"
inspectorIdopcionalquery
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/visit-routes' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Consultar rotas do dia
application/json

Estrutura: VisitRouteList

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

POSTCalcular e disponibilizar uma rota para o vistoriador/v1/integration/visit-routes
Credencial da integraçãoLink desta operação ↗

Até 20 visitas não recebidas, mesmo vistoriador ativo e dia em America/Sao_Paulo. Recebe coordenadas confirmadas pelo solicitante. Usa matriz rodoviária OSRM, sequencia por agendamento ou heurística de menor tempo sem piorar o custo da ordem agendada. Sem garantia de ótimo global, trânsito, duração do atendimento, janelas de horário ou retorno ao início. Mantém os agendamentos; optimized exige conferência de horários. Substitui atomicamente a rota ativa do vistoriador/dia, preservando o histórico. Mudança de visita durante cálculo gera 409. Idempotência recupera o resultado mesmo com provedor indisponível.

Permissões necessárias

routes:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: VisitRouteCommand

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/visit-routes' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Exemplo de corpo · dados fictícios

JSON
{
  "inspectorId": "vistoriador-001",
  "date": "2026-10-01",
  "mode": "optimized",
  "start": {
    "latitude": -19.9245,
    "longitude": -43.9352
  },
  "stops": [
    {
      "assignmentId": "vistoria-001",
      "latitude": -19.9321,
      "longitude": -43.9378
    }
  ]
}

Respostas

201Calcular e disponibilizar uma rota para o vistoriador
Cabeçalhos de resposta
  • ETag — Revisão para If-Match.
application/json

Estrutura: VisitRoute

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

POSTComparar percurso antes de disponibilizar no app/v1/integration/visit-routes/preview
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

routes:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: VisitRouteCommand

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/visit-routes/preview' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Comparar percurso antes de disponibilizar no app
application/json

Estrutura: VisitRoutePreview

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

GETLocalizar um endereço de vistoria para confirmação humana/v1/integration/visit-routes/geocode
Credencial da integraçãoLink desta operação ↗

Consulta manual ao Nominatim, nunca autocomplete. Envia apenas campos de endereço, omitindo contato, complemento e referência. Requer endereço estruturado; aceita zero a cinco candidatos que devem ser conferidos pelo usuário. Cache de 30 dias e limite global de uma consulta por segundo, persistido em banco. Provedores configuráveis. Sem mapa ou ponto confirmado, a integração pode informar coordenadas obtidas por seu próprio serviço.

Permissões necessárias

routes:read

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatórioquery
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/visit-routes/geocode' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Localizar um endereço de vistoria para confirmação humana
application/json

Estrutura: GeocodeResults

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

GETConsultar rota e visitas alteradas ou concluídas/v1/integration/visit-routes/{routeId}
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

routes:read

Parâmetros

NomeLocal / tipoDescrição e regras
routeIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/visit-routes/{routeId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Consultar rota e visitas alteradas ou concluídas
Cabeçalhos de resposta
  • ETag — Revisão para If-Match.
application/json

Estrutura: VisitRoute

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

PATCHRetirar uma rota do app/v1/integration/visit-routes/{routeId}
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

routes:write

Parâmetros

NomeLocal / tipoDescrição e regras
routeIdobrigatóriopath
Identifier
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: VisitRouteDeactivate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PATCH 'https://app.mutuadesk.com.br/v1/integration/visit-routes/{routeId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'If-Match: "1"' \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Retirar uma rota do app
Cabeçalhos de resposta
  • ETag — Revisão para If-Match.
application/json

Estrutura: VisitRoute

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

GETConsultar as rotas ativas do próprio vistoriador/v1/visit-routes
Sessão do vistoriadorLink desta operação ↗

Exige sessão ativa, vínculo aceito e vistoriador correspondente. Omite visitas cujo conteúdo ou responsável mudou. Visitas já recebidas são marcadas completed. A liberação da agenda não invalida a rota. stale informa que os totais originais precisam de novo planejamento.

Parâmetros

NomeLocal / tipoDescrição e regras
dateobrigatórioquery
string
Formato: "date"

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/visit-routes' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Consultar as rotas ativas do próprio vistoriador
application/json

Estrutura: VisitRouteList

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

GETConsultar uma rota ativa autorizada/v1/visit-routes/{routeId}
Sessão do vistoriadorLink desta operação ↗

Exige sessão ativa, vínculo aceito e vistoriador correspondente. Omite visitas cujo conteúdo ou responsável mudou. Visitas já recebidas são marcadas completed. A liberação da agenda não invalida a rota. stale informa que os totais originais precisam de novo planejamento.

Parâmetros

NomeLocal / tipoDescrição e regras
routeIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/visit-routes/{routeId}' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Consultar uma rota ativa autorizada
Cabeçalhos de resposta
  • ETag — Revisão para If-Match.
application/json

Estrutura: VisitRoute

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

429Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

503Falha de validação, acesso ou serviço.
application/json

Estrutura: Error

Vistoria do associado

9 operações
POSTVerificar token e receber sessão restrita/v1/self-inspections/redeem

Corpo da requisição obrigatório

application/json

Estrutura: MemberRedeemInput

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/self-inspections/redeem' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberRedeemed

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

GETValidar acesso e consultar dados ou recibo/v1/self-inspections/session
Sessão do associadoLink desta operação ↗

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/self-inspections/session' \
  --header "Authorization: Bearer $SESSAO_ASSOCIADO"

Respostas

200Operação concluída
application/json

Estrutura: MemberSession

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

POSTConfirmar dados antes de enviar fotos/v1/self-inspections/confirm
Sessão do associadoLink desta operação ↗

Corpo da requisição obrigatório

application/json

Estrutura: MemberConfirmation

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/self-inspections/confirm' \
  --header "Authorization: Bearer $SESSAO_ASSOCIADO" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberSession

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

POSTEncerrar sessão deste aparelho/v1/self-inspections/logout
Sessão do associadoLink desta operação ↗

Corpo da requisição obrigatório

application/json

Estrutura: MemberEmpty

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/self-inspections/logout' \
  --header "Authorization: Bearer $SESSAO_ASSOCIADO" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberLogout

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

GETConsultar e copiar token da vistoria/v1/integration/inspection-assignments/{assignmentId}/self-access
Credencial da integraçãoLink desta operação ↗

Requer assignments:write, inclusive para revelar o token. Todas as consultas são restritas à associação autenticada. O segredo nunca aparece na listagem de ordens, auditoria ou resposta idempotente de escrita.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}/self-access' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída
application/json

Estrutura: MemberAccessView

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

POSTGerar token após vencimento ou revogação/v1/integration/inspection-assignments/{assignmentId}/self-access
Credencial da integraçãoLink desta operação ↗

Requer assignments:write, inclusive para revelar o token. Todas as consultas são restritas à associação autenticada. O segredo nunca aparece na listagem de ordens, auditoria ou resposta idempotente de escrita.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: MemberAccessIssue

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}/self-access' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberAccessMutation

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

412Revisão ausente ou desatualizada.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

428Revisão ausente ou desatualizada.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

POSTInvalidar token e todas as suas sessões/v1/integration/inspection-assignments/{assignmentId}/self-access/revoke
Credencial da integraçãoLink desta operação ↗

Requer assignments:write, inclusive para revelar o token. Todas as consultas são restritas à associação autenticada. O segredo nunca aparece na listagem de ordens, auditoria ou resposta idempotente de escrita.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: MemberEmpty

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}/self-access/revoke' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberAccessMutation

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

412Revisão ausente ou desatualizada.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

428Revisão ausente ou desatualizada.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

POSTInvalidar token e gerar substituto ligado ao anterior/v1/integration/inspection-assignments/{assignmentId}/self-access/rotate
Credencial da integraçãoLink desta operação ↗

Requer assignments:write, inclusive para revelar o token. Todas as consultas são restritas à associação autenticada. O segredo nunca aparece na listagem de ordens, auditoria ou resposta idempotente de escrita.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: MemberAccessIssue

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/{assignmentId}/self-access/rotate' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberAccessMutation

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

412Revisão ausente ou desatualizada.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

428Revisão ausente ou desatualizada.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

POSTLocalizar endereço antes de criar a vistoria/v1/integration/inspection-assignments/geocode-address
Credencial da integraçãoLink desta operação ↗

Requer assignments:write, inclusive para revelar o token. Todas as consultas são restritas à associação autenticada. O segredo nunca aparece na listagem de ordens, auditoria ou resposta idempotente de escrita.

Permissões necessárias

assignments:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: GeocodeAddressInput

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments/geocode-address' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída
application/json

Estrutura: MemberGeocodeResult

401Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

403Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

404Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

409Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

422Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

429Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

503Falha de autenticação, autorização, validação ou disponibilidade.
application/json

Estrutura: Error

Produção e acesso

8 operações
GETConsultar opções públicas de acesso/v1/config

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/config'

Respostas

200Operação concluída.
application/json

Estrutura: PublicConfig

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
POSTSolicitar confirmação ou recuperação para conta já cadastrada/v1/auth/request-email

Não cria vistoriadores. Resposta genérica para conta inexistente, desativada ou elegível. Limites persistidos por IP e e-mail. O link de confirmação vence em 60 minutos; recuperação em 30 minutos. Abrir o link não o consome: é necessário confirmar a ação. Falta de configuração SMTP retorna 503.

Corpo da requisição obrigatório

application/json

Estrutura: EmailRequest

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/auth/request-email' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

202Operação concluída.
application/json

Estrutura: EmailAccepted

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
POSTConfirmar e-mail de vistoriador/v1/auth/confirm-email

Corpo da requisição obrigatório

application/json

Estrutura: ConfirmEmail

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/auth/confirm-email' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: AccessConfirmed

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
POSTRedefinir senha e revogar sessões do vistoriador/v1/auth/reset-password

Token de uso único vinculado à conta e à finalidade. Revoga todas as sessões e links da conta e confirma o e-mail. Não altera vínculos nem libera contas bloqueadas pela associação.

Corpo da requisição obrigatório

application/json

Estrutura: ResetPassword

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/auth/reset-password' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: AccessConfirmed

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
GETConsultar armazenamento e entregas da associação/v1/integration/operations
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

assignments:read

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/operations' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: OperationsSummary

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
GETConsultar as últimas 100 solicitações da associação/v1/integration/data-requests
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

privacy:read

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/data-requests' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN"

Respostas

200Operação concluída.
application/json

Estrutura: DataRequestPage

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
POSTRegistrar solicitação de acesso, correção, exclusão ou guarda/v1/integration/data-requests
Credencial da integraçãoLink desta operação ↗

Registra e audita o pedido para atendimento humano. Não exporta nem apaga automaticamente vistorias, fotos ou backups.

Permissões necessárias

privacy:write

Parâmetros

NomeLocal / tipoDescrição e regras
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"

Corpo da requisição obrigatório

application/json

Estrutura: DataRequestCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/integration/data-requests' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: DataRequest

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.
PATCHRegistrar andamento e resposta ao titular/v1/integration/data-requests/{requestId}
Credencial da integraçãoLink desta operação ↗

Permissões necessárias

privacy:write

Parâmetros

NomeLocal / tipoDescrição e regras
requestIdobrigatóriopath
string
Idempotency-Keyobrigatórioheader
string

Obrigatório nas mutações administrativas da integração. Escopo: associação + método + caminho + chave. Mesmo corpo e If-Match reproduzem resposta por 7 dias. Autenticar antes de consultar cache. Emissão/renovação de tokens de sessão não usam esse cache.

Tamanho mínimo: 8 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_.:-]+$"
If-Matchobrigatórioheader
string

ETag forte obtido no GET individual. O servidor exige correspondência exata; não aceita * ou lista. Ausente: 428; desatualizado: 412.

Padrão: "^\"[1-9][0-9]*\"$"

Corpo da requisição obrigatório

application/json

Estrutura: DataRequestUpdate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. O ETag do exemplo é ilustrativo: use o retornado pela consulta atual. Gere uma chave por operação; preserve-a ao repetir a mesma tentativa. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PATCH 'https://app.mutuadesk.com.br/v1/integration/data-requests/{requestId}' \
  --header "Authorization: Bearer $MUTUADESK_TOKEN" \
  --header 'Idempotency-Key: operacao-exemplo-001' \
  --header 'If-Match: "1"' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: DataRequest

400Comando inválido ou link inválido, vencido ou utilizado.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

429Limite temporário de tentativas. Respeite Retry-After.

Acesso ao app

6 operações
POSTEntrar no app do vistoriador/v1/auth/login

Não há registro público de vistoriador. Contas são provisionadas pelo painel ou pela integração. Acesso temporário só permite perfil, troca de senha e saída. Limite persistido por IP e e-mail. Não há cookie de autenticação móvel.

Corpo da requisição obrigatório

application/json

Estrutura: MobileLogin

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/auth/login' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: MobileSession

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

POSTRenovar e substituir os tokens da sessão/v1/auth/refresh

Refresh de uso único. A validade total de 30 dias não é estendida. Reutilização de refresh consumido revoga a sessão inteira, incluindo tokens substitutos. Serializar renovações no cliente; não repetir automaticamente um pedido após resposta perdida.

Corpo da requisição obrigatório

application/json

Estrutura: MobileRefresh

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/auth/refresh' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: MobileSession

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

POSTEncerrar a sessão do aparelho/v1/auth/logout

Invalida a sessão identificada pelo refresh, inclusive se ele já foi consumido. Repetições são seguras.

Corpo da requisição obrigatório

application/json

Estrutura: MobileRefresh

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/auth/logout' \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: Success

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

GETValidar sessão e consultar vínculos do vistoriador/v1/me
Sessão do vistoriadorLink desta operação ↗

Consulta ativa de expiração, revogação, conta e vínculos habilitados. Não confia apenas na presença do token no aparelho.

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/me' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Operação concluída.
application/json

Estrutura: MobileProfile

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

POSTTrocar a senha e encerrar sessões anteriores/v1/me/password
Sessão do vistoriadorLink desta operação ↗

Verifica senha atual e exige senha diferente, com 12–128 caracteres. Revoga todas as sessões anteriores e devolve novos tokens. Sem cache de idempotência.

Corpo da requisição obrigatório

application/json

Estrutura: MobilePasswordChange

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/me/password' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: MobileSession

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

Agenda do vistoriador

4 operações

Acesso com sessão pessoal do vistoriador.

GETConsultar disponibilidade de avisos de agenda/v1/me/notifications
Sessão do vistoriadorLink desta operação ↗

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/me/notifications' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Disponibilidade do provedor; não representa permissão concedida no Android.
application/json
Campos do objeto
CampoTipoDescrição e regras
enabledobrigatórioboolean
401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

PUTRegistrar ou renovar o aparelho na sessão do vistoriador/v1/me/push-device
Sessão do vistoriadorLink desta operação ↗

Token Firebase cifrado no servidor. Cadastro vinculado à conta e à sessão autenticadas; renovação da sessão preserva o vínculo. Não aceita credencial de integração ou token de associado. Repetir na rotação do token Firebase e ao entrar novamente. A sessão é revalidada antes do envio de cada aviso.

Corpo da requisição obrigatório

application/json
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
installationIdobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
tokenobrigatóriostring
Tamanho mínimo: 20 · Tamanho máximo: 4096 · Somente envio

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PUT 'https://app.mutuadesk.com.br/v1/me/push-device' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Registro atualizado, ou enabled=false quando push não está configurado.
application/json
Campos do objeto
CampoTipoDescrição e regras
enabledobrigatórioboolean
401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

DELETERemover os avisos deste aparelho e sessão/v1/me/push-device
Sessão do vistoriadorLink desta operação ↗

Corpo da requisição obrigatório

application/json
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
installationIdobrigatóriostring
Padrão: "^[a-f0-9]{64}$"

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request DELETE 'https://app.mutuadesk.com.br/v1/me/push-device' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Registro removido quando pertence à conta e sessão; operação idempotente.
application/json
Campos do objeto
CampoTipoDescrição e regras
okopcionalboolean
Valor fixo: true
401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

GETReceber ordens autorizadas para o vistoriador autenticado/v1/inspection-assignments
Sessão do vistoriadorLink desta operação ↗

Contrato existente do app. O servidor filtra pelo vistoriador da sessão e por vínculos ativos, nunca por um inspectorId informado pelo cliente. Entrega ordens queued/released com roteiro completo, preservando o snapshot mesmo após arquivamento da versão. Antes de autorizar a resposta, registra atomicamente queued → released e incrementa revision, em exclusão mútua com alteração/cancelamento/transferência. released é uma marca conservadora de liberação, não um comprovante de recebimento. Não aceitar credencial da integração nesta rota. Não truncar silenciosamente: se exceder 500 ordens ou 2 MB, retornar 409 agenda_limit_exceeded e exigir evolução da paginação do app. A agenda v1 não comunica exclusões, cancelamentos ou reatribuições após liberação.

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/inspection-assignments' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Agenda com os roteiros completos de cada ordem
Cabeçalhos de resposta
  • Cache-Control — Agenda autenticada não deve ser armazenada por intermediários.
    Valor fixo: "no-store"
application/json

Estrutura: Agenda

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

Envio do vistoriador

6 operações
POSTIniciar ou retomar uma foto/v1/inspection-assignments/{assignmentId}/photos
Sessão do vistoriador ou Sessão do associadoLink desta operação ↗

Somente token pessoal com vínculo ativo e aceito, para ordem liberada e atribuída ao próprio vistoriador. Autorização revalidada antes da gravação. Limite compartilhado de 5.000 chamadas em 15 minutos por conta. Até 20 MiB por foto, 200 MiB reservados e 450 alocações por ordem, incluindo tentativas anteriores. JPEG ou PNG estático, até 16.777.216 pixels. A mesma ordem, etapa e SHA-256 retornam a mesma alocação; metadados divergentes retornam 409. Não exige Idempotency-Key. Sem novas alocações após recebimento. Também aceita sessão vm_ confirmada, exclusivamente para sua vistoria; token pai revogado ou vencido retorna 401.

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Corpo da requisição obrigatório

application/json

Estrutura: PhotoUploadCreate

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/photos' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: PhotoUpload

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar partes já recebidas/v1/inspection-assignments/{assignmentId}/photos/{photoId}
Sessão do vistoriador ou Sessão do associadoLink desta operação ↗

Somente token pessoal com vínculo ativo e aceito, para ordem liberada e atribuída ao próprio vistoriador. Autorização revalidada antes da gravação. Limite compartilhado de 5.000 chamadas em 15 minutos por conta. receivedChunks contém índices zero-based. Partes já recebidas não precisam ser reenviadas. Também aceita sessão vm_ confirmada, exclusivamente para sua vistoria; token pai revogado ou vencido retorna 401.

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
photoIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/photos/{photoId}' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Operação concluída.
application/json

Estrutura: PhotoUpload

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

PUTEnviar uma parte da foto/v1/inspection-assignments/{assignmentId}/photos/{photoId}/chunks/{index}
Sessão do vistoriador ou Sessão do associadoLink desta operação ↗

Somente token pessoal com vínculo ativo e aceito, para ordem liberada e atribuída ao próprio vistoriador. Autorização revalidada antes da gravação. Limite compartilhado de 5.000 chamadas em 15 minutos por conta. Cada parte tem exatamente 1 MiB, exceto a última, com o restante indicado por byteLength. Aceita partes fora de ordem. Repetição idêntica é segura; conteúdo diferente no mesmo índice retorna 409. O corpo contém apenas bytes, sem base64 ou multipart. Também aceita sessão vm_ confirmada, exclusivamente para sua vistoria; token pai revogado ou vencido retorna 401.

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
photoIdobrigatóriopath
Identifier
indexobrigatóriopath
integer
Mínimo: 0 · Máximo: 19

Corpo da requisição obrigatório

application/octet-stream

De 1 a 1.048.576 bytes; tamanho exato conforme índice e comprimento total.

Formato: "binary"

Tipo: string

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request PUT 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/photos/{photoId}/chunks/{index}' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/octet-stream' \
  --data-binary '@parte.bin'

Respostas

200Operação concluída.
application/json

Estrutura: PhotoUpload

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTValidar a foto completa/v1/inspection-assignments/{assignmentId}/photos/{photoId}/complete
Sessão do vistoriador ou Sessão do associadoLink desta operação ↗

Somente token pessoal com vínculo ativo e aceito, para ordem liberada e atribuída ao próprio vistoriador. Autorização revalidada antes da gravação. Limite compartilhado de 5.000 chamadas em 15 minutos por conta. Verifica todas as partes, tamanho, SHA-256, formato e decodificação da imagem. Partes ausentes: 409; imagem inválida: 422. Repetição após confirmação é segura. Também aceita sessão vm_ confirmada, exclusivamente para sua vistoria; token pai revogado ou vencido retorna 401.

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier
photoIdobrigatóriopath
Identifier

Corpo da requisição obrigatório

application/json

Estrutura: EmptyObject

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/photos/{photoId}/complete' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: PhotoUpload

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

GETConsultar confirmação do envio/v1/inspection-assignments/{assignmentId}/result
Sessão do vistoriador ou Sessão do associadoLink desta operação ↗

Somente token pessoal com vínculo ativo e aceito, para ordem liberada e atribuída ao próprio vistoriador. Autorização revalidada antes da gravação. Limite compartilhado de 5.000 chamadas em 15 minutos por conta. 404 se não recebido. Consulte antes de reenviar fotos ou reabrir um rascunho local; resposta perdida não exige repetir o envio. Também aceita sessão vm_ confirmada, exclusivamente para sua vistoria; token pai revogado ou vencido retorna 401.

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.

cURL
curl --request GET 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/result' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR"

Respostas

200Operação concluída.
application/json

Estrutura: ResultReceipt

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

POSTEnviar checklist e concluir a vistoria/v1/inspection-assignments/{assignmentId}/result
Sessão do vistoriador ou Sessão do associadoLink desta operação ↗

Somente token pessoal com vínculo ativo e aceito, para ordem liberada e atribuída ao próprio vistoriador. Autorização revalidada antes da gravação. Limite compartilhado de 5.000 chamadas em 15 minutos por conta. Retorna somente após commit de resultado, auditoria e avisos pendentes na mesma transação. Uma resposta 200 confirma recebimento, não análise ou aprovação. Não exige Idempotency-Key: o corpo final é imutável e naturalmente idempotente. Datas do cliente não são prova do horário da captura. Também aceita sessão vm_ confirmada, exclusivamente para sua vistoria; token pai revogado ou vencido retorna 401.

Parâmetros

NomeLocal / tipoDescrição e regras
assignmentIdobrigatóriopath
Identifier

Corpo da requisição obrigatório

application/json

Estrutura: ResultSubmission

Exemplo de chamada

Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima. Prepare o arquivo de corpo conforme a estrutura documentada.

cURL
curl --request POST 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/result' \
  --header "Authorization: Bearer $SESSAO_VISTORIADOR" \
  --header 'Content-Type: application/json' \
  --data-binary '@corpo.json'

Respostas

200Operação concluída.
application/json

Estrutura: ResultReceipt

400JSON, cursor ou cabeçalhos inválidos.
application/json

Estrutura: Error

401Credencial ausente, inválida ou expirada.
application/json

Estrutura: Error

403Credencial não possui a permissão exigida.
application/json

Estrutura: Error

404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/json

Estrutura: Error

409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/json

Estrutura: Error

413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/json

Estrutura: Error

415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/json

Estrutura: Error

422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/json

Estrutura: Error

429Limite atingido. A integração compartilha cotas por associação, inclusive entre credenciais e instâncias. Os códigos integration_rate_limited, integration_expensive_limited e integration_download_limited indicam qual cota foi excedida. integration_ip_limited e integration_busy protegem a entrada da aplicação. Aguarde Retry-After e reutilize a chave de idempotência quando aplicável.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
  • X-RateLimit-Limit — Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.
    Mínimo: 1
  • X-RateLimit-Remaining — Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.
    Mínimo: 0
  • X-RateLimit-Reset — Final da janela em segundos Unix.
  • X-RateLimit-Window — Duração da janela em segundos.
    Mínimo: 1
  • X-RateLimit-Page-Limit — Teto de itens nas listagens paginadas da associação.
    Mínimo: 1 · Máximo: 100
application/json

Estrutura: Error

503Falha transitória; nenhuma mutação parcial deve ficar gravada.
Cabeçalhos de resposta
  • Retry-After — Tempo em segundos para tentar novamente, preservando a chave da mesma operação.
    Mínimo: 1
application/json

Estrutura: Error

Estruturas de dados

Campos obrigatórios, tipos e regras dos objetos usados nas requisições e respostas. Os links de estrutura em cada operação levam diretamente a esta referência.

Identifier
Padrão: "^[a-zA-Z0-9_.:-]{1,100}$"

Tipo: string

Ver definição completa
JSON Schema
{
  "type": "string",
  "pattern": "^[a-zA-Z0-9_.:-]{1,100}$"
}
Agenda
Campos do objeto
CampoTipoDescrição e regras
schemaVersionobrigatóriointeger
Valor fixo: 1
assignmentsobrigatóriolista de Assignment
Itens máximos: 500
Ver estrutura
Itens máximos: 500

Itens: Assignment

Ver definição completa
JSON Schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "assignments"
  ],
  "properties": {
    "schemaVersion": {
      "type": "integer",
      "const": 1
    },
    "assignments": {
      "type": "array",
      "maxItems": 500,
      "items": {
        "$ref": "#/components/schemas/Assignment"
      }
    }
  }
}
Assignment
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
associationobrigatórioobject
Ver estrutura
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1
vehicleobrigatórioobject
Ver estrutura
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
typeobrigatórioIdentifier
plateobrigatóriostring
Tamanho mínimo: 1
descriptionobrigatóriostring
Tamanho mínimo: 1
scheduledAtobrigatóriostring
Formato: "date-time"
addressobrigatóriostring

Endereço formatado, incluindo número, complemento, CEP e referência quando preenchidos; mantido em texto para clientes existentes.

Tamanho mínimo: 1
contactPhoneopcionalstring
templateobrigatórioTemplate
addressDetailsopcionalAddressDetails
correctionOfopcionalCorrectionOrigin
executionModeopcionalobjeto
Valores: "member", "inspector"
memberopcionalMember
locationPolicyopcionalLocationPolicy
Ver definição completa
JSON Schema
{
  "type": "object",
  "required": [
    "id",
    "association",
    "vehicle",
    "scheduledAt",
    "address",
    "template"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "association": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/Identifier"
        },
        "name": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "vehicle": {
      "type": "object",
      "required": [
        "id",
        "type",
        "plate",
        "description"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/Identifier"
        },
        "type": {
          "$ref": "#/components/schemas/Identifier"
        },
        "plate": {
          "type": "string",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "scheduledAt": {
      "type": "string",
      "format": "date-time"
    },
    "address": {
      "type": "string",
      "minLength": 1,
      "description": "Endereço formatado, incluindo número, complemento, CEP e referência quando preenchidos; mantido em texto para clientes existentes."
    },
    "contactPhone": {
      "type": "string"
    },
    "template": {
      "$ref": "#/components/schemas/Template"
    },
    "addressDetails": {
      "$ref": "#/components/schemas/AddressDetails"
    },
    "correctionOf": {
      "$ref": "#/components/schemas/CorrectionOrigin"
    },
    "executionMode": {
      "enum": [
        "member",
        "inspector"
      ]
    },
    "member": {
      "$ref": "#/components/schemas/Member"
    },
    "locationPolicy": {
      "$ref": "#/components/schemas/LocationPolicy"
    }
  }
}
Template
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
associationIdobrigatórioIdentifier
versionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
vehicleTypesobrigatóriolista de string
Itens mínimos: 1
Ver estrutura
Itens mínimos: 1

Itens: string

Tamanho mínimo: 1

Tipo: string

stepsobrigatóriolista de Step

IDs e posições únicos; a ordem do array não determina a sequência.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições únicos; a ordem do array não determina a sequência.

Itens mínimos: 1 · Itens máximos: 150

Itens: Step

Ver definição completa
JSON Schema
{
  "type": "object",
  "required": [
    "id",
    "associationId",
    "version",
    "vehicleTypes",
    "steps"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "associationId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "vehicleTypes": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "steps": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "description": "IDs e posições únicos; a ordem do array não determina a sequência.",
      "items": {
        "$ref": "#/components/schemas/Step"
      }
    }
  }
}
Step
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
titleobrigatóriostring
Tamanho mínimo: 1
instructionopcionalstring
Tamanho mínimo: 1
positionobrigatóriointeger
Mínimo: 1
kindobrigatóriostring
Valores: "photo", "choice", "text"
requiredobrigatórioboolean
optionsopcionallista de string
Itens mínimos: 1
Ver estrutura
Itens mínimos: 1

Itens: string

Tamanho mínimo: 1

Tipo: string

Combina todas as estruturas:

  • objeto

    Tipo: objeto

Ver definição completa
JSON Schema
{
  "type": "object",
  "required": [
    "id",
    "title",
    "position",
    "kind",
    "required"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "title": {
      "type": "string",
      "minLength": 1
    },
    "instruction": {
      "type": "string",
      "minLength": 1
    },
    "position": {
      "type": "integer",
      "minimum": 1
    },
    "kind": {
      "type": "string",
      "enum": [
        "photo",
        "choice",
        "text"
      ]
    },
    "required": {
      "type": "boolean"
    },
    "options": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "minLength": 1
      }
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "kind": {
            "const": "choice"
          }
        }
      },
      "then": {
        "required": [
          "options"
        ]
      }
    }
  ]
}
InputStep
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
titleobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
instructionopcionalstring
Tamanho mínimo: 1 · Tamanho máximo: 2000 · Padrão: "\\S"
positionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
kindobrigatóriostring
Valores: "photo", "choice", "text"
requiredobrigatórioboolean
optionsopcionallista de string
Itens mínimos: 1 · Itens máximos: 50
Ver estrutura
Itens mínimos: 1 · Itens máximos: 50

Itens: string

Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"

Tipo: string

Combina todas as estruturas:

  • objeto

    Tipo: objeto

Ver definição completa
JSON Schema
{
  "type": "object",
  "required": [
    "id",
    "title",
    "position",
    "kind",
    "required"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "instruction": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "pattern": "\\S"
    },
    "position": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "kind": {
      "type": "string",
      "enum": [
        "photo",
        "choice",
        "text"
      ]
    },
    "required": {
      "type": "boolean"
    },
    "options": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "pattern": "\\S"
      },
      "maxItems": 50
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "kind": {
            "const": "choice"
          }
        }
      },
      "then": {
        "required": [
          "options"
        ]
      },
      "else": {
        "not": {
          "required": [
            "options"
          ]
        }
      }
    }
  ],
  "additionalProperties": false
}
TemplateCreate

Envie exatamente um dos campos: steps para etapas próprias, ou layout para combinar etapas e checklists. A resposta sempre inclui steps expandido; se layout foi usado, retorna também layout. Para editar preservando vínculos, reenvie layout e omita steps.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
vehicleTypesobrigatóriolista de Identifier
Itens mínimos: 1 · Itens máximos: 50
Ver estrutura
Itens mínimos: 1 · Itens máximos: 50

Itens: Identifier

stepsopcionallista de InputStep

IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array.

Itens mínimos: 1 · Itens máximos: 150

Itens: InputStep

layoutopcionalTemplateLayout

Aceita exatamente uma estrutura:

  • objeto

    Tipo: objeto

  • objeto

    Tipo: objeto

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "name",
    "vehicleTypes"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "vehicleTypes": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "uniqueItems": true,
      "items": {
        "$ref": "#/components/schemas/Identifier"
      }
    },
    "steps": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "items": {
        "$ref": "#/components/schemas/InputStep"
      },
      "description": "IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array."
    },
    "layout": {
      "$ref": "#/components/schemas/TemplateLayout"
    }
  },
  "oneOf": [
    {
      "required": [
        "steps"
      ]
    },
    {
      "required": [
        "layout"
      ]
    }
  ],
  "description": "Envie exatamente um dos campos: steps para etapas próprias, ou layout para combinar etapas e checklists. A resposta sempre inclui steps expandido; se layout foi usado, retorna também layout. Para editar preservando vínculos, reenvie layout e omita steps."
}
TemplateContent

Envie exatamente um dos campos: steps para etapas próprias, ou layout para combinar etapas e checklists. A resposta sempre inclui steps expandido; se layout foi usado, retorna também layout. Para editar preservando vínculos, reenvie layout e omita steps.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
vehicleTypesobrigatóriolista de Identifier
Itens mínimos: 1 · Itens máximos: 50
Ver estrutura
Itens mínimos: 1 · Itens máximos: 50

Itens: Identifier

stepsopcionallista de InputStep

IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array.

Itens mínimos: 1 · Itens máximos: 150

Itens: InputStep

layoutopcionalTemplateLayout

Aceita exatamente uma estrutura:

  • objeto

    Tipo: objeto

  • objeto

    Tipo: objeto

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "name",
    "vehicleTypes"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "vehicleTypes": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "uniqueItems": true,
      "items": {
        "$ref": "#/components/schemas/Identifier"
      }
    },
    "steps": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "items": {
        "$ref": "#/components/schemas/InputStep"
      },
      "description": "IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array."
    },
    "layout": {
      "$ref": "#/components/schemas/TemplateLayout"
    }
  },
  "oneOf": [
    {
      "required": [
        "steps"
      ]
    },
    {
      "required": [
        "layout"
      ]
    }
  ],
  "description": "Envie exatamente um dos campos: steps para etapas próprias, ou layout para combinar etapas e checklists. A resposta sempre inclui steps expandido; se layout foi usado, retorna também layout. Para editar preservando vínculos, reenvie layout e omita steps."
}
TemplateVersionState
Valores: "draft", "published", "archived"

Tipo: string

Ver definição completa
JSON Schema
{
  "type": "string",
  "enum": [
    "draft",
    "published",
    "archived"
  ]
}
ManagedTemplateVersion

steps contém a sequência completa já expandida. layout, quando presente, preserva a composição editável e as referências às versões dos checklists. Alterações na biblioteca não mudam esta versão ou suas ordens.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
associationIdobrigatórioIdentifier
versionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
vehicleTypesobrigatóriolista de Identifier
Itens mínimos: 1 · Itens máximos: 50
Ver estrutura
Itens mínimos: 1 · Itens máximos: 50

Itens: Identifier

stepsobrigatóriolista de InputStep

IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array.

Itens mínimos: 1 · Itens máximos: 150

Itens: InputStep

stateobrigatórioTemplateVersionState
revisionobrigatóriointeger
Mínimo: 1
createdAtobrigatóriostring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
updatedAtobrigatóriostring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
publishedAtopcionalstring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
archivedAtopcionalstring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
archiveReasonopcionalstring
Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S"
layoutopcionalTemplateLayout
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "associationId",
    "version",
    "name",
    "vehicleTypes",
    "steps",
    "state",
    "revision",
    "createdAt",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "associationId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "vehicleTypes": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "uniqueItems": true,
      "items": {
        "$ref": "#/components/schemas/Identifier"
      }
    },
    "steps": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "items": {
        "$ref": "#/components/schemas/InputStep"
      },
      "description": "IDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array."
    },
    "state": {
      "$ref": "#/components/schemas/TemplateVersionState"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "publishedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "archivedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "archiveReason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "\\S"
    },
    "layout": {
      "$ref": "#/components/schemas/TemplateLayout"
    }
  },
  "description": "steps contém a sequência completa já expandida. layout, quando presente, preserva a composição editável e as referências às versões dos checklists. Alterações na biblioteca não mudam esta versão ou suas ordens."
}
TemplateSummary
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
associationIdobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
latestVersionobrigatóriointeger
Mínimo: 1
latestPublishedVersionobrigatóriointeger | null

Maior versão publicada que não foi arquivada, ou null.

Mínimo: 1
vehicleTypesobrigatóriolista de Identifier
Itens mínimos: 1
Ver estrutura
Itens mínimos: 1

Itens: Identifier

updatedAtobrigatóriostring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "associationId",
    "name",
    "latestVersion",
    "latestPublishedVersion",
    "vehicleTypes",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "associationId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "latestVersion": {
      "type": "integer",
      "minimum": 1
    },
    "latestPublishedVersion": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "description": "Maior versão publicada que não foi arquivada, ou null."
    },
    "vehicleTypes": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "$ref": "#/components/schemas/Identifier"
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    }
  }
}
Inspector
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
externalIdopcionalIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
activeobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "name",
    "active"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "externalId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "active": {
      "type": "boolean"
    }
  }
}
TemplateReference
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
versionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "version"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    }
  }
}
IntegrationVehicle
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
typeobrigatórioIdentifier
plateobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 20 · Padrão: "\\S"
descriptionobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "plate",
    "description"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "type": {
      "$ref": "#/components/schemas/Identifier"
    },
    "plate": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "pattern": "\\S"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "pattern": "\\S"
    }
  }
}
AssignmentCreate

externalId é único na associação. Para associado, envie executionMode=member, member e locationPolicy e omita inspectorId. O código member.id deve identificar sempre a mesma pessoa; há no máximo um token não vencido e não revogado por associado na associação. Criação é atômica e retorna memberAccessId, nunca o segredo. Consulte self-access com assignments:write para compartilhá-lo. Ordens de associado já nascem released e seus dados ficam congelados. Para vistoriador, executionMode pode ser omitido; locationPolicy é opcional por compatibilidade, mas sua ausência impede a comparação geográfica.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
externalIdobrigatórioIdentifier
inspectorIdopcionalIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

vehicleobrigatórioIntegrationVehicle
scheduledAtobrigatóriostring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
addressobrigatórioAddressInput
contactPhoneopcionalstring
Tamanho máximo: 40
templateRefobrigatórioTemplateReference
executionModeopcionalobjeto
Padrão inicial: "inspector" · Valores: "member", "inspector"
memberopcionalMember
locationPolicyopcionalLocationPolicy
tokenExpiresInHoursopcionalinteger
Mínimo: 1 · Máximo: 168 · Padrão inicial: 24

Aceita exatamente uma estrutura:

  • objeto
    Campos do objeto
    CampoTipoDescrição e regras
    inspectorIdobrigatórioIdentifier
    executionModeopcionalobjeto
    Valor fixo: "inspector"
  • objeto
    Campos do objeto
    CampoTipoDescrição e regras
    executionModeobrigatórioobjeto
    Valor fixo: "member"
    inspectorIdopcionalnull
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "externalId",
    "vehicle",
    "scheduledAt",
    "address",
    "templateRef"
  ],
  "properties": {
    "externalId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "vehicle": {
      "$ref": "#/components/schemas/IntegrationVehicle"
    },
    "scheduledAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "address": {
      "$ref": "#/components/schemas/AddressInput"
    },
    "contactPhone": {
      "type": "string",
      "maxLength": 40
    },
    "templateRef": {
      "$ref": "#/components/schemas/TemplateReference"
    },
    "executionMode": {
      "enum": [
        "member",
        "inspector"
      ],
      "default": "inspector"
    },
    "member": {
      "$ref": "#/components/schemas/Member"
    },
    "locationPolicy": {
      "$ref": "#/components/schemas/LocationPolicy"
    },
    "tokenExpiresInHours": {
      "type": "integer",
      "minimum": 1,
      "maximum": 168,
      "default": 24
    }
  },
  "description": "externalId é único na associação. Para associado, envie executionMode=member, member e locationPolicy e omita inspectorId. O código member.id deve identificar sempre a mesma pessoa; há no máximo um token não vencido e não revogado por associado na associação. Criação é atômica e retorna memberAccessId, nunca o segredo. Consulte self-access com assignments:write para compartilhá-lo. Ordens de associado já nascem released e seus dados ficam congelados. Para vistoriador, executionMode pode ser omitido; locationPolicy é opcional por compatibilidade, mas sua ausência impede a comparação geográfica.",
  "oneOf": [
    {
      "required": [
        "inspectorId"
      ],
      "properties": {
        "inspectorId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "executionMode": {
          "const": "inspector"
        }
      },
      "not": {
        "anyOf": [
          {
            "required": [
              "member"
            ]
          },
          {
            "required": [
              "tokenExpiresInHours"
            ]
          }
        ]
      }
    },
    {
      "required": [
        "executionMode",
        "member",
        "locationPolicy"
      ],
      "properties": {
        "executionMode": {
          "const": "member"
        },
        "inspectorId": {
          "type": "null"
        }
      }
    }
  ]
}
AssignmentBatchCreate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentsobrigatóriolista de AssignmentCreate

Um lote atômico; externalId não pode se repetir no lote ou na associação.

Itens mínimos: 1 · Itens máximos: 50
Ver estrutura

Um lote atômico; externalId não pode se repetir no lote ou na associação.

Itens mínimos: 1 · Itens máximos: 50

Itens: AssignmentCreate

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignments"
  ],
  "properties": {
    "assignments": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "$ref": "#/components/schemas/AssignmentCreate"
      },
      "description": "Um lote atômico; externalId não pode se repetir no lote ou na associação."
    }
  }
}
DistributionStatus

queued: nunca liberada ao app; released: o servidor autorizou ao menos uma leitura (não prova recebimento ou início); cancelled: cancelada antes da liberação.

Valores: "queued", "released", "cancelled"

Tipo: string

Ver definição completa
JSON Schema
{
  "type": "string",
  "enum": [
    "queued",
    "released",
    "cancelled"
  ],
  "description": "queued: nunca liberada ao app; released: o servidor autorizou ao menos uma leitura (não prova recebimento ou início); cancelled: cancelada antes da liberação."
}
ManagedAssignment

assignment é a mesma estrutura entregue na agenda do app. O roteiro é uma cópia da versão escolhida. distributionStatus não informa conclusão, envio ou aprovação da vistoria.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentobrigatórioAssignment
externalIdobrigatórioIdentifier
inspectorIdobrigatórioIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

distributionStatusobrigatórioDistributionStatus
revisionobrigatóriointeger
Mínimo: 1
createdAtobrigatóriostring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
updatedAtobrigatóriostring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
releasedAtopcionalstring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
cancelledAtopcionalstring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
cancellationReasonopcionalstring
Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S"
memberAccessIdopcionalIdentifier
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignment",
    "externalId",
    "inspectorId",
    "distributionStatus",
    "revision",
    "createdAt",
    "updatedAt"
  ],
  "properties": {
    "assignment": {
      "$ref": "#/components/schemas/Assignment"
    },
    "externalId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "distributionStatus": {
      "$ref": "#/components/schemas/DistributionStatus"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "releasedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "cancelledAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "cancellationReason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "\\S"
    },
    "memberAccessId": {
      "$ref": "#/components/schemas/Identifier"
    }
  },
  "description": "assignment é a mesma estrutura entregue na agenda do app. O roteiro é uma cópia da versão escolhida. distributionStatus não informa conclusão, envio ou aprovação da vistoria."
}
AssignmentBatchResult
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentsobrigatóriolista de ManagedAssignment
Itens mínimos: 1 · Itens máximos: 50
Ver estrutura
Itens mínimos: 1 · Itens máximos: 50

Itens: ManagedAssignment

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignments"
  ],
  "properties": {
    "assignments": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "$ref": "#/components/schemas/ManagedAssignment"
      }
    }
  }
}
AssignmentPatch

Só para queued. Atualiza apenas campos presentes; null é inválido. reason é obrigatório e não basta sozinho. Não altera veículo, externalId ou associação.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
scheduledAtopcionalstring
Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$"
addressopcionalAddressInput
contactPhoneopcionalstring
Tamanho máximo: 40
templateRefopcionalTemplateReference
reasonobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S"
locationPolicyopcionalLocationPolicy

Aceita uma ou mais estruturas:

  • objeto

    Tipo: objeto

  • objeto

    Tipo: objeto

  • objeto

    Tipo: objeto

  • objeto

    Tipo: objeto

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "reason"
  ],
  "properties": {
    "scheduledAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "(Z|[+-][0-9]{2}:[0-9]{2})$"
    },
    "address": {
      "$ref": "#/components/schemas/AddressInput"
    },
    "contactPhone": {
      "type": "string",
      "maxLength": 40
    },
    "templateRef": {
      "$ref": "#/components/schemas/TemplateReference"
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "\\S"
    },
    "locationPolicy": {
      "$ref": "#/components/schemas/LocationPolicy"
    }
  },
  "anyOf": [
    {
      "required": [
        "scheduledAt"
      ]
    },
    {
      "required": [
        "address"
      ]
    },
    {
      "required": [
        "contactPhone"
      ]
    },
    {
      "required": [
        "templateRef"
      ]
    }
  ],
  "description": "Só para queued. Atualiza apenas campos presentes; null é inválido. reason é obrigatório e não basta sozinho. Não altera veículo, externalId ou associação."
}
Reassignment
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
inspectorIdobrigatórioIdentifier
reasonobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "inspectorId",
    "reason"
  ],
  "properties": {
    "inspectorId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "\\S"
    }
  }
}
Reason
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
reasonobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "reason"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "\\S"
    }
  }
}
Error
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
codeobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 100 · Padrão: "\\S"
messageobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 2000 · Padrão: "\\S"
requestIdobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 100 · Padrão: "\\S"
detailsopcionallista de object
Ver estrutura

Itens: object

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
pathobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S"
codeobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 100 · Padrão: "\\S"
messageobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "code",
    "message",
    "requestId"
  ],
  "properties": {
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "\\S"
    },
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "pattern": "\\S"
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "\\S"
    },
    "details": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "path",
          "code",
          "message"
        ],
        "properties": {
          "path": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "pattern": "\\S"
          },
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "\\S"
          },
          "message": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000,
            "pattern": "\\S"
          }
        }
      }
    }
  }
}
InspectorPage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de Inspector
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: Inspector

nextCursorobrigatóriostring | null
Tamanho máximo: 2048
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items",
    "nextCursor"
  ],
  "properties": {
    "items": {
      "type": "array",
      "maxItems": 100,
      "items": {
        "$ref": "#/components/schemas/Inspector"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 2048
    }
  }
}
TemplatePage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de TemplateSummary
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: TemplateSummary

nextCursorobrigatóriostring | null
Tamanho máximo: 2048
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items",
    "nextCursor"
  ],
  "properties": {
    "items": {
      "type": "array",
      "maxItems": 100,
      "items": {
        "$ref": "#/components/schemas/TemplateSummary"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 2048
    }
  }
}
TemplateVersionPage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de ManagedTemplateVersion
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: ManagedTemplateVersion

nextCursorobrigatóriostring | null
Tamanho máximo: 2048
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items",
    "nextCursor"
  ],
  "properties": {
    "items": {
      "type": "array",
      "maxItems": 100,
      "items": {
        "$ref": "#/components/schemas/ManagedTemplateVersion"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 2048
    }
  }
}
AssignmentPage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de ManagedAssignment
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: ManagedAssignment

nextCursorobrigatóriostring | null
Tamanho máximo: 2048
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items",
    "nextCursor"
  ],
  "properties": {
    "items": {
      "type": "array",
      "maxItems": 100,
      "items": {
        "$ref": "#/components/schemas/ManagedAssignment"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 2048
    }
  }
}
InspectorCreate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120
emailobrigatóriostring
Tamanho máximo: 254
phoneopcionalstring
Tamanho máximo: 40
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "name",
    "email"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "email": {
      "type": "string",
      "maxLength": 254
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    }
  }
}
InspectorUpdate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120
emailobrigatóriostring
Tamanho máximo: 254
phoneopcionalstring
Tamanho máximo: 40
activeobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "name",
    "email",
    "active"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "email": {
      "type": "string",
      "maxLength": 254
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    },
    "active": {
      "type": "boolean"
    }
  }
}
ManagedInspector
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120
emailobrigatóriostring
Tamanho máximo: 254
phoneobrigatóriostring
Tamanho máximo: 40
activeobrigatórioboolean
revisionobrigatóriointeger
Mínimo: 1
createdAtobrigatóriostring
Formato: "date-time"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "name",
    "email",
    "phone",
    "active",
    "revision",
    "createdAt"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "email": {
      "type": "string",
      "maxLength": 254
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    },
    "active": {
      "type": "boolean"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    }
  }
}
InspectorAccess
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
emailobrigatóriostring
Formato: "email"
enabledobrigatórioboolean
acceptedobrigatórioboolean
revisionobrigatóriointeger
Mínimo: 1
messageopcionalstring
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "email",
    "enabled",
    "accepted",
    "revision"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    },
    "enabled": {
      "type": "boolean"
    },
    "accepted": {
      "type": "boolean"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "message": {
      "type": "string"
    }
  }
}
AccessProvision
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
temporaryPasswordopcionalstring
Tamanho mínimo: 12 · Tamanho máximo: 128 · Somente envio
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [],
  "properties": {
    "temporaryPassword": {
      "type": "string",
      "minLength": 12,
      "maxLength": 128,
      "writeOnly": true
    }
  }
}
AccessUpdate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
enabledobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "enabled"
  ],
  "properties": {
    "enabled": {
      "type": "boolean"
    }
  }
}
MobileLogin
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
emailobrigatóriostring
Formato: "email" · Tamanho máximo: 254
passwordobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 128 · Somente envio
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "email",
    "password"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 254
    },
    "password": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "writeOnly": true
    }
  }
}
MobileRefresh
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
refreshTokenobrigatóriostring
Padrão: "^vr_[A-Za-z0-9_-]{43}$" · Somente envio
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "refreshToken"
  ],
  "properties": {
    "refreshToken": {
      "type": "string",
      "pattern": "^vr_[A-Za-z0-9_-]{43}$",
      "writeOnly": true
    }
  }
}
MobilePasswordChange
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
currentPasswordobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 128 · Somente envio
newPasswordobrigatóriostring
Tamanho mínimo: 12 · Tamanho máximo: 128 · Somente envio
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "currentPassword",
    "newPassword"
  ],
  "properties": {
    "currentPassword": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "writeOnly": true
    },
    "newPassword": {
      "type": "string",
      "minLength": 12,
      "maxLength": 128,
      "writeOnly": true
    }
  }
}
MobileProfile
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
accountobrigatórioobject
Não aceita campos adicionais
Ver estrutura
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120
emailobrigatóriostring
Formato: "email"
mustChangePasswordobrigatórioboolean
associationsobrigatóriolista de object
Ver estrutura

Itens: object

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200
inspectorIdobrigatórioIdentifier
acceptedobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "account",
    "associations"
  ],
  "properties": {
    "account": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "name",
        "email",
        "mustChangePassword"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/Identifier"
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "mustChangePassword": {
          "type": "boolean"
        }
      }
    },
    "associations": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "inspectorId",
          "accepted"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Identifier"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "inspectorId": {
            "$ref": "#/components/schemas/Identifier"
          },
          "accepted": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
MobileSession
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
accountobrigatórioobject
Não aceita campos adicionais
Ver estrutura
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120
emailobrigatóriostring
Formato: "email"
mustChangePasswordobrigatórioboolean
associationsobrigatóriolista de object
Ver estrutura

Itens: object

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200
inspectorIdobrigatórioIdentifier
acceptedobrigatórioboolean
tokenTypeobrigatóriostring
Valor fixo: "Bearer"
accessTokenobrigatóriostring
Padrão: "^va_[A-Za-z0-9_-]{43}$"
refreshTokenobrigatóriostring
Padrão: "^vr_[A-Za-z0-9_-]{43}$"
accessExpiresAtobrigatóriostring
Formato: "date-time"
refreshExpiresAtobrigatóriostring
Formato: "date-time"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "account",
    "associations",
    "tokenType",
    "accessToken",
    "refreshToken",
    "accessExpiresAt",
    "refreshExpiresAt"
  ],
  "properties": {
    "account": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "name",
        "email",
        "mustChangePassword"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/Identifier"
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "mustChangePassword": {
          "type": "boolean"
        }
      }
    },
    "associations": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "inspectorId",
          "accepted"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Identifier"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "inspectorId": {
            "$ref": "#/components/schemas/Identifier"
          },
          "accepted": {
            "type": "boolean"
          }
        }
      }
    },
    "tokenType": {
      "type": "string",
      "const": "Bearer"
    },
    "accessToken": {
      "type": "string",
      "pattern": "^va_[A-Za-z0-9_-]{43}$"
    },
    "refreshToken": {
      "type": "string",
      "pattern": "^vr_[A-Za-z0-9_-]{43}$"
    },
    "accessExpiresAt": {
      "type": "string",
      "format": "date-time"
    },
    "refreshExpiresAt": {
      "type": "string",
      "format": "date-time"
    }
  }
}
Success
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
okobrigatórioboolean
Valor fixo: true
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "ok"
  ],
  "properties": {
    "ok": {
      "type": "boolean",
      "const": true
    }
  }
}
EmptyObject
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [],
  "properties": {}
}
PhotoReference
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
sha256obrigatóriostring
Padrão: "^[a-f0-9]{64}$"
byteLengthobrigatóriointeger
Mínimo: 1 · Máximo: 20971520
contentTypeobrigatóriostring
Valores: "image/jpeg", "image/png"
captureopcionalCaptureEvidence ou null
Ver estrutura

Aceita uma ou mais estruturas:

locationAssessmentopcionalLocationAssessment
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "sha256",
    "byteLength",
    "contentType"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "byteLength": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20971520
    },
    "contentType": {
      "type": "string",
      "enum": [
        "image/jpeg",
        "image/png"
      ]
    },
    "capture": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CaptureEvidence"
        },
        {
          "type": "null"
        }
      ]
    },
    "locationAssessment": {
      "$ref": "#/components/schemas/LocationAssessment"
    }
  }
}
PhotoUploadCreate

capture é obrigatório para vistorias por token ou que possuam locationPolicy. Clientes novos sempre devem enviá-lo. Fotos antigas sem evidência continuam legíveis e recebem alerta. Mesmo hash/etapa com metadados diferentes retorna 409.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
stepIdobrigatórioIdentifier
sha256obrigatóriostring
Padrão: "^[a-f0-9]{64}$"
byteLengthobrigatóriointeger
Mínimo: 1 · Máximo: 20971520
contentTypeobrigatóriostring
Valores: "image/jpeg", "image/png"
captureopcionalCaptureEvidence
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "stepId",
    "sha256",
    "byteLength",
    "contentType"
  ],
  "properties": {
    "stepId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "byteLength": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20971520
    },
    "contentType": {
      "type": "string",
      "enum": [
        "image/jpeg",
        "image/png"
      ]
    },
    "capture": {
      "$ref": "#/components/schemas/CaptureEvidence"
    }
  },
  "description": "capture é obrigatório para vistorias por token ou que possuam locationPolicy. Clientes novos sempre devem enviá-lo. Fotos antigas sem evidência continuam legíveis e recebem alerta. Mesmo hash/etapa com metadados diferentes retorna 409."
}
PhotoUpload
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
sha256obrigatóriostring
Padrão: "^[a-f0-9]{64}$"
byteLengthobrigatóriointeger
Mínimo: 1 · Máximo: 20971520
contentTypeobrigatóriostring
Valores: "image/jpeg", "image/png"
stepIdobrigatórioIdentifier
statusobrigatóriostring
Valores: "uploading", "ready"
chunkSizeobrigatóriointeger
Valor fixo: 1048576
receivedChunksobrigatóriolista de integer
Itens máximos: 20
Ver estrutura
Itens máximos: 20

Itens: integer

Mínimo: 0 · Máximo: 19

Tipo: integer

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "sha256",
    "byteLength",
    "contentType",
    "stepId",
    "status",
    "chunkSize",
    "receivedChunks"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "byteLength": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20971520
    },
    "contentType": {
      "type": "string",
      "enum": [
        "image/jpeg",
        "image/png"
      ]
    },
    "stepId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "status": {
      "type": "string",
      "enum": [
        "uploading",
        "ready"
      ]
    },
    "chunkSize": {
      "type": "integer",
      "const": 1048576
    },
    "receivedChunks": {
      "type": "array",
      "uniqueItems": true,
      "maxItems": 20,
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 19
      }
    }
  }
}
AnswerInput

Aceita exatamente uma estrutura:

  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    stepIdobrigatórioIdentifier
    savedAtobrigatóriostring
    Formato: "date-time"
    photoIdobrigatórioIdentifier
  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    stepIdobrigatórioIdentifier
    savedAtobrigatóriostring
    Formato: "date-time"
    valueobrigatóriostring
    Tamanho mínimo: 1 · Tamanho máximo: 10000 · Padrão: "\\S"
Ver definição completa
JSON Schema
{
  "oneOf": [
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "stepId",
        "savedAt",
        "photoId"
      ],
      "properties": {
        "stepId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "savedAt": {
          "type": "string",
          "format": "date-time"
        },
        "photoId": {
          "$ref": "#/components/schemas/Identifier"
        }
      }
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "stepId",
        "savedAt",
        "value"
      ],
      "properties": {
        "stepId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "savedAt": {
          "type": "string",
          "format": "date-time"
        },
        "value": {
          "type": "string",
          "minLength": 1,
          "maxLength": 10000,
          "pattern": "\\S"
        }
      }
    }
  ]
}
ResultSubmission

Envio final imutável por vistoria. submissionId é uma impressão SHA-256 estável do rascunho local. Repetir exatamente o corpo retorna o mesmo recibo sem limite de 7 dias; outro corpo retorna 409. Etapas obrigatórias, versão e alternativas são validadas contra o roteiro congelado da ordem.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
submissionIdobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
templateIdobrigatórioIdentifier
templateVersionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
completedAtobrigatóriostring
Formato: "date-time"
answersobrigatóriolista de AnswerInput
Itens máximos: 150
Ver estrutura
Itens máximos: 150

Itens: AnswerInput

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "submissionId",
    "templateId",
    "templateVersion",
    "completedAt",
    "answers"
  ],
  "properties": {
    "submissionId": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "templateId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "templateVersion": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "completedAt": {
      "type": "string",
      "format": "date-time"
    },
    "answers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AnswerInput"
      },
      "maxItems": 150
    }
  },
  "description": "Envio final imutável por vistoria. submissionId é uma impressão SHA-256 estável do rascunho local. Repetir exatamente o corpo retorna o mesmo recibo sem limite de 7 dias; outro corpo retorna 409. Etapas obrigatórias, versão e alternativas são validadas contra o roteiro congelado da ordem."
}
ResultReceipt
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
submissionIdobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
assignmentIdobrigatórioIdentifier
statusobrigatóriostring
Valor fixo: "received"
receivedAtobrigatóriostring
Formato: "date-time"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "submissionId",
    "assignmentId",
    "status",
    "receivedAt"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "submissionId": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "status": {
      "type": "string",
      "const": "received"
    },
    "receivedAt": {
      "type": "string",
      "format": "date-time"
    }
  }
}
ResultAnswer

Aceita exatamente uma estrutura:

  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    stepIdobrigatórioIdentifier
    savedAtobrigatóriostring
    Formato: "date-time"
    kindobrigatórioobjeto
    Valor fixo: "photo"
    photoobrigatórioPhotoReference
  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    stepIdobrigatórioIdentifier
    savedAtobrigatóriostring
    Formato: "date-time"
    kindobrigatóriostring
    Valores: "choice", "text"
    valueobrigatóriostring
    Tamanho mínimo: 1 · Tamanho máximo: 10000 · Padrão: "\\S"
Ver definição completa
JSON Schema
{
  "oneOf": [
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "stepId",
        "savedAt",
        "kind",
        "photo"
      ],
      "properties": {
        "stepId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "savedAt": {
          "type": "string",
          "format": "date-time"
        },
        "kind": {
          "const": "photo"
        },
        "photo": {
          "$ref": "#/components/schemas/PhotoReference"
        }
      }
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "stepId",
        "savedAt",
        "kind",
        "value"
      ],
      "properties": {
        "stepId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "savedAt": {
          "type": "string",
          "format": "date-time"
        },
        "kind": {
          "type": "string",
          "enum": [
            "choice",
            "text"
          ]
        },
        "value": {
          "type": "string",
          "minLength": 1,
          "maxLength": 10000,
          "pattern": "\\S"
        }
      }
    }
  ]
}
InspectionResult
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
submissionIdobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
assignmentIdobrigatórioIdentifier
statusobrigatóriostring
Valor fixo: "received"
receivedAtobrigatóriostring
Formato: "date-time"
externalIdobrigatórioIdentifier
inspectorIdobrigatórioIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

assignmentobrigatórioAssignment
photoCountobrigatóriointeger
Mínimo: 0 · Máximo: 150
completedAtobrigatóriostring
Formato: "date-time"
answersobrigatóriolista de ResultAnswer
Itens máximos: 150
Ver estrutura
Itens máximos: 150

Itens: ResultAnswer

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "submissionId",
    "assignmentId",
    "status",
    "receivedAt",
    "externalId",
    "inspectorId",
    "assignment",
    "photoCount",
    "completedAt",
    "answers"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "submissionId": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "status": {
      "type": "string",
      "const": "received"
    },
    "receivedAt": {
      "type": "string",
      "format": "date-time"
    },
    "externalId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "assignment": {
      "$ref": "#/components/schemas/Assignment"
    },
    "photoCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 150
    },
    "completedAt": {
      "type": "string",
      "format": "date-time"
    },
    "answers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ResultAnswer"
      },
      "maxItems": 150
    }
  }
}
ResultSummary
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
assignmentIdobrigatórioIdentifier
externalIdobrigatórioIdentifier
inspectorIdobrigatórioIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

plateobrigatóriostring
vehicleDescriptionobrigatóriostring
completedAtobrigatóriostring
Formato: "date-time"
receivedAtobrigatóriostring
Formato: "date-time"
photoCountobrigatóriointeger
Mínimo: 0
statusobrigatórioobjeto
Valor fixo: "received"
reviewStatusobrigatórioReviewStatus
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "assignmentId",
    "externalId",
    "inspectorId",
    "plate",
    "vehicleDescription",
    "completedAt",
    "receivedAt",
    "photoCount",
    "status",
    "reviewStatus"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "externalId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "plate": {
      "type": "string"
    },
    "vehicleDescription": {
      "type": "string"
    },
    "completedAt": {
      "type": "string",
      "format": "date-time"
    },
    "receivedAt": {
      "type": "string",
      "format": "date-time"
    },
    "photoCount": {
      "type": "integer",
      "minimum": 0
    },
    "status": {
      "const": "received"
    },
    "reviewStatus": {
      "$ref": "#/components/schemas/ReviewStatus"
    }
  }
}
ResultPage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de ResultSummary
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: ResultSummary

nextCursorobrigatóriostring | null
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items",
    "nextCursor"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ResultSummary"
      },
      "maxItems": 100
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}
WebhookCreate

URL HTTPS na porta 443, domínio público resolvível em IPv4, sem usuário/senha, query ou fragmento. Não aceita IP literal, loopback, rede privada ou redirecionamento. Máximo de dez endpoints cadastrados por associação. Crie o segredo com 32 bytes criptograficamente aleatórios em base64url; guarde-o antes de enviar. Nunca é retornado pela API.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120 · Padrão: "\\S"
urlobrigatóriostring
Formato: "uri" · Tamanho máximo: 2000
secretobrigatóriostring
Tamanho mínimo: 43 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_-]+$" · Somente envio
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "name",
    "url",
    "secret"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "pattern": "\\S"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2000
    },
    "secret": {
      "type": "string",
      "minLength": 43,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "writeOnly": true
    }
  },
  "description": "URL HTTPS na porta 443, domínio público resolvível em IPv4, sem usuário/senha, query ou fragmento. Não aceita IP literal, loopback, rede privada ou redirecionamento. Máximo de dez endpoints cadastrados por associação. Crie o segredo com 32 bytes criptograficamente aleatórios em base64url; guarde-o antes de enviar. Nunca é retornado pela API."
}
WebhookPatch
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
activeobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "active"
  ],
  "properties": {
    "active": {
      "type": "boolean"
    }
  }
}
WebhookEndpoint
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
urlobrigatóriostring
Formato: "uri"
activeobrigatórioboolean
revisionobrigatóriointeger
Mínimo: 1
createdAtobrigatóriostring
Formato: "date-time"
eventsobrigatóriolista de string
Itens mínimos: 1 · Itens máximos: 4
Ver estrutura
Itens mínimos: 1 · Itens máximos: 4

Itens: string

Valores: "inspection.received", "inspection.approved", "inspection.rejected", "inspection.changes_requested"

Tipo: string

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "name",
    "url",
    "active",
    "revision",
    "createdAt",
    "events"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "active": {
      "type": "boolean"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "events": {
      "type": "array",
      "minItems": 1,
      "maxItems": 4,
      "items": {
        "type": "string",
        "enum": [
          "inspection.received",
          "inspection.approved",
          "inspection.rejected",
          "inspection.changes_requested"
        ]
      }
    }
  }
}
WebhookList
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de WebhookEndpoint
Itens máximos: 10
Ver estrutura
Itens máximos: 10

Itens: WebhookEndpoint

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/WebhookEndpoint"
      },
      "maxItems": 10
    }
  }
}
WebhookDelivery
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
eventIdobrigatórioIdentifier
statusobrigatórioobjeto
Valores: "pending", "sending", "delivered", "failed", "cancelled"
attemptsobrigatóriointeger
Mínimo: 0 · Máximo: 8
nextAttemptAtobrigatóriostring | null
Formato: "date-time"
lastStatusobrigatóriointeger | null
lastErrorobrigatóriostring | null
createdAtobrigatóriostring
Formato: "date-time"
deliveredAtobrigatóriostring | null
Formato: "date-time"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "eventId",
    "status",
    "attempts",
    "nextAttemptAt",
    "lastStatus",
    "lastError",
    "createdAt",
    "deliveredAt"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "eventId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "status": {
      "enum": [
        "pending",
        "sending",
        "delivered",
        "failed",
        "cancelled"
      ]
    },
    "attempts": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8
    },
    "nextAttemptAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "lastStatus": {
      "type": [
        "integer",
        "null"
      ]
    },
    "lastError": {
      "type": [
        "string",
        "null"
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "deliveredAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    }
  }
}
WebhookDeliveryList
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de WebhookDelivery
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: WebhookDelivery

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/WebhookDelivery"
      },
      "maxItems": 100
    }
  }
}
WebhookRetry
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
statusobrigatórioobjeto
Valor fixo: "pending"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "status"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "status": {
      "const": "pending"
    }
  }
}
WebhookEvent
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
typeobrigatóriostring
Valores: "inspection.received", "inspection.approved", "inspection.rejected", "inspection.changes_requested"
schemaVersionobrigatórioobjeto
Valor fixo: 1
occurredAtobrigatóriostring
Formato: "date-time"
associationIdobrigatórioIdentifier
dataobrigatórioobject
Não aceita campos adicionais
Ver estrutura
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
resultIdobrigatórioIdentifier
assignmentIdobrigatórioIdentifier
externalIdobrigatórioIdentifier
resourceobrigatóriostring
reviewRevisionopcionalinteger
Mínimo: 2
followupAssignmentIdopcionalIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "type",
    "schemaVersion",
    "occurredAt",
    "associationId",
    "data"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "type": {
      "type": "string",
      "enum": [
        "inspection.received",
        "inspection.approved",
        "inspection.rejected",
        "inspection.changes_requested"
      ]
    },
    "schemaVersion": {
      "const": 1
    },
    "occurredAt": {
      "type": "string",
      "format": "date-time"
    },
    "associationId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "data": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "resultId",
        "assignmentId",
        "externalId",
        "resource"
      ],
      "properties": {
        "resultId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "assignmentId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "externalId": {
          "$ref": "#/components/schemas/Identifier"
        },
        "resource": {
          "type": "string"
        },
        "reviewRevision": {
          "type": "integer",
          "minimum": 2
        },
        "followupAssignmentId": {
          "anyOf": [
            {
              "$ref": "#/components/schemas/Identifier"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    }
  }
}
AddressFields

Endereço separado em CEP, rua, bairro, cidade, UF, número, complemento e ponto de referência. Número aceita S/N. Bairro, CEP, complemento e referência são opcionais para permitir áreas rurais e CEPs gerais. Objetos enviados em PATCH substituem o endereço inteiro; não há atualização parcial de seus subcampos. Não há consulta ao ViaCEP no processamento da API: o cliente confirma os dados.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
postalCodeopcionalstring

Opcional; oito dígitos, com ou sem hífen. Ausente é normalizado para vazio.

Padrão: "^(\\d{5}-?\\d{3})?$"
streetobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S"
cityobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
numberobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 30 · Padrão: "\\S"
neighborhoodopcionalstring
Tamanho máximo: 200
stateobrigatóriostring
Padrão: "^([Aa][Cc]|[Aa][Ll]|[Aa][Pp]|[Aa][Mm]|[Bb][Aa]|[Cc][Ee]|[Dd][Ff]|[Ee][Ss]|[Gg][Oo]|[Mm][Aa]|[Mm][Tt]|[Mm][Ss]|[Mm][Gg]|[Pp][Aa]|[Pp][Bb]|[Pp][Rr]|[Pp][Ee]|[Pp][Ii]|[Rr][Jj]|[Rr][Nn]|[Rr][Ss]|[Rr][Oo]|[Rr][Rr]|[Ss][Cc]|[Ss][Pp]|[Ss][Ee]|[Tt][Oo])$"
complementopcionalstring
Tamanho máximo: 300
referenceopcionalstring
Tamanho máximo: 500
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "street",
    "number",
    "city",
    "state"
  ],
  "properties": {
    "postalCode": {
      "type": "string",
      "pattern": "^(\\d{5}-?\\d{3})?$",
      "description": "Opcional; oito dígitos, com ou sem hífen. Ausente é normalizado para vazio."
    },
    "street": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "pattern": "\\S"
    },
    "city": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "pattern": "\\S"
    },
    "number": {
      "type": "string",
      "maxLength": 30,
      "minLength": 1,
      "pattern": "\\S"
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 200
    },
    "state": {
      "type": "string",
      "pattern": "^([Aa][Cc]|[Aa][Ll]|[Aa][Pp]|[Aa][Mm]|[Bb][Aa]|[Cc][Ee]|[Dd][Ff]|[Ee][Ss]|[Gg][Oo]|[Mm][Aa]|[Mm][Tt]|[Mm][Ss]|[Mm][Gg]|[Pp][Aa]|[Pp][Bb]|[Pp][Rr]|[Pp][Ee]|[Pp][Ii]|[Rr][Jj]|[Rr][Nn]|[Rr][Ss]|[Rr][Oo]|[Rr][Rr]|[Ss][Cc]|[Ss][Pp]|[Ss][Ee]|[Tt][Oo])$"
    },
    "complement": {
      "type": "string",
      "maxLength": 300
    },
    "reference": {
      "type": "string",
      "maxLength": 500
    }
  },
  "description": "Endereço separado em CEP, rua, bairro, cidade, UF, número, complemento e ponto de referência. Número aceita S/N. Bairro, CEP, complemento e referência são opcionais para permitir áreas rurais e CEPs gerais. Objetos enviados em PATCH substituem o endereço inteiro; não há atualização parcial de seus subcampos. Não há consulta ao ViaCEP no processamento da API: o cliente confirma os dados."
}
AddressDetails

Campos normalizados salvos com a vistoria: CEP sem hífen, UF em maiúsculas e opcionais vazios. Disponível nas respostas e na agenda somente quando a ordem foi cadastrada/alterada com endereço estruturado.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
postalCodeobrigatóriostring
Padrão: "^(\\d{8})?$"
streetobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S"
cityobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
numberobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 30 · Padrão: "\\S"
neighborhoodobrigatóriostring
Tamanho máximo: 200
stateobrigatóriostring
Valores: "AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"
complementobrigatóriostring
Tamanho máximo: 300
referenceobrigatóriostring
Tamanho máximo: 500
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "postalCode",
    "street",
    "city",
    "number",
    "neighborhood",
    "state",
    "complement",
    "reference"
  ],
  "properties": {
    "postalCode": {
      "type": "string",
      "pattern": "^(\\d{8})?$"
    },
    "street": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "pattern": "\\S"
    },
    "city": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "pattern": "\\S"
    },
    "number": {
      "type": "string",
      "maxLength": 30,
      "minLength": 1,
      "pattern": "\\S"
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 200
    },
    "state": {
      "type": "string",
      "enum": [
        "AC",
        "AL",
        "AP",
        "AM",
        "BA",
        "CE",
        "DF",
        "ES",
        "GO",
        "MA",
        "MT",
        "MS",
        "MG",
        "PA",
        "PB",
        "PR",
        "PE",
        "PI",
        "RJ",
        "RN",
        "RS",
        "RO",
        "RR",
        "SC",
        "SP",
        "SE",
        "TO"
      ]
    },
    "complement": {
      "type": "string",
      "maxLength": 300
    },
    "reference": {
      "type": "string",
      "maxLength": 500
    }
  },
  "description": "Campos normalizados salvos com a vistoria: CEP sem hífen, UF em maiúsculas e opcionais vazios. Disponível nas respostas e na agenda somente quando a ordem foi cadastrada/alterada com endereço estruturado."
}
AddressInput

Aceita o texto legado ou os campos separados. No retorno, address continua sendo um texto formatado; addressDetails contém os campos separados quando disponíveis.

Aceita exatamente uma estrutura:

  • string
    Tamanho mínimo: 1 · Tamanho máximo: 2000 · Padrão: "\\S"

    Tipo: string

  • AddressFields
Ver definição completa
JSON Schema
{
  "oneOf": [
    {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "pattern": "\\S"
    },
    {
      "$ref": "#/components/schemas/AddressFields"
    }
  ],
  "description": "Aceita o texto legado ou os campos separados. No retorno, address continua sendo um texto formatado; addressDetails contém os campos separados quando disponíveis."
}
ReviewStatus
Valores: "pending", "approved", "rejected", "changes_requested"

Tipo: string

Ver definição completa
JSON Schema
{
  "type": "string",
  "enum": [
    "pending",
    "approved",
    "rejected",
    "changes_requested"
  ]
}
CorrectionOrigin
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentIdobrigatórioIdentifier
resultIdobrigatórioIdentifier
rootAssignmentIdobrigatórioIdentifier
roundobrigatóriointeger
Mínimo: 1 · Máximo: 10
reasonobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 5000
stepIdsobrigatóriolista de Identifier
Itens mínimos: 1 · Itens máximos: 150
Ver estrutura
Itens mínimos: 1 · Itens máximos: 150

Itens: Identifier

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignmentId",
    "resultId",
    "rootAssignmentId",
    "round",
    "reason",
    "stepIds"
  ],
  "properties": {
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "resultId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "rootAssignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "round": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000
    },
    "stepIds": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Identifier"
      },
      "minItems": 1,
      "maxItems": 150,
      "uniqueItems": true
    }
  }
}
InspectionReview
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
statusobrigatórioReviewStatus
revisionobrigatóriointeger
Mínimo: 1
notesobrigatóriostring
Tamanho máximo: 5000
stepIdsobrigatóriolista de Identifier
Itens mínimos: 0 · Itens máximos: 150
Ver estrutura
Itens mínimos: 0 · Itens máximos: 150

Itens: Identifier

reviewedAtobrigatóriostring ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • string
    Formato: "date-time"

    Tipo: string

  • null

    Tipo: null

reviewerobrigatórioobject ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    idobrigatórioIdentifier
    nameobrigatóriostring
  • null

    Tipo: null

followupAssignmentIdobrigatórioIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "status",
    "revision",
    "notes",
    "stepIds",
    "reviewedAt",
    "reviewer",
    "followupAssignmentId"
  ],
  "properties": {
    "status": {
      "$ref": "#/components/schemas/ReviewStatus"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "notes": {
      "type": "string",
      "maxLength": 5000
    },
    "stepIds": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Identifier"
      },
      "minItems": 0,
      "maxItems": 150,
      "uniqueItems": true
    },
    "reviewedAt": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ]
    },
    "reviewer": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "id",
            "name"
          ],
          "properties": {
            "id": {
              "$ref": "#/components/schemas/Identifier"
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "followupAssignmentId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    }
  }
}
ReviewCommand

Aceita exatamente uma estrutura:

  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    decisionobrigatórioobjeto
    Valor fixo: "approved"
    notesopcionalstring
    Tamanho máximo: 5000
  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    decisionobrigatórioobjeto
    Valor fixo: "rejected"
    notesobrigatóriostring
    Tamanho mínimo: 1 · Tamanho máximo: 5000 · Padrão: "\\S"
  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    decisionobrigatórioobjeto
    Valor fixo: "changes_requested"
    notesobrigatóriostring
    Tamanho mínimo: 1 · Tamanho máximo: 5000 · Padrão: "\\S"
    stepIdsobrigatóriolista de Identifier
    Itens mínimos: 1 · Itens máximos: 150
    Ver estrutura
    Itens mínimos: 1 · Itens máximos: 150

    Itens: Identifier

    scheduledAtopcionalstring
    Formato: "date-time"
Ver definição completa
JSON Schema
{
  "oneOf": [
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "decision"
      ],
      "properties": {
        "decision": {
          "const": "approved"
        },
        "notes": {
          "type": "string",
          "maxLength": 5000
        }
      }
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "decision",
        "notes"
      ],
      "properties": {
        "decision": {
          "const": "rejected"
        },
        "notes": {
          "type": "string",
          "maxLength": 5000,
          "minLength": 1,
          "pattern": "\\S"
        }
      }
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "decision",
        "notes",
        "stepIds"
      ],
      "properties": {
        "decision": {
          "const": "changes_requested"
        },
        "notes": {
          "type": "string",
          "maxLength": 5000,
          "minLength": 1,
          "pattern": "\\S"
        },
        "stepIds": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/Identifier"
          },
          "minItems": 1,
          "maxItems": 150,
          "uniqueItems": true
        },
        "scheduledAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  ]
}
ReviewHistoryItem
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentIdobrigatórioIdentifier
resultIdobrigatórioIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

receivedAtobrigatóriostring ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • string
    Formato: "date-time"

    Tipo: string

  • null

    Tipo: null

reviewobrigatórioInspectionReview ou null
Ver estrutura

Aceita uma ou mais estruturas:

correctionOfobrigatórioCorrectionOrigin ou null
Ver estrutura

Aceita uma ou mais estruturas:

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignmentId",
    "resultId",
    "receivedAt",
    "review",
    "correctionOf"
  ],
  "properties": {
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "resultId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "receivedAt": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ]
    },
    "review": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/InspectionReview"
        },
        {
          "type": "null"
        }
      ]
    },
    "correctionOf": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CorrectionOrigin"
        },
        {
          "type": "null"
        }
      ]
    }
  }
}
ReviewDetails
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
submissionIdobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
assignmentIdobrigatórioIdentifier
statusobrigatóriostring
Valor fixo: "received"
receivedAtobrigatóriostring
Formato: "date-time"
externalIdobrigatórioIdentifier
inspectorIdobrigatórioIdentifier
assignmentobrigatórioAssignment
photoCountobrigatóriointeger
Mínimo: 0 · Máximo: 150
completedAtobrigatóriostring
Formato: "date-time"
answersobrigatóriolista de ResultAnswer
Itens máximos: 150
Ver estrutura
Itens máximos: 150

Itens: ResultAnswer

revisionobrigatóriointeger
Mínimo: 1
reviewobrigatórioInspectionReview
rootAssignmentIdobrigatórioIdentifier
effectiveStatusobrigatórioReviewStatus
historyobrigatóriolista de ReviewHistoryItem
Itens mínimos: 1 · Itens máximos: 11
Ver estrutura
Itens mínimos: 1 · Itens máximos: 11

Itens: ReviewHistoryItem

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "submissionId",
    "assignmentId",
    "status",
    "receivedAt",
    "externalId",
    "inspectorId",
    "assignment",
    "photoCount",
    "completedAt",
    "answers",
    "revision",
    "review",
    "rootAssignmentId",
    "effectiveStatus",
    "history"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "submissionId": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "status": {
      "type": "string",
      "const": "received"
    },
    "receivedAt": {
      "type": "string",
      "format": "date-time"
    },
    "externalId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "assignment": {
      "$ref": "#/components/schemas/Assignment"
    },
    "photoCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 150
    },
    "completedAt": {
      "type": "string",
      "format": "date-time"
    },
    "answers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ResultAnswer"
      },
      "maxItems": 150
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "review": {
      "$ref": "#/components/schemas/InspectionReview"
    },
    "rootAssignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "effectiveStatus": {
      "$ref": "#/components/schemas/ReviewStatus"
    },
    "history": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ReviewHistoryItem"
      },
      "minItems": 1,
      "maxItems": 11
    }
  }
}
GeoPoint
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "latitude",
    "longitude"
  ],
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    }
  }
}
GeocodeCandidate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
labelobrigatóriostring
Tamanho máximo: 1000
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "latitude",
    "longitude",
    "label"
  ],
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "label": {
      "type": "string",
      "maxLength": 1000
    }
  }
}
GeocodeResults
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
candidatesobrigatóriolista de GeocodeCandidate
Itens mínimos: 0 · Itens máximos: 5
Ver estrutura
Itens mínimos: 0 · Itens máximos: 5

Itens: GeocodeCandidate

attributionobrigatóriostring
cachedobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "candidates",
    "attribution",
    "cached"
  ],
  "properties": {
    "candidates": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GeocodeCandidate"
      },
      "minItems": 0,
      "maxItems": 5
    },
    "attribution": {
      "type": "string"
    },
    "cached": {
      "type": "boolean"
    }
  }
}
VisitRouteStopInput
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentIdobrigatórioIdentifier
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignmentId",
    "latitude",
    "longitude"
  ],
  "properties": {
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    }
  }
}
VisitRouteCommand
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
inspectorIdobrigatórioIdentifier
dateobrigatóriostring
Formato: "date"
modeobrigatórioobjeto
Valores: "scheduled", "optimized"
startobrigatórioGeoPoint
stopsobrigatóriolista de VisitRouteStopInput
Itens mínimos: 1 · Itens máximos: 20
Ver estrutura
Itens mínimos: 1 · Itens máximos: 20

Itens: VisitRouteStopInput

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "inspectorId",
    "date",
    "mode",
    "start",
    "stops"
  ],
  "properties": {
    "inspectorId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "date": {
      "type": "string",
      "format": "date"
    },
    "mode": {
      "enum": [
        "scheduled",
        "optimized"
      ]
    },
    "start": {
      "$ref": "#/components/schemas/GeoPoint"
    },
    "stops": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/VisitRouteStopInput"
      },
      "minItems": 1,
      "maxItems": 20
    }
  }
}
VisitRouteStop
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentIdobrigatórioIdentifier
assignmentRevisionobrigatóriointeger
Mínimo: 1
assignmentFingerprintobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
plateobrigatóriostring
addressobrigatóriostring
scheduledAtobrigatóriostring
Formato: "date-time"
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
positionobrigatóriointeger
Mínimo: 1 · Máximo: 20
distanceMetersobrigatóriointeger
Mínimo: 0
durationSecondsobrigatóriointeger
Mínimo: 0
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignmentId",
    "assignmentRevision",
    "assignmentFingerprint",
    "plate",
    "address",
    "scheduledAt",
    "latitude",
    "longitude",
    "position",
    "distanceMeters",
    "durationSeconds"
  ],
  "properties": {
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "assignmentRevision": {
      "type": "integer",
      "minimum": 1
    },
    "assignmentFingerprint": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "plate": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "scheduledAt": {
      "type": "string",
      "format": "date-time"
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "position": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "distanceMeters": {
      "type": "integer",
      "minimum": 0
    },
    "durationSeconds": {
      "type": "integer",
      "minimum": 0
    }
  }
}
VisitRoutePreview
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
inspectorIdobrigatórioIdentifier
inspectorNameobrigatóriostring
dateobrigatóriostring
Formato: "date"
modeobrigatórioobjeto
Valores: "scheduled", "optimized"
startobrigatórioGeoPoint
stopsobrigatóriolista de VisitRouteStop
Itens mínimos: 1 · Itens máximos: 20
Ver estrutura
Itens mínimos: 1 · Itens máximos: 20

Itens: VisitRouteStop

distanceMetersobrigatóriointeger
Mínimo: 0
durationSecondsobrigatóriointeger
Mínimo: 0
scheduledDistanceMetersobrigatóriointeger
Mínimo: 0
scheduledDurationSecondsobrigatóriointeger
Mínimo: 0
reorderedobrigatórioboolean
providerobrigatórioobjeto
Valor fixo: "OSRM"
attributionobrigatóriostring
calculatedAtobrigatóriostring
Formato: "date-time"
trafficIncludedobrigatórioobjeto
Valor fixo: false
returnToStartobrigatórioobjeto
Valor fixo: false
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "inspectorId",
    "inspectorName",
    "date",
    "mode",
    "start",
    "stops",
    "distanceMeters",
    "durationSeconds",
    "scheduledDistanceMeters",
    "scheduledDurationSeconds",
    "reordered",
    "provider",
    "attribution",
    "calculatedAt",
    "trafficIncluded",
    "returnToStart"
  ],
  "properties": {
    "inspectorId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorName": {
      "type": "string"
    },
    "date": {
      "type": "string",
      "format": "date"
    },
    "mode": {
      "enum": [
        "scheduled",
        "optimized"
      ]
    },
    "start": {
      "$ref": "#/components/schemas/GeoPoint"
    },
    "stops": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/VisitRouteStop"
      },
      "minItems": 1,
      "maxItems": 20
    },
    "distanceMeters": {
      "type": "integer",
      "minimum": 0
    },
    "durationSeconds": {
      "type": "integer",
      "minimum": 0
    },
    "scheduledDistanceMeters": {
      "type": "integer",
      "minimum": 0
    },
    "scheduledDurationSeconds": {
      "type": "integer",
      "minimum": 0
    },
    "reordered": {
      "type": "boolean"
    },
    "provider": {
      "const": "OSRM"
    },
    "attribution": {
      "type": "string"
    },
    "calculatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "trafficIncluded": {
      "const": false
    },
    "returnToStart": {
      "const": false
    }
  }
}
SavedVisitRouteStop
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
assignmentIdobrigatórioIdentifier
assignmentRevisionobrigatóriointeger
Mínimo: 1
assignmentFingerprintobrigatóriostring
Padrão: "^[a-f0-9]{64}$"
plateobrigatóriostring
addressobrigatóriostring
scheduledAtobrigatóriostring
Formato: "date-time"
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
positionobrigatóriointeger
Mínimo: 1 · Máximo: 20
distanceMetersobrigatóriointeger
Mínimo: 0
durationSecondsobrigatóriointeger
Mínimo: 0
completedobrigatórioboolean
outdatedobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "assignmentId",
    "assignmentRevision",
    "assignmentFingerprint",
    "plate",
    "address",
    "scheduledAt",
    "latitude",
    "longitude",
    "position",
    "distanceMeters",
    "durationSeconds",
    "completed",
    "outdated"
  ],
  "properties": {
    "assignmentId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "assignmentRevision": {
      "type": "integer",
      "minimum": 1
    },
    "assignmentFingerprint": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "plate": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "scheduledAt": {
      "type": "string",
      "format": "date-time"
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "position": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "distanceMeters": {
      "type": "integer",
      "minimum": 0
    },
    "durationSeconds": {
      "type": "integer",
      "minimum": 0
    },
    "completed": {
      "type": "boolean"
    },
    "outdated": {
      "type": "boolean"
    }
  }
}
VisitRoute
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
inspectorIdobrigatórioIdentifier
inspectorNameobrigatóriostring
dateobrigatóriostring
Formato: "date"
modeobrigatórioobjeto
Valores: "scheduled", "optimized"
startobrigatórioGeoPoint
stopsobrigatóriolista de SavedVisitRouteStop
Itens mínimos: 0 · Itens máximos: 20
Ver estrutura
Itens mínimos: 0 · Itens máximos: 20

Itens: SavedVisitRouteStop

distanceMetersobrigatóriointeger
Mínimo: 0
durationSecondsobrigatóriointeger
Mínimo: 0
scheduledDistanceMetersobrigatóriointeger
Mínimo: 0
scheduledDurationSecondsobrigatóriointeger
Mínimo: 0
reorderedobrigatórioboolean
providerobrigatórioobjeto
Valor fixo: "OSRM"
attributionobrigatóriostring
calculatedAtobrigatóriostring
Formato: "date-time"
trafficIncludedobrigatórioobjeto
Valor fixo: false
returnToStartobrigatórioobjeto
Valor fixo: false
idobrigatórioIdentifier
associationIdobrigatórioIdentifier
activeobrigatórioboolean
revisionobrigatóriointeger
Mínimo: 1
createdAtobrigatóriostring
Formato: "date-time"
staleobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "inspectorId",
    "inspectorName",
    "date",
    "mode",
    "start",
    "stops",
    "distanceMeters",
    "durationSeconds",
    "scheduledDistanceMeters",
    "scheduledDurationSeconds",
    "reordered",
    "provider",
    "attribution",
    "calculatedAt",
    "trafficIncluded",
    "returnToStart",
    "id",
    "associationId",
    "active",
    "revision",
    "createdAt",
    "stale"
  ],
  "properties": {
    "inspectorId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "inspectorName": {
      "type": "string"
    },
    "date": {
      "type": "string",
      "format": "date"
    },
    "mode": {
      "enum": [
        "scheduled",
        "optimized"
      ]
    },
    "start": {
      "$ref": "#/components/schemas/GeoPoint"
    },
    "stops": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SavedVisitRouteStop"
      },
      "minItems": 0,
      "maxItems": 20
    },
    "distanceMeters": {
      "type": "integer",
      "minimum": 0
    },
    "durationSeconds": {
      "type": "integer",
      "minimum": 0
    },
    "scheduledDistanceMeters": {
      "type": "integer",
      "minimum": 0
    },
    "scheduledDurationSeconds": {
      "type": "integer",
      "minimum": 0
    },
    "reordered": {
      "type": "boolean"
    },
    "provider": {
      "const": "OSRM"
    },
    "attribution": {
      "type": "string"
    },
    "calculatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "trafficIncluded": {
      "const": false
    },
    "returnToStart": {
      "const": false
    },
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "associationId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "active": {
      "type": "boolean"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "stale": {
      "type": "boolean"
    }
  }
}
VisitRouteList
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de VisitRoute
Itens mínimos: 0 · Itens máximos: 100
Ver estrutura
Itens mínimos: 0 · Itens máximos: 100

Itens: VisitRoute

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/VisitRoute"
      },
      "minItems": 0,
      "maxItems": 100
    }
  }
}
VisitRouteDeactivate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
activeobrigatórioobjeto
Valor fixo: false
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "active"
  ],
  "properties": {
    "active": {
      "const": false
    }
  }
}
ChecklistItem

Combina todas as estruturas:

  • InputStep
  • objeto
    Campos do objeto
    CampoTipoDescrição e regras
    kindopcionalobjeto
    Valores: "choice", "text"
Ver definição completa
JSON Schema
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InputStep"
    },
    {
      "properties": {
        "kind": {
          "enum": [
            "choice",
            "text"
          ]
        }
      }
    }
  ]
}
ChecklistReference
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
versionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "version"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    }
  }
}
ChecklistBlock
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
kindobrigatórioobjeto
Valor fixo: "checklist"
positionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
checklistRefobrigatórioChecklistReference
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "kind",
    "position",
    "checklistRef"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "kind": {
      "const": "checklist"
    },
    "position": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "checklistRef": {
      "$ref": "#/components/schemas/ChecklistReference"
    }
  }
}
TemplateLayout

Sequência de etapas próprias e blocos de checklist, ordenada por position. IDs e posições são únicos. Cada referência fixa uma versão imutável da biblioteca da associação. O total expandido deve ficar entre 1 e 150 itens. IDs expandidos dos checklists são atribuídos pelo servidor e estáveis para o mesmo bloco/checklist/item; os consumidores devem usar os IDs retornados, sem tentar calculá-los.

Itens mínimos: 1 · Itens máximos: 150

Itens: InputStep ou ChecklistBlock

Aceita exatamente uma estrutura:

Ver definição completa
JSON Schema
{
  "type": "array",
  "minItems": 1,
  "maxItems": 150,
  "items": {
    "oneOf": [
      {
        "$ref": "#/components/schemas/InputStep"
      },
      {
        "$ref": "#/components/schemas/ChecklistBlock"
      }
    ]
  },
  "description": "Sequência de etapas próprias e blocos de checklist, ordenada por position. IDs e posições são únicos. Cada referência fixa uma versão imutável da biblioteca da associação. O total expandido deve ficar entre 1 e 150 itens. IDs expandidos dos checklists são atribuídos pelo servidor e estáveis para o mesmo bloco/checklist/item; os consumidores devem usar os IDs retornados, sem tentar calculá-los."
}
ChecklistContent
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
descriptionopcionalstring
Tamanho máximo: 1000
itemsobrigatóriolista de ChecklistItem

IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro.

Itens mínimos: 1 · Itens máximos: 150

Itens: ChecklistItem

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "name",
    "items"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "items": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "items": {
        "$ref": "#/components/schemas/ChecklistItem"
      },
      "description": "IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro."
    }
  }
}
ChecklistCreate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
descriptionopcionalstring
Tamanho máximo: 1000
itemsobrigatóriolista de ChecklistItem

IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro.

Itens mínimos: 1 · Itens máximos: 150

Itens: ChecklistItem

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "name",
    "items"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "items": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "items": {
        "$ref": "#/components/schemas/ChecklistItem"
      },
      "description": "IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro."
    }
  }
}
ManagedChecklist

Versão imutável do checklist. revision coincide com version. PUT cria a próxima versão, preservando todas as anteriores. Não há publicação separada de checklist: somente roteiros publicados podem ser usados em vistorias.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
associationIdobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S"
descriptionobrigatóriostring
Tamanho máximo: 1000
itemsobrigatóriolista de ChecklistItem

IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro.

Itens mínimos: 1 · Itens máximos: 150
Ver estrutura

IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro.

Itens mínimos: 1 · Itens máximos: 150

Itens: ChecklistItem

versionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
revisionobrigatóriointeger
Mínimo: 1 · Máximo: 2147483647
createdAtobrigatóriostring
Formato: "date-time"
updatedAtobrigatóriostring
Formato: "date-time"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "associationId",
    "name",
    "description",
    "items",
    "version",
    "revision",
    "createdAt",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "associationId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "\\S"
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "items": {
      "type": "array",
      "minItems": 1,
      "maxItems": 150,
      "items": {
        "$ref": "#/components/schemas/ChecklistItem"
      },
      "description": "IDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro."
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "revision": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    }
  },
  "description": "Versão imutável do checklist. revision coincide com version. PUT cria a próxima versão, preservando todas as anteriores. Não há publicação separada de checklist: somente roteiros publicados podem ser usados em vistorias."
}
ChecklistPage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de ManagedChecklist
Itens máximos: 100
Ver estrutura
Itens máximos: 100

Itens: ManagedChecklist

nextCursorobrigatóriostring | null
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "items",
    "nextCursor"
  ],
  "properties": {
    "items": {
      "type": "array",
      "maxItems": 100,
      "items": {
        "$ref": "#/components/schemas/ManagedChecklist"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}
Member
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
nameobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 120
phoneobrigatóriostring
Padrão: "^[0-9]{10,15}$"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "phone": {
      "type": "string",
      "pattern": "^[0-9]{10,15}$"
    }
  },
  "required": [
    "id",
    "name",
    "phone"
  ]
}
LocationPolicy
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
toleranceMetersobrigatóriointeger
Mínimo: 1 · Máximo: 50000
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "toleranceMeters": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50000
    }
  },
  "required": [
    "latitude",
    "longitude",
    "toleranceMeters"
  ]
}
CaptureEvidence

Dados informados pelo aparelho e preservados no primeiro envio. capturedAt é o retorno da captura no app; em recuperação é o horário da tentativa, identificado por recovered=true. locationAt preserva o horário real da amostra GPS. Não é prova criptográfica de presença. A API sinaliza GPS simulado, baixa precisão, recuperação e amostra com mais de dois minutos de diferença.

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
capturedAtobrigatóriostring
Formato: "date-time"
latitudeobrigatórionumber
Mínimo: -90 · Máximo: 90
longitudeobrigatórionumber
Mínimo: -180 · Máximo: 180
accuracyMetersobrigatórionumber
Mínimo: 0 · Máximo: 100000
locationAtobrigatóriostring
Formato: "date-time"
isMockedobrigatórioboolean
recoveredobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "capturedAt": {
      "type": "string",
      "format": "date-time"
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "accuracyMeters": {
      "type": "number",
      "minimum": 0,
      "maximum": 100000
    },
    "locationAt": {
      "type": "string",
      "format": "date-time"
    },
    "isMocked": {
      "type": "boolean"
    },
    "recovered": {
      "type": "boolean"
    }
  },
  "required": [
    "capturedAt",
    "latitude",
    "longitude",
    "accuracyMeters",
    "locationAt",
    "isMocked",
    "recovered"
  ],
  "description": "Dados informados pelo aparelho e preservados no primeiro envio. capturedAt é o retorno da captura no app; em recuperação é o horário da tentativa, identificado por recovered=true. locationAt preserva o horário real da amostra GPS. Não é prova criptográfica de presença. A API sinaliza GPS simulado, baixa precisão, recuperação e amostra com mais de dois minutos de diferença."
}
LocationAssessment
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
statusobrigatórioobjeto
Valores: "match", "mismatch", "attention", "unavailable"
distanceMetersobrigatóriointeger ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • integer
    Mínimo: 0

    Tipo: integer

  • null

    Tipo: null

toleranceMetersopcionalinteger ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • integer
    Mínimo: 1

    Tipo: integer

  • null

    Tipo: null

warningsobrigatóriolista de string
Ver estrutura

Itens: string

Tipo: string

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "status": {
      "enum": [
        "match",
        "mismatch",
        "attention",
        "unavailable"
      ]
    },
    "distanceMeters": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "toleranceMeters": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "status",
    "distanceMeters",
    "warnings"
  ]
}
MemberAccess
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
idobrigatórioIdentifier
parentIdobrigatórioIdentifier ou null
Ver estrutura

Aceita uma ou mais estruturas:

createdAtobrigatóriostring
Formato: "date-time"
expiresAtobrigatóriostring
Formato: "date-time"
revokedAtobrigatóriostring ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • string
    Formato: "date-time"

    Tipo: string

  • null

    Tipo: null

statusobrigatórioobjeto
Valores: "active", "expired", "revoked"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "$ref": "#/components/schemas/Identifier"
    },
    "parentId": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time"
    },
    "revokedAt": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ]
    },
    "status": {
      "enum": [
        "active",
        "expired",
        "revoked"
      ]
    }
  },
  "required": [
    "id",
    "parentId",
    "createdAt",
    "expiresAt",
    "revokedAt",
    "status"
  ]
}
MemberAccessView
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
revisionobrigatóriointeger
Mínimo: 1
accessobrigatórioMemberAccess ou null
Ver estrutura

Aceita uma ou mais estruturas:

memberobrigatórioMember
tokenobrigatóriostring ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • string
    Padrão: "^vs_[A-Za-z0-9_-]{43}$"

    Tipo: string

  • null

    Tipo: null

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "access": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MemberAccess"
        },
        {
          "type": "null"
        }
      ]
    },
    "member": {
      "$ref": "#/components/schemas/Member"
    },
    "token": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^vs_[A-Za-z0-9_-]{43}$"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "revision",
    "access",
    "member",
    "token"
  ]
}
MemberAccessMutation
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
revisionobrigatóriointeger
Mínimo: 1
accessobrigatórioMemberAccess ou null
Ver estrutura

Aceita uma ou mais estruturas:

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "access": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MemberAccess"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "revision",
    "access"
  ]
}
MemberAccessIssue
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
expiresInHoursopcionalinteger
Mínimo: 1 · Máximo: 168 · Padrão inicial: 24
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "expiresInHours": {
      "type": "integer",
      "minimum": 1,
      "maximum": 168,
      "default": 24
    }
  },
  "required": []
}
MemberSession
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
accessIdobrigatórioIdentifier
expiresAtobrigatóriostring
Formato: "date-time"
confirmedobrigatórioboolean
memberobrigatórioMember
assignmentobrigatórioAssignment
receiptobrigatórioobject ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    idobrigatórioIdentifier
    receivedAtobrigatóriostring
    Formato: "date-time"
    statusobrigatórioobjeto
    Valor fixo: "received"
  • null

    Tipo: null

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "accessId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time"
    },
    "confirmed": {
      "type": "boolean"
    },
    "member": {
      "$ref": "#/components/schemas/Member"
    },
    "assignment": {
      "$ref": "#/components/schemas/Assignment"
    },
    "receipt": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "id": {
              "$ref": "#/components/schemas/Identifier"
            },
            "receivedAt": {
              "type": "string",
              "format": "date-time"
            },
            "status": {
              "const": "received"
            }
          },
          "required": [
            "id",
            "receivedAt",
            "status"
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "accessId",
    "expiresAt",
    "confirmed",
    "member",
    "assignment",
    "receipt"
  ]
}
MemberRedeemed
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
accessIdobrigatórioIdentifier
expiresAtobrigatóriostring
Formato: "date-time"
confirmedobrigatórioboolean
memberobrigatórioMember
assignmentobrigatórioAssignment
receiptobrigatórioobject ou null
Ver estrutura

Aceita uma ou mais estruturas:

  • object
    Não aceita campos adicionais
    Campos do objeto
    CampoTipoDescrição e regras
    idobrigatórioIdentifier
    receivedAtobrigatóriostring
    Formato: "date-time"
    statusobrigatórioobjeto
    Valor fixo: "received"
  • null

    Tipo: null

sessionTokenobrigatóriostring
Padrão: "^vm_[A-Za-z0-9_-]{43}$"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "accessId": {
      "$ref": "#/components/schemas/Identifier"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time"
    },
    "confirmed": {
      "type": "boolean"
    },
    "member": {
      "$ref": "#/components/schemas/Member"
    },
    "assignment": {
      "$ref": "#/components/schemas/Assignment"
    },
    "receipt": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "id": {
              "$ref": "#/components/schemas/Identifier"
            },
            "receivedAt": {
              "type": "string",
              "format": "date-time"
            },
            "status": {
              "const": "received"
            }
          },
          "required": [
            "id",
            "receivedAt",
            "status"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "sessionToken": {
      "type": "string",
      "pattern": "^vm_[A-Za-z0-9_-]{43}$"
    }
  },
  "required": [
    "accessId",
    "expiresAt",
    "confirmed",
    "member",
    "assignment",
    "receipt",
    "sessionToken"
  ]
}
MemberRedeemInput
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
tokenobrigatóriostring
Padrão: "^vs_[A-Za-z0-9_-]{43}$"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "token": {
      "type": "string",
      "pattern": "^vs_[A-Za-z0-9_-]{43}$"
    }
  },
  "required": [
    "token"
  ]
}
MemberConfirmation
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
dataCorrectobrigatórioobjeto
Valor fixo: true
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "dataCorrect": {
      "const": true
    }
  },
  "required": [
    "dataCorrect"
  ]
}
MemberEmpty
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}
MemberLogout
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
okobrigatórioobjeto
Valor fixo: true
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "ok": {
      "const": true
    }
  },
  "required": [
    "ok"
  ]
}
GeocodeAddressInput
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
addressobrigatórioAddressDetails
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "address": {
      "$ref": "#/components/schemas/AddressDetails"
    }
  },
  "required": [
    "address"
  ]
}
MemberGeocodeResult
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
candidatesobrigatóriolista de object
Itens máximos: 5
Ver estrutura
Itens máximos: 5

Itens: object

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
labelobrigatóriostring
latitudeobrigatórionumber
longitudeobrigatórionumber
attributionobrigatóriostring
cachedobrigatórioboolean
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "candidates": {
      "type": "array",
      "maxItems": 5,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "type": "string"
          },
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          }
        },
        "required": [
          "label",
          "latitude",
          "longitude"
        ]
      }
    },
    "attribution": {
      "type": "string"
    },
    "cached": {
      "type": "boolean"
    }
  },
  "required": [
    "candidates",
    "attribution",
    "cached"
  ]
}
PublicConfig
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
productionobrigatórioboolean
demoEnabledobrigatórioboolean
registrationEnabledobrigatórioboolean
emailVerificationobrigatórioboolean
emailRecoveryobrigatórioboolean
androidDownloadUrlobrigatóriostring
privacyContactobrigatóriostring
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "production": {
      "type": "boolean"
    },
    "demoEnabled": {
      "type": "boolean"
    },
    "registrationEnabled": {
      "type": "boolean"
    },
    "emailVerification": {
      "type": "boolean"
    },
    "emailRecovery": {
      "type": "boolean"
    },
    "androidDownloadUrl": {
      "type": "string"
    },
    "privacyContact": {
      "type": "string"
    }
  },
  "required": [
    "production",
    "demoEnabled",
    "registrationEnabled",
    "emailVerification",
    "emailRecovery",
    "androidDownloadUrl",
    "privacyContact"
  ]
}
EmailRequest
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
emailobrigatóriostring
Formato: "email" · Tamanho máximo: 254
purposeobrigatóriostring
Valores: "verify", "reset"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 254
    },
    "purpose": {
      "type": "string",
      "enum": [
        "verify",
        "reset"
      ]
    }
  },
  "required": [
    "email",
    "purpose"
  ]
}
EmailAccepted
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
acceptedobrigatórioobjeto
Valor fixo: true
messageobrigatóriostring
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "accepted": {
      "const": true
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "accepted",
    "message"
  ]
}
AccessConfirmed
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
okobrigatórioobjeto
Valor fixo: true
messageobrigatóriostring
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "ok": {
      "const": true
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "message"
  ]
}
ConfirmEmail
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
tokenobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "token"
  ]
}
ResetPassword
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
tokenobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200
newPasswordobrigatóriostring
Tamanho mínimo: 12 · Tamanho máximo: 128
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "newPassword": {
      "type": "string",
      "minLength": 12,
      "maxLength": 128
    }
  },
  "required": [
    "token",
    "newPassword"
  ]
}
OperationsSummary
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
photosobrigatórioobject
Não aceita campos adicionais
Ver estrutura
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
countobrigatóriointeger
Mínimo: 0
reservedBytesobrigatóriointeger
Mínimo: 0
limitBytesobrigatóriointeger
Mínimo: 0
pendingUploadsobrigatóriointeger
Mínimo: 0
webhooksobrigatóriolista de object
Ver estrutura

Itens: object

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
statusobrigatóriostring
countobrigatóriointeger
Mínimo: 0
emailsobrigatóriolista de object
Ver estrutura

Itens: object

Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
statusobrigatóriostring
countobrigatóriointeger
Mínimo: 0
maintenanceobrigatórioobject
Não aceita campos adicionais
Ver estrutura
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
lastOkobrigatóriostring | null
lastErrorobrigatóriostring | null
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "photos": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "count": {
          "type": "integer",
          "minimum": 0
        },
        "reservedBytes": {
          "type": "integer",
          "minimum": 0
        },
        "limitBytes": {
          "type": "integer",
          "minimum": 0
        },
        "pendingUploads": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "count",
        "reservedBytes",
        "limitBytes",
        "pendingUploads"
      ]
    },
    "webhooks": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "status",
          "count"
        ]
      }
    },
    "emails": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "status",
          "count"
        ]
      }
    },
    "maintenance": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "lastOk": {
          "type": [
            "string",
            "null"
          ]
        },
        "lastError": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "lastOk",
        "lastError"
      ]
    }
  },
  "required": [
    "photos",
    "webhooks",
    "emails",
    "maintenance"
  ]
}
DataRequestCreate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
subjectobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200
kindobrigatóriostring
Valores: "access", "correction", "deletion", "retention"
noteobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 2000
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "kind": {
      "type": "string",
      "enum": [
        "access",
        "correction",
        "deletion",
        "retention"
      ]
    },
    "note": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    }
  },
  "required": [
    "subject",
    "kind",
    "note"
  ]
}
DataRequestUpdate
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
statusobrigatóriostring
Valores: "in_progress", "completed"
responseobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 4000
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "in_progress",
        "completed"
      ]
    },
    "response": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000
    }
  },
  "required": [
    "status",
    "response"
  ]
}
DataRequest
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
subjectobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 200
kindobrigatóriostring
Valores: "access", "correction", "deletion", "retention"
noteobrigatóriostring
Tamanho mínimo: 1 · Tamanho máximo: 2000
idobrigatóriostring
statusobrigatóriostring
Valores: "open", "in_progress", "completed"
responseobrigatóriostring
revisionobrigatóriointeger
Mínimo: 1
createdAtobrigatóriostring
Formato: "date-time"
updatedAtobrigatóriostring
Formato: "date-time"
Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "kind": {
      "type": "string",
      "enum": [
        "access",
        "correction",
        "deletion",
        "retention"
      ]
    },
    "note": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    },
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "open",
        "in_progress",
        "completed"
      ]
    },
    "response": {
      "type": "string"
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "subject",
    "kind",
    "note",
    "id",
    "status",
    "response",
    "revision",
    "createdAt",
    "updatedAt"
  ]
}
DataRequestPage
Não aceita campos adicionais
Campos do objeto
CampoTipoDescrição e regras
itemsobrigatóriolista de DataRequest
Ver estrutura

Itens: DataRequest

Ver definição completa
JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/DataRequest"
      }
    }
  },
  "required": [
    "items"
  ]
}