Documentation de l’API utilisateur de Loomio
/api/b2 est l’API destinée aux intégrations utilisateur avec Loomio. Elle utilise la clé API d’un compte utilisateur, et chaque action est effectuée au nom de ce compte.
Les opérations sur les groupes dépendent des adhésions et des autorisations de groupe de l’utilisateur auquel appartient la clé API. Le statut d’administrateur de l’instance n’étend pas l’accès de cette clé aux groupes ou aux contenus. Pour administrer l’instance, utilisez l’API serveur.
Utilisez la clé API du compte Loomio qui effectuera les actions. Un compte robot dédié est utile si l’intégration ne doit pas être invitée aux sondages ni recevoir de notifications.
Les utilisateurs connectés trouveront leur clé API et les identifiants de leurs groupes sur la page d’accès à l’API.
Envoyez la clé API dans l’en-tête Authorization: Bearer. Les clés API placées dans les paramètres d’URL sont rejetées, car les URL peuvent être enregistrées par les serveurs mandataires et les journaux d’accès.
Changement du mode d’authentification
La clé API était auparavant acceptée dans le paramètre d’URL api_key. Les requêtes utilisant ?api_key=YOUR_API_KEY ne fonctionnent plus. Utilisez désormais l’en-tête HTTP Authorization :
Authorization: Bearer YOUR_API_KEY
Les exemples utilisent YOUR_API_KEY, l’identifiant de groupe 123 et https://www.loomio.com/. Remplacez-les par votre clé API, l’identifiant de votre groupe et l’URL de votre installation Loomio.
Taille des réponses et enregistrements associés
Les réponses de l’API utilisateur ont un format composé : les enregistrements principaux sont accompagnés d’enregistrements associés, comme les sujets, les groupes, les utilisateurs, les sondages et les réactions. Un client peut ainsi remplir son stockage local avec une seule requête. La réponse peut toutefois contenir plus de données que nécessaire pour une intégration simple.
Ajoutez compact=1 pour omettre les sujets, groupes, groupes parents, adhésions, réactions, étiquettes et traductions associés les plus volumineux. Les enregistrements principaux et les enregistrements associés nécessaires pour comprendre leur contenu restent présents.
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1'
Pour choisir les exclusions, utilisez exclude_types avec des types d’enregistrements au singulier, séparés par des espaces. Par exemple, exclude_types=group reaction omet les groupes et les réactions associés. Les valeurs courantes sont topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome et topic_item. Les exclusions concernent les enregistrements associés, pas la ressource principale demandée à l’endpoint.
Les réponses contenant une collection incluent meta.total lorsque sa taille exacte est définie. Ce total est calculé avant l’application de limit et offset. Les endpoints comme la recherche, qui renvoient volontairement un ensemble limité de résultats, omettent meta.total au lieu de renvoyer null.
Résumé des endpoints
| Méthode | Endpoint | Fonction |
|---|---|---|
GET |
/api/b2/groups |
Lister les groupes de l’utilisateur auquel appartient la clé API |
GET |
/api/b2/groups/:id_or_key_or_handle |
Obtenir un groupe visible |
GET |
/api/b2/reports |
Générer un rapport de participation |
GET |
/api/b2/search |
Rechercher les discussions, commentaires, sondages, votes et conclusions visibles |
POST |
/api/b2/discussions |
Créer une discussion |
GET |
/api/b2/discussions/:id |
Obtenir une discussion |
GET |
/api/b2/discussions |
Lister les discussions d’un groupe |
PATCH |
/api/b2/discussions/:id |
Modifier une discussion |
DELETE |
/api/b2/discussions/:id |
Supprimer une discussion de manière réversible |
GET |
/api/b2/threads |
Lister les fils de discussion et les fils de sondages autonomes visibles |
GET |
/api/b2/threads/:topic_id |
Obtenir un fil de discussion |
GET |
/api/b2/threads/:topic_id/items |
Obtenir les éléments d’un fil dans l’ordre |
GET |
/api/b2/threads/:topic_id/markdown |
Obtenir un fil complet au format Markdown |
POST |
/api/b2/comments |
Créer un commentaire ou une réponse |
PATCH |
/api/b2/comments/:id |
Modifier un commentaire |
DELETE |
/api/b2/comments/:id |
Supprimer un commentaire de manière réversible |
POST |
/api/b2/polls |
Créer un sondage |
GET |
/api/b2/polls/:id |
Obtenir un sondage |
GET |
/api/b2/polls |
Lister les sondages d’un groupe |
PATCH |
/api/b2/polls/:id |
Modifier un sondage |
DELETE |
/api/b2/polls/:id |
Supprimer un sondage de manière réversible |
GET |
/api/b2/memberships |
Lister les adhésions à un groupe |
POST |
/api/b2/memberships |
Ajouter des membres et, éventuellement, retirer les membres absents de la liste |
GET |
/api/b2/chatbots |
Lister les intégrations de chat et les webhooks d’un groupe |
POST |
/api/b2/chatbots |
Créer une intégration de chat ou un webhook |
PATCH |
/api/b2/chatbots/:id |
Mettre à jour une intégration de chat ou un webhook |
DELETE |
/api/b2/chatbots/:id |
Supprimer une intégration de chat ou un webhook |
POST |
/api/b2/chatbots/check |
Envoyer un test de connexion à un webhook |
Groupes
Lister les groupes
Renvoie les groupes dont l’utilisateur auquel appartient la clé API est un membre actif.
GET /api/b2/groups
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups
La réponse contient tous les enregistrements correspondants dans un tableau groups non paginé. Elle inclut les groupes parents et les sous-groupes, même lorsque leur abonnement n’est pas actif. Vérifiez le champ enabled si l’intégration ne doit agir que sur les groupes activés.
Les principaux champs d’un groupe sont :
| Champ | Description |
|---|---|
id |
Identifiant numérique du groupe utilisé par les autres endpoints de l’API utilisateur |
key |
Clé courte et stable utilisée dans les URL Loomio |
handle |
Identifiant lisible du groupe |
name |
Nom du groupe |
full_name |
Nom du groupe avec le contexte de son groupe parent |
parent_id |
Identifiant numérique du groupe parent pour un sous-groupe, sinon null |
enabled |
Indique si le groupe et son abonnement sont actifs |
memberships_count |
Nombre d’adhésions actives et en attente |
accepted_memberships_count |
Nombre d’adhésions acceptées |
pending_memberships_count |
Nombre d’invitations en attente |
admin_memberships_count |
Nombre d’administrateurs du groupe |
delegates_count |
Nombre de délégués |
discussions_count |
Nombre de discussions directement dans le groupe |
polls_count |
Nombre de sondages directement dans le groupe |
subgroups_count |
Nombre de sous-groupes |
La réponse peut aussi inclure d’autres paramètres du groupe, des enregistrements associés au groupe parent et les adhésions de l’utilisateur de l’API. Les clients doivent ignorer les champs qu’ils n’utilisent pas.
Obtenir un groupe
Renvoie un groupe visible par l’utilisateur auquel appartient la clé API.
GET /api/b2/groups/:id_or_key_or_handle
Vous pouvez identifier le groupe par son identifiant numérique, sa clé ou son identifiant lisible.
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/123
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/example-group
La réponse contient le groupe dans le tableau groups, avec les mêmes champs que l’endpoint de liste. Une requête portant sur un groupe inaccessible à l’utilisateur auquel appartient la clé API renvoie une erreur d’autorisation.
Webhooks
L’API utilisateur fonctionne par requêtes : une intégration appelle Loomio lorsqu’elle veut lire ou modifier des données. Un webhook de groupe permet de recevoir les changements. Loomio envoie à votre endpoint les événements sélectionnés dès qu’ils se produisent. L’intégration n’a donc pas besoin d’interroger régulièrement l’API REST.
Les webhooks sont configurés par groupe et nécessitent les droits d’administrateur du groupe. Vous pouvez les gérer dans l’interface Loomio :
- Ouvrez le groupe.
- Ouvrez le menu du groupe et sélectionnez Intégrations de chat.
- Ajoutez l’intégration correspondant au format de données accepté par votre endpoint. Pour un endpoint généraliste, utilisez le format Mattermost/Markdown.
- Saisissez un nom et l’URL de destination.
- Sélectionnez les événements que Loomio doit envoyer automatiquement.
- Enregistrez l’intégration, puis utilisez Tester la connexion pour envoyer un message de test.
Utilisez une destination HTTPS dont l’URL est impossible à deviner. Loomio exige que cette URL mène à une adresse publique et bloque les requêtes vers les adresses de réseaux locaux ou privés.
Les agents et autres intégrations peuvent aussi gérer les webhooks au moyen des endpoints chatbot décrits ci-dessous, avec une authentification Bearer. La ressource s’appelle chatbots pour rester compatible avec les intégrations de chat de Loomio, mais elle représente également les webhooks sortants généraux.
Lister les webhooks
Renvoie les intégrations de chat configurées pour un groupe. L’utilisateur auquel appartient la clé API doit être administrateur de ce groupe. La réponse contient les URL de destination : elle ne doit donc pas être accessible aux membres ordinaires du groupe.
GET /api/b2/chatbots?group_id=123
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123'
La réponse contient un tableau chatbots avec les champs suivants :
| Champ | Description |
|---|---|
id |
Identifiant de l’intégration utilisé pour les mises à jour et la suppression |
group_id |
Groupe dont proviennent les événements |
name |
Nom de l’intégration pour son administration |
kind |
webhook pour un webhook sortant ou matrix pour une intégration Matrix |
webhook_kind |
Format des données envoyées : markdown, slack, discord, microsoft ou webex |
server |
URL de destination |
event_kinds |
Événements envoyés automatiquement |
notification_only |
Indique si les messages contiennent uniquement le titre de la notification |
Créer un webhook
POST /api/b2/chatbots
curl -X POST \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"group_id": 123,
"name": "Planning system",
"kind": "webhook",
"webhook_kind": "markdown",
"server": "https://hooks.example.org/loomio/unguessable-token",
"event_kinds": ["new_discussion", "new_comment", "poll_created", "outcome_created"],
"notification_only": false
}' \
https://www.loomio.com/api/b2/chatbots
Le compte associé à la clé API doit administrer le groupe désigné par group_id. L’URL de destination doit être publique pour que la configuration puisse être enregistrée.
Modifier un webhook
PATCH /api/b2/chatbots/:id
Envoyez les champs à modifier. Modifier group_id ne permet pas de transférer le webhook vers un autre groupe.
curl -X PATCH \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"Planning events","event_kinds":["new_discussion","outcome_created"]}' \
https://www.loomio.com/api/b2/chatbots/456
Tester la destination d’un webhook
Envoyez un message de test compatible avec Markdown à une destination, avant ou après l’enregistrement de sa configuration.
POST /api/b2/chatbots/check
curl -X POST \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"group_id":123,"server":"https://hooks.example.org/loomio/unguessable-token"}' \
https://www.loomio.com/api/b2/chatbots/check
Supprimer un webhook
DELETE /api/b2/chatbots/:id
curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456
La suppression de la configuration arrête les envois futurs. Elle ne supprime aucun contenu du groupe dans Loomio.
Types d’événements
Un webhook peut recevoir les types d’événements suivants :
| Événement | Moment de l’envoi |
|---|---|
new_discussion |
Une discussion est lancée |
discussion_edited |
Une discussion est modifiée |
new_comment |
Un commentaire est créé |
poll_created |
Un sondage est lancé |
poll_edited |
Un sondage est modifié |
poll_closing_soon |
Un sondage approche de sa clôture |
poll_expired |
Un sondage atteint sa date de clôture |
poll_closed_by_user |
Une personne clôture manuellement un sondage |
poll_reopened |
Un sondage est rouvert |
outcome_created |
Une conclusion est publiée |
outcome_updated |
Une conclusion est mise à jour |
outcome_review_due |
La date de révision d’une conclusion est atteinte |
stance_created |
Un vote est exprimé |
stance_updated |
Un vote est modifié |
Le webhook appartient à un groupe et reçoit les événements sélectionnés de ce groupe. Une personne peut aussi sélectionner explicitement l’intégration lors du partage ou de l’envoi de certaines notifications, même si l’événement automatique correspondant n’est pas sélectionné.
Envoi HTTP
Loomio envoie une requête HTTP POST asynchrone à l’URL configurée avec cet en-tête :
Content-Type: application/json; charset=utf-8
Le délai d’expiration de la requête est de cinq secondes. Une réponse 2xx, y compris 204 No Content, est considérée comme une réussite. Les services qui reçoivent les webhooks doivent répondre rapidement, traiter les tâches longues de manière asynchrone et accepter les envois en double ou dans le désordre.
Actuellement, Loomio n’ajoute ni signature de webhook, ni en-tête contenant un secret partagé, ni identifiant d’événement ou d’envoi. Traitez l’URL de destination complète comme un secret : ne la rendez pas publique et ajoutez-y un jeton difficile à deviner si le service destinataire le permet. Si vous avez besoin d’un schéma d’événement stable et exploitable par machine ou d’envois signés, utilisez le webhook pour signaler un changement, puis récupérez les données à jour avec l’API utilisateur authentifiée.
Formats des données envoyées
Les données envoyées par les webhooks sont des messages destinés aux services de chat. Elles ne contiennent pas des enregistrements Loomio complets. Les liens du message indiquent le contenu Loomio concerné. Une intégration peut ensuite utiliser l’API utilisateur si elle a besoin de données structurées à jour.
| Format de l’intégration | Principaux champs JSON |
|---|---|
| Mattermost/Markdown | text, icon_url, username |
| Slack | text |
| Discord | content, limité à environ 1 900 caractères |
| Microsoft Teams | @type, @context, themeColor, text, sections |
| Webex | markdown |
Par exemple, le format Markdown général envoie un corps de cette forme :
{
"text": "Ada started a discussion: [Quarterly planning](https://example.loomio.org/d/example)",
"icon_url": "https://example.loomio.org/path/to/group-logo.png",
"username": "Loomio"
}
Le texte exact du message dépend de l’événement, de la langue du groupe, du réglage qui limite le message au titre de la notification et de la version de Loomio. Les services destinataires doivent utiliser les champs de premier niveau documentés pour le format choisi, sans analyser la formulation des phrases.
Recherche
Recherchez les discussions, commentaires, sondages, votes et conclusions visibles par le compte associé à la clé API. Les résultats incluent le contenu public, même si ce compte n’est pas membre du groupe concerné. La visibilité du contenu privé reste soumise aux autorisations habituelles des sujets.
GET /api/b2/search
Paramètres
| Nom | Description |
|---|---|
query |
Texte recherché. Les correspondances exactes et approximatives sont prises en charge |
group_id |
Limite les résultats à un groupe visible |
org_id |
Limite les résultats à un groupe parent visible et à ses sous-groupes visibles. Utilisez 0 pour les discussions directes |
type |
Limite les résultats à un type : Discussion, Comment, Poll, Stance ou Outcome |
types |
Liste des types de résultats séparés par des virgules |
tag |
Limite les résultats aux sujets portant ce tag |
author_id |
Limite les résultats au contenu d’une personne. Sans query, renvoie son activité récente visible |
order |
Définissez authored_at_desc pour trier le contenu correspondant par date de création |
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discussion'
La réponse contient un tableau search_results. Chaque résultat indique l’enregistrement correspondant et son contexte visible, avec notamment les champs searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at et tags. Les champs sans objet pour un résultat ont la valeur null.
Rapport de participation
Renvoie les mêmes données de participation agrégées que le rapport de participation de Loomio.
GET /api/b2/reports
Paramètres
| Nom | Description |
|---|---|
section |
Section du rapport : base, users ou countries. Utilisez users pour l’activité par personne |
group_scope |
custom ou my. L’ancienne valeur all est traitée comme my, car les clés de l’API utilisateur ne donnent jamais accès à toute l’instance |
group_ids |
Identifiants de groupes séparés par des virgules lorsque group_scope=custom. Les identifiants des groupes dont le compte associé à la clé API n’est pas membre sont ignorés |
start_month |
Premier mois à inclure, au format YYYY-MM. Par défaut, il s’agit du mois d’il y a 12 mois |
end_month |
Dernier mois à inclure, au format YYYY-MM. Par défaut, il s’agit du mois en cours |
interval |
Intervalle pour la section base : day, week, month ou year |
member_type |
Définissez delegate avec section=users pour ne renvoyer que les délégués actuels |
Une personne est déléguée si elle possède un rôle de délégué actif dans au moins un groupe sélectionné. Ses nombres d’activités sont agrégés sur tous les groupes sélectionnés. Les lignes des délégués sont renvoyées même si tous ces nombres sont nuls. Ils couvrent les fils de discussion, les commentaires, les sondages, les votes, les conclusions et les réactions. Ils ne représentent pas des taux de participation aux votes. Les lignes des utilisateurs indiquent aussi les bulletins de vote nominatif envoyés, déposés et non déposés. Les sondages anonymes sont exclus de tous les nombres de votes par personne. all_votes_cast vaut true uniquement si au moins un bulletin a été envoyé et que tous les bulletins envoyés ont été déposés.
L’API applique les mêmes règles de visibilité des groupes que le rapport dans Loomio. Une clé de l’API utilisateur ne peut pas révéler les données d’un groupe auquel le compte associé n’a pas accès.
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/reports?section=users&group_scope=custom&group_ids=123&member_type=delegate&start_month=2026-01&end_month=2026-09'
Le tableau users contient des lignes d’activité complètes :
{
"users": [
{
"id": 456,
"name": "Ada Lovelace",
"country": "NZ",
"delegate": true,
"threads": 2,
"comments": 8,
"polls": 1,
"votes": 5,
"votes_cast": 5,
"votes_issued": 6,
"votes_missed": 1,
"all_votes_cast": false,
"outcomes": 1,
"reactions": 4
}
]
}
Créer une discussion
Créez une discussion avec le compte associé à la clé API.
POST /api/b2/discussions
Paramètres
| Nom | Description |
|---|---|
group_id |
Groupe dans lequel se trouvera le fil de discussion |
title |
Titre du fil de discussion, obligatoire |
description |
Contexte du fil de discussion, facultatif |
description_format |
md ou html, facultatif, md par défaut |
recipient_audience |
group ou null. Avec group, tout le groupe reçoit une notification concernant le nouveau fil de discussion |
recipient_user_ids |
Tableau d’identifiants d’utilisateurs à notifier ou à inviter dans le fil de discussion |
recipient_emails |
Tableau d’adresses e-mail des personnes à inviter dans le fil de discussion |
recipient_message |
Message à inclure dans l’invitation par e-mail |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"example thread", "recipient_emails":["person@example.com"]}' https://www.loomio.com/api/b2/discussions
Afficher une discussion
Récupérez une discussion à l’aide de son identifiant numérique ou de sa clé, qui est une chaîne de caractères.
GET /api/b2/discussions/:id
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123
Lister les discussions
Listez les discussions d’un groupe visibles par le compte associé à la clé API. Si le groupe est public, une personne qui n’en est pas membre peut lister ses discussions publiques. Les discussions privées restent accessibles uniquement aux personnes autorisées à les consulter dans Loomio.
GET /api/b2/discussions
Paramètres
| Nom | Description |
|---|---|
group_id |
Entier obligatoire. Identifiant du groupe dont les discussions seront listées |
status |
Chaîne facultative, open par défaut. Valeurs : open, closed, all |
limit |
Entier facultatif, 50 par défaut. Nombre d’éléments par page |
offset |
Entier facultatif, 0 par défaut. Décalage pour la pagination |
Compatibilité : per et from restent acceptés comme alias de limit et offset.
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123'
Lister les fils de discussion
Listez les fils de discussion et les fils de sondage visibles par le compte associé à la clé API, du plus récemment actif au moins récemment actif. L’identifiant d’un fil est son topic_id.
GET /api/b2/threads
Paramètres
| Nom | Description |
|---|---|
limit |
Entier facultatif, 50 par défaut. Nombre d’éléments par page |
offset |
Entier facultatif, 0 par défaut. Décalage pour la pagination |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'
Lire un fil de discussion
Lisez un fil de discussion, la liste chronologique de ses événements ou son contenu visible complet au format Markdown.
GET /api/b2/threads/:topic_id
GET /api/b2/threads/:topic_id/items
GET /api/b2/threads/:topic_id/markdown
Exemple
GET https://www.loomio.com/api/b2/threads/<topic_id>
GET https://www.loomio.com/api/b2/threads/<topic_id>/items
GET https://www.loomio.com/api/b2/threads/<topic_id>/markdown
Le point de terminaison items renvoie les événements dans l’ordre, notamment les commentaires, sondages, votes et conclusions visibles. Le point de terminaison markdown renvoie tout le contenu visible du fil dans un seul document Markdown. Les motifs des votes ne sont inclus que s’ils sont visibles par le compte associé à la clé API.
Tous les points de terminaison des fils de discussion appliquent les mêmes permissions que l’interface Loomio. La clé API ne donne pas accès à un fil que l’utilisateur ne peut normalement pas ouvrir.
Modifier une discussion
Modifiez une discussion avec le compte associé à la clé API. Les mêmes permissions que dans Loomio s’appliquent : l’utilisateur doit être autorisé à modifier cette discussion.
PATCH /api/b2/discussions/:id
Paramètres
| Nom | Description |
|---|---|
title |
Nouveau titre |
description |
Nouveau contexte |
description_format |
md ou html, facultatif, md par défaut |
recipient_audience |
group ou null. Avec group, tout le groupe reçoit une notification concernant la modification |
recipient_user_ids |
Tableau d’identifiants d’utilisateurs à notifier ou à inviter dans le fil de discussion |
recipient_emails |
Tableau d’adresses e-mail des personnes à inviter dans le fil de discussion |
recipient_message |
Message à inclure dans l’invitation par e-mail |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated thread title", "description":"updated context", "description_format":"md"}' https://www.loomio.com/api/b2/discussions/123
Supprimer une discussion sans effacer son enregistrement
Supprimez une discussion avec le compte associé à la clé API. La discussion est écartée, mais son enregistrement est conservé.
DELETE /api/b2/discussions/:id
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123
Créer un commentaire
Créez un commentaire dans une discussion avec le compte associé à la clé API.
POST /api/b2/comments
Paramètres
| Nom | Description |
|---|---|
discussion_id |
Entier obligatoire. Identifiant de la discussion à commenter |
body |
Contenu du commentaire, obligatoire sauf si une pièce jointe est fournie |
body_format |
md ou html, facultatif, md par défaut |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"discussion_id": 123, "body":"example comment", "body_format":"md"}' https://www.loomio.com/api/b2/comments
Modifier un commentaire
Modifiez un commentaire avec le compte associé à la clé API. Les mêmes permissions que dans Loomio s’appliquent : l’utilisateur doit être autorisé à modifier ce commentaire.
PATCH /api/b2/comments/:id
Paramètres
| Nom | Description |
|---|---|
body |
Nouveau contenu du commentaire |
body_format |
md ou html, facultatif, md par défaut |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"body":"updated comment", "body_format":"md"}' https://www.loomio.com/api/b2/comments/123
Supprimer un commentaire sans effacer son enregistrement
Supprimez un commentaire avec le compte associé à la clé API. Le commentaire est écarté et son contenu masqué, mais son enregistrement est conservé.
DELETE /api/b2/comments/:id
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123
Créer un sondage
Créez un sondage avec le compte utilisateur associé à la clé API.
POST /api/b2/polls
Paramètres
| Nom | Description |
|---|---|
group_id |
Entier, facultatif, valeur par défaut : null. Identifiant du groupe auquel appartient le sondage. Si discussion_id est fourni, group_id est ignoré |
discussion_id |
Entier, facultatif, valeur par défaut : null. Identifiant du fil de discussion auquel ajouter ce sondage |
title |
Chaîne de caractères obligatoire. Titre du sondage |
poll_type |
Chaîne de caractères obligatoire. Valeurs : proposal, poll, count, score, ranked_choice, meeting, dot_vote |
details |
Chaîne de caractères facultative. Texte du sondage |
details_format |
Chaîne de caractères facultative, valeur par défaut : md. Valeurs : md ou html |
options |
Tableau de chaînes de caractères. Si poll_type vaut proposal, les valeurs possibles sont agree, disagree, abstain et block. Si poll_type vaut meeting, fournissez des dates ou des dates et heures au format ISO 8601. Pour les autres types de sondage, toute chaîne de caractères est acceptée |
closing_at |
Chaîne au format ISO 8601 ou valeur nulle, valeur par défaut : nulle. Exemple : 2026-09-01T12:00:00Z. Si la valeur est nulle, le vote est désactivé et le sondage est considéré comme un brouillon |
specified_voters_only |
Booléen facultatif, valeur par défaut : faux. Si la valeur est vraie, seules les personnes désignées peuvent voter. Sinon, toutes les personnes du groupe sont invitées à voter |
hide_results |
Chaîne de caractères facultative, valeur par défaut : off. Valeurs : off, until_vote, until_closed |
shuffle_options |
Booléen, valeur par défaut : faux. Affiche les options aux votants dans un ordre aléatoire |
anonymous |
Booléen facultatif, valeur par défaut : faux. Masque l’identité des votants |
recipient_audience |
group ou valeur nulle, facultatif, valeur par défaut : nulle. Si la valeur est group, tout le groupe reçoit une notification |
notify_on_closing_soon |
Chaîne de caractères facultative, valeur par défaut : nobody. Valeurs : nobody, author, undecided_voters, voters |
recipient_user_ids |
Tableau d’identifiants de personnes à avertir ou à inviter |
recipient_emails |
Tableau d’adresses e-mail de personnes à inviter à voter |
recipient_message |
Message à inclure dans l’invitation envoyée par e-mail |
notify_recipients |
Booléen, valeur par défaut : faux. Si la valeur est fausse, les personnes sont ajoutées sans notification. Si elle est vraie, chaque personne invitée par cette requête reçoit une notification par e-mail |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"example poll", "poll_type": "proposal", "options": ["agree", "disagree"], "closing_at": "2026-09-01T12:00:00Z", "recipient_emails":["person@example.com"]}' https://www.loomio.com/api/b2/polls
Consulter un sondage
Récupérez un sondage à partir de son identifiant numérique ou de sa clé, qui est une chaîne de caractères.
GET /api/b2/polls/:id
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123
Lister les sondages
Listez les sondages d’un groupe visibles pour le compte utilisateur associé à la clé API. Dans un groupe public, une personne qui n’en est pas membre peut lister les sondages publics. Les sondages privés restent réservés aux personnes autorisées à les consulter dans Loomio. La réponse inclut la conclusion actuelle de chaque sondage visible. Vous pouvez donc utiliser status=closed pour lister les propositions ayant fait l’objet d’une décision.
GET /api/b2/polls
Paramètres
| Nom | Description |
|---|---|
group_id |
Entier, obligatoire. Identifiant du groupe dont les sondages seront listés |
status |
Chaîne de caractères, facultative, active par défaut. Valeurs : active, closed, all |
limit |
Entier, facultatif, 50 par défaut. Taille de la page |
offset |
Entier, facultatif, 0 par défaut. Décalage pour la pagination |
Compatibilité : per et from restent acceptés comme alias de limit et offset.
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123'
Modifier un sondage
Modifiez un sondage avec le compte utilisateur associé à la clé API. Les mêmes autorisations que dans Loomio s’appliquent : ce compte doit être autorisé à modifier le sondage.
PATCH /api/b2/polls/:id
Paramètres
| Nom | Description |
|---|---|
title |
Titre mis à jour |
details |
Détails du sondage mis à jour |
details_format |
md ou html, facultatif, valeur par défaut : md |
options |
Noms des options mis à jour. Leur modification peut avoir une incidence sur les votes existants selon l’état du sondage |
closing_at |
Chaîne au format ISO 8601 ou valeur nulle |
recipient_audience |
group ou valeur nulle. Si la valeur est group, tout le groupe reçoit une notification |
recipient_user_ids |
Tableau d’identifiants de personnes à avertir ou à inviter |
recipient_emails |
Tableau d’adresses e-mail de personnes à inviter à voter |
recipient_message |
Message à inclure dans l’invitation envoyée par e-mail |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated poll title", "details":"updated details", "details_format":"md"}' https://www.loomio.com/api/b2/polls/123
Supprimer un sondage sans effacer son enregistrement
Supprimez un sondage avec le compte utilisateur associé à la clé API. Le sondage est écarté, mais son enregistrement est conservé.
DELETE /api/b2/polls/:id
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/polls/123
Lister les adhésions
Listez les adhésions visibles pour le compte utilisateur associé à la clé API. Les membres d’un groupe peuvent consulter les noms, les identifiants, les titres et les rôles des membres. Les adresses e-mail sont incluses uniquement pour le propre compte associé à la clé API ou lorsque ce compte est administrateur du groupe.
GET /api/b2/memberships
Paramètres
| Nom | Description |
|---|---|
group_id |
Entier, obligatoire. Identifiant du groupe dont les adhésions seront listées |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/memberships?group_id=123'
Gérer les adhésions
Envoyez une liste d’adresses e-mail. Chaque nouvelle adresse recevra une invitation à rejoindre le groupe. Contrairement à la consultation des adhésions, cette opération nécessite les droits d’administration du groupe.
POST /api/b2/memberships
Paramètres
| Nom | Description |
|---|---|
group_id |
Entier obligatoire. Identifiant du groupe dont les membres seront gérés |
emails |
Tableau de chaînes de caractères obligatoire. Adresses e-mail des personnes à inviter dans le groupe |
remove_absent |
Booléen. Si la valeur est vraie, retire du groupe toute personne dont l’adresse e-mail ne figure pas dans la liste |
Exemple
curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails":["person@example.com"]}' https://www.loomio.com/api/b2/memberships
Si vous fournissez remove_absent=1, les membres du groupe absents de la liste seront retirés du groupe. Vérifiez la liste : vous pourriez retirer tous les membres de votre groupe.
curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails":["person@example.com"], "remove_absent": 1}' https://www.loomio.com/api/b2/memberships
La réponse est un objet contenant {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.