Pular para o conteúdo principal
Módulos v2

Multas administrativas

Multas administrativas são autuações fora do Código de Trânsito Brasileiro (CTB), como por exemplo, excesso de peso de carga. O papel deste módulo é permitir que você consulte essas infrações vinculadas à sua conta e acompanhe seus status de tratamento.

5 min de leituraVale para v2
Autenticação

Este módulo usa a mesma autenticação HMAC-SHA256 da API v1. Requer os headers Authorization e Key. Consulte o guia de autenticação se ainda não configurou.

Módulo obrigatório

O módulo Multas administrativas precisa estar ativo no seu plano. Se não estiver, a API retorna 403. Entre em contato conosco para habilitar.


Listar multas administrativas​

GET/v2/administrative-fines

Retorna as multas em páginas. Todos os filtros são opcionais — sem filtros, retorna todos os registros ativos da conta.

curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines?pageSize=20&currentPage=1' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'

Filtros disponíveis​

ParâmetroTipoPadrãoDescrição
currentPagenumber1Número da página (começa em 1)
pageSizenumber10Itens por página — máximo 100
clientIdnumber—ID do cliente na fines-api. Precisa pertencer à sua conta — se não pertencer, retorna 403
aitstring—Número do AIT para filtro exato
bankSlipstring—Disponibilidade de boleto — valores: all, with, without
isActivebooleantrueFiltra registros ativos (true) ou excluídos (false)
treatmentStatusstring—Status de tratamento do enquadramento — valores: not_treated, treated
framingCodestring—Código do enquadramento para filtro exato
orgCodestring—Código do órgão autuador para filtro exato
framingDateStart / framingDateEndstring—Período pela data do enquadramento (YYYY-MM-DD)
dueDateStart / dueDateEndstring—Período pela data de vencimento (YYYY-MM-DD)
paymentDateStart / paymentDateEndstring—Período pela data de pagamento (YYYY-MM-DD)
createdAtStart / createdAtEndstring—Período pela criação do registro (YYYY-MM-DD)
updatedAtStart / updatedAtEndstring—Período pela última atualização (YYYY-MM-DD)
sortstring—Campo para ordenação — valores: createdAt, updatedAt, ait, framingDate, framingAmount, dueDate, paymentDate
orderstring—Direção da ordenação — asc ou desc
Apenas um período por requisição

Você pode filtrar por no máximo um dos cinco pares de data (framingDate*, dueDate*, paymentDate*, createdAt*, updatedAt*) em cada requisição. Enviar mais de um par retorna 400. Dentro do par usado, a data final deve ser maior ou igual à inicial.


Resposta​

{
"data": [
{
"id": 1,
"accountId": 1,
"clientId": 12345,
"divisionId": 12,
"subDivisionId": null,
"carPlate": "ABC1D23",
"type": "MULTA",
"ait": "AIT123456",
"framingDate": "2024-01-15",
"framingHour": "14:30",
"framingCode": "12345678",
"framingDescription": "Excesso de velocidade",
"framingAddress": "Av. Paulista, 1000",
"framingCityCode": "3550308",
"framingCityName": "São Paulo",
"framingUf": "SP",
"framingPoints": 5,
"framingAmount": 293.47,
"discountAmount": 58.69,
"orgCode": "SP-DER",
"orgName": "DER",
"ownerName": "Empresa Exemplo LTDA",
"ownerDoc": "12345678000199",
"driverIndicateAt": null,
"driverIndicateId": null,
"driverId": null,
"driverName": null,
"driverCnh": null,
"driverRg": null,
"driverRgUf": null,
"driverCpf": null,
"driverAddress": null,
"driverAddressNumber": null,
"driverZipCode": null,
"driverDistrict": null,
"driverCity": null,
"driverUf": null,
"driverIndicated": false,
"statusAppealJustify": null,
"statusRecurso": null,
"dueDate": "2024-02-15",
"paymentDate": null,
"paymentAmount": null,
"treatmentStatus": "not_treated",
"inadequateConduct": null,
"observation": null,
"hasBankSlip": true,
"viewStatus": null,
"createdAt": "2024-01-15",
"updatedAt": "2024-01-16",
"deletedAt": null,
"deletedId": null,
"paid": "unpaid",
"linkView": "https://.../download?filename=AIT123456_20240115&ext=pdf&key=..."
}
],
"page": {
"currentPage": 1,
"pageSize": 20,
"totalItems": 150,
"totalPages": 8,
"hasNext": true
}
}
Formato da resposta

A raiz da resposta é { data, page } — não { pagination, data } como em outros módulos v1.

Campos de paginação (page)​

CampoDescrição
currentPagePágina atual
pageSizeItens retornados nesta página
totalItemsTotal de registros que atendem aos filtros
totalPagesTotal de páginas disponíveis
hasNexttrue se houver próxima página

Este é o formato padrão de paginação da API v2 ({ data, page }). Veja o guia de Paginação para detalhes e como iterar sobre todas as páginas.

Campos dos itens (data[])​

