Pular para o conteúdo principal
Guia

Paginação

3 min de leituraVale para v1 e v2

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âmetroTipoPadrãoDescrição
currentPagenumber1Número da página (começa em 1)
pageSizenumber10Registros 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)​

CampoDescrição
currentPagePágina atual
pageSizeRegistros retornados nesta página
totalItemsTotal de registros que atendem ao filtro
totalPagesTotal de páginas disponíveis
hasNexttrue se houver próxima página (currentPage < totalPages)
# 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​

Novos módulos v2 com listagem devem adotar este mesmo formato ({ data, page } com currentPage, pageSize, totalItems, totalPages, hasNext).


API v1 — formato legado​

Query params​

ParâmetroTipoPadrãoDescrição
pagination[page]number1Nú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: cars para veículos, drivers para condutores, companies para empresas.

Viagens (/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​

CampoDescrição
current_pagePágina atual
per_pageRegistros por página
totalTotal de registros no banco
last_pageNúmero da última página
dataArray de registros da página atual
# 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ículos
  • GET /key/companies — Empresas
  • GET /key/list-drivers — Condutores
  • GET /key/trips — Viagens (formato diferente — ver nota acima)

Próximos passos​