03. Cadastro de Veículos
Bem-vindo à documentação do Módulo de Veículos. Este módulo é responsável por concentrar, gerenciar e estruturar as informações da frota ativa integrada à plataforma, englobando o cadastro de marcas, modelos de veículos, registros de frota física, dados de telemetria e o ciclo de manutenção preventiva.
Esta documentação está dividida em 4 seções principais:
-
Fundamentos — Entenda as regras de negócio e os conceitos-chave.
-
Fluxo de Trabalho (Workflow) — Compreenda a ordem correta das integrações e o fluxo de dados.
-
Referência de Endpoints — Veja as especificações técnicas de cada rota (Headers, Payloads e Schemas).
-
Erros e Resolução de Problemas — Saiba como tratar as respostas da API e solucionar problemas.
Fundamentos
Antes de iniciar o desenvolvimento de suas integrações, familiarize-se com os principais conceitos de negócio que compõem o ecossistema de Gestão de Veículos.
Conceitos-Chave
-
Marca: Representa o fabricante/montadora do veículo cadastrado na plataforma (ex: Renault, Chevrolet, Volkswagen). É o nó inicial na hierarquia de catalogação de veículos.
-
Modelo: Representa a versão técnica e a motorização comercializável associada a uma marca. O modelo estabelece especificações estáticas, como o ano de início e fim de fabricação, o tipo de veículo (categoria) e se possui suporte nativo a planos de manutenção ou tabelas de preço.
-
Veículo: Representa a unidade física (bem) que compõe a frota operacional de um cliente. Cada veículo está atrelado a um modelo específico, a uma placa de identificação única e armazena os dados de rodagem (odômetro/quilometragem), data de licenciamento, chassi e motoristas ativos.
-
Manutenção Preventiva: O conjunto de planos e cronogramas de revisão baseados em tempo de uso ou quilometragem acumulada. O sistema indica o status de integridade do veículo a partir destes planos.
-
Dados Técnicos (TecRmi): Uma integração especializada que valida se o veículo possui manuais, dados técnicos e cronogramas de serviços oficiais de fábrica disponíveis para carregamento automatizado.
Hierarquia Cadastral de Veículos
Os dados de frota seguem uma estrutura relacional estrita na plataforma. Para que um veículo seja registrado, ele depende da existência de entidades geográficas, do cliente responsável, do bloco operacional e da especificação precisa do modelo de fabricação:
Marca (brandId) →
Modelo (modelId) →
Veículo
Cliente (clientId) →
Bloco Operacional
(blockId) →
Cidade (cityId) →
Veículo
Entidades de Frota na API
| Entidade de Frota | Identificador em API | Descrição |
|---|---|---|
| Marca | brandId |
Código numérico identificador do fabricante do veículo. |
| Modelo | modelId |
Código numérico identificador da especificação técnica e comercial do modelo. |
| Veículo |
vehicleId / id
|
Código numérico que representa o veículo físico no banco de dados. |
| Bloco | blockId |
Identificador da filial ou ponto físico de operação onde o veículo fica baseado. |
| Cidade | cityId |
Identificador geográfico do município de licenciamento ou circulação do veículo. |
Relação Geral entre os Recursos
A árvore de composição abaixo demonstra graficamente como as propriedades internas e externas se associam a um registro de veículo:
Veículo →
Modelo (modelId) →
Marca (brandId)
Veículo →
Cliente (clientId) →
Bloco (blockId) →
Endereço →
Cidade (cityId)
Veículo →
Motoristas Associados
(driversName)
Veículo →
Status de Saúde
(isPreventiveUpToDate, warning,
danger)
Fluxo de Trabalho (Workflow)
Esta seção descreve os caminhos de integração recomendados para garantir que sua aplicação utilize as APIs de frota de forma otimizada e livre de inconsistências cadastrais.
Pré-requisitos de Integração
-
Consumir as credenciais de autenticação válidas (Bearer Token enviado no cabeçalho
Authorization). -
Garantir o provisionamento prévio de Clientes, Blocos e Localizações geográficas (conforme detalhado no Módulo de Clientes).
-
Compreender os mapeamentos de dados estruturados na etapa de Fundamentos.
Fluxo 1: Resolução de Catálogo para Cadastro de Veículo
Para cadastrar um novo veículo físico, você não deve enviar o nome da marca ou do modelo como texto simples. Primeiro, filtre e resolva o identificador correto a partir da base histórica da API:
Consultar Marcas → obter
brandId →
Filtrar Modelos por Marca → obter
modelId → Enviar POST /api/vehicles
-
Obter Marca: Chame a API de marcas disponíveis para recuperar a lista de fabricantes e localizar o
brandIdcorrespondente. -
Filtrar Modelo: Utilize o
brandIdobtido para buscar os modelos compatíveis com o veículo cadastrado e identifique omodelIdcorreto. -
Efetuar o Registro: Use o
modelIde demais dados estruturados (placa, chassi, odômetro, cliente e cidade) para chamar o endpoint de cadastro de veículos.
Fluxo 2: Monitoramento de Saúde da Frota e Manutenção
O status de manutenção preventiva de um veículo é dinâmico e depende da constante atualização do odômetro e do encerramento de ordens de serviço. Siga o fluxo periódico de verificação:
Consumir
GET /api/vehicles/{id}/preventives →
Validar Status
Se warning ou danger:
true → Agendar Manutenção /
Alertar Gestor.
Se false → Operação Normal / Frota
em Dia.
Nota de Integração:
Atualizações do odômetro do veículo
(como quilometragem percorrida enviada por aplicativos ou
telemetria) recalculam de forma assíncrona o indicador
isPreventiveUpToDate. Sempre consuma este endpoint
para emitir notificações preventivas ao motorista e
evitar sinistros ou quebras de garantia.
Fluxo 3: Fluxo de Extração de Indicadores da Frota (Dashboard)
Ao construir painéis visuais para gestores de frotas, execute as chamadas seguindo a ordem de agregação de dados para reduzir a latência e o consumo de banda de rede:
-
Consultar Indicadores / Infográficos (Agregado)
-
Listar Veículos com Filtros Ativos (paginado)
-
Detalhar Perfil do Veículo Selecionado (Individual)
Referência de Endpoints
Marcas e Modelos
Consultar Marcas Disponíveis
Retorna a listagem de marcas e fabricantes cadastrados no banco global de dados da plataforma.
Endpoint: api/brands
Método: GET
Exemplo de Requisição:
GET /api/brands HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Content-Type: application/json
Resposta de Exemplo (200 OK):
[ { "id": 1,
"name": "RENAULT"
}, { "id": 2,
"name": "CHEVROLET"
}]Detalhe dos Campos de Resposta
| Campo | Tipo | Descrição |
|---|---|---|
id |
integer | Identificador numérico interno da marca. |
name |
string | Nome textual de identificação da marca fabricante. |
Consultar Modelos Disponíveis (Filtrado)
Busca a lista de modelos de veículos com suporte a múltiplos filtros de engenharia e especificações técnicas.
Endpoint: api/models/filters
Método: GET
Query Parameters:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
brandId |
integer | Sim | - | ID da Marca para filtrar os modelos associados. |
name |
string | Não | - | Filtro para buscar por iniciais ou parte do nome do modelo. |
motor |
string | Não | - | Tipo de motorização (ex: "1.0", "1.6"). |
version |
string | Não | - | Versão específica do veículo (ex: "SCe 16V"). |
active |
boolean | Não | true | Se deve retornar apenas modelos ativos comercialmente. |
Exemplo de Requisição:
GET /api/models/filters?brandId=1&active=true
HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Content-Type: application/json
Resposta de Exemplo (200 OK):
[ { "id": 222,
"motor": "1.6",
"version": "SCe 16V 120cv H4M",
"initialYear": 2017,
"endYear": 2025,
"brandId": 1,
"brandName": "RENAULT",
"description": "Duster Oroch",
"countryId": 1,
"countryName": "Brasil",
"displayName": "RENAULT Duster Oroch 1.6 SCe 16V",
"haveMaintenancePlan": true,
"havePriceTable": true,
"category": "RIDE"
}]Detalhe dos Campos de Resposta
| Campo | Tipo | Descrição |
|---|---|---|
id |
integer | Identificador único do modelo na plataforma. |
motor |
string | Especificação de cilindrada/motorização. |
version |
string | Descrição da versão de acabamento ou mecânica do veículo. |
initialYear |
integer | Primeiro ano de fabricação do modelo. |
endYear |
integer | Ano final de fabricação do modelo. |
brandId |
integer | ID relacional da marca proprietária. |
brandName |
string | Nome fantasia da marca. |
description |
string | Nome comercial do veículo. |
displayName |
string | String concatenada formatada para exibição em tela. |
haveMaintenancePlan
|
boolean | Flag indicando se há plano de manutenção parametrizado para o modelo. |
category |
string | Categoria funcional do veículo (ex: "RIDE", "UTILITY"). |
Cadastro e Listagem de Veículos
Registrar Novo Veículo
Efetua o cadastro de um veículo físico de frota associando-o a um modelo pré-existente, um cliente proprietário, bloco de operação e dados cadastrais básicos.
Endpoint: api/vehicles
Método: POST
Headers:
Content-Type: application/json
Exemplo de Payload de Envio (Request Body):
{ "modelYear": 2020,
"chassisNumber": "93HXXXXXX123456",
"licensePlate": "EZY-1749",
"initialMileage": 100.0,
"firstMileage": 100.0,
"vtvExpiration": "2026-12-31",
"modelId": 222,
"blockId": 10,
"clientId": 1,
"cityId": 3550308,
"district": "Pinheiros",
"registrationDate": "2025-08-27T06:38:53.083Z",
"brandId": 1,
"telemetryCapable": false,
"documentDate": "2025-08-27",
"kbaNumber": "string",
"driversName": [
"João Silva"
]}Detalhe dos Campos de Entrada (Request Schema)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
modelYear |
integer | Sim | Ano de fabricação/modelo do veículo físico. |
chassisNumber |
string | Sim | Número de chassi do veículo para validações de unicidade. |
licensePlate |
string | Sim | Placa de identificação (padrão antigo ou Mercosul). |
initialMileage |
number | Sim | Quilometragem inicial declarada do veículo no cadastro. |
modelId |
integer | Sim | Identificador relacional do modelo homologado na base. |
blockId |
integer | Sim | ID do bloco físico de operação associado ao veículo. |
clientId |
integer | Sim | ID do cliente corporativo proprietário da frota. |
cityId |
integer | Sim | Identificador numérico relacional da cidade de operação. |
Resposta de Exemplo (201 Created):
{ "id": 10742,
"licensePlate": "EZY-1749",
"registrationDate": "2025-08-27T06:38:53.083Z",
"status": "ACTIVE"
}Listagem Paginada de Veículos
Consulta e filtra os veículos integrados com suporte à paginação de resultados.
Endpoint: api/vehicles/filters
Método: GET
Query Parameters:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
page |
integer | Não | 0 | Número do bloco de dados a ser retornado. |
size |
integer | Não | 20 | Limite de itens contidos na listagem. |
Exemplo de Requisição:
GET /api/vehicles/filters?page=0&size=20
HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Content-Type: application/json
Resposta de Exemplo (200 OK):
{ "content": [
{ "vehicleId": 105,
"licensePlate": "XXX-9999",
"motor": "1.0",
"version": "Flex",
"initialYear": 2012,
"endYear": 2019,
"modelDescription": "Onix",
"modelYear": 2016,
"category": "RIDE",
"city": "São Paulo",
"state": "São Paulo",
"totalFinishedMaintenancePrice": 1111.0,
"totalMaintenance": 5,
"dateOfLastPreventive": "2023-11-07T16:48:36.752+00:00",
"dateOfLastCompletePreventive": "2025-02-11T01:46:26.852+00:00",
"mileage": 30000.0,
"dateMileage": "2026-04-17T22:44:45.000+00:00",
"lastMileageHistoryId": 11111,
"modelId": 222,
"isPreventiveUpToDate": true,
"warning": false,
"danger": true,
"telemetryCapable": false,
"clientId": 1,
"clientName": "HELIX"
} ], "pageable": {
"pageNumber": 0,
"pageSize": 20,
"offset": 0,
"unpaged": false,
"paged": true
}, "last": false,
"totalPages": 1366,
"totalElements": 27317,
"size": 20,
"number": 0,
"first": true,
"numberOfElements": 20,
"empty": false
}Perfil Detalhado do Veículo
Retorna as informações completas de um único registro de veículo utilizando seu ID.
Endpoint: api/vehicles/{id}
Método: GET
Exemplo de Requisição:
GET /api/vehicles/10742 HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Resposta de Exemplo (200 OK):
{ "modelDescription": "Duster Oroch",
"modelMotor": "1.6",
"modelVersion": "SCe 16V 120cv H4M",
"modelInitialYear": "2017",
"modelEndYear": "2025",
"modelBrand": "RENAULT",
"licensePlate": "EZY-1749",
"modelYear": "2020",
"chassisNumber": "XXXXXX",
"clientName": "HELIX",
"documentDate": null,
"blockName": "Agrofito Matriz",
"clientStateName": "São Paulo",
"clientCountryCode": "BR",
"registrationDate": "2022-05-11T14:50:27.191+00:00",
"monthsUntilToday": 49,
"totalOdometer": 164890.0,
"averageOdometer": 3679.0,
"latestOdometerUpdate": "2022-08-31T14:27:57.000+00:00",
"telemetryCapable": false,
"lastRequestDate": null,
"vehiclePicture": null
}Saúde da Frota, Documentos e Parcerias
Infográficos da Frota (Indicadores Consolidados)
Gera agregações estatísticas do estado de manutenção, danos reportados e atualizações cadastrais da frota atrelada a clientes específicos.
Endpoint: api/vehicles/indicators
Método: GET
Query Parameters:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
clientsId |
integer | Sim | ID do cliente corporativo que deseja agregar os dados da frota. |
Exemplo de Requisição:
GET /api/vehicles/indicators?clientsId=3870
HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Resposta de Exemplo (200 OK):
{ "percentageOfVehiclesWithUpToDateMaintenance": 85.5,
"percentageOfVehiclesWithOutdateMileage": 12.3,
"totalOfVehiclesBasedOnFilters": 150,
"immediateMaintenance": 5.0,
"nearMaintenance": 15.0,
"damageReport": 2.0,
"totalOfVehiclesWithOutdateMileage": 18,
"totalImmediateMaintenance": 7,
"totalNearMaintenance": 22,
"totalDamageReport": 3
}Disponibilidade de Dados Técnicos (TecRmi)
Verifica se há catálogos técnicos integrados e tabelas de manutenção oficiais homologadas pela montadora para o veículo correspondente.
Endpoint: api/vehicles/{id}/tecrmi-data-availability
Método: GET
Exemplo de Requisição:
GET /api/vehicles/8514/tecrmi-data-availability
HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Resposta de Exemplo (200 OK):
{ "canReturnData": false,
"hasDataFilled": false,
"hasServicePlan": false
}Documentos do Veículo
Busca os arquivos anexos e documentações oficiais (como CRLV ou apólices de seguro) vinculadas à ficha cadastral do veículo.
Endpoint: api/vehicle-documents
Método: GET
Query Parameters:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
vehicleId |
integer | Sim | ID único do veículo a consultar. |
Exemplo de Requisição:
GET /api/vehicle-documents?vehicleId=17541
HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Resposta de Exemplo (200 OK):
{ "content": [
{ "documentId": 101,
"documentType": "CRLV",
"fileName": "crlv_2025.pdf",
"uploadDate": "2025-01-10T12:00:00.000+00:00"
} ], "pageable": {
"pageNumber": 0,
"pageSize": 30,
"offset": 0,
"unpaged": false,
"paged": true
}, "last": true,
"totalPages": 1,
"totalElements": 1,
"size": 30,
"number": 0,
"first": true,
"numberOfElements": 1,
"empty": false
}Consultar Preventivas do Veículo
Fornece informações detalhadas sobre a situação do cronograma de manutenção preventiva baseada na última medição de odômetro registrada na plataforma.
Endpoint: api/vehicles/{id}/preventives
Método: GET
Query Parameters:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
lastFinished |
boolean | Não | true | Retorna os detalhes da última ordem de preventiva de fato executada. |
Exemplo de Requisição:
GET /api/vehicles/1111/preventives?lastFinished=true
HTTP/1.1
Host: api.developer.platform.com
Authorization: Bearer <TOKEN>
Resposta de Exemplo (200 OK):
{ "id": 1111,
"odometer": 1519,
"lastOdometerUpdateDate": "2023-11-22T11:08:23.000+00:00",
"isOdometerUpToDate": false,
"lastFinishedPreventive": null,
"nextMaintenancePlan": null,
"isPreventiveUpToDate": false,
"telemetryCapable": false,
"warning": false,
"danger": false
}Erros e Resolução de Problemas
Sempre que a sua aplicação interagir com as nossas APIs, verifique os códigos de status HTTP para determinar o sucesso ou a necessidade de correção das requisições de veículos.
Códigos de Status HTTP
| Status HTTP | Causa Provável | Ação Recomendada |
|---|---|---|
| 200 OK ou 201 Created | A transação de leitura ou alteração de frota foi efetuada com sucesso. | Prossiga com o processamento dos dados retornados. |
| 400 Bad Request |
Ausência de parâmetros como
brandId no filtro ou JSON mal formatado no
cadastro de veículos.
|
Valide o payload enviado. Verifique se campos numéricos obrigatórios estão preenchidos. |
| 401 Unauthorized |
Token de acesso ausente no Header
Authorization ou expirado.
|
Renove as credenciais e envie o token de acesso Bearer válido. |
| 404 Not Found | O veículo, marca ou modelo buscado por ID inexistente. | Verifique se o identificador em questão foi cadastrado ou se o endpoint contém o ID correto no Path. |
| 422 Unprocessable Entity | O valor do odômetro enviado é menor do que o último registro consolidado. | Ajuste a quilometragem para garantir consistência lógica e cronológica dos dados de rodagem. |
| 500 Internal Server Error | Falha interna ao calcular métricas de infográficos ou processamento interno da plataforma. | Guarde o identificador do erro e realize uma nova tentativa após alguns minutos. |
Dicas de Resolução de Problemas
-
Consistência de Odômetro: Ao enviar dados de odômetro via integração, certifique-se de que o sistema de origem não está enviando valores zerados ou desatualizados, o que causa erro de consistência lógica 422 Unprocessable Entity caso o histórico do veículo já possua medições superiores.
-
Inconsistência em Alertas de Preventivas (warning ou danger): Se o veículo consta em estado de alerta (
danger: true) mesmo após a passagem por manutenção física, verifique se a ordem de serviço preventiva foi devidamente encerrada e integrada à nossa plataforma para reiniciar o cálculo de prazos de revisão. -
Catálogo TecRmi Indisponível: Nem todos os modelos de veículos possuem compatibilidade de fábrica ou tabelas técnicas mapeadas na base de parceiros terceiros. Se
hasServicePlanretornarfalseno endpoint/tecrmi-data-availability, você poderá cadastrar os planos de forma manual diretamente no painel administrativo.