Paginação

Os endpoints de listagem da API retornam coleções paginadas num envelope com três seções: data, links e meta. A paginação é simples: a API informa se existe uma próxima página, mas não calcula o total de registros nem o número da última página.

Formato da resposta paginada

A coleção vem em data e a navegação em links e meta.

Exemplo de resposta paginada 200 OK
{
  "data": [
    {
      "id": "9faea287-2f03-4b26-b234-3d3c1a2bc4e1",
      "name": "Colégio Exemplo",
      "cnpj": "26019466000122"
    },
    // ...
  ],
  "links": {
    "first": "https://lumenerp.app.br/api/v1/partners/schools/all?page=1",
    "last": null,
    "prev": null,
    "next": "https://lumenerp.app.br/api/v1/partners/schools/all?page=2"
  },
  "meta": {
    "current_page": 1,
    "current_page_url": "https://lumenerp.app.br/api/v1/partners/schools/all?page=1",
    "from": 1,
    "path": "https://lumenerp.app.br/api/v1/partners/schools/all",
    "per_page": 25,
    "to": 25
  }
}

Campos do meta

current_page integer

Número da página atual.

current_page_url string

URL desta página.

from integer | null

Posição do primeiro registro desta página (base 1). null quando a página está vazia.

path string

URL do endpoint, sem a query string.

per_page integer

Quantidade máxima de registros por página: 25 na maioria dos endpoints; 50 nas listagens de conselhos de classe, de ocorrências disciplinares e do log de auditoria do Orçamento Público. O valor não é configurável.

to integer | null

Posição do último registro desta página (base 1). null quando a página está vazia.

Campos do links

first string

URL da primeira página.

last null

Sempre null: a paginação simples não calcula a última página.

prev string | null

URL da página anterior. null na primeira página.

next string | null

URL da próxima página. null quando não há mais registros.

Percorrendo todas as páginas

Como não há total, siga links.next até ele vir null. Mantenha os três cabeçalhos de autenticação em cada chamada.

JavaScript
let url = 'https://lumenerp.app.br/api/v1/partners/schools/all';
const schools = [];

while (url) {
    const page = await (await fetch(url, { headers })).json();
    schools.push(...page.data);
    url = page.links.next;
}

Algumas listas pequenas e de apoio (por exemplo, os responsáveis adicionais de um aluno) retornam a coleção inteira em data, sem links nem meta; a página de cada endpoint mostra o formato exato.

Parâmetros de query

page integer

Número da página a ser retornada. Padrão: 1. Aceito por todas as listagens paginadas.

with_photo boolean

Somente nas listagens de alunos e de responsáveis (por cliente ou por escola). Quando true, cada objeto traz o campo photo com a foto em base64 (ou null se não houver foto); com false (ou 0) o campo é omitido, o que deixa a resposta muito menor. Padrão: true.

Endpoint com parâmetro de query

Listar alunos sem fotos GET
curl "https://lumenerp.app.br/api/v1/partners/school/26019466000122/students/all?with_photo=false&page=2" \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"