Veículos - Monitoramento
A API de Monitoramento de Veículos controla, por veículo, se o sistema pode consultar, atualizar e vincular infrações.
Quando um veículo é criado/importado, abre-se uma janela de decisão de 5 dias. Durante essa janela o usuário pode definir se o veículo será monitorado. Após o pagamento via Pix, o veículo fica monitorado por 30 dias. Se a janela expirar sem definição, o veículo passa a expired e é tratado como não monitorado.
Apenas veículos com status EM CIRCULACAO e dentro da janela de decisão são elegíveis.
Escopo: empresa ou grupo de empresas
Todos os endpoints abaixo existem em dois escopos, com payloads e respostas idênticos:
- Empresa:
/v1/companies/{id}/vehicle-monitoring/... - Grupo de empresas:
/v1/company-groups/{id}/vehicle-monitoring/...
No escopo de grupo, as listas (/, /eligible) agregam os veículos de todas as empresas do grupo, e a seleção (/select) gera uma única cobrança (console-charge) associada ao grupo (company_group), cobrindo veículos de várias empresas. O monitoramento permanece desabilitado no escopo de organização.
Regras de negócio
- A janela de decisão dura 5 dias a partir da criação/importação do veículo.
- Somente veículos
EM CIRCULACAOpodem ser monitorados; os demais aparecem comoineligible. - Veículos não monitorados não têm dados atualizados nem infrações consultadas/atualizadas/vinculadas.
- O monitoramento ativo dura 30 dias a partir da confirmação do pagamento.
- Veículos inelegíveis nunca são enviados para cobrança.
Propriedades
Status de monitoramento
- Name
monitoring_status- Type
- string
- Description
Estado do veículo no monitoramento. Valores possíveis:
Valor Descrição pendingDentro da janela de 5 dias, sem definição. awaiting_paymentSelecionado; aguardando pagamento da cobrança Pix. monitoredMonitorado e ativo (janela de 30 dias). unmonitoredDefinido como não monitorado. expiredJanela de decisão expirou sem definição. ineligibleVeículo não está EM CIRCULACAO.
- Name
decision_window_expires_at- Type
- string | null
- Description
Data/hora (ISO 8601) em que a janela de decisão expira.
- Name
monitoring_started_at- Type
- string | null
- Description
Data/hora (ISO 8601) de início do monitoramento de 30 dias.
- Name
monitoring_expires_at- Type
- string | null
- Description
Data/hora (ISO 8601) de fim do monitoramento de 30 dias.
- Name
billing_status- Type
- string
- Description
Estado da cobrança:
none,pending,paid,expired,failed.
Cobrança (console-charge)
- Name
id- Type
- number
- Description
ID da cobrança.
- Name
status- Type
- string
- Description
pending,paid,expired,canceledoufailed.
- Name
amount_cents- Type
- number
- Description
Valor total em centavos.
- Name
currency- Type
- string
- Description
Moeda (padrão
BRL).
- Name
pix- Type
- string | null
- Description
Código Pix copia e cola (EMV).
- Name
pix_qr_code- Type
- string | null
- Description
QR Code do Pix (quando disponível).
- Name
pix_expires_at- Type
- string | null
- Description
Expiração do Pix (ISO 8601).
- Name
paid_at- Type
- string | null
- Description
Data/hora do pagamento confirmado.
Listar veículos com status de monitoramento
Retorna todos os veículos da empresa com o respectivo status de monitoramento.
Parâmetros de Rota
- Name
id- Type
- number
- Required
- obrigatório
- Description
ID da empresa.
Request
curl -G https://api.habilitar.me/v1/companies/123/vehicle-monitoring \
-H "x-api-key: {api_key}"Response - 200
{
"data": [
{
"id": 100,
"vehicle": { "id": 555, "license_plate": "ABC1D23", "model": "VW Gol", "status": "EM CIRCULACAO" },
"monitoring_status": "monitored",
"decision_window_expires_at": "2026-06-08T00:00:00.000Z",
"monitoring_started_at": "2026-06-03T12:00:00.000Z",
"monitoring_expires_at": "2026-07-03T12:00:00.000Z",
"billing_status": "paid"
}
],
"total": 1
}Listar veículos elegíveis
Retorna os veículos da empresa indicando quais são elegíveis. O campo eligible_ids permite selecionar todos os elegíveis mesmo com paginação na interface.
Request
curl -G https://api.habilitar.me/v1/companies/123/vehicle-monitoring/eligible \
-H "x-api-key: {api_key}"Response - 200
{
"data": [
{
"id": 555,
"license_plate": "ABC1D23",
"model": "VW Gol",
"status": "EM CIRCULACAO",
"eligible": true,
"monitoring_status": "pending",
"violations_count": 3,
"total_amount": 845.6,
"lost_savings": 169.12
}
],
"total": 1,
"eligible_ids": [555]
}Calcular preço da seleção
Calcula o valor da seleção antes da confirmação. Veículos inelegíveis são descartados e retornados em ineligible_ids.
Corpo da Requisição
- Name
vehicle_ids- Type
- array
- Required
- obrigatório
- Description
IDs dos veículos selecionados.
Request
curl -X POST https://api.habilitar.me/v1/companies/123/vehicle-monitoring/price \
-H "x-api-key: {api_key}" \
-H "Content-Type: application/json" \
-d '{"vehicle_ids": [555, 556, 557]}'Response - 200
{
"unit_amount_cents": 990,
"total_amount_cents": 2970,
"currency": "BRL",
"billable_count": 3,
"ineligible_ids": []
}Selecionar veículos e gerar Pix
Marca os veículos elegíveis como awaiting_payment, cria uma cobrança (console-charge) e solicita o Pix ao provedor de pagamento.
Corpo da Requisição
- Name
vehicle_ids- Type
- array
- Required
- obrigatório
- Description
IDs dos veículos a monitorar. Inelegíveis são descartados.
Regras
- Pelo menos um veículo elegível é obrigatório (
422caso contrário). - Veículos que não pertencem à empresa retornam
422.
Request
curl -X POST https://api.habilitar.me/v1/companies/123/vehicle-monitoring/select \
-H "x-api-key: {api_key}" \
-H "Content-Type: application/json" \
-d '{"vehicle_ids": [555, 556, 557]}'Response - 201
{
"data": {
"charge": {
"id": 42,
"status": "pending",
"amount_cents": 2970,
"currency": "BRL",
"pix": "00020126...5204000053039865802BR...6304ABCD",
"pix_qr_code": null,
"pix_expires_at": "2026-06-03T12:15:00.000Z",
"paid_at": null
},
"monitored_count": 3
}
}Response - 422
{
"error": "Unprocessable Entity",
"message": "No eligible vehicles to monitor in the selection"
}Recusar monitoramento
Marca os veículos informados como unmonitored. Aplica-se apenas a veículos com status pending ou awaiting_payment.
Request
curl -X POST https://api.habilitar.me/v1/companies/123/vehicle-monitoring/decline \
-H "x-api-key: {api_key}" \
-H "Content-Type: application/json" \
-d '{"vehicle_ids": [555]}'Response - 200
{ "data": { "declined_count": 1 } }Consultar status da cobrança
Consulta o status atual de uma cobrança Pix. Utilize para acompanhar o pagamento (polling) até o status paid.
Parâmetros de Rota
- Name
id- Type
- number
- Required
- obrigatório
- Description
ID da empresa.
- Name
chargeId- Type
- number
- Required
- obrigatório
- Description
ID da cobrança.
Request
curl -G https://api.habilitar.me/v1/companies/123/vehicle-monitoring/charges/42 \
-H "x-api-key: {api_key}"Response - 200
{
"data": {
"id": 42,
"status": "paid",
"amount_cents": 2970,
"currency": "BRL",
"pix": "00020126...6304ABCD",
"pix_qr_code": null,
"pix_expires_at": "2026-06-03T12:15:00.000Z",
"paid_at": "2026-06-03T12:05:00.000Z"
}
}Autorização
Todos os endpoints exigem o cabeçalho x-api-key com a chave da organização. O acesso é restrito à organização dona da empresa — empresas de outra organização retornam 404.