Aller au contenu
Chargement des API keys…

Pagination

Pagination par offset avec per_page et page, ou par curseur pour les gros exports.

Chaque endpoint de liste renvoie un tableau items et un objet meta. Deux modes partagent le même endpoint : la pagination par offset par défaut, la pagination par curseur dès que vous envoyez un cursor. La forme de meta vous indique lequel vous avez obtenu.

GEThttps://api.wajub.com/payments

Paramètres

per_pageintegerfacultatifdéfaut : 25
Éléments par page, de 1 à 100. Toute valeur hors de cet intervalle renvoie un 422. Les listes de taxes sont à 50 par défaut.
pageintegerfacultatifdéfaut : 1
Numéro de page, pour la pagination par offset.
cursorstringfacultatif
Un curseur opaque issu d'une réponse précédente. L'envoyer fait passer l'endpoint en mode curseur et page est ignoré.

Les filtres dépendent de la ressource, ils ne sont pas globaux. Sur GET /payments :

statusstringfacultatif
L'une des valeurs pending, processing, succeeded, expired, partial, failed, cancelled, refunded, partially_refunded.
date_fromdatefacultatif
Borne inférieure sur created_at, au format YYYY-MM-DD.
date_todatefacultatif
Borne supérieure sur created_at. Ne doit pas précéder date_from.
amount_minnumberfacultatif
Montant minimum, dans l'unité principale.
amount_maxnumberfacultatif
Montant maximum. Ne doit pas être inférieur à amount_min.
searchstringfacultatif
Texte libre sur la référence, la description et les informations du client.

Pagination par offset

Le mode par défaut. Demandez un numéro de page, vous recevez un meta qui indique combien il y en a au total :

GEThttps://api.wajub.com/payments?per_page=2&status=succeeded
curl "https://api.wajub.com/payments?per_page=2&status=succeeded" \
-H "Authorization: $WAJUB_API_KEY"
Réponse · 200 OK
{
"code": 200,
"status": "OK",
"message": "Payments retrieved",
"items": [
{
"id": "trx_01JXXXXXXXXXXXXX",
"reference": "trx.PVrU8x2kQ1",
"status": "succeeded",
"amount": 5000,
"currency": "XAF"
},
{
"id": "trx_01JYYYYYYYYYYYYY",
"reference": "trx.Kd9mB3nT7z",
"status": "succeeded",
"amount": 12000,
"currency": "XAF"
}
],
"meta": {
"current_page": 1,
"last_page": 69,
"per_page": 2,
"total": 137
}
}

Bouclez jusqu'à ce que current_page atteigne last_page. Utilisez la plus grande taille de page possible, 100, pour qu'un historique de 137 lignes tienne en deux requêtes au lieu de six :

async function allPayments(filters = {}) {
const all = [];
let page = 1;

while (true) {
  const params = new URLSearchParams({ ...filters, per_page: '100', page: String(page) });
  const res = await fetch(`https://api.wajub.com/payments?${params}`, {
    headers: { Authorization: process.env.WAJUB_API_KEY },
  });
  const { items, meta } = await res.json();

  all.push(...items);

  if (page >= meta.last_page) break;
  page += 1;
}

return all;
}

Pagination par curseur

La pagination par offset recompte toute la table à chaque page, et les lignes insérées pendant votre parcours décalent la fenêtre. Les curseurs règlent ces deux problèmes : passez cursor et chaque page est ancrée sur la dernière ligne que vous avez vue.

meta change de forme dans ce mode. current_page, last_page et total disparaissent, remplacés par :

Réponse en mode curseur
{
"code": 200,
"status": "OK",
"message": "Payments retrieved",
"items": [
],
"meta": {
"per_page": 25,
"next_cursor": "eyJpZCI6InRyeF8wMUpYWFgi...",
"prev_cursor": null,
"has_more": true
}
}

Renvoyez next_cursor comme cursor et arrêtez-vous quand has_more vaut false :

async function* streamPayments() {
let cursor = null;

do {
  const params = new URLSearchParams({ per_page: '100' });

  if (cursor) params.set('cursor', cursor);

  const res = await fetch(`https://api.wajub.com/payments?${params}`, {
    headers: { Authorization: process.env.WAJUB_API_KEY },
  });
  const { items, meta } = await res.json();

  yield* items;
  cursor = meta.has_more ? meta.next_cursor : null;
} while (cursor);
}

Endpoints et modes pris en charge

Le mode curseur est disponible partout où la liste a un tri stable sur created_at. Trois listes ne proposent que l'offset.

EndpointOffsetCurseurClé de la liste
GET /paymentsOuiOuiitems
GET /transfersOuiOuiitems
GET /refundsOuiOuiitems
GET /customersOuiOuiitems
GET /beneficiariesOuiOuiitems
GET /invoicesOuiOuiitems
GET /linksOuiOuiitems
GET /accountsOuiOuiitems
GET /disputesOuiOuiitems
GET /webhooksOuiOuiitems
GET /eventsOuiNonevents
GET /tax/codes, /tax/jurisdictionsOuiNonvoir Taxes

Préférez les webhooks au polling

Pour réagir à un changement de statut, abonnez-vous aux webhooks au lieu de paginer en boucle. La pagination sert aux exports, au rapprochement et aux écrans d'historique.

Que pensez-vous de ce contenu ?