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.
https://api.wajub.com/paymentsParamètres
per_pageintegerfacultatifdéfaut : 25422. Les listes de taxes sont à 50 par défaut.pageintegerfacultatifdéfaut : 1cursorstringfacultatifpage est ignoré.Les filtres dépendent de la ressource, ils ne sont pas globaux. Sur GET /payments :
statusstringfacultatifpending, processing, succeeded, expired, partial, failed, cancelled, refunded, partially_refunded.date_fromdatefacultatifcreated_at, au format YYYY-MM-DD.date_todatefacultatifcreated_at. Ne doit pas précéder date_from.amount_minnumberfacultatifamount_maxnumberfacultatifamount_min.searchstringfacultatifPagination 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 :
https://api.wajub.com/payments?per_page=2&status=succeededcurl "https://api.wajub.com/payments?per_page=2&status=succeeded" \
-H "Authorization: $WAJUB_API_KEY"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 :
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.
| Endpoint | Offset | Curseur | Clé de la liste |
|---|---|---|---|
GET /payments | Oui | Oui | items |
GET /transfers | Oui | Oui | items |
GET /refunds | Oui | Oui | items |
GET /customers | Oui | Oui | items |
GET /beneficiaries | Oui | Oui | items |
GET /invoices | Oui | Oui | items |
GET /links | Oui | Oui | items |
GET /accounts | Oui | Oui | items |
GET /disputes | Oui | Oui | items |
GET /webhooks | Oui | Oui | items |
GET /events | Oui | Non | events |
GET /tax/codes, /tax/jurisdictions | Oui | Non | voir Taxes |
Events fait exception
GET /events renvoie ses lignes sous events, pas items, et ignore cursor. Un client qui
lit items sur chaque liste y verra en silence une page vide.
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.