CampoTipoNullableDescrição
idnumberNãoIdentificador único do enquadramento
accountIdnumberNãoID da conta
clientIdnumberNãoID do cliente na fines-api
divisionIdnumberSimID da divisão
subDivisionIdnumberSimID da subdivisão
carPlatestringNãoPlaca do veículo
typestringSimTipo da infração
aitstringSimNúmero do AIT (Auto de Infração de Trânsito)
framingDatestring (YYYY-MM-DD)NãoData do enquadramento
framingHourstringSimHora do enquadramento
framingCodestringNãoCódigo do enquadramento da infração
framingDescriptionstringSimDescrição do enquadramento
framingAddressstringSimEndereço do enquadramento
framingCityCodestringSimCódigo IBGE do município
framingCityNamestringSimNome do município
framingUfstringSimUF do enquadramento
framingPointsnumberSimPontos do enquadramento
framingAmountnumberNãoValor da multa (R$)
discountAmountnumberSimValor de desconto (R$)
orgCodestringNãoCódigo do órgão autuador
orgNamestringNãoNome do órgão autuador
ownerNamestringSimNome do proprietário do veículo
ownerDocstringSimDocumento do proprietário
driverIndicateAtstring (YYYY-MM-DD)SimData da indicação do condutor
driverIndicateIdnumberSimID da indicação do condutor
driverIdnumberSimID do condutor
driverNamestringSimNome do condutor
driverCnhstringSimCNH do condutor
driverRgstringSimRG do condutor
driverRgUfstringSimUF do RG do condutor
driverCpfstringSimCPF do condutor
driverAddressstringSimEndereço do condutor
driverAddressNumberstringSimNúmero do endereço do condutor
driverZipCodestringSimCEP do condutor
driverDistrictstringSimBairro do condutor
driverCitystringSimCidade do condutor
driverUfstringSimUF do condutor
driverIndicatedbooleanNãoIndica se o condutor foi indicado
statusAppealJustifystringSimJustificativa do recurso
statusRecursoNR | RE | AR | NESimStatus do recurso
dueDatestring (YYYY-MM-DD)SimData de vencimento
paymentDatestring (YYYY-MM-DD)SimData de pagamento
paymentAmountnumberSimValor pago (R$)
treatmentStatusnot_treated | treatedSim*Status de tratamento do enquadramento
inadequateConductnumberSimConduta inadequada
observationstringSimObservação sobre a multa
hasBankSlipbooleanNãotrue se há boleto disponível para pagamento
viewStatusstringSimStatus de visualização
createdAtstring (YYYY-MM-DD)NãoData de criação do registro
updatedAtstring (YYYY-MM-DD)NãoData da última atualização
deletedAtstring (YYYY-MM-DD)SimData de exclusão
deletedIdnumberSimID do usuário que excluiu
paidpaid | unpaidNãoStatus de pagamento da multa
linkViewstring | nullSimLink do PDF da vista (documento oficial da autuação ANTT). null quando a vista não estiver disponível

* treatmentStatus fica ausente da resposta se o valor vindo da fonte não puder ser reconhecido.

Datas no formato curto

Todos os campos de data (framingDate, dueDate, paymentDate, createdAt, updatedAt, deletedAt, driverIndicateAt) são retornados como YYYY-MM-DD, sem hora.

Vista da multa (linkView)

O campo linkView traz o link do PDF da vista — o documento oficial da autuação emitido pela ANTT — para cada item da listagem, no mesmo formato da consulta por ID. Quando a vista ainda não estiver disponível, o valor é null.

  • A vista é atualizada por uma captura periódica: pode levar até 7 dias para o linkView aparecer ou ser atualizado após a autuação.
  • Em dossiês com vários AITs (cerca de 7% das vistas), o PDF pode conter processos de outras multas além da consultada naquele item. Confira o AIT dentro do documento antes de usá-lo como comprovante exclusivo daquele enquadramento.

Erros​

Todos os erros retornam o formato RFC 7807 Problem Details:

{
"type": "urn:frota162-api-v2:error:{tipo}",
"title": "Título do erro",
"status": 403,
"detail": "Descrição específica do problema"
}
StatustypeCausaAção
400validation-errorParâmetro inválido, mais de um par de datas informado, ou data final anterior à inicialRevise os query params
401unauthorizedHeader Authorization ou Key ausente ou inválidoRevise as credenciais — consulte o guia de autenticação
403forbiddenMódulo não ativo no plano, organização sem conta configurada, ou clientId informado não pertence à sua contaConfirme o módulo habilitado e que o clientId é seu; se persistir, entre em contato com o suporte
500internal-server-errorErro interno ao processar a consultaAguarde alguns instantes e tente novamente; use retry com backoff

Exemplo — mais de um período de data (400)​

{
"type": "urn:frota162-api-v2:error:validation-error",
"title": "Validation Error",
"status": 400,
"detail": "Apenas um par de datas pode ser informado por requisição. Recebido: framingDate, dueDate"
}

Exemplo — clientId fora da conta (403)​

{
"type": "urn:frota162-api-v2:error:forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Client ID does not belong to the partner account"
}

Exemplos de uso​

Listar multas de um cliente específico​

curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines?clientId=12345&pageSize=50' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'

Buscar multas por período de enquadramento​

curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines?framingDateStart=2024-01-01&framingDateEnd=2024-01-31' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'

Buscar multas com vencimento em um período​

curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines?dueDateStart=2024-04-01&dueDateEnd=2024-04-30&pageSize=100' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'

Filtrar por status de tratamento e boleto​

curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines?treatmentStatus=not_treated&bankSlip=with' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'

Percorrer todas as páginas​

async function buscarTodasMultas(headers) {
const todos = [];
let pagina = 1;
let totalPaginas = 1;

while (pagina <= totalPaginas) {
const url = `https://api.frota162.com.br/v2/administrative-fines?currentPage=${pagina}&pageSize=100`;
const resposta = await fetch(url, { headers });
const dados = await resposta.json();

todos.push(...dados.data);
totalPaginas = dados.page.totalPages;
pagina++;
}

return todos;
}

Consultar multa administrativa por ID​

GET/v2/administrative-fines/:id

Retorna um único enquadramento administrativo pelo seu identificador.

curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines/42' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'

Resposta​

Os campos retornados são os mesmos da listagem — consulte a tabela de campos acima —, acrescidos do campo abaixo, exclusivo da consulta por ID:

CampoTipoNullableDescrição
linkViewstring | nullSimLink do PDF da vista (documento oficial da autuação ANTT). null quando a vista não estiver disponível
Vista da multa (linkView)

O campo linkView traz o link do PDF da vista — o documento oficial da autuação emitido pela ANTT. Quando a vista ainda não estiver disponível, o valor é null.

  • A vista é atualizada por uma captura periódica: pode levar até 7 dias para o linkView aparecer ou ser atualizado após a autuação.
  • Em alguns processos, o PDF pode conter mais de uma autuação do mesmo dossiê. Confira o AIT dentro do documento.
{
"id": 42,
"accountId": 1,
"clientId": 12345,
"divisionId": null,
"subDivisionId": null,
"carPlate": "ABC1D23",
"type": null,
"ait": null,
"framingDate": "2024-01-15",
"framingHour": null,
"framingCode": "55550",
"framingDescription": null,
"framingAddress": null,
"framingCityCode": null,
"framingCityName": null,
"framingUf": null,
"framingPoints": null,
"framingAmount": 293.47,
"discountAmount": null,
"orgCode": "DER-PR",
"orgName": "DER",
"ownerName": null,
"ownerDoc": null,
"driverIndicateAt": null,
"driverIndicateId": null,
"driverId": null,
"driverName": null,
"driverCnh": null,
"driverRg": null,
"driverRgUf": null,
"driverCpf": null,
"driverAddress": null,
"driverAddressNumber": null,
"driverZipCode": null,
"driverDistrict": null,
"driverCity": null,
"driverUf": null,
"driverIndicated": false,
"statusAppealJustify": null,
"statusRecurso": null,
"dueDate": null,
"paymentDate": null,
"paymentAmount": null,
"treatmentStatus": "not_treated",
"inadequateConduct": null,
"observation": null,
"hasBankSlip": false,
"viewStatus": null,
"createdAt": "2024-01-15",
"updatedAt": "2024-01-16",
"deletedAt": null,
"deletedId": null,
"paid": "unpaid",
"linkView": "https://.../download?filename=AIT123456_20240115&ext=pdf&key=..."
}

Erros​

StatustypeCausaAção
400validation-errorid no path não é um número inteiro positivoCorrija o id — deve ser um número inteiro maior que zero
401unauthorizedHeader Authorization ou Key ausente ou inválidoRevise as credenciais — consulte o guia de autenticação
403forbiddenMódulo não ativo no plano, ou organização sem conta configuradaConfirme o módulo habilitado; se persistir, entre em contato com o suporte
404not-foundEnquadramento não encontrado, ou pertence a outra conta — a API não distingue os dois casosVerifique o id; IDs de outras contas retornam 404 por segurança
502external-api-errorServiço upstream (fines-api) indisponível ou retornou resposta inesperadaAguarde alguns instantes e tente novamente; use retry com backoff
Por que 404 em vez de 403 para IDs de outra conta?

Por razões de segurança, o endpoint retorna 404 tanto para enquadramentos inexistentes quanto para enquadramentos que existem mas pertencem a outra conta. Isso impede que a API confirme a existência de recursos aos quais você não tem acesso.

Comportamentos importantes​

ait pode ser nulo

O campo ait pode ser null quando o AIT ainda não foi lavrado pela fonte — isso não é um erro de integração.

Registros excluídos retornam 200

O endpoint retorna o enquadramento independentemente de estar ativo ou excluído. Verifique o campo deletedAt: se preenchido, o registro foi excluído na data indicada. Use esse campo para detectar exclusões em vez de depender da ausência do registro na listagem.

hasBankSlip: false — o que significa?

Não há boleto disponível para aquele enquadramento no momento da consulta. Quando um boleto estiver disponível, hasBankSlip será true.

linkView: null — o que significa?

A vista (PDF da autuação) ainda não está disponível para aquele enquadramento. Ela é capturada periodicamente e pode levar até 7 dias para aparecer.


Próximos passos​