Aller au contenu
Ledenboek Développeurs

Démarrage rapide

En quatre étapes, de la clé à une intégration qui fonctionne. Comptez dix minutes.

1. Créer une clé

Un administrateur de l'association crée les clés dans Ledenboek sous Paramètres → Clés API → Nouvelle clé. Donnez à la clé un nom qui vous dira plus tard à quoi elle sert et choisissez ses droits. Par défaut tout est en lecture seule ; pour l'étape 4, il vous faut en plus leden:schrijven.

La clé n'est affichée qu'une fois. Placez-la dans une variable d'environnement, pas dans votre code :

shell
export LEDENBOEK_API_KEY="lb_test_..."

Dans une association d'exemple, la clé commence par lb_test_. Aucun e-mail ni aucune demande de paiement n'y est envoyé : vous pouvez tout essayer sans toucher à de vrais membres.

2. Votre premier appel

GET /v2/organization fonctionne avec n'importe quelle clé et renvoie l'association, les modules activés et les droits de votre clé. Une bonne première vérification que tout est en ordre.

curl https://api.ledenboek.nl/v2/organization \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY"

La réponse :

200 OK
{
  "object": "organization",
  "id": 42,
  "name": "Club de tennis Les Lilas",
  "slug": "tc-les-lilas",
  "country": "Belgique",
  "language": "fr",
  "website_url": "https://www.tc-les-lilas.be",
  "modules": {
    "groups": true,
    "committees": true,
    "participants": false,
    "relationships": false,
    "events": true,
    "invoicing": true
  },
  "api_key": {
    "name": "Intégration du site",
    "prefix": "lb_test_8kQz",
    "environment": "test",
    "scopes": [
      "leden:lezen",
      "leden:schrijven"
    ]
  }
}

Un 401 signifie le plus souvent que l'en-tête n'est pas exactement Authorization: Bearer lb_.... Avec 402, l'association n'a pas d'abonnement valide.

3. Parcourir les membres

Avec le droit leden:lezen, vous consultez les membres avec GET /v2/members. Les listes arrivent par pages de 100 enregistrements au plus (25 par défaut). Tant que has_more est vrai, demandez la page suivante en passant next_cursor comme starting_after.

curl "https://api.ledenboek.nl/v2/members?limit=100" \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY"

# Next page: pass next_cursor from the previous response
curl "https://api.ledenboek.nl/v2/members?limit=100&starting_after=1234" \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY"

Une page ressemble à ceci (abrégée ; tous les champs sont dans la référence) :

200 OK
{
  "object": "list",
  "data": [
    {
      "object": "member",
      "id": 1234,
      "membership_number": "L042",
      "first_name": "Anne",
      "last_name": "Dubois",
      "email": "anne@example.com",
      "status": "active",
      "member_since": "2024-03-01",
      "created_at": "2024-03-01T10:12:00+01:00",
      "updated_at": "2026-10-02T08:30:00+02:00"
    }
  ],
  "has_more": true,
  "next_cursor": "1234"
}

4. Créer un membre

Avec leden:schrijven, vous créez un membre avec POST /v2/members. Envoyez un Idempotency-Key : une valeur unique par nouveau membre, par exemple un UUID. Si la connexion est coupée et que vous renvoyez la même requête avec la même clé, vous recevez la première réponse et le membre n'est pas créé deux fois.

curl https://api.ledenboek.nl/v2/members \
  -X POST \
  -H "Authorization: Bearer $LEDENBOEK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6f1c2a3e-8d4b-4c1e-9a7f-2b5d0e9c4a11" \
  -d '{"first_name": "Anna", "last_name": "de Vries", "email": "anna@example.com"}'

Si un champ n'est pas valide, vous recevez 422 avec un détail par champ :

422 Unprocessable Entity
{
  "type": "https://developers.ledenboek.nl/errors/validation_failed",
  "title": "Données invalides",
  "status": 422,
  "detail": "Un ou plusieurs champs ne sont pas correctement remplis ; voir errors.",
  "instance": "/v2/members",
  "errors": [
    {
      "field": "email",
      "code": "invalid",
      "message": "L'e-mail n'est pas valide"
    }
  ]
}

Pour aller plus loin