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.
https://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
-
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. -
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. -
Consulte os vistoriadores.
Execute a chamada a partir do seu sistema. Uma associação sem cadastros pode retornar uma lista vazia.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspectors?limit=50' \ --header "Authorization: Bearer $MUTUADESK_TOKEN"
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.
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.
| Controle | Padrão por associação |
|---|---|
| Chamadas | 120 por janela de 60 segundos, somando todos os tokens. |
| Mapas e laudos | 30 operações por janela, também sujeitas à cota geral. |
| Fotos e PDFs | 256 MiB de downloads por janela. |
| Listagens paginadas | Até 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
-
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.
-
Distribua a vistoria.
Envie
externalId, veículo, endereço, agendamento com fuso etemplateRefcom 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. -
Escolha quem realiza a captura.
O vistoriador recebe sua agenda no app. Para autovistoria, envie
executionMode: "member",memberelocationPolicy, seminspectorId. O token é criado junto da ordem; consulte o acesso comassignments:writepara 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. -
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.
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.
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
-
Leia
X-Vistoriador-Timestamp,X-Vistoriador-Event-IdeX-Vistoriador-Signature. -
Antes de interpretar o JSON, calcule
HMAC-SHA256usando o segredo do webhook e a mensagemtimestamp + "." + corpo bruto. Compare em tempo constante com a assinatura hexadecimal apósv1=. - Rejeite tentativas com diferença de relógio superior a cinco minutos. Confira o ID do evento e persista-o para deduplicar.
-
Responda com
2xxdepois 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.
81 operações · 113 estruturas de dados
Nenhum resultado encontrado
Tente outro termo, nome de campo ou caminho da API.
Vistoriadores vinculados
7 operaçõesCadastros operacionais e provisionamento explícito de acesso ao app.
GETListar vistoriadores vinculados à associação/v1/integration/inspectors
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
limitopcional | query 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 |
cursoropcional | query 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 |
activeopcional | query 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 --request GET 'https://app.mutuadesk.com.br/v1/integration/inspectors' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: InspectorPage
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCadastrar vistoriador da associação/v1/integration/inspectors
Cria o cadastro operacional. O login é provisionado separadamente em /access. A associação vem da credencial.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: ManagedInspector
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
GETConsultar cadastro do vistoriador/v1/integration/inspectors/{inspectorId}
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: ManagedInspector
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: 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/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
PUTAtualizar cadastro do vistoriador/v1/integration/inspectors/{inspectorId}
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: ManagedInspector
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: 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/jsonEstrutura: Error
412Revisão desatualizada.
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
GETConsultar vínculo de acesso ao app/v1/integration/inspectors/{inspectorId}/access
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: InspectorAccess
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: 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/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
POSTProvisionar conta ou vínculo do vistoriador/v1/integration/inspectors/{inspectorId}/access
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: InspectorAccess
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: 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/jsonEstrutura: Error
412Revisão desatualizada.
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
PUTBloquear ou liberar acesso ao app/v1/integration/inspectors/{inspectorId}/access
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: InspectorAccess
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: 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/jsonEstrutura: Error
412Revisão desatualizada.
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
Checklists
5 operaçõesBiblioteca reutilizável de perguntas e observações por associação.
GETListar checklists reutilizáveis/v1/integration/checklists
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
limitopcional | query 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 |
cursoropcional | query 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 --request GET 'https://app.mutuadesk.com.br/v1/integration/checklists' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: ChecklistPage
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCriar checklist reutilizável/v1/integration/checklists
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedChecklist
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar a versão mais recente do checklist/v1/integration/checklists/{checklistId}
Retorna o checklist e seu ETag para editar com controle de concorrência.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
checklistIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: ManagedChecklist
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
PUTSalvar uma nova versão do checklist/v1/integration/checklists/{checklistId}
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
checklistIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: ManagedChecklist
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar uma versão preservada do checklist/v1/integration/checklists/{checklistId}/versions/{version}
Consulta a versão exata da biblioteca da associação. Referências inexistentes ou de outra associação retornam 404.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
checklistIdobrigatório | path Identifier | |
versionobrigatório | path 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 --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/jsonEstrutura: ManagedChecklist
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
Roteiros
8 operaçõesRascunhos editáveis, publicação imutável e arquivamento por versão.
GETListar os roteiros da associação/v1/integration/templates
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
limitopcional | query 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 |
cursoropcional | query 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 |
vehicleTypeopcional | query Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/templates' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: TemplatePage
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCriar roteiro com a primeira versão em rascunho/v1/integration/templates
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedTemplateVersion
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar versões e seu estado/v1/integration/templates/{templateId}/versions
Ordenar por version decrescente. Incluir versões arquivadas para permitir consulta histórica.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
templateIdobrigatório | path Identifier | |
limitopcional | query 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 |
cursoropcional | query 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 --request GET 'https://app.mutuadesk.com.br/v1/integration/templates/{templateId}/versions' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: TemplateVersionPage
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCriar uma nova versão em rascunho/v1/integration/templates/{templateId}/versions
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
templateIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedTemplateVersion
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar uma versão do roteiro/v1/integration/templates/{templateId}/versions/{version}
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
templateIdobrigatório | path Identifier | |
versionobrigatório | path 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 --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/jsonEstrutura: ManagedTemplateVersion
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
PUTSubstituir o conteúdo completo de um rascunho/v1/integration/templates/{templateId}/versions/{version}
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
templateIdobrigatório | path Identifier | |
versionobrigatório | path integer | Mínimo: 1 · Máximo: 2147483647 |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: ManagedTemplateVersion
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTPublicar uma versão para novas vistorias/v1/integration/templates/{templateId}/versions/{version}/publish
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
templateIdobrigatório | path Identifier | |
versionobrigatório | path integer | Mínimo: 1 · Máximo: 2147483647 |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonTipo: 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 --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/jsonEstrutura: ManagedTemplateVersion
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTArquivar uma versão sem apagar o histórico/v1/integration/templates/{templateId}/versions/{version}/archive
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
templateIdobrigatório | path Identifier | |
versionobrigatório | path integer | Mínimo: 1 · Máximo: 2147483647 |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: ManagedTemplateVersion
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
Distribuição
7 operaçõesOrdens 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
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
limitopcional | query 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 |
cursoropcional | query 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 |
inspectorIdopcional | query Identifier | |
externalIdopcional | query Identifier | |
statusopcional | query DistributionStatus | |
fromopcional | query string | Início inclusivo do agendamento, com fuso. Formato: "date-time" |
toopcional | query 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 --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-assignments' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: AssignmentPage
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCriar e atribuir uma vistoria a um vistoriador/v1/integration/inspection-assignments
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedAssignment
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
402Regularize a assinatura no painel para criar novas vistorias. Consulta e envios em andamento permanecem disponíveis.
application/json| Campo | Tipo | Descrição e regras |
|---|---|---|
codeobrigatório | string | Valor fixo: "subscription_required" |
messageobrigatório | string |
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTDistribuir até 50 vistorias em uma transação/v1/integration/inspection-assignments/batch
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: AssignmentBatchResult
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
402Regularize a assinatura no painel para criar novas vistorias. Consulta e envios em andamento permanecem disponíveis.
application/json| Campo | Tipo | Descrição e regras |
|---|---|---|
codeobrigatório | string | Valor fixo: "subscription_required" |
messageobrigatório | string |
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar uma vistoria e sua revisão/v1/integration/inspection-assignments/{assignmentId}
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: ManagedAssignment
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
PATCHAlterar agendamento, endereço, contato ou roteiro antes da liberação/v1/integration/inspection-assignments/{assignmentId}
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedAssignment
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTTrocar o vistoriador antes da liberação ao app/v1/integration/inspection-assignments/{assignmentId}/reassign
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedAssignment
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCancelar uma vistoria antes da liberação ao app/v1/integration/inspection-assignments/{assignmentId}/cancel
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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
{
"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/jsonEstrutura: ManagedAssignment
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
Resultados
3 operaçõesGETListar resultados recebidos/v1/integration/inspection-results
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
limitopcional | query 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 |
cursoropcional | query 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 |
searchopcional | query 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}$" |
plateopcional | query 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 |
externalIdopcional | query Identifier | |
inspectorIdopcional | query Identifier | |
fromopcional | query string | Horário de recebimento pelo servidor: from inclusivo, to exclusivo. Formato: "date-time" |
toopcional | query string | Horário de recebimento pelo servidor: from inclusivo, to exclusivo. Formato: "date-time" |
reviewStatusopcional | query ReviewStatus |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: ResultPage
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar fotos e respostas de uma vistoria/v1/integration/inspection-results/{assignmentId}
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/inspection-results/{assignmentId}' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: InspectionResult
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETBaixar uma foto recebida/v1/integration/inspection-results/{assignmentId}/photos/{photoId}
Download autenticado em partes a partir do SQL Server; somente fotos referenciadas no resultado recebido desta associação.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
photoIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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"binary"Tipo: string
image/png"binary"Tipo: string
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
Análise e laudos
4 operaçõesGETConsultar análise e histórico da vistoria/v1/integration/inspection-results/{assignmentId}/review
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
POSTAprovar, reprovar ou solicitar correções/v1/integration/inspection-results/{assignmentId}/review
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
If-Matchobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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
{
"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
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
GETBaixar laudo PDF consolidado/v1/integration/inspection-results/{assignmentId}/report
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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"binary"Tipo: string
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
GETConsultar o parecer de uma vistoria própria/v1/inspection-assignments/{assignmentId}/review
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: ReviewDetails
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
Webhooks
6 operaçõesGETListar avisos automáticos/v1/integration/webhooks
Até dez endpoints, incluindo desativados. Segredos nunca são retornados.
Permissões necessárias
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/webhooks' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: WebhookList
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTCadastrar webhook para novos resultados/v1/integration/webhooks
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: WebhookEndpoint
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar configuração e revisão do webhook/v1/integration/webhooks/{webhookId}
Use o ETag para alterar o estado.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
webhookIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: WebhookEndpoint
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
PATCHAtivar ou desativar o webhook/v1/integration/webhooks/{webhookId}
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
webhookIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: WebhookEndpoint
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
412Revisão desatualizada. Ler o recurso e decidir sobre uma nova operação.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: Error
428Cabeçalho If-Match obrigatório.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar as últimas entregas/v1/integration/webhooks/{webhookId}/deliveries
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
webhookIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/webhooks/{webhookId}/deliveries' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: WebhookDeliveryList
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTReenviar uma entrega com falha ou cancelada/v1/integration/webhooks/{webhookId}/deliveries/{deliveryId}/retry
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
webhookIdobrigatório | path Identifier | |
deliveryIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: WebhookRetry
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
Rotas de visitas
8 operaçõesGETConsultar rotas do dia/v1/integration/visit-routes
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
dateobrigatório | query string | Formato: "date" |
inspectorIdopcional | query Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/visit-routes' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Consultar rotas do dia
application/jsonEstrutura: VisitRouteList
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
POSTCalcular e disponibilizar uma rota para o vistoriador/v1/integration/visit-routes
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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
{
"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
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
POSTComparar percurso antes de disponibilizar no app/v1/integration/visit-routes/preview
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: VisitRoutePreview
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
GETLocalizar um endereço de vistoria para confirmação humana/v1/integration/visit-routes/geocode
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | query Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: GeocodeResults
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
GETConsultar rota e visitas alteradas ou concluídas/v1/integration/visit-routes/{routeId}
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
routeIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
PATCHRetirar uma rota do app/v1/integration/visit-routes/{routeId}
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
routeIdobrigatório | path Identifier | |
If-Matchobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
GETConsultar as rotas ativas do próprio vistoriador/v1/visit-routes
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
dateobrigatório | query string | Formato: "date" |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: VisitRouteList
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
GETConsultar uma rota ativa autorizada/v1/visit-routes/{routeId}
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
routeIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/visit-routes/{routeId}' \
--header "Authorization: Bearer $SESSAO_VISTORIADOR"Respostas
200Consultar uma rota ativa autorizada
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
429Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
503Falha de validação, acesso ou serviço.
application/jsonEstrutura: Error
Vistoria do associado
9 operaçõesPOSTVerificar token e receber sessão restrita/v1/self-inspections/redeem
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --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/jsonEstrutura: MemberRedeemed
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
GETValidar acesso e consultar dados ou recibo/v1/self-inspections/session
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/self-inspections/session' \
--header "Authorization: Bearer $SESSAO_ASSOCIADO"Respostas
200Operação concluída
application/jsonEstrutura: MemberSession
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
POSTConfirmar dados antes de enviar fotos/v1/self-inspections/confirm
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --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/jsonEstrutura: MemberSession
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
POSTEncerrar sessão deste aparelho/v1/self-inspections/logout
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --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/jsonEstrutura: MemberLogout
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
GETConsultar e copiar token da vistoria/v1/integration/inspection-assignments/{assignmentId}/self-access
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: MemberAccessView
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
POSTGerar token após vencimento ou revogação/v1/integration/inspection-assignments/{assignmentId}/self-access
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: MemberAccessMutation
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
412Revisão ausente ou desatualizada.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
428Revisão ausente ou desatualizada.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
POSTInvalidar token e todas as suas sessões/v1/integration/inspection-assignments/{assignmentId}/self-access/revoke
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: MemberAccessMutation
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
412Revisão ausente ou desatualizada.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
428Revisão ausente ou desatualizada.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
POSTInvalidar token e gerar substituto ligado ao anterior/v1/integration/inspection-assignments/{assignmentId}/self-access/rotate
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: MemberAccessMutation
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
412Revisão ausente ou desatualizada.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
428Revisão ausente ou desatualizada.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
POSTLocalizar endereço antes de criar a vistoria/v1/integration/inspection-assignments/geocode-address
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
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: MemberGeocodeResult
401Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
403Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
404Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
409Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
422Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
429Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
503Falha de autenticação, autorização, validação ou disponibilidade.
application/jsonEstrutura: Error
Produção e acesso
8 operaçõesGETConsultar 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 --request GET 'https://app.mutuadesk.com.br/v1/config'Respostas
200Operação concluída.
application/jsonEstrutura: PublicConfig
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: 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/jsonEstrutura: 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 --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/jsonEstrutura: EmailAccepted
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: 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/jsonEstrutura: 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 --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/jsonEstrutura: AccessConfirmed
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: 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/jsonEstrutura: 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 --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/jsonEstrutura: AccessConfirmed
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: Error
429Limite temporário de tentativas. Respeite Retry-After.
GETConsultar armazenamento e entregas da associação/v1/integration/operations
Permissões necessárias
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/operations' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: OperationsSummary
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
429Limite temporário de tentativas. Respeite Retry-After.
GETConsultar as últimas 100 solicitações da associação/v1/integration/data-requests
Permissões necessárias
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/integration/data-requests' \
--header "Authorization: Bearer $MUTUADESK_TOKEN"Respostas
200Operação concluída.
application/jsonEstrutura: DataRequestPage
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
429Limite temporário de tentativas. Respeite Retry-After.
POSTRegistrar solicitação de acesso, correção, exclusão ou guarda/v1/integration/data-requests
Registra e audita o pedido para atendimento humano. Não exporta nem apaga automaticamente vistorias, fotos ou backups.
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
Idempotency-Keyobrigatório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: DataRequest
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
429Limite temporário de tentativas. Respeite Retry-After.
PATCHRegistrar andamento e resposta ao titular/v1/integration/data-requests/{requestId}
Permissões necessárias
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
requestIdobrigatório | path string | |
Idempotency-Keyobrigatório | header 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ório | header 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/jsonEstrutura: 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 --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/jsonEstrutura: DataRequest
400Comando inválido ou link inválido, vencido ou utilizado.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
429Limite temporário de tentativas. Respeite Retry-After.
Acesso ao app
6 operaçõesPOSTEntrar 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/jsonEstrutura: 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 --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/jsonEstrutura: MobileSession
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: 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 --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/jsonEstrutura: MobileSession
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: 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 --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/jsonEstrutura: Success
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
GETValidar sessão e consultar vínculos do vistoriador/v1/me
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 --request GET 'https://app.mutuadesk.com.br/v1/me' \
--header "Authorization: Bearer $SESSAO_VISTORIADOR"Respostas
200Operação concluída.
application/jsonEstrutura: MobileProfile
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
POSTTrocar a senha e encerrar sessões anteriores/v1/me/password
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/jsonEstrutura: 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 --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/jsonEstrutura: MobileSession
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
POSTAceitar vínculo oferecido por uma associação/v1/me/associations/{associationId}/accept
Apenas o próprio vistoriador pode aceitar um vínculo ativo já oferecido. Não concede associação arbitrária.
Parâmetros
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
associationIdobrigatório | path Identifier |
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --request POST 'https://app.mutuadesk.com.br/v1/me/associations/{associationId}/accept' \
--header "Authorization: Bearer $SESSAO_VISTORIADOR" \
--header 'Content-Type: application/json' \
--data-binary '@corpo.json'Respostas
200Operação concluída.
application/jsonEstrutura: MobileProfile
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
Agenda do vistoriador
4 operaçõesAcesso com sessão pessoal do vistoriador.
GETConsultar disponibilidade de avisos de agenda/v1/me/notifications
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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| Campo | Tipo | Descrição e regras |
|---|---|---|
enabledobrigatório | boolean |
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
PUTRegistrar ou renovar o aparelho na sessão do vistoriador/v1/me/push-device
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| Campo | Tipo | Descrição e regras |
|---|---|---|
installationIdobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
tokenobrigatório | string | 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 --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| Campo | Tipo | Descrição e regras |
|---|---|---|
enabledobrigatório | boolean |
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
DELETERemover os avisos deste aparelho e sessão/v1/me/push-device
Corpo da requisição obrigatório
application/json| Campo | Tipo | Descrição e regras |
|---|---|---|
installationIdobrigatório | string | 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 --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| Campo | Tipo | Descrição e regras |
|---|---|---|
okopcional | boolean | Valor fixo: true |
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: Error
GETReceber ordens autorizadas para o vistoriador autenticado/v1/inspection-assignments
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 --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/jsonEstrutura: Agenda
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
Envio do vistoriador
6 operaçõesPOSTIniciar ou retomar uma foto/v1/inspection-assignments/{assignmentId}/photos
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --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/jsonEstrutura: PhotoUpload
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar partes já recebidas/v1/inspection-assignments/{assignmentId}/photos/{photoId}
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
photoIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
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/jsonEstrutura: PhotoUpload
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
PUTEnviar uma parte da foto/v1/inspection-assignments/{assignmentId}/photos/{photoId}/chunks/{index}
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
photoIdobrigatório | path Identifier | |
indexobrigatório | path integer | Mínimo: 0 · Máximo: 19 |
Corpo da requisição obrigatório
application/octet-streamDe 1 a 1.048.576 bytes; tamanho exato conforme índice e comprimento total.
"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 --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/jsonEstrutura: PhotoUpload
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTValidar a foto completa/v1/inspection-assignments/{assignmentId}/photos/{photoId}/complete
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier | |
photoIdobrigatório | path Identifier |
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --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/jsonEstrutura: PhotoUpload
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
GETConsultar confirmação do envio/v1/inspection-assignments/{assignmentId}/result
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Exemplo de chamada
Sintaxe cURL para terminal Bash. Substitua os IDs entre chaves e use a credencial indicada acima.
curl --request GET 'https://app.mutuadesk.com.br/v1/inspection-assignments/{assignmentId}/result' \
--header "Authorization: Bearer $SESSAO_VISTORIADOR"Respostas
200Operação concluída.
application/jsonEstrutura: ResultReceipt
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: Error
POSTEnviar checklist e concluir a vistoria/v1/inspection-assignments/{assignmentId}/result
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
| Nome | Local / tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | path Identifier |
Corpo da requisição obrigatório
application/jsonEstrutura: 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 --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/jsonEstrutura: ResultReceipt
400JSON, cursor ou cabeçalhos inválidos.
application/jsonEstrutura: Error
401Credencial ausente, inválida ou expirada.
application/jsonEstrutura: Error
403Credencial não possui a permissão exigida.
application/jsonEstrutura: Error
404Recurso inexistente ou pertencente a outra associação. Não revelar dados de terceiros.
application/jsonEstrutura: Error
409Conflito de estado, ID externo duplicado, chave idempotente reutilizada ou alteração após liberação ao app.
application/jsonEstrutura: Error
413Corpo maior que o limite da rota (JSON 2 MiB; parte binária 1 MiB).
application/jsonEstrutura: Error
415Content-Type incompatível com a rota; use JSON ou application/octet-stream conforme o contrato.
application/jsonEstrutura: Error
422Dados semanticamente inválidos: ordem repetida, roteiro não publicado/incompatível, vistoriador inativo ou sem vínculo.
application/jsonEstrutura: 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:1X-RateLimit-Limit— Máximo de chamadas por associação na janela; presente quando a cota da associação foi avaliada.Mínimo:1X-RateLimit-Remaining— Chamadas ainda disponíveis na janela; é uma indicação, não uma reserva para chamadas futuras.Mínimo:0X-RateLimit-Reset— Final da janela em segundos Unix.X-RateLimit-Window— Duração da janela em segundos.Mínimo:1X-RateLimit-Page-Limit— Teto de itens nas listagens paginadas da associação.Mínimo:1· Máximo:100
application/jsonEstrutura: 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/jsonEstrutura: 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
"^[a-zA-Z0-9_.:-]{1,100}$"Tipo: string
Ver definição completa
{
"type": "string",
"pattern": "^[a-zA-Z0-9_.:-]{1,100}$"
}Agenda
| Campo | Tipo | Descrição e regras |
|---|---|---|
schemaVersionobrigatório | integer | Valor fixo: 1 |
assignmentsobrigatório | lista de Assignment | Itens máximos: 500 |
Ver definição completa
{
"type": "object",
"required": [
"schemaVersion",
"assignments"
],
"properties": {
"schemaVersion": {
"type": "integer",
"const": 1
},
"assignments": {
"type": "array",
"maxItems": 500,
"items": {
"$ref": "#/components/schemas/Assignment"
}
}
}
}Assignment
| Campo | Tipo | Descrição e regras | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idobrigatório | Identifier | ||||||||||||||||
associationobrigatório | object | Ver estrutura
| |||||||||||||||
vehicleobrigatório | object | Ver estrutura
| |||||||||||||||
scheduledAtobrigatório | string | Formato: "date-time" | |||||||||||||||
addressobrigatório | string | Endereço formatado, incluindo número, complemento, CEP e referência quando preenchidos; mantido em texto para clientes existentes. Tamanho mínimo: 1 | |||||||||||||||
contactPhoneopcional | string | ||||||||||||||||
templateobrigatório | Template | ||||||||||||||||
addressDetailsopcional | AddressDetails | ||||||||||||||||
correctionOfopcional | CorrectionOrigin | ||||||||||||||||
executionModeopcional | objeto | Valores: "member", "inspector" | |||||||||||||||
memberopcional | Member | ||||||||||||||||
locationPolicyopcional | LocationPolicy |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
associationIdobrigatório | Identifier | |
versionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
vehicleTypesobrigatório | lista de string | Itens mínimos: 1Ver estruturaItens mínimos: 1Itens: string Tamanho mínimo: 1Tipo: string |
stepsobrigatório | lista de Step | IDs e posições únicos; a ordem do array não determina a sequência. Itens mínimos: 1 · Itens máximos: 150Ver estruturaIDs e posições únicos; a ordem do array não determina a sequência. Itens mínimos: 1 · Itens máximos: 150Itens: Step |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
titleobrigatório | string | Tamanho mínimo: 1 |
instructionopcional | string | Tamanho mínimo: 1 |
positionobrigatório | integer | Mínimo: 1 |
kindobrigatório | string | Valores: "photo", "choice", "text" |
requiredobrigatório | boolean | |
optionsopcional | lista de string | Itens mínimos: 1Ver estruturaItens mínimos: 1Itens: string Tamanho mínimo: 1Tipo: string |
Combina todas as estruturas:
- objeto
Tipo: objeto
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
titleobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
instructionopcional | string | Tamanho mínimo: 1 · Tamanho máximo: 2000 · Padrão: "\\S" |
positionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
kindobrigatório | string | Valores: "photo", "choice", "text" |
requiredobrigatório | boolean | |
optionsopcional | lista de string | Itens mínimos: 1 · Itens máximos: 50Ver estruturaItens mínimos: 1 · Itens máximos: 50Itens: 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
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
vehicleTypesobrigatório | lista de Identifier | Itens mínimos: 1 · Itens máximos: 50 |
stepsopcional | lista 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: 150Ver estruturaIDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array. Itens mínimos: 1 · Itens máximos: 150Itens: InputStep |
layoutopcional | TemplateLayout |
Aceita exatamente uma estrutura:
- objeto
Tipo: objeto
- objeto
Tipo: objeto
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
vehicleTypesobrigatório | lista de Identifier | Itens mínimos: 1 · Itens máximos: 50 |
stepsopcional | lista 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: 150Ver estruturaIDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array. Itens mínimos: 1 · Itens máximos: 150Itens: InputStep |
layoutopcional | TemplateLayout |
Aceita exatamente uma estrutura:
- objeto
Tipo: objeto
- objeto
Tipo: objeto
Ver definição completa
{
"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
"draft", "published", "archived"Tipo: string
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
associationIdobrigatório | Identifier | |
versionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
vehicleTypesobrigatório | lista de Identifier | Itens mínimos: 1 · Itens máximos: 50 |
stepsobrigatório | lista 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: 150Ver estruturaIDs e posições devem ser únicos após normalização. Ordenar por position; não pelo array. Itens mínimos: 1 · Itens máximos: 150Itens: InputStep |
stateobrigatório | TemplateVersionState | |
revisionobrigatório | integer | Mínimo: 1 |
createdAtobrigatório | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
updatedAtobrigatório | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
publishedAtopcional | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
archivedAtopcional | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
archiveReasonopcional | string | Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S" |
layoutopcional | TemplateLayout |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
associationIdobrigatório | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
latestVersionobrigatório | integer | Mínimo: 1 |
latestPublishedVersionobrigatório | integer | null | Maior versão publicada que não foi arquivada, ou null. Mínimo: 1 |
vehicleTypesobrigatório | lista de Identifier | Itens mínimos: 1 |
updatedAtobrigatório | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
externalIdopcional | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
activeobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
versionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"version"
],
"properties": {
"id": {
"$ref": "#/components/schemas/Identifier"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647
}
}
}IntegrationVehicle
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
typeobrigatório | Identifier | |
plateobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 20 · Padrão: "\\S" |
descriptionobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S" |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
externalIdobrigatório | Identifier | |
inspectorIdopcional | Identifier ou null | |
vehicleobrigatório | IntegrationVehicle | |
scheduledAtobrigatório | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
addressobrigatório | AddressInput | |
contactPhoneopcional | string | Tamanho máximo: 40 |
templateRefobrigatório | TemplateReference | |
executionModeopcional | objeto | Padrão inicial: "inspector" · Valores: "member", "inspector" |
memberopcional | Member | |
locationPolicyopcional | LocationPolicy | |
tokenExpiresInHoursopcional | integer | Mínimo: 1 · Máximo: 168 · Padrão inicial: 24 |
Aceita exatamente uma estrutura:
- objeto
Campos do objeto Campo Tipo Descrição e regras inspectorIdobrigatórioIdentifier executionModeopcionalobjeto Valor fixo:"inspector" - objeto
Campos do objeto Campo Tipo Descrição e regras executionModeobrigatórioobjeto Valor fixo:"member"inspectorIdopcionalnull
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentsobrigatório | lista 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: 50Ver estruturaUm lote atômico; externalId não pode se repetir no lote ou na associação. Itens mínimos: 1 · Itens máximos: 50Itens: AssignmentCreate |
Ver definição completa
{
"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.
"queued", "released", "cancelled"Tipo: string
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentobrigatório | Assignment | |
externalIdobrigatório | Identifier | |
inspectorIdobrigatório | Identifier ou null | |
distributionStatusobrigatório | DistributionStatus | |
revisionobrigatório | integer | Mínimo: 1 |
createdAtobrigatório | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
updatedAtobrigatório | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
releasedAtopcional | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
cancelledAtopcional | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
cancellationReasonopcional | string | Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S" |
memberAccessIdopcional | Identifier |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentsobrigatório | lista de ManagedAssignment | Itens mínimos: 1 · Itens máximos: 50 |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
scheduledAtopcional | string | Formato: "date-time" · Padrão: "(Z|[+-][0-9]{2}:[0-9]{2})$" |
addressopcional | AddressInput | |
contactPhoneopcional | string | Tamanho máximo: 40 |
templateRefopcional | TemplateReference | |
reasonobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S" |
locationPolicyopcional | LocationPolicy |
Aceita uma ou mais estruturas:
- objeto
Tipo: objeto
- objeto
Tipo: objeto
- objeto
Tipo: objeto
- objeto
Tipo: objeto
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | Identifier | |
reasonobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S" |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"inspectorId",
"reason"
],
"properties": {
"inspectorId": {
"$ref": "#/components/schemas/Identifier"
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"pattern": "\\S"
}
}
}Reason
| Campo | Tipo | Descrição e regras |
|---|---|---|
reasonobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 1000 · Padrão: "\\S" |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"reason"
],
"properties": {
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"pattern": "\\S"
}
}
}Error
| Campo | Tipo | Descrição e regras | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
codeobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 100 · Padrão: "\\S" | ||||||||||||
messageobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 2000 · Padrão: "\\S" | ||||||||||||
requestIdobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 100 · Padrão: "\\S" | ||||||||||||
detailsopcional | lista de object | Ver estruturaItens: object Não aceita campos adicionais
|
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de Inspector | Itens máximos: 100 |
nextCursorobrigatório | string | null | Tamanho máximo: 2048 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de TemplateSummary | Itens máximos: 100 |
nextCursorobrigatório | string | null | Tamanho máximo: 2048 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de ManagedTemplateVersion | Itens máximos: 100 |
nextCursorobrigatório | string | null | Tamanho máximo: 2048 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de ManagedAssignment | Itens máximos: 100 |
nextCursorobrigatório | string | null | Tamanho máximo: 2048 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 120 |
emailobrigatório | string | Tamanho máximo: 254 |
phoneopcional | string | Tamanho máximo: 40 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 120 |
emailobrigatório | string | Tamanho máximo: 254 |
phoneopcional | string | Tamanho máximo: 40 |
activeobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 120 |
emailobrigatório | string | Tamanho máximo: 254 |
phoneobrigatório | string | Tamanho máximo: 40 |
activeobrigatório | boolean | |
revisionobrigatório | integer | Mínimo: 1 |
createdAtobrigatório | string | Formato: "date-time" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
emailobrigatório | string | Formato: "email" |
enabledobrigatório | boolean | |
acceptedobrigatório | boolean | |
revisionobrigatório | integer | Mínimo: 1 |
messageopcional | string |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
temporaryPasswordopcional | string | Tamanho mínimo: 12 · Tamanho máximo: 128 · Somente envio |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"temporaryPassword": {
"type": "string",
"minLength": 12,
"maxLength": 128,
"writeOnly": true
}
}
}AccessUpdate
| Campo | Tipo | Descrição e regras |
|---|---|---|
enabledobrigatório | boolean |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"enabled"
],
"properties": {
"enabled": {
"type": "boolean"
}
}
}MobileLogin
| Campo | Tipo | Descrição e regras |
|---|---|---|
emailobrigatório | string | Formato: "email" · Tamanho máximo: 254 |
passwordobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 128 · Somente envio |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
refreshTokenobrigatório | string | Padrão: "^vr_[A-Za-z0-9_-]{43}$" · Somente envio |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"refreshToken"
],
"properties": {
"refreshToken": {
"type": "string",
"pattern": "^vr_[A-Za-z0-9_-]{43}$",
"writeOnly": true
}
}
}MobilePasswordChange
| Campo | Tipo | Descrição e regras |
|---|---|---|
currentPasswordobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 128 · Somente envio |
newPasswordobrigatório | string | Tamanho mínimo: 12 · Tamanho máximo: 128 · Somente envio |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accountobrigatório | object | Não aceita campos adicionais Ver estruturaNão aceita campos adicionais
| |||||||||||||||
associationsobrigatório | lista de object | Ver estruturaItens: object Não aceita campos adicionais
|
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accountobrigatório | object | Não aceita campos adicionais Ver estruturaNão aceita campos adicionais
| |||||||||||||||
associationsobrigatório | lista de object | Ver estruturaItens: object Não aceita campos adicionais
| |||||||||||||||
tokenTypeobrigatório | string | Valor fixo: "Bearer" | |||||||||||||||
accessTokenobrigatório | string | Padrão: "^va_[A-Za-z0-9_-]{43}$" | |||||||||||||||
refreshTokenobrigatório | string | Padrão: "^vr_[A-Za-z0-9_-]{43}$" | |||||||||||||||
accessExpiresAtobrigatório | string | Formato: "date-time" | |||||||||||||||
refreshExpiresAtobrigatório | string | Formato: "date-time" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
okobrigatório | boolean | Valor fixo: true |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"ok"
],
"properties": {
"ok": {
"type": "boolean",
"const": true
}
}
}EmptyObject
| Campo | Tipo | Descrição e regras |
|---|
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {}
}PhotoReference
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
sha256obrigatório | string | Padrão: "^[a-f0-9]{64}$" |
byteLengthobrigatório | integer | Mínimo: 1 · Máximo: 20971520 |
contentTypeobrigatório | string | Valores: "image/jpeg", "image/png" |
captureopcional | CaptureEvidence ou null | |
locationAssessmentopcional | LocationAssessment |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
stepIdobrigatório | Identifier | |
sha256obrigatório | string | Padrão: "^[a-f0-9]{64}$" |
byteLengthobrigatório | integer | Mínimo: 1 · Máximo: 20971520 |
contentTypeobrigatório | string | Valores: "image/jpeg", "image/png" |
captureopcional | CaptureEvidence |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
sha256obrigatório | string | Padrão: "^[a-f0-9]{64}$" |
byteLengthobrigatório | integer | Mínimo: 1 · Máximo: 20971520 |
contentTypeobrigatório | string | Valores: "image/jpeg", "image/png" |
stepIdobrigatório | Identifier | |
statusobrigatório | string | Valores: "uploading", "ready" |
chunkSizeobrigatório | integer | Valor fixo: 1048576 |
receivedChunksobrigatório | lista de integer | Itens máximos: 20Ver estruturaItens máximos: 20Itens: integer Mínimo: 0 · Máximo: 19Tipo: integer |
Ver definição completa
{
"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:
- objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descrição e regras stepIdobrigatórioIdentifier savedAtobrigatóriostring Formato:"date-time"photoIdobrigatórioIdentifier - objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descriçã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
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
submissionIdobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
templateIdobrigatório | Identifier | |
templateVersionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
completedAtobrigatório | string | Formato: "date-time" |
answersobrigatório | lista de AnswerInput | Itens máximos: 150 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
submissionIdobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
assignmentIdobrigatório | Identifier | |
statusobrigatório | string | Valor fixo: "received" |
receivedAtobrigatório | string | Formato: "date-time" |
Ver definição completa
{
"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:
- objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descrição e regras stepIdobrigatórioIdentifier savedAtobrigatóriostring Formato:"date-time"kindobrigatórioobjeto Valor fixo:"photo"photoobrigatórioPhotoReference - objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descriçã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
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
submissionIdobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
assignmentIdobrigatório | Identifier | |
statusobrigatório | string | Valor fixo: "received" |
receivedAtobrigatório | string | Formato: "date-time" |
externalIdobrigatório | Identifier | |
inspectorIdobrigatório | Identifier ou null | |
assignmentobrigatório | Assignment | |
photoCountobrigatório | integer | Mínimo: 0 · Máximo: 150 |
completedAtobrigatório | string | Formato: "date-time" |
answersobrigatório | lista de ResultAnswer | Itens máximos: 150 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
assignmentIdobrigatório | Identifier | |
externalIdobrigatório | Identifier | |
inspectorIdobrigatório | Identifier ou null | |
plateobrigatório | string | |
vehicleDescriptionobrigatório | string | |
completedAtobrigatório | string | Formato: "date-time" |
receivedAtobrigatório | string | Formato: "date-time" |
photoCountobrigatório | integer | Mínimo: 0 |
statusobrigatório | objeto | Valor fixo: "received" |
reviewStatusobrigatório | ReviewStatus |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de ResultSummary | Itens máximos: 100 |
nextCursorobrigatório | string | null |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 120 · Padrão: "\\S" |
urlobrigatório | string | Formato: "uri" · Tamanho máximo: 2000 |
secretobrigatório | string | Tamanho mínimo: 43 · Tamanho máximo: 128 · Padrão: "^[A-Za-z0-9_-]+$" · Somente envio |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
activeobrigatório | boolean |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"active"
],
"properties": {
"active": {
"type": "boolean"
}
}
}WebhookEndpoint
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
nameobrigatório | string | |
urlobrigatório | string | Formato: "uri" |
activeobrigatório | boolean | |
revisionobrigatório | integer | Mínimo: 1 |
createdAtobrigatório | string | Formato: "date-time" |
eventsobrigatório | lista de string | Itens mínimos: 1 · Itens máximos: 4Ver estruturaItens mínimos: 1 · Itens máximos: 4Itens: string Valores: "inspection.received", "inspection.approved", "inspection.rejected", "inspection.changes_requested"Tipo: string |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de WebhookEndpoint | Itens máximos: 10 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WebhookEndpoint"
},
"maxItems": 10
}
}
}WebhookDelivery
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
eventIdobrigatório | Identifier | |
statusobrigatório | objeto | Valores: "pending", "sending", "delivered", "failed", "cancelled" |
attemptsobrigatório | integer | Mínimo: 0 · Máximo: 8 |
nextAttemptAtobrigatório | string | null | Formato: "date-time" |
lastStatusobrigatório | integer | null | |
lastErrorobrigatório | string | null | |
createdAtobrigatório | string | Formato: "date-time" |
deliveredAtobrigatório | string | null | Formato: "date-time" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de WebhookDelivery | Itens máximos: 100 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WebhookDelivery"
},
"maxItems": 100
}
}
}WebhookRetry
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
statusobrigatório | objeto | Valor fixo: "pending" |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"status"
],
"properties": {
"id": {
"$ref": "#/components/schemas/Identifier"
},
"status": {
"const": "pending"
}
}
}WebhookEvent
| Campo | Tipo | Descrição e regras | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idobrigatório | Identifier | ||||||||||||||||||||||
typeobrigatório | string | Valores: "inspection.received", "inspection.approved", "inspection.rejected", "inspection.changes_requested" | |||||||||||||||||||||
schemaVersionobrigatório | objeto | Valor fixo: 1 | |||||||||||||||||||||
occurredAtobrigatório | string | Formato: "date-time" | |||||||||||||||||||||
associationIdobrigatório | Identifier | ||||||||||||||||||||||
dataobrigatório | object | Não aceita campos adicionais Ver estruturaNão aceita campos adicionais
|
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
postalCodeopcional | string | Opcional; oito dígitos, com ou sem hífen. Ausente é normalizado para vazio. Padrão: "^(\\d{5}-?\\d{3})?$" |
streetobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S" |
cityobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
numberobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 30 · Padrão: "\\S" |
neighborhoodopcional | string | Tamanho máximo: 200 |
stateobrigatório | string | 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])$" |
complementopcional | string | Tamanho máximo: 300 |
referenceopcional | string | Tamanho máximo: 500 |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
postalCodeobrigatório | string | Padrão: "^(\\d{8})?$" |
streetobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 300 · Padrão: "\\S" |
cityobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
numberobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 30 · Padrão: "\\S" |
neighborhoodobrigatório | string | Tamanho máximo: 200 |
stateobrigatório | string | 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ório | string | Tamanho máximo: 300 |
referenceobrigatório | string | Tamanho máximo: 500 |
Ver definição completa
{
"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:
- stringTamanho mínimo:
1· Tamanho máximo:2000· Padrão:"\\S"Tipo: string
- AddressFields
Ver definição completa
{
"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
"pending", "approved", "rejected", "changes_requested"Tipo: string
Ver definição completa
{
"type": "string",
"enum": [
"pending",
"approved",
"rejected",
"changes_requested"
]
}CorrectionOrigin
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | Identifier | |
resultIdobrigatório | Identifier | |
rootAssignmentIdobrigatório | Identifier | |
roundobrigatório | integer | Mínimo: 1 · Máximo: 10 |
reasonobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 5000 |
stepIdsobrigatório | lista de Identifier | Itens mínimos: 1 · Itens máximos: 150 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
statusobrigatório | ReviewStatus | ||||||||||
revisionobrigatório | integer | Mínimo: 1 | |||||||||
notesobrigatório | string | Tamanho máximo: 5000 | |||||||||
stepIdsobrigatório | lista de Identifier | Itens mínimos: 0 · Itens máximos: 150 | |||||||||
reviewedAtobrigatório | string ou null | Ver estruturaAceita uma ou mais estruturas:
| |||||||||
reviewerobrigatório | object ou null | Ver estruturaAceita uma ou mais estruturas:
| |||||||||
followupAssignmentIdobrigatório | Identifier ou null |
Ver definição completa
{
"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:
- objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descrição e regras decisionobrigatórioobjeto Valor fixo:"approved"notesopcionalstring Tamanho máximo:5000 - objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descrição e regras decisionobrigatórioobjeto Valor fixo:"rejected"notesobrigatóriostring Tamanho mínimo:1· Tamanho máximo:5000· Padrão:"\\S" - objectNão aceita campos adicionais
Campos do objeto Campo Tipo Descriçã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:150scheduledAtopcionalstring Formato:"date-time"
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | Identifier | |
resultIdobrigatório | Identifier ou null | |
receivedAtobrigatório | string ou null | Ver estruturaAceita uma ou mais estruturas:
|
reviewobrigatório | InspectionReview ou null | |
correctionOfobrigatório | CorrectionOrigin ou null |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
submissionIdobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
assignmentIdobrigatório | Identifier | |
statusobrigatório | string | Valor fixo: "received" |
receivedAtobrigatório | string | Formato: "date-time" |
externalIdobrigatório | Identifier | |
inspectorIdobrigatório | Identifier | |
assignmentobrigatório | Assignment | |
photoCountobrigatório | integer | Mínimo: 0 · Máximo: 150 |
completedAtobrigatório | string | Formato: "date-time" |
answersobrigatório | lista de ResultAnswer | Itens máximos: 150 |
revisionobrigatório | integer | Mínimo: 1 |
reviewobrigatório | InspectionReview | |
rootAssignmentIdobrigatório | Identifier | |
effectiveStatusobrigatório | ReviewStatus | |
historyobrigatório | lista de ReviewHistoryItem | Itens mínimos: 1 · Itens máximos: 11 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
}
}
}GeocodeCandidate
| Campo | Tipo | Descrição e regras |
|---|---|---|
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
labelobrigatório | string | Tamanho máximo: 1000 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
candidatesobrigatório | lista de GeocodeCandidate | Itens mínimos: 0 · Itens máximos: 5 |
attributionobrigatório | string | |
cachedobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | Identifier | |
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | Identifier | |
dateobrigatório | string | Formato: "date" |
modeobrigatório | objeto | Valores: "scheduled", "optimized" |
startobrigatório | GeoPoint | |
stopsobrigatório | lista de VisitRouteStopInput | Itens mínimos: 1 · Itens máximos: 20 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | Identifier | |
assignmentRevisionobrigatório | integer | Mínimo: 1 |
assignmentFingerprintobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
plateobrigatório | string | |
addressobrigatório | string | |
scheduledAtobrigatório | string | Formato: "date-time" |
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
positionobrigatório | integer | Mínimo: 1 · Máximo: 20 |
distanceMetersobrigatório | integer | Mínimo: 0 |
durationSecondsobrigatório | integer | Mínimo: 0 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | Identifier | |
inspectorNameobrigatório | string | |
dateobrigatório | string | Formato: "date" |
modeobrigatório | objeto | Valores: "scheduled", "optimized" |
startobrigatório | GeoPoint | |
stopsobrigatório | lista de VisitRouteStop | Itens mínimos: 1 · Itens máximos: 20 |
distanceMetersobrigatório | integer | Mínimo: 0 |
durationSecondsobrigatório | integer | Mínimo: 0 |
scheduledDistanceMetersobrigatório | integer | Mínimo: 0 |
scheduledDurationSecondsobrigatório | integer | Mínimo: 0 |
reorderedobrigatório | boolean | |
providerobrigatório | objeto | Valor fixo: "OSRM" |
attributionobrigatório | string | |
calculatedAtobrigatório | string | Formato: "date-time" |
trafficIncludedobrigatório | objeto | Valor fixo: false |
returnToStartobrigatório | objeto | Valor fixo: false |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
assignmentIdobrigatório | Identifier | |
assignmentRevisionobrigatório | integer | Mínimo: 1 |
assignmentFingerprintobrigatório | string | Padrão: "^[a-f0-9]{64}$" |
plateobrigatório | string | |
addressobrigatório | string | |
scheduledAtobrigatório | string | Formato: "date-time" |
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
positionobrigatório | integer | Mínimo: 1 · Máximo: 20 |
distanceMetersobrigatório | integer | Mínimo: 0 |
durationSecondsobrigatório | integer | Mínimo: 0 |
completedobrigatório | boolean | |
outdatedobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
inspectorIdobrigatório | Identifier | |
inspectorNameobrigatório | string | |
dateobrigatório | string | Formato: "date" |
modeobrigatório | objeto | Valores: "scheduled", "optimized" |
startobrigatório | GeoPoint | |
stopsobrigatório | lista de SavedVisitRouteStop | Itens mínimos: 0 · Itens máximos: 20 |
distanceMetersobrigatório | integer | Mínimo: 0 |
durationSecondsobrigatório | integer | Mínimo: 0 |
scheduledDistanceMetersobrigatório | integer | Mínimo: 0 |
scheduledDurationSecondsobrigatório | integer | Mínimo: 0 |
reorderedobrigatório | boolean | |
providerobrigatório | objeto | Valor fixo: "OSRM" |
attributionobrigatório | string | |
calculatedAtobrigatório | string | Formato: "date-time" |
trafficIncludedobrigatório | objeto | Valor fixo: false |
returnToStartobrigatório | objeto | Valor fixo: false |
idobrigatório | Identifier | |
associationIdobrigatório | Identifier | |
activeobrigatório | boolean | |
revisionobrigatório | integer | Mínimo: 1 |
createdAtobrigatório | string | Formato: "date-time" |
staleobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de VisitRoute | Itens mínimos: 0 · Itens máximos: 100 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VisitRoute"
},
"minItems": 0,
"maxItems": 100
}
}
}VisitRouteDeactivate
| Campo | Tipo | Descrição e regras |
|---|---|---|
activeobrigatório | objeto | Valor fixo: false |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"active"
],
"properties": {
"active": {
"const": false
}
}
}ChecklistItem
Combina todas as estruturas:
- InputStep
- objeto
Campos do objeto Campo Tipo Descrição e regras kindopcionalobjeto Valores:"choice","text"
Ver definição completa
{
"allOf": [
{
"$ref": "#/components/schemas/InputStep"
},
{
"properties": {
"kind": {
"enum": [
"choice",
"text"
]
}
}
}
]
}ChecklistReference
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
versionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"version"
],
"properties": {
"id": {
"$ref": "#/components/schemas/Identifier"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647
}
}
}ChecklistBlock
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
kindobrigatório | objeto | Valor fixo: "checklist" |
positionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
checklistRefobrigatório | ChecklistReference |
Ver definição completa
{
"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.
1 · Itens máximos: 150Itens: InputStep ou ChecklistBlock
Aceita exatamente uma estrutura:
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
descriptionopcional | string | Tamanho máximo: 1000 |
itemsobrigatório | lista 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: 150Ver estruturaIDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro. Itens mínimos: 1 · Itens máximos: 150Itens: ChecklistItem |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
descriptionopcional | string | Tamanho máximo: 1000 |
itemsobrigatório | lista 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: 150Ver estruturaIDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro. Itens mínimos: 1 · Itens máximos: 150Itens: ChecklistItem |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
associationIdobrigatório | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 · Padrão: "\\S" |
descriptionobrigatório | string | Tamanho máximo: 1000 |
itemsobrigatório | lista 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: 150Ver estruturaIDs e posições únicos; perguntas e texto livre. Fotos são etapas próprias do roteiro. Itens mínimos: 1 · Itens máximos: 150Itens: ChecklistItem |
versionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
revisionobrigatório | integer | Mínimo: 1 · Máximo: 2147483647 |
createdAtobrigatório | string | Formato: "date-time" |
updatedAtobrigatório | string | Formato: "date-time" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de ManagedChecklist | Itens máximos: 100 |
nextCursorobrigatório | string | null |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"required": [
"items",
"nextCursor"
],
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/ManagedChecklist"
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
}Member
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
nameobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 120 |
phoneobrigatório | string | Padrão: "^[0-9]{10,15}$" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
toleranceMetersobrigatório | integer | Mínimo: 1 · Máximo: 50000 |
Ver definição completa
{
"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.
| Campo | Tipo | Descrição e regras |
|---|---|---|
capturedAtobrigatório | string | Formato: "date-time" |
latitudeobrigatório | number | Mínimo: -90 · Máximo: 90 |
longitudeobrigatório | number | Mínimo: -180 · Máximo: 180 |
accuracyMetersobrigatório | number | Mínimo: 0 · Máximo: 100000 |
locationAtobrigatório | string | Formato: "date-time" |
isMockedobrigatório | boolean | |
recoveredobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
statusobrigatório | objeto | Valores: "match", "mismatch", "attention", "unavailable" |
distanceMetersobrigatório | integer ou null | Ver estruturaAceita uma ou mais estruturas:
|
toleranceMetersopcional | integer ou null | Ver estruturaAceita uma ou mais estruturas:
|
warningsobrigatório | lista de string | Ver estruturaItens: string Tipo: string |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
idobrigatório | Identifier | |
parentIdobrigatório | Identifier ou null | |
createdAtobrigatório | string | Formato: "date-time" |
expiresAtobrigatório | string | Formato: "date-time" |
revokedAtobrigatório | string ou null | Ver estruturaAceita uma ou mais estruturas:
|
statusobrigatório | objeto | Valores: "active", "expired", "revoked" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
revisionobrigatório | integer | Mínimo: 1 |
accessobrigatório | MemberAccess ou null | |
memberobrigatório | Member | |
tokenobrigatório | string ou null | Ver estruturaAceita uma ou mais estruturas:
|
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
revisionobrigatório | integer | Mínimo: 1 |
accessobrigatório | MemberAccess ou null |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"revision": {
"type": "integer",
"minimum": 1
},
"access": {
"anyOf": [
{
"$ref": "#/components/schemas/MemberAccess"
},
{
"type": "null"
}
]
}
},
"required": [
"revision",
"access"
]
}MemberAccessIssue
| Campo | Tipo | Descrição e regras |
|---|---|---|
expiresInHoursopcional | integer | Mínimo: 1 · Máximo: 168 · Padrão inicial: 24 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"expiresInHours": {
"type": "integer",
"minimum": 1,
"maximum": 168,
"default": 24
}
},
"required": []
}MemberSession
| Campo | Tipo | Descrição e regras | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accessIdobrigatório | Identifier | |||||||||||||
expiresAtobrigatório | string | Formato: "date-time" | ||||||||||||
confirmedobrigatório | boolean | |||||||||||||
memberobrigatório | Member | |||||||||||||
assignmentobrigatório | Assignment | |||||||||||||
receiptobrigatório | object ou null | Ver estruturaAceita uma ou mais estruturas:
|
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accessIdobrigatório | Identifier | |||||||||||||
expiresAtobrigatório | string | Formato: "date-time" | ||||||||||||
confirmedobrigatório | boolean | |||||||||||||
memberobrigatório | Member | |||||||||||||
assignmentobrigatório | Assignment | |||||||||||||
receiptobrigatório | object ou null | Ver estruturaAceita uma ou mais estruturas:
| ||||||||||||
sessionTokenobrigatório | string | Padrão: "^vm_[A-Za-z0-9_-]{43}$" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
tokenobrigatório | string | Padrão: "^vs_[A-Za-z0-9_-]{43}$" |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"token": {
"type": "string",
"pattern": "^vs_[A-Za-z0-9_-]{43}$"
}
},
"required": [
"token"
]
}MemberConfirmation
| Campo | Tipo | Descrição e regras |
|---|---|---|
dataCorrectobrigatório | objeto | Valor fixo: true |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"dataCorrect": {
"const": true
}
},
"required": [
"dataCorrect"
]
}MemberEmpty
| Campo | Tipo | Descrição e regras |
|---|
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}MemberLogout
| Campo | Tipo | Descrição e regras |
|---|---|---|
okobrigatório | objeto | Valor fixo: true |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"ok": {
"const": true
}
},
"required": [
"ok"
]
}GeocodeAddressInput
| Campo | Tipo | Descrição e regras |
|---|---|---|
addressobrigatório | AddressDetails |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"address": {
"$ref": "#/components/schemas/AddressDetails"
}
},
"required": [
"address"
]
}MemberGeocodeResult
| Campo | Tipo | Descrição e regras | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
candidatesobrigatório | lista de object | Itens máximos: 5Ver estruturaItens máximos: 5Itens: object Não aceita campos adicionais
| ||||||||||||
attributionobrigatório | string | |||||||||||||
cachedobrigatório | boolean |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
productionobrigatório | boolean | |
demoEnabledobrigatório | boolean | |
registrationEnabledobrigatório | boolean | |
emailVerificationobrigatório | boolean | |
emailRecoveryobrigatório | boolean | |
androidDownloadUrlobrigatório | string | |
privacyContactobrigatório | string |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
emailobrigatório | string | Formato: "email" · Tamanho máximo: 254 |
purposeobrigatório | string | Valores: "verify", "reset" |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 254
},
"purpose": {
"type": "string",
"enum": [
"verify",
"reset"
]
}
},
"required": [
"email",
"purpose"
]
}EmailAccepted
| Campo | Tipo | Descrição e regras |
|---|---|---|
acceptedobrigatório | objeto | Valor fixo: true |
messageobrigatório | string |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"accepted": {
"const": true
},
"message": {
"type": "string"
}
},
"required": [
"accepted",
"message"
]
}AccessConfirmed
| Campo | Tipo | Descrição e regras |
|---|---|---|
okobrigatório | objeto | Valor fixo: true |
messageobrigatório | string |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"ok": {
"const": true
},
"message": {
"type": "string"
}
},
"required": [
"ok",
"message"
]
}ConfirmEmail
| Campo | Tipo | Descrição e regras |
|---|---|---|
tokenobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"token": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"token"
]
}ResetPassword
| Campo | Tipo | Descrição e regras |
|---|---|---|
tokenobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 |
newPasswordobrigatório | string | Tamanho mínimo: 12 · Tamanho máximo: 128 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"token": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"newPassword": {
"type": "string",
"minLength": 12,
"maxLength": 128
}
},
"required": [
"token",
"newPassword"
]
}OperationsSummary
| Campo | Tipo | Descrição e regras | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
photosobrigatório | object | Não aceita campos adicionais Ver estruturaNão aceita campos adicionais
| |||||||||||||||
webhooksobrigatório | lista de object | Ver estruturaItens: object Não aceita campos adicionais
| |||||||||||||||
emailsobrigatório | lista de object | Ver estruturaItens: object Não aceita campos adicionais
| |||||||||||||||
maintenanceobrigatório | object | Não aceita campos adicionais Ver estruturaNão aceita campos adicionais
|
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
subjectobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 |
kindobrigatório | string | Valores: "access", "correction", "deletion", "retention" |
noteobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 2000 |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
statusobrigatório | string | Valores: "in_progress", "completed" |
responseobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 4000 |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"status": {
"type": "string",
"enum": [
"in_progress",
"completed"
]
},
"response": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"status",
"response"
]
}DataRequest
| Campo | Tipo | Descrição e regras |
|---|---|---|
subjectobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 200 |
kindobrigatório | string | Valores: "access", "correction", "deletion", "retention" |
noteobrigatório | string | Tamanho mínimo: 1 · Tamanho máximo: 2000 |
idobrigatório | string | |
statusobrigatório | string | Valores: "open", "in_progress", "completed" |
responseobrigatório | string | |
revisionobrigatório | integer | Mínimo: 1 |
createdAtobrigatório | string | Formato: "date-time" |
updatedAtobrigatório | string | Formato: "date-time" |
Ver definição completa
{
"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
| Campo | Tipo | Descrição e regras |
|---|---|---|
itemsobrigatório | lista de DataRequest | Ver estruturaItens: DataRequest |
Ver definição completa
{
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DataRequest"
}
}
},
"required": [
"items"
]
}