documentoquery · stringObligatorioCPF (11 dígitos) o CNPJ (14 dígitos) del transportista consultado, solo dígitos.
Restricciones
{
"type": "string",
"pattern": "^([0-9]{11}|[0-9]{14})$"
}Parámetros, estructura de datos y respuestas del contrato versionado.
/consultas/frotaLas descripciones técnicas se traducen del contrato versionado. Se conservan los identificadores y el JSON originales; se omiten los ejemplos de datos.
Verifica una lista de matrículas para determinar si cada una pertenece a la flota de un transportista en RNTRC (ANTT). La respuesta incluye pertence por matrícula (true/false, o null cuando ANTT no proporcionó una situación concluyente).
Requisito de la empresa que consulta: tener el registro fiscal completo, incluido el certificado digital A1 enviado en Configuración. En caso contrario, la respuesta es 422 con empresa_nao_habilitada.
Requiere el ámbito consultas habilitado en el panel.
Esta consulta no tiene un proveedor contratado: en homologación, FleetPay genera una respuesta determinista sin efecto regulatorio. Los datos no proceden de ANTT ni reflejan la flota real del transportista. Cada elemento de frota incluye verificacao: "simulada", que identifica la naturaleza de la verificación por matrícula. El campo es opcional por definición: un elemento sin verificacao corresponde a una verificación real.
El contrato de solicitud y respuesta ya es definitivo: puede integrar ahora. Al incorporar el proveedor real, el comportamiento dejará de ser simulado sin cambiar el contrato.
documento + rntrc debe coincidirLos dos parámetros plantean una sola pregunta: "la situación de ESTE registro de ESTE transportista". Un RNTRC que no corresponde al CPF/CNPJ indicado no identifica a un transportista para esta consulta. La respuesta es 400 con rntrc_nao_confere, nunca un 200 sobre el registro que se haya encontrado.
Es 400, no 503, porque la consulta se ejecutó y llegó a una conclusión: no hubo indisponibilidad. Tampoco es 404, porque el problema es la combinación de parámetros, no un recurso ausente en esa dirección.
Los valores de prueba siguientes están exentos de esta comprobación: deliberadamente no son el RNTRC de nadie.
El rechazo del par es distinto de pertence: null. null indica una matrícula con resultado inconcluso dentro de una flota existente; 400 indica que no hay un transportista sobre el cual responder para ese par. Por eso sustituye a toda la respuesta y no se devuelve por matrícula.
En modo simulado, estas matrículas siempre devuelven el mismo resultado; úselas para probar las rutas de error de su integración:
| Matrícula | Respuesta |
|---|---|
ZZZ0X00 | Matrícula fuera de la flota del transportista: pertence: false |
ZZZ9X99 | Situación inconclusa ante ANTT: pertence: null |
| cualquier otra matrícula válida | Respuesta de éxito |
[
{
"oauth2": []
},
{
"chaveApi": []
}
]documentoquery · stringObligatorioCPF (11 dígitos) o CNPJ (14 dígitos) del transportista consultado, solo dígitos.
{
"type": "string",
"pattern": "^([0-9]{11}|[0-9]{14})$"
}rntrcquery · stringObligatorioRNTRC del transportista consultado, con 8 o 9 dígitos.
{
"type": "string",
"pattern": "^[0-9]{8,9}$"
}placasquery · arrayObligatorioMatrículas que se verificarán (1 a 20). Envíe placas[]=ABC1D23&placas[]=XYZ4E56.
En homologación, ZZZ0X00 devuelve pertence: false y ZZZ9X99 devuelve
pertence: null; cualquier otra matrícula válida devuelve éxito.
{
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "string",
"pattern": "^[A-Za-z]{3}[0-9][A-Za-z0-9][0-9]{2}$"
}
}200 Respuesta HTTPEstado de cada matrícula en la flota del transportista.
400 Respuesta HTTPrntrc_nao_confere — el RNTRC informado no corresponde a este CPF/CNPJ, por lo que no hay una flota sobre la cual responder.
validacao — alguna matrícula no cumple el formato Mercosur o falta un parámetro.
401 Respuesta HTTPSin autenticación (autenticacao): credencial ausente, inválida o vencida, incluida una clave API utilizada en el entorno incorrecto. La clave de homologación no es válida en producción, ni la de producción en homologación; el mensaje de error indica el entorno esperado.
403 Respuesta HTTPÁmbito no habilitado para esta credencial
422 Respuesta HTTPLa empresa autenticada aún no completó el registro fiscal (empresa_nao_habilitada).
503 Respuesta HTTPLa consulta no está disponible temporalmente (consulta_indisponivel). Espera e inténtalo de nuevo.
{
"tags": [
"Consultas"
],
"summary": "Consultar a frota de um transportador (ANTT)",
"operationId": "consultarFrota",
"description": "Verifica, para uma lista de placas, se cada uma pertence à frota de um transportador no\nRNTRC (ANTT). A resposta traz, por placa, `pertence` (`true`/`false`, ou `null` quando a\nANTT não deu situação conclusiva).\n\n**Pré-requisito da empresa que consulta:** ter o cadastro fiscal concluído — com o\ncertificado digital A1 enviado em Configurações. Sem isso a resposta é `422` com\n`empresa_nao_habilitada`.\n\nExige o escopo `consultas` habilitado no painel.\n\n## Modo simulado em homologação\n\nEsta consulta **não tem provedor contratado** por trás: em homologação a resposta é\ngerada pela FleetPay, é determinística e **não tem efeito regulatório** — o dado não vem\nda ANTT e não reflete a frota real do transportador. Cada item de `frota` carrega\n`verificacao: \"simulada\"`, marcando a natureza da verificação por placa — e o campo é\nopcional por natureza: item **sem** `verificacao` é verificação real.\n\nO contrato de request e response já é o definitivo: integre agora. Quando o provedor real\nentrar, o comportamento deixa de ser simulado **sem mudança de contrato**.\n\n\n### O par `documento` + `rntrc` precisa conferir\n\nOs dois parâmetros são uma pergunta só: *\"a situação DESTE registro DESTE\ntransportador\"*. Um RNTRC que não seja o daquele CPF/CNPJ não descreve transportador\nnenhum, e a resposta é **`400` com `rntrc_nao_confere`** — nunca um `200` sobre o\ncadastro que por acaso foi encontrado.\n\nÉ `400` e não `503` porque a consulta rodou e concluiu: não houve indisponibilidade. E\nnão é `404` porque o que está errado é a **combinação** dos dois parâmetros, não um\nrecurso ausente no endereço.\n\nAs sentinelas abaixo são **isentas** dessa checagem — elas existem justamente para não\nserem o RNTRC de ninguém.\n\nRepare que a recusa do par é **diferente** de `pertence: null`. `null` é uma placa\ninconclusiva dentro de uma frota que existe; o `400` é a ausência de transportador\nsobre o qual responder — por isso ele não vem por placa, e sim no lugar da resposta\ninteira.\n\n### Sentinelas de teste\n\nEm modo simulado, estas placas respondem sempre a mesma coisa — use-as para exercitar o\ncaminho de erro da sua integração:\n\n| Placa | Resposta |\n|---|---|\n| `ZZZ0X00` | Placa fora da frota do transportador — `pertence: false` |\n| `ZZZ9X99` | Situação inconclusiva na ANTT — `pertence: null` |\n| qualquer outra placa válida | Resposta de sucesso |\n",
"parameters": [
{
"name": "documento",
"in": "query",
"required": true,
"schema": {
"type": "string",
"pattern": "^([0-9]{11}|[0-9]{14})$"
},
"description": "CPF (11 dígitos) ou CNPJ (14 dígitos) do transportador consultado, somente dígitos."
},
{
"name": "rntrc",
"in": "query",
"required": true,
"schema": {
"type": "string",
"pattern": "^[0-9]{8,9}$"
},
"description": "RNTRC do transportador consultado, com 8 ou 9 dígitos."
},
{
"name": "placas",
"in": "query",
"required": true,
"style": "form",
"explode": true,
"schema": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "string",
"pattern": "^[A-Za-z]{3}[0-9][A-Za-z0-9][0-9]{2}$"
}
},
"description": "Placas a verificar (1 a 20). Envie `placas[]=ABC1D23&placas[]=XYZ4E56`.\n\nEm homologação, `ZZZ0X00` devolve `pertence: false` e `ZZZ9X99` devolve\n`pertence: null`; qualquer outra placa válida devolve sucesso.\n"
}
],
"responses": {
"200": {
"description": "Situação de cada placa na frota do transportador.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"documento": {
"type": "string"
},
"rntrc": {
"type": "string"
},
"frota": {
"type": "array",
"items": {
"type": "object",
"properties": {
"placa": {
"type": "string"
},
"pertence": {
"type": "boolean",
"nullable": true
},
"verificacao": {
"type": "string",
"description": "Natureza da verificação desta placa. Em homologação vem\n`simulada`: a situação não foi apurada na ANTT, foi gerada em\nmodo simulado e não tem efeito regulatório.\n\nO marcador viaja **dentro de cada item**, e não no envelope da\nresposta, para sobreviver a ingestões que guardam só a lista de\nplacas e descartam o envelope.\n\n**Trate o campo como opcional.** Ele só existe enquanto a\nverificação é simulada: item **sem** `verificacao` é verificação\nreal. Um parser que exija o campo quebra na virada para o\nprovedor real — leia por presença, não por obrigatoriedade.\n"
}
}
}
}
}
},
"environment": {
"$ref": "#/components/schemas/Environment"
}
}
}
}
}
},
"400": {
"description": "`rntrc_nao_confere` — o RNTRC informado não é o registro deste CPF/CNPJ, então não\nhá frota sobre a qual responder.\n`validacao` — alguma placa está fora do formato Mercosul, ou falta parâmetro.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Erro"
}
}
}
},
"401": {
"$ref": "#/components/responses/Erro401"
},
"403": {
"$ref": "#/components/responses/Erro403"
},
"422": {
"description": "A empresa autenticada ainda não concluiu o cadastro fiscal (`empresa_nao_habilitada`).",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Erro"
}
}
}
},
"503": {
"description": "A consulta está temporariamente indisponível (`consulta_indisponivel`). Aguarde e tente de novo.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Erro"
}
}
}
}
},
"method": "GET",
"path": "/consultas/frota"
}