Démarrer

Démarrer

Créez une clé d’API, faites votre premier appel et listez les inscriptions d’un événement, en cinq minutes environ.

L’API Masterconf donne à vos propres serveurs un accès en lecture seule aux événements, aux inscriptions, aux appels à communications et aux communications de votre organisation. Chaque requête est un GET HTTPS vers https://api.masterconf.com/v1.

Créer une clé d’API

Un administrateur de votre organisation crée les clés dans la console, rubrique « Intégrations ».

  • Droits. Ne cochez que ce que votre application lit : events_read, registrations_read, calls_for_papers_read.
  • Expiration. Toute clé expire. Choisissez une date située au plus à 366 jours.
  • Affichée une seule fois. La clé n’apparaît qu’une fois, juste après sa création. Copiez-la tout de suite dans votre gestionnaire de secrets : personne ne pourra plus l’afficher, pas même un administrateur.

Une clé commence par mcf_. Traitez-la comme un mot de passe.

S’authentifier

Envoyez la clé dans l’en-tête Authorization, exactement sous cette forme :

Authorization: Bearer mcf_your_key

Ne mettez jamais une clé dans une URL, ni dans un navigateur ou une application mobile. L’API est faite pour les serveurs : elle ne répond à aucune requête de navigateur (CORS).

Faire votre premier appel

GET/v1/account ne demande aucun droit particulier. Il indique quelle organisation et quelle clé la requête a utilisées.

Requête

curl

curl -G https://api.masterconf.com/v1/account \
  -H "Authorization: Bearer mcf_your_key"

JavaScript

const res = await fetch("https://api.masterconf.com/v1/account", {
  headers: { Authorization: "Bearer mcf_your_key" },
});
const data = await res.json();

Python

import requests

res = requests.get(
    "https://api.masterconf.com/v1/account",
    headers={"Authorization": "Bearer mcf_your_key"},
)
data = res.json()
Réponse
{
  "id": "ORG-7b2c9e40-1a5d-4c83-9f6e-3d8a0b4c2e71",
  "object": "account",
  "api_key": {
    "id": "APIK-4f8a2c1e-9b3d-4e6a-8c7f-2a1e5d9b0c34",
    "scopes": [
      "calls_for_papers_read",
      "events_read",
      "registrations_read"
    ],
    "expires_at": 1824076800
  }
}

Si vous recevez plutôt 401 api_key_invalid, vérifiez que l’en-tête est exactement celui ci-dessus.

Lister les inscriptions d’un événement

Trouvez d’abord l’id d’un événement avec GET/v1/events :

Requête

curl

curl -G https://api.masterconf.com/v1/events \
  -H "Authorization: Bearer mcf_your_key"

JavaScript

const res = await fetch("https://api.masterconf.com/v1/events", {
  headers: { Authorization: "Bearer mcf_your_key" },
});
const data = await res.json();

Python

import requests

res = requests.get(
    "https://api.masterconf.com/v1/events",
    headers={"Authorization": "Bearer mcf_your_key"},
)
data = res.json()

Listez ensuite ses inscriptions avec GET/v1/registrations. Le paramètre event est obligatoire.

Requête

curl

curl -G https://api.masterconf.com/v1/registrations \
  -H "Authorization: Bearer mcf_your_key" \
  --data-urlencode "event=EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30"

JavaScript

const params = new URLSearchParams({
  "event": "EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30",
});

const res = await fetch(`https://api.masterconf.com/v1/registrations?${params}`, {
  headers: { Authorization: "Bearer mcf_your_key" },
});
const data = await res.json();

Python

import requests

res = requests.get(
    "https://api.masterconf.com/v1/registrations",
    params={"event": "EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30"},
    headers={"Authorization": "Bearer mcf_your_key"},
)
data = res.json()
Réponse
{
  "object": "list",
  "url": "/v1/registrations",
  "has_more": true,
  "data": [
    {
      "id": "SUB-8c3e2a71-0f4b-4d6a-b5e9-27c1d9a4e612",
      "object": "registration",
      "event": "EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30",
      "status": "validated",
      "role": "attendee",
      "first_name": "Ada",
      "last_name": "Lovelace",
      "email": "ada.lovelace@example.com",
      "ticket": {
        "name": "Full pass"
      },
      "checkin": {
        "checked_in": true,
        "last_checked_in_at": 1810119600
      },
      "created": 1795521600,
      "updated": 1810119600
    }
  ]
}

Parcourir toutes les pages

Une liste renvoie une page d’objets, du plus récent au plus ancien, et has_more. Tant que has_more vaut true, demandez la page suivante avec starting_after égal à l’id du dernier objet reçu :

Requête

curl

curl -G https://api.masterconf.com/v1/registrations \
  -H "Authorization: Bearer mcf_your_key" \
  --data-urlencode "event=EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30" \
  --data-urlencode "starting_after=SUB-8c3e2a71-0f4b-4d6a-b5e9-27c1d9a4e612"

JavaScript

const params = new URLSearchParams({
  "event": "EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30",
  "starting_after": "SUB-8c3e2a71-0f4b-4d6a-b5e9-27c1d9a4e612",
});

const res = await fetch(`https://api.masterconf.com/v1/registrations?${params}`, {
  headers: { Authorization: "Bearer mcf_your_key" },
});
const data = await res.json();

Python

import requests

res = requests.get(
    "https://api.masterconf.com/v1/registrations",
    params={"event": "EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30", "starting_after": "SUB-8c3e2a71-0f4b-4d6a-b5e9-27c1d9a4e612"},
    headers={"Authorization": "Bearer mcf_your_key"},
)
data = res.json()

La page Pagination explique le reste : la taille des pages, le retour en arrière et la synchronisation d’une copie.

Pour aller plus loin