Aller au contenu
Ledenboek Développeurs

Concepts

Ce qui vaut pour chaque endpoint. Lisez ceci avant de mettre une intégration en production.

Erreurs

Une erreur a toujours la même forme, application/problem+json selon la RFC 9457 :

403 Forbidden
{
  "type": "https://developers.ledenboek.nl/errors/insufficient_scope",
  "title": "Droits insuffisants",
  "status": 403,
  "detail": "Cette clé n'a pas le droit leden:schrijven. Un administrateur peut créer une clé avec ce droit.",
  "instance": "/v2/members"
}
# -i shows the status line and headers; errors come as application/problem+json
curl -i https://api.ledenboek.nl/v2/members \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY"

Tous les codes d'erreur

Code HTTP Titre
api_key_in_url 400 Clé dans l'URL
invalid_request 400 Requête invalide
invalid_api_key 401 Clé invalide
missing_api_key 401 Clé manquante
subscription_required 402 Abonnement requis
insufficient_scope 403 Droits insuffisants
module_disabled 404 Module désactivé
not_found 404 Introuvable
already_in_group 409 Déjà dans le groupe
already_registered 409 Déjà inscrit
event_full 409 Pas assez de places
event_requires_payment 409 Paiement requis
group_follows_subscription 409 Le groupe suit les abonnements
idempotency_in_progress 409 Requête en cours
invoice_not_sendable 409 Facture impossible à envoyer
membership_already_ended 409 Adhésion déjà terminée
recipient_without_email 409 Pas d'adresse e-mail
registration_closed 409 Inscriptions fermées
idempotency_key_reused 422 Idempotency-Key déjà utilisée
validation_failed 422 Données invalides
rate_limited 429 Trop d'appels
internal_error 500 Erreur interne

Pagination

Une liste renvoie un objet avec data, has_more et next_cursor. Vous parcourez avec deux paramètres :

Les enregistrements arrivent dans l'ordre de leur id. Si des enregistrements sont ajoutés pendant que vous parcourez, vous n'en sautez aucun et n'en voyez aucun deux fois ; avec des numéros de page, ce n'est pas possible. Sur la dernière page, has_more est faux et next_cursor vaut null.

Un exemple se trouve dans le démarrage rapide.

Synchroniser avec updated_since

Tenez votre propre copie au lieu de tout récupérer à chaque fois. Avec updated_since, vous ne recevez que les enregistrements modifiés à partir de ce moment. Le moment est au format ISO 8601, par exemple 2026-10-01T00:00:00Z ; un autre format renvoie invalid_request. Vous pouvez le combiner avec la pagination.

Notez le moment où votre synchronisation commence et utilisez-le comme updated_since la fois suivante. Ainsi, vous ne manquez rien de ce qui a changé pendant la récupération.

curl "https://api.ledenboek.nl/v2/members?updated_since=2026-10-01T00:00:00Z&limit=100" \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY"

Un enregistrement entièrement supprimé ne revient plus avec updated_since. Comparez donc de temps en temps la liste complète avec votre copie.

Idempotence

Un POST accepte l'en-tête Idempotency-Key : une valeur unique de 255 caractères au plus, par exemple un UUID. Si vous renvoyez la même requête avec la même clé, rien n'est créé deux fois.

Les clés sont conservées 24 heures. Enregistrez la clé avec votre propre enregistrement avant d'envoyer la requête ; une nouvelle tentative utilisera alors automatiquement la même.

Limites

Chaque clé peut faire 600 appels par minute, 120 avec une clé de test. La fenêtre est une minute fixe. Chaque réponse indique la marge restante :

En-têteSignification
RateLimit-LimitAppels par minute pour cette clé.
RateLimit-RemainingCe qui reste pour cette minute.
RateLimit-ResetSecondes jusqu'à la minute suivante.
Retry-AfterUniquement avec 429 : combien de secondes attendre.

Au-delà de la limite, vous recevez rate_limited avec le statut 429. Attendez alors le nombre de secondes indiqué par Retry-After.

# The headers show how much room is left in this minute
curl -s -D - -o /dev/null https://api.ledenboek.nl/v2/organization \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY" | grep -i ratelimit

Versions

La version figure dans le chemin : /v2. Les règles :