Pagination

à l'aide du continuation token renvoyé, tu peux le rajouter à la fin de ton appel pour obtenir la suite, ça donne ça a peu près.
organizations/hugobordeauxha-deleted/payments?continuationtoken=20180215135600_1914333


Nos API paginées ne fournissent ni le nombre total d’éléments (totalItems), ni le nombre de pages (totalPages). À la place, elles utilisent un continuation token pour enchaîner les appels page par page.

Ce mécanisme est courant dans les APIs pouvant servir de gros volume de données.

🔁 Continuation Token

Un continuationtoken est un identifiant opaque retourné par une API pour indiquer comment accéder à la prochaine page de résultats.

Exemple de réponse API :

{  
  "items": [ ... ],  
  "continuationToken": "20180215135600_1914333"  
}
  • items : les données de la page actuelle
  • continuationToken : à réutiliser pour obtenir la page suivante

Pour appeler la page suivante, il faudra donc faire appeler le point d'API:

organizations/hugobordeauxha-deleted/payments?continuationtoken=20180215135600_1914333

Fonctionnement

  1. Appeler l’API sans token pour obtenir la première page.
  2. Lire le champ items → stocker ou compter les résultats.
  3. Lire le champ continuationToken :
    • S’il existe : relancer une requête avec ce token.
    • S’il est absent ou nul : la pagination est terminée.

🔢 Comment compter le nombre total d’items

Puisque l’API ne donne pas le total, il faut parcourir toutes les pages et compter les éléments manuellement.

💻 Exemple en Python

import requests

def count_all_items(api_url, headers=None):
    total = 0
    token = None

    while True:
        params = {}
        if token:
            params['continuationToken'] = token

        response = requests.get(api_url, params=params, headers=headers)
        response.raise_for_status()
        data = response.json()

        items = data.get('items', [])
        total += len(items)

        token = data.get('continuationToken')
        if not token:
            break

    return total

🧪 Bonnes pratiques

  • Toujours vérifier si le champ items existe et est une liste.
  • Ne pas stocker ou manipuler les tokens.