Centre d’aide Activity Messenger

Formulaires et exportation des répondants

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

Les listes de formulaires et leurs étiquettes utilisent la pagination facultative. Les exports de répondants utilisent toujours la pagination simple décrite ci-dessous.

Les formulaires Activity Messenger permettent de recueillir des renseignements auprès des utilisateurs. Ils peuvent servir de décharges, sondages, formulaires de paiement ou répondre à d’autres besoins. Consultez les formulaires, sondages et décharges pour en savoir plus.

Un élément de liste de formulaires contient les attributs suivants :

{
  "id": 12345,
  "name": "COVID-19 Daily Screening",
  "type": "form",
  "subtype": null,
  "url": "https://activitymessenger.com/p/ABC1234",
  "short_url": "https://am.lol/p/ABC1234",
  "tags": []
}

Vous pouvez filtrer GET /api/v1/organization/{organization}/forms avec les paramètres de requête suivants :

  • type ou types[] : filtre par un ou plusieurs types de formulaires.
  • name : fait correspondre les noms de formulaires qui contiennent le texte fourni.
  • tags[] : renvoie les formulaires qui portent toutes les étiquettes indiquées.

GET /api/v1/organization/{organization}/forms

Récupère tous les formulaires de l’organisation. Vous pouvez filtrer avec une liste tags[] dans la chaîne de requête. Vous pouvez aussi transmettre une liste types[], un seul type ou un nom name. Les éléments correspondant aux étiquettes transmises sont renvoyés.

GET /api/v1/organization/{organization}/form_tags

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

GET /api/v1/organization/{organization}/forms/{form}

Récupère un formulaire précis. Le formulaire contient une liste de questions. Ajoutez include=definition pour obtenir la définition normalisée de l’API, et locale=en ou locale=fr pour localiser les libellés et le texte de paiement renvoyés. Par exemple :

{
    "id": 6460,
    "name": "Newsletter",
    "type": "subscribers",
    "subtype": null,
    "url": "https://activitymessenger.com/p/ABC1234",
    "short_url": "https://am.lol/q/ABC1234",
    "tags": [],
    "questions": [
        {
            "type": "account_owner",
            "slug": "account_owner",
            "label": "Subscribe to our newsletter",
            "required": true,
            "options": {
                "name": "required",
                "name_label": "First and last name",
                "email": "required",
                "mobile": "optional"
            }
        },
        {
            "type": "custom",
            "slug": "custom",
            "label": "What are your interests?",
            "required": false,
            "options": {
                "values": [
                    "Sports activities and training",
                    "Day camps",
                    "Quidditch",
                    "Potions",
                    "Gym"
                ]
            }
        }
    ]
}

include=definition

Lorsque include=definition est présent, la réponse comprend aussi un objet definition avec :

  • version : version actuelle du schéma API.
  • source_locale : langue source du formulaire.
  • locale : langue demandée, par défaut la langue source.
  • available_locales : langues disponibles pour le formulaire.
  • timezone : fuseau horaire de l’organisation.
  • currency : devise de l’organisation, si elle est configurée.
  • updated_at : horodatage de mise à jour du formulaire.
  • form_updated_at : horodatage de mise à jour de l’enregistrement de formulaire sous-jacent.
  • description : texte d’en-tête du formulaire.
  • registration : détails d’état de soumission, y compris closed, manually_closed, start_at, end_at et message.
  • payment : détails de configuration du paiement.
  • blocks : blocs de questions publics dans leur ordre d’affichage.
  • legacy : true lorsque le formulaire utilise encore le schéma hérité.

payment.configured_methods peut inclure online, interac, aft, debit, offline, gift_card et other, selon la configuration du formulaire. L’objet de paiement décrit aussi les acomptes, les versements, les versements AFT, les frais et les identifiants de taxes.

POST /api/v1/organization/{organization}/forms/{form}/submit

Soumet une réponse à un formulaire par programmation au moyen d’un corps JSON. Respectez le schéma des questions renvoyé par GET forms/{form}. Chaque question doit utiliser son slug. Par exemple :

{
    "account_owner": {
        "first_name": "Harry",
        "last_name": "Potter",
        "email": "harry@hogwartsrec.com"
    },
    "custom": [
        "Quidditch",
        "Potions"
    ]
}

Actuellement, seules les soumissions aux formulaires de type subscribers sont prises en charge. Les adresses courriel soumises par l’API sont retirées des listes de désabonnement marketing et non marketing si elles y figurent, ce qui permet de leur envoyer ces types de courriels. Activity Messenger ne crée pas de doublons : les répondants sont fusionnés selon leur adresse courriel.

Lorsque vous transmettez une personne et que l’attribut name est requis, vous pouvez fournir soit name, soit la paire first_name et last_name. Activity Messenger construit les attributs complémentaires au moment du traitement.

GET /api/v1/organization/{organization}/forms/{form}/respondents

Exporte les répondants du formulaire en JSON. Les résultats sont toujours triés de la soumission la plus récente à la plus ancienne. Les lignes utilisent les mêmes colonnes et le même formatage des réponses que la fonction Exporter vers Excel, mais sont renvoyées en JSON paginé plutôt que dans un fichier Excel. Le premier champ de chaque ligne est id, l’identifiant du destinataire répondant. Utilisez id comme clé stable pour synchroniser les répondants.

