DriveB

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

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

  1. Obter Marca: Chame a API de marcas disponíveis para recuperar a lista de fabricantes e localizar o brandId correspondente.

  2. Filtrar Modelo: Utilize o brandId obtido para buscar os modelos compatíveis com o veículo cadastrado e identifique o modelId correto.

  3. Efetuar o Registro: Use o modelId e 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:

  1. Consultar Indicadores / Infográficos (Agregado)

  2. Listar Veículos com Filtros Ativos (paginado)

  3. 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 hasServicePlan retornar false no endpoint /tecrmi-data-availability, você poderá cadastrar os planos de forma manual diretamente no painel administrativo.