Paginação

Nossa API utiliza um sistema de paginação para controlar a quantidade de dados retornados em uma única resposta, facilitando a navegação e o uso eficiente dos recursos.

Solicitação de rotas com Paginação

Ao realizar uma solicitação que suporte paginação, você pode passar o parâmetro page na query string para especificar qual página de resultados deseja obter. Por padrão, cada página contém 50 itens, mas esse valor pode ser diferente de acordo com a rota acessada.

Exemplo de Solicitação:

GET /api/v1/workers?page=1

Resposta de Paginação

A resposta incluirá uma estrutura de dados que fornece informações sobre a paginação, além dos dados solicitados:

{
  "pagination": {
    "total_items": 14242,
    "showing_items": 50,
    "total_pages": 285,
    "current_page": 1,
    "previous_page": 1,
    "next_page": 2
  },
  "data": [
    ...
  ]
}

Descrição dos Campos de Paginação

  • total_items: O número total de itens disponíveis na coleção.

  • showing_items: O número de itens retornados na página atual.

  • total_pages: O número total de páginas disponíveis.

  • current_page: A página atual dos resultados.

  • previous_page: A página anterior (ou a primeira página se a atual for a primeira).

  • next_page: A próxima página (ou a última página se a atual for a última).

Se você solicitar uma página que exceda o número total de páginas disponíveis, a API retornará um erro informando que você atingiu o número máximo de páginas:

{
  "code": "VALIDATION_ERROR",
  "message": "Você já atingiu o número máximo de páginas! Número máximo: 285",
  "status_code": 422,
  "timestamp": "2024-08-06T13:13:22.139Z",
  "path": "/api/v1/error-path",
  "handled": true,
  "errors": []
}

Exemplo de Uso:

Aqui está um exemplo de como a paginação pode ser utilizada em uma requisição com typescript e a biblioteca axios:

import axios from "axios";

const pontoDigitalApi = axios.config({
  baseURL: process.env.PONTO_DIGITAL_API_URL,
  headers: {
    "x-api-key": process.env.PONTO_DIGITAL_API_KEY,
  },
});

pontoDigitalApi
  .get("/v1/workers", {
    params: {
      page: 2, // Informe a página desejada
    },
  })
  .then((response) => {
    console.log(response.data.pagination);
    console.log(response.data.data);
  })
  .catch((error) => {
    console.error(handlePontoDigitalError(error))
  });

Em caso de problemas ou dúvidas entre em contato com o [email protected].

Atualizado