Ce point de terminaison utilise une pagination simple pour améliorer la rapidité. Il ne calcule ni ne renvoie total, last_page ou last_page_url. Continuez à récupérer les pages jusqu’à ce que next_page_url soit null.

Paramètres de requête

  • page : numéro de la page à récupérer. Valeur par défaut : 1.
  • per_page : nombre de lignes par page. Valeur par défaut : 50; maximum : 250.
  • from, to : plage facultative de dates de soumission. Utilisez YYYY-MM-DD, par exemple 2026-05-01. from est inclusif; to inclut la journée entière.
  • col[], opt[] : filtres facultatifs des colonnes et options de colonnes à exporter. Consultez le point de terminaison des paramètres ci-dessous pour obtenir les valeurs possibles.
  • split_checkbox_questions=true : renvoie un champ pour chaque choix d’une question à cases à cocher.
  • type : filtre facultatif des répondants, par exemple duplicates, exclude_cancelled, include_cancelled ou abandoned.
  • am_class_id, membership_id, event_id : filtres facultatifs des répondants liés à un cours, abonnement ou événement.
  • package_ids[], with_booking : filtres facultatifs de forfaits ou réservations d’un formulaire de paiement.

Remarques sur la réponse

  • data contient les lignes paginées des répondants.
  • columns contient les métadonnées ordonnées des colonnes sous forme de key et label.
  • next_page_url indique l’URL de la page suivante. Sa valeur est null sur la dernière page.
  • total, last_page et last_page_url sont volontairement omis.
GET /api/v1/organization/1234/forms/5678/respondents?per_page=2&from=2026-05-01&to=2026-05-31
{
  "current_page": 1,
  "data": [
    {
      "id": 9912,
      "filled_at": "2026-05-29T14:25:00.000000Z",
      "name": "Hermione Granger",
      "first_name": "Hermione",
      "last_name": "Granger",
      "client_id": 4501,
      "email": "hermione@example.com",
      "Favourite activity": "Potions"
    },
    {
      "id": 9911,
      "filled_at": "2026-05-28T19:10:00.000000Z",
      "name": "Harry Potter",
      "first_name": "Harry",
      "last_name": "Potter",
      "client_id": 4500,
      "email": "harry@example.com",
      "Favourite activity": "Quidditch"
    }
  ],
  "first_page_url": "https://activitymessenger.com/api/v1/organization/1234/forms/5678/respondents?page=1",
  "from": 1,
  "next_page_url": "https://activitymessenger.com/api/v1/organization/1234/forms/5678/respondents?page=2",
  "path": "https://activitymessenger.com/api/v1/organization/1234/forms/5678/respondents",
  "per_page": 2,
  "prev_page_url": null,
  "to": 2,
  "columns": [
    {"key": "id", "label": "id"},
    {"key": "filled_at", "label": "filled_at"},
    {"key": "name", "label": "name"},
    {"key": "first_name", "label": "first_name"},
    {"key": "last_name", "label": "last_name"},
    {"key": "client_id", "label": "client_id"},
    {"key": "email", "label": "email"},
    {"key": "Favourite activity", "label": "Favourite activity"}
  ]
}

GET /api/v1/organization/{organization}/forms/{form}/respondents/parameters

Renvoie les valeurs possibles de certains paramètres acceptés par le point de terminaison d’export des répondants. Utilisez-le pour découvrir les colonnes exportables, les sous-colonnes facultatives et les filtres propres au formulaire.

Valeurs de paramètres renvoyées

  • col : valeurs utilisables dans col[]. Chaque élément contient la valeur de la question, son libellé, son type et les opt_values possibles.
  • opt_values : valeurs utilisables dans l’entrée opt[] correspondant à ce col[]. Transmettez-les sous forme de chaîne de tableau JSON, par exemple opt[]=["name","email","client_id"].
  • package_ids : valeurs utilisables dans package_ids[].
  • am_class_id : valeurs utilisables dans am_class_id.
  • membership_id : valeurs utilisables dans membership_id.
GET /api/v1/organization/1234/forms/5678/respondents/parameters
{
  "col": [
    {
      "value": 1001,
      "label": "Account owner",
      "type": "account_owner",
      "opt_values": [
        {"value": "name", "label": "Name"},
        {"value": "email", "label": "Email"},
        {"value": "mobile", "label": "Mobile"},
        {"value": "client_id", "label": "Client ID"}
      ]
    },
    {
      "value": 1002,
      "label": "Participant",
      "type": "person",
      "opt_values": [
        {"value": "name", "label": "Name"},
        {"value": "date_of_birth", "label": "Date of birth"},
        {"value": "allergies", "label": "Allergies"}
      ]
    },
    {
      "value": 1003,
      "label": "Favourite activity",
      "type": "input",
      "opt_values": []
    }
  ],
  "package_ids": [
    {"value": 201, "label": "Summer camp"},
    {"value": 202, "label": "Drop-in class"}
  ],
  "am_class_id": [
    {"value": 301, "label": "Beginner class"},
    {"value": 302, "label": "Advanced class"}
  ],
  "membership_id": [
    {"value": 401, "label": "Family membership"}
  ]
}