Centre d’aide

Cours et calendriers

Consultez l’introduction à l’API pour l’authentification, les conventions, la pagination, les limites de requêtes et les erreurs.

La liste des cours et leurs étiquettes utilisent la pagination facultative. Les événements du calendrier utilisent une plage de dates plutôt que la pagination.

Les cours et événements Activity Messenger permettent de gérer les listes de participants aux camps, cours et activités. Voici un exemple d’objet cours :

{
  "id": 1234,
  "tags": [],
  "name": "Cours de gymnastique",
  "description": "Initiation à la gymnastique.",
  "maximum_attendance": 20,
  "attendance_form_filter": {
    "id": null,
    "check_today": false,
    "check_only_nos": false,
    "limit_selection_to_form_ids": null
  },
  "price": "100.00",
  "user_ids": [],
  "forms": [
    {
      "id": 52262,
      "name": "Session de gymnastique",
      "purchase_rule": null,
      "maximum_attendance": 20,
      "price": null,
      "tags": [],
      "url": "https://activitymessenger.com/p/ABCD123"
    },
    {
      "id": 64415,
      "name": "Gymnastique à la carte",
      "purchase_rule": "multiple",
      "maximum_attendance": 5,
      "price": "10.00",
      "tags": [],
      "url": "https://activitymessenger.com/p/EFGH456"
    }
  ]
}

Le tableau forms contient les formulaires permettant de s’inscrire au cours ou à l’événement. Plusieurs formulaires d’inscription peuvent être proposés. Chacun définit les règles d’inscription au cours. Vous pouvez ainsi prévoir des formulaires distincts pour l’inscription à la session et à la carte, ou leur attribuer des prix différents.

  • null : le participant s’inscrit à toutes les dates du cours.
  • single : le participant peut s’inscrire à une seule date. Utilisez cette valeur pour limiter l’inscription à une séance à la carte.
  • multiple : le participant peut s’inscrire à plusieurs dates. Utilisez cette valeur pour permettre plusieurs séances à la carte.

GET /api/v1/organization/{organization}/classes?tags[]={tag}&tags[]={tag}

Récupère tous les cours vendus par l’organisation. Vous pouvez filtrer avec une liste tags[] dans la chaîne de requête. Tout cours correspondant aux étiquettes transmises est renvoyé.

GET /api/v1/organization/{organization}/classes/{class}

Récupère un cours à partir de son identifiant.

POST /api/v1/organization/{organization}/classes

Crée un cours. Transmettez le corps de requête suivant. L’attribut name est obligatoire. description accepte une valeur null. tags doit être un tableau contenant zéro ou plusieurs étiquettes. Les étiquettes sont sensibles à la casse; celles qui n’existent pas sont créées. user_ids énumère les utilisateurs du personnel pouvant accéder à la liste de présences de ce cours. Le personnel peut être géré depuis l’interface d’administration. L’objet attendance_form_filter configure la vérification qu’un formulaire a été rempli. Son champ id correspond à l’identifiant d’un formulaire renvoyé par le point de terminaison GET Forms. L’instructeur peut choisir dans l’interface le formulaire à vérifier. Utilisez limit_selection_to_form_ids pour limiter ce choix à certains formulaires. Si ce champ est omis, null ou [], tous les formulaires peuvent être sélectionnés.

{
  "name": "Tumbling 101",
  "description": "<p>Learn to tumble.</p>",
  "tags": [
    "Summer",
    "Gymnastics"
  ],
  "user_ids": [
    10210,
    34587],
  "attendance_form_filter": {
    "id": 1234,
    "check_today": false,
    "check_only_nos": false,
    "limit_selection_to_form_ids": [1234, 5678]}
}

PUT /api/v1/organization/{organization}/classes/{class}

Met à jour le cours identifié par {class}. Le corps de requête est identique à celui de la création.

DELETE /api/v1/organization/{organization}/classes/{class}

Archive le cours identifié par {class}. Il n’apparaît plus dans les portails d’administration et du personnel. Un administrateur peut le restaurer depuis le portail d’administration.

GET /api/v1/organization/{organization}/class_tags

Récupère toutes les étiquettes définies et utilisées sur les cours.

Construire un calendrier de cours

GET /api/v1/organization/{organization}/class_events?start={YYYY-MM-DD}&end={YYYY-MM-DD}&tags[]={tag}&tags[]={tag}&category_id={category}

Récupère tous les événements de cours dans une plage de dates. Les paramètres de requête start et end sont obligatoires et inclusifs. Vous pouvez filtrer avec une liste tags[]; tout cours correspondant aux étiquettes transmises est renvoyé. Vous pouvez aussi transmettre category_id. Ces deux filtres sont facultatifs. Ce point de terminaison n’est PAS paginé.

Le point de terminaison GET class_events permet de récupérer tous les événements de cours dans une plage de dates. La liste renvoyée respecte le format objet Event de FullCalendar.

Chaque événement correspond à une occurrence d’un cours. Voici un exemple :

{
  "id": 1234,
  "start": "2021-08-31T19:00:00.000000Z",
  "end": "2021-08-31T20:00:00.000000Z",
  "title": "Tumbling",
  "borderColor": null,
  "extendedProps": {
    "type": "am_event",
    "am_class_id": 4567,
    "description": "<p>Open enrollment</p>",
    "maximum_attendance": 20,
    "number_of_spots": 18,
    "number_of_events": 10,
    "reserved": 2,
    "price": "120.00",
    "tax_info": {
      "display": 120,
      "after_tax": 131.97,
      "before_tax": 120,
      "inclusive_tax": 0,
      "exclusive_tax": 11.97,
      "tax": 11.97,
      "taxes": [
        11.97
      ],
      "names": [
        "TVQ 9.975%"
      ],
      "inclusive_names": [],
      "exclusive_names": [
        "TVQ 9.975%"
      ]
    },
    "tags": [
      "Summer",
      "Gymnastics"
    ],
    "forms": [
      {
        "id": 7890,
        "name": "Class payment form",
        "purchase_rule": "single",
        "maximum_attendance": 10,
        "number_of_spots": "8",
        "price": null,
        "tags": [],
        "url": "https://activitymessenger.com/p/BCND123",
        "iframe_url": "https://activitymessenger.com/p/i/BCND123"
      }
    ]
  }
}

Le cours possède un price et un number of spots par défaut. Les formulaires de paiement utilisés pour le vendre peuvent toutefois les remplacer. Le tableau forms contient ces formulaires. Prévoyez un bouton par formulaire. Utilisez les paramètres price et number of spots du formulaire pour l’affichage sur votre site Web; s’ils valent null, utilisez les valeurs du cours.

Vous pouvez vendre un cours à la session ou à la carte. Cette règle se configure dans la question Cours/Événement du formulaire de paiement. Les valeurs possibles sont null pour la session, single pour une seule séance à la carte à la fois, et multiple pour permettre l’inscription à plusieurs séances à la carte. Le paramètre price définit le prix de vente pour la règle purchase_rule. Par exemple, pour vendre une session à 100 $, définissez price à 100 et purchase_rule à null. Pour une séance à la carte à 20 $, définissez purchase_rule à single ou multiple, et price à 20.

Les cours peuvent être regroupés par catégorie. Utilisez GET class_categories pour en récupérer la liste. Ils peuvent aussi être classés par étiquettes; utilisez GET class_tags pour obtenir celles-ci. Les points de terminaison qui récupèrent les cours et leurs événements peuvent être filtrés par liste d’étiquettes ou par catégorie.

Remarque : le filtre tags[] utilise un opérateur OU. Si vous avez besoin d’un opérateur ET, vous devez traiter vous-même le résultat.