Concepts

Recherche

Trouvez des inscriptions avec un petit langage de requête, et parcourez les résultats.

Les inscriptions se recherchent avec GET/v1/registrations/search. C’est la seule recherche de la v1 : les événements, les appels à communications et les communications se listent, ils ne se recherchent pas.

Une première recherche

Cette recherche cherche un texte dans les noms, les adresses e-mail et les identifiants des inscriptions d’un événement :

Requête

curl

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

JavaScript

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

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

Python

import requests

res = requests.get(
    "https://api.masterconf.com/v1/registrations/search",
    params={"query": "event:'EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30' AND text~'lovelace'"},
    headers={"Authorization": "Bearer mcf_your_key"},
)
data = res.json()

Le langage de requête

Une requête est une ou plusieurs clauses reliées par AND (en majuscules, avec une espace de chaque côté).

  • champ:'valeur' retient les objets dont le champ est égal à la valeur.
  • champ~'valeur' retient ceux dont le champ contient la valeur, sans distinction de casse. La valeur compte au moins 3 caractères autres que des espaces, au plus 200, et ne peut contenir ni %, ni _, ni \.

Une valeur est toujours entre apostrophes droites. Une apostrophe à l’intérieur d’une valeur s’écrit \' : text~'o\'brien'.

Chaque champ apparaît au plus une fois. OR, les comparaisons et les champs absents de la liste ci-dessous renvoient 400 search_query_invalid, dont le message indique la position du problème.

Champs

event: égal àobligatoire
L’événement dont les inscriptions sont recherchées (son identifiant). Obligatoire.
text~ contientfacultatif
Contient ce texte, sans distinction de casse : porte sur l’identifiant de l’inscription, le prénom, le nom et l’adresse e-mail seulement.
status: égal àfacultatif
Égal à ce statut d’inscription (require_admin_validation, validated, canceled, rejected).
role: égal àfacultatif
Égal à ce rôle de participant (attendee, applicant, reviewer, committee, exhibitor, sponsor, partner, guest).

La clause event est obligatoire : une recherche porte toujours sur un seul événement.

Résultats

Une recherche renvoie un objet search_result :

Réponse
{
  "object": "search_result",
  "url": "/v1/registrations/search",
  "has_more": true,
  "next_page": "eyJjIjoxNzk1NTIxNjAwLCJpIjoiU1VCLThjM2UyYTcxIiwicSI6IjNmOWEifQ",
  "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
    }
  ]
}

Les résultats viennent du plus récent au plus ancien, comme dans les listes.

La page suivante

Envoyez le next_page de la réponse dans page, avec la même query :

Requête

curl

curl -G https://api.masterconf.com/v1/registrations/search \
  -H "Authorization: Bearer mcf_your_key" \
  --data-urlencode "query=event:'EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30' AND text~'lovelace'" \
  --data-urlencode "page=eyJjIjoxNzk1NTIxNjAwLCJpIjoiU1VCLThjM2UyYTcxIiwicSI6IjNmOWEifQ"

JavaScript

const params = new URLSearchParams({
  "query": "event:'EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30' AND text~'lovelace'",
  "page": "eyJjIjoxNzk1NTIxNjAwLCJpIjoiU1VCLThjM2UyYTcxIiwicSI6IjNmOWEifQ",
});

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

Python

import requests

res = requests.get(
    "https://api.masterconf.com/v1/registrations/search",
    params={"query": "event:'EVT-5a1f0c2e-3b7d-4e91-9c2a-1d6e8f4b7a30' AND text~'lovelace'", "page": "eyJjIjoxNzk1NTIxNjAwLCJpIjoiU1VCLThjM2UyYTcxIiwicSI6IjNmOWEifQ"},
    headers={"Authorization": "Bearer mcf_your_key"},
)
data = res.json()

next_page vaut null sur la dernière page. Il est opaque : ne le construisez ni ne l’analysez jamais. Un page envoyé avec une autre query renvoie parameter_invalid.

limit, expand[]=data.event et include[]=total_count fonctionnent comme dans les listes. Voir Pagination et Développer les réponses.

Pourquoi pas d’autre recherche

Une recherche dans les événements ou les communications atteindrait des données que l’API ne renvoie jamais, comme les évaluateurs ou les adresses e-mail des auteurs. Elle ne viendra qu’avec un filtre limité aux champs publics. Voir Données exclues.