Naar de inhoud
Documentatie
Nederlands
De applicatie openen

Paginering

De drie lijstvormen die de NovaFisko-API teruggeeft, de parameters page en per_page, en de juiste manier om alle pagina's te doorlopen.

Niet alle lijsten zijn gepagineerd. De API geeft drie vormen terug, afhankelijk van de aard van de resource. De referentie vermeldt de vorm van elke route.

Vorm Wanneer Voorbeelden
Eenvoudige array Stamgegevens van beperkte omvang companies, accounts, journals, third-parties, vat-codes, fiscal-years
Paginering per pagina Lijsten die voortdurend groeien entries, documents, document-imports, bank-transactions, coda-files, history, sync/conflicts
Stroom met cursor Opvolging van wijzigingen sync/pull

Eenvoudige arrays

De stamgegevens worden volledig teruggegeven, als een JSON-array op het hoogste niveau. Filter ze met de zoekparameters van de route.

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/third-parties?type=supplier&q=brasserie" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"
[
  {
    "id": 41,
    "type": "supplier",
    "code": "BRASSCOL",
    "name": "Brasserie des Collines SA",
    "vat_number": "BE0999900134",
    "version": 3
  }
]

Paginering per pagina

Parameters

Parameter Standaard Maximum Beschrijving
page 1 Paginanummer, vanaf 1
per_page 50 200 Aantal elementen per pagina

De bankverrichtingen (bank-transactions) vormen een uitzondering: standaard 100 elementen, maximaal 500.

Vorm van het antwoord

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/entries?from=2026-07-01&to=2026-09-30&per_page=2&page=1" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"
{
  "current_page": 1,
  "data": [
    {
      "id": 1842,
      "journal_id": 3,
      "number": 212,
      "entry_date": "2026-09-30T00:00:00.000000Z",
      "label": "Brasserie des Collines SA",
      "reference": "F-2026-0918",
      "status": "posted",
      "journal": {"id": 3, "code": "ACH", "type": "purchase"},
      "third_party": {"id": 41, "name": "Brasserie des Collines SA"},
      "lines": [
        {"id": 5521, "account_id": 118, "debit": "1250.00", "credit": "0.00", "account": {"id": 118, "number": "604000", "label": "Achats de marchandises"}},
        {"id": 5522, "account_id": 77, "debit": "262.50", "credit": "0.00", "account": {"id": 77, "number": "411000", "label": "TVA à récupérer"}},
        {"id": 5523, "account_id": 90, "debit": "0.00", "credit": "1512.50", "account": {"id": 90, "number": "440000", "label": "Fournisseurs"}}
      ]
    }
  ],
  "first_page_url": "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/entries?page=1",
  "from": 1,
  "last_page": 87,
  "last_page_url": "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/entries?page=87",
  "links": [
    {"url": null, "label": "« Précédent", "active": false},
    {"url": "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/entries?page=1", "label": "1", "active": true}
  ],
  "next_page_url": "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/entries?page=2",
  "path": "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/entries",
  "per_page": 2,
  "prev_page_url": null,
  "to": 2,
  "total": 173
}
Veld Beschrijving
data De elementen van de pagina
current_page, last_page Huidige pagina en laatste pagina
per_page Toegepaste paginagrootte, na begrenzing
total Totaal aantal elementen dat aan de filters beantwoordt
from, to Rang van het eerste en het laatste element van de pagina
next_page_url, prev_page_url URL van de volgende of vorige pagina, null als er geen is
Let op

De URL's in next_page_url en links nemen uw filters niet over (from, to, per_page...). Bouw de URL van de volgende pagina zelf op door page te verhogen en uw parameters te behouden.

Varianten

Enkele routes voegen velden toe aan de standaardpaginering of vereenvoudigen de vorm ervan.

Route Bijzonderheid
sync/conflicts Standaardpaginering, plus open: het aantal conflicten dat nog openstaat
trash data, current_page, per_page, last_page, total, plus counts, types, retention_days, can_purge
activity, firms/{firm}/activity data, current_page, per_page en has_more in plaats van total
firms/{firm}/webhooks/{webhook}/deliveries data en meta: {current_page, last_page, per_page, total}

Ga voor het activiteitenlogboek verder zolang has_more de waarde true heeft.

Alle pagina's doorlopen

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.novafisko.com/v1/',
    'headers' => ['Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'), 'Accept' => 'application/json'],
]);

$page = 1;
do {
    $response = json_decode((string) $client->get("companies/{$company}/entries", [
        'query' => ['fiscal_year_id' => 7, 'per_page' => 200, 'page' => $page],
    ])->getBody(), true);

    foreach ($response['data'] as $entry) {
        // Handle one entry
    }
    $page++;
} while ($page <= $response['last_page']);
import os
import requests

session = requests.Session()
session.headers.update({"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}", "Accept": "application/json"})

def all_entries(company, **filters):
    page = 1
    while True:
        payload = session.get(
            f"https://api.novafisko.com/v1/companies/{company}/entries",
            params={**filters, "per_page": 200, "page": page},
            timeout=60,
        ).json()
        yield from payload["data"]
        if page >= payload["last_page"]:
            break
        page += 1

Volgorde en stabiliteit

De gepagineerde lijsten zijn gesorteerd van recent naar oud (entries op boekingsdatum en daarna op id, history op id). Als er tijdens het doorlopen elementen worden aangemaakt, kan een element van de ene pagina naar de volgende verschuiven en twee keer verschijnen. Twee oplossingen:

  • begrens de periode met from en to tot een gesloten interval;
  • ontdubbel aan uw kant op id.
Tip

Bevraag de lijsten niet in een lus als u een volledige, bijgewerkte kopie wilt. Laad ze één keer en volg daarna de wijzigingen met sync/pull.

Stroom met cursor

GET sync/pull kent geen pagina's. U geeft de laatst ontvangen cursor door en de route geeft de wijzigingen terug die sindsdien zijn opgetreden.

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/sync/pull?since=48211&limit=500" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"
{
  "cursor": 48236,
  "has_more": false,
  "full_resync": false,
  "changes": [
    {"resource": "third_parties", "op": "upsert", "id": 41, "version": 4, "data": {"id": 41, "name": "Brasserie des Collines SA"}, "changed_at": "2026-10-05T08:41:02+00:00", "seq": 48236}
  ],
  "server_time": "2026-10-05T08:41:09+00:00"
}

Zolang has_more de waarde true heeft, roept u de route onmiddellijk opnieuw aan met de nieuwe cursor. Het volledige verloop staat in Continu synchroniseren.

Zie ook