Paginação
Os endpoints de listagem da API Frota162 usam paginação via query params. Você controla a página e o tamanho dos resultados na URL. O formato de resposta muda entre v1 e v2 — veja a seção correspondente à API que você está usando.
API v2 — formato padrão
A partir do módulo Multas Administrativas, a API v2 adota um formato de paginação único, em camelCase, que passa a ser o padrão para todos os novos módulos v2.
Query params
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
currentPage | number | 1 | Número da página (começa em 1) |
pageSize | number | 10 | Registros por página — geralmente com máximo de 100 |
Exemplo de requisição
curl -X GET \
'https://api.frota162.com.br/v2/administrative-fines?currentPage=1&pageSize=20' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC'
Formato de resposta
{
"data": [
{ "id": 1, "carPlate": "ABC1D23" },
{ "id": 2, "carPlate": "DEF5G67" }
],
"page": {
"currentPage": 1,
"pageSize": 20,
"totalItems": 150,
"totalPages": 8,
"hasNext": true
}
}
Campos de paginação (page)
| Campo | Descrição |
|---|---|
currentPage | Página atual |
pageSize | Registros retornados nesta página |
totalItems | Total de registros que atendem ao filtro |
totalPages | Total de páginas disponíveis |
hasNext | true se houver próxima página (currentPage < totalPages) |
Navegar entre páginas
# Página 1
/v2/administrative-fines?currentPage=1&pageSize=20
# Página 2
/v2/administrative-fines?currentPage=2&pageSize=20
Buscar todos os registros
async function buscarTodosV2(endpoint, headers) {
const todos = [];
let pagina = 1;
let totalPaginas = 1;
while (pagina <= totalPaginas) {
const url = `${endpoint}?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;
}
// Exemplo de uso:
// const multas = await buscarTodosV2('https://api.frota162.com.br/v2/administrative-fines', headers);
Endpoints v2 com este formato
GET /v2/administrative-fines— Multas Administrativas
Novos módulos v2 com listagem devem adotar este mesmo formato (
{ data, page }comcurrentPage,pageSize,totalItems,totalPages,hasNext).
API v1 — formato legado
Query params
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
pagination[page] | number | 1 | Número da página (começa em 1) |
pagination[perpage] | number | — | Registros por página |
Exemplo de requisição
curl -X GET \
'https://apidev.v1.frota162.com.br/key/list-cars?pagination[page]=1&pagination[perpage]=10' \
-H 'Authorization: Basic SEU_ACCESS_TOKEN' \
-H 'Key: SUA_ASSINATURA_HMAC' \
-H 'cache-control: no-cache'
Formato de resposta
A maioria dos endpoints de listagem (veículos, condutores, empresas) retorna os dados paginados dentro de uma chave nomeada:
{
"cars": {
"current_page": 1,
"data": [
{ "id": 1, "car_plate": "ABC1234" },
{ "id": 2, "car_plate": "DEF5678" }
],
"total": 42,
"per_page": "10",
"last_page": 5
},
"error": false,
"code": "fbk_200"
}
O nome da chave raiz varia por endpoint:
carspara veículos,driverspara condutores,companiespara empresas.
/key/trips)O endpoint de viagens usa um formato diferente — os dados ficam em message.pagination com campos em camelCase (currentPage, pageSize, totalPages).
Campos de paginação
| Campo | Descrição |
|---|---|
current_page | Página atual |
per_page | Registros por página |
total | Total de registros no banco |
last_page | Número da última página |
data | Array de registros da página atual |
Navegar entre páginas
# Página 1
/key/list-cars?pagination[page]=1&pagination[perpage]=10
# Página 2
/key/list-cars?pagination[page]=2&pagination[perpage]=10
# Página 3
/key/list-cars?pagination[page]=3&pagination[perpage]=10
Buscar todos os registros
Para buscar todos os registros em lotes, itere enquanto current_page < last_page:
async function buscarTodos(endpoint, chave, headers) {
const todos = [];
let pagina = 1;
let ultimaPagina = 1;
while (pagina <= ultimaPagina) {
const url = `${endpoint}?pagination[page]=${pagina}&pagination[perpage]=50`;
const resposta = await fetch(url, { headers });
const dados = await resposta.json();
const paginado = dados[chave]; // ex: dados['cars']
todos.push(...paginado.data);
ultimaPagina = paginado.last_page;
pagina++;
}
return todos;
}
// Exemplo de uso:
// const veiculos = await buscarTodos('/key/list-cars', 'cars', headers);
Endpoints v1 com paginação
GET /key/list-cars— VeículosGET /key/companies— EmpresasGET /key/list-drivers— CondutoresGET /key/trips— Viagens (formato diferente — ver nota acima)