Pular para o conteúdo principal
Gerenciar grandes conjuntos de dados de forma eficiente é crucial para manter o desempenho e a escalabilidade da API. Nossas APIs empregam um mecanismo robusto de paginação para entregar dados em porções menores e gerenciáveis. Isso melhora os tempos de resposta e o processamento no lado do cliente, particularmente para aplicações que carregam resultados de forma incremental.

Paginação em nossas APIs


Em vez de retornar o conjunto de dados inteiro em uma única resposta, o que pode sobrecarregar recursos, os clientes podem solicitar subconjuntos específicos de dados. Isso melhora os tempos de resposta e permite um tratamento de dados mais suave, particularmente para aplicações que carregam resultados de forma incremental. Suportamos dois parâmetros de consulta para paginação:
  • page (inteiro): Especifica o número da página a ser recuperada. O valor padrão é 1.
    • Valores negativos são inválidos e resultarão em erro.
  • limit (inteiro): Define o número máximo de itens por página. O valor padrão é 10.
Por exemplo, para recuperar a primeira página de organizações com no máximo 10 itens por página:

Resposta de paginação

A resposta de paginação inclui a seguinte estrutura:
  • items: Um array de entidades recuperadas para a página atual. Cada objeto contém informações detalhadas sobre o recurso solicitado, conforme mostrado no exemplo abaixo.
  • page: O número da página atual, começando em 1 (padrão).
  • limit: O número máximo de itens incluídos na resposta, conforme definido na requisição ou na configuração padrão.
Abaixo está um exemplo de resposta para uma requisição paginada:

Tamanho máximo da página

Por padrão, os endpoints da API que suportam paginação aceitam no máximo 100 itens por página (limit=100). Essa restrição ajuda a garantir um desempenho ideal e evita tamanhos excessivos de payload. Se seu caso de uso requer a recuperação de um número maior de itens por requisição, você pode substituir esse limite definindo a variável de ambiente MAX_PAGINATION_LIMIT na configuração da sua implantação (arquivo .env).
Aumentar o limite de paginação pode resultar em tempos de resposta mais lentos, dependendo do volume de dados e das condições da infraestrutura. Certifique-se de testar completamente em ambientes de homologação antes de aplicar a mudança em produção.
Para atualizar essa configuração no Kubernetes:
O Midaz e todos os seus serviços de plugins herdam esse comportamento.

Paginação baseada em cursor


Alguns endpoints utilizam paginação baseada em cursor em vez de números de página. Essa abordagem é mais eficiente para grandes conjuntos de dados e garante resultados consistentes mesmo quando os dados são modificados entre as requisições. Endpoints com paginação por cursor aceitam os seguintes parâmetros de consulta:
  • cursor (string): Um token codificado de uma resposta anterior (next_cursor ou prev_cursor) para navegar para frente ou para trás. Omita este parâmetro para começar do início.
  • limit (inteiro): O número máximo de itens por página. O valor padrão é 10.
  • sort_order (string): A direção utilizada para ordenar os resultados. Valores aceitos: asc (ascendente, padrão) ou desc (descendente).
Ao paginar com um cursor de uma resposta anterior, não é possível alterar o sort_order durante a paginação. Os parâmetros de ordenação devem ser definidos na requisição inicial e permanecer consistentes ao longo da sequência de paginação.
Por exemplo, para recuperar saldos usando paginação por cursor:

Resposta da paginação por cursor

A resposta inclui a seguinte estrutura:
  • items: Um array de entidades para a página atual.
  • next_cursor: Um token codificado para recuperar a próxima página. Se ausente ou vazio, não há mais resultados.
  • prev_cursor: Um token codificado para recuperar a página anterior. Se ausente ou vazio, você está na primeira página.
  • limit: O número máximo de itens incluídos na resposta.
Para navegar para a próxima página, passe o valor de next_cursor como o parâmetro de consulta cursor:
Abaixo está um exemplo de resposta para uma requisição com paginação por cursor:

Quais endpoints usam paginação por cursor?

Os seguintes endpoints utilizam paginação baseada em cursor:
  • Listar TransaçõesGET /v1/organizations/{id}/ledgers/{id}/transactions
  • Listar SaldosGET /v1/organizations/{id}/ledgers/{id}/balances
  • Listar Operações por ContaGET /v1/organizations/{id}/ledgers/{id}/accounts/{id}/operations
  • Listar Tipos de ContaGET /v1/organizations/{id}/ledgers/{id}/account-types
  • Listar Rotas de OperaçãoGET /v1/organizations/{id}/ledgers/{id}/operation-routes
  • Listar Rotas de TransaçãoGET /v1/organizations/{id}/ledgers/{id}/transaction-routes
Os demais endpoints de listagem utilizam a paginação padrão baseada em página descrita acima.