Paginação

Requisição

Vários endpoints de listagem de entidades possuem paginação, que é controlada através dos seguintes atributos pageNumber e pageSize, enviados no corpo da requisição.

{
  "pageNumber": 1,
  "pageSize": 50
}

Parâmetros

  • pageNumber: número da página que deseja consultar.
  • pageSize: quantidade de registros retornados por página.

O valor máximo permitido para pageSize é 100.

Exemplo

Para consultar a primeira página contendo até 50 registros:

{
  "pageNumber": 1,
  "pageSize": 50
}

Para consultar a segunda página:

{
  "pageNumber": 2,
  "pageSize": 50
}

Importante

Mantenha o mesmo valor de pageSize durante toda a navegação das páginas.

Alterar o pageSize entre requisições pode resultar em registros duplicados ou ausentes durante a iteração.


Resposta

Os endpoints paginados retornam uma estrutura semelhante à seguinte:

{
  "pageNumber": 1,
  "pageSize": 50,
  "totalPages": 5,
  "totalItems": 250,
  "hasMorePages": true,
  "items": [
    {}
  ]
}

Campos retornados

  • pageNumber: página retornada.
  • pageSize: quantidade de registros retornados na página.
  • totalPages: total de páginas disponíveis para a consulta.
  • totalItems: quantidade total de registros encontrados.
  • hasMorePages: indica se há mais páginas a serem consultadas, ou seja, se pageNumber é menor que totalPages;
  • items: array de entidades retornadas, cujo tamanho será menor ou igual a pageSize.

Exemplo de navegação

Supondo o seguinte cenário:

{
  "totalItems": 250,
  "pageSize": 50,
  "totalPages": 5
}
PáginaRegistros
11 a 50
251 a 100
3101 a 150
4151 a 200
5201 a 250

Ao chegar na última página:

{
  "hasMorePages": false
}

Não será necessário realizar novas consultas.


Exemplo em cURL

curl --request POST \
--url https://api.wts.chat/crm/contact/list \
--header 'Authorization: Bearer SEU_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
  "pageNumber": 1,
  "pageSize": 50
}'

Exemplo em JavaScript

const response = await fetch(
  "https://api.wts.chat/crm/contact/list",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer SEU_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      pageNumber: 1,
      pageSize: 50
    })
  }
);

const data = await response.json();

console.log(data);

Exemplo para N8N

Ao utilizar um nó HTTP Request:

Headers

{
  "Authorization": "Bearer SEU_TOKEN"
}

Body

{
  "pageNumber": 1,
  "pageSize": 50
}

Utilize o campo hasMorePages para criar loops automáticos e percorrer todas as páginas.


Boas práticas

  • Utilize sempre um pageSize consistente durante a navegação.
  • Evite utilizar o valor máximo quando não houver necessidade.
  • Utilize hasMorePages para identificar quando interromper a consulta.
  • Para grandes volumes de dados, processe os registros em lotes.
  • Evite consultas excessivas em sequência para não consumir recursos desnecessariamente.

Dúvidas frequentes

Qual o valor máximo de pageSize?

O limite recomendado é de 100 registros por página.

Posso alterar o pageSize durante a navegação?

Não é recomendado. Isso pode gerar inconsistências na paginação.

Como saber se existem mais páginas?

Verifique o campo:

{
  "hasMorePages": true
}

Quando retornar false, não existem mais páginas disponíveis.