Documentazione dell'API utente di Loomio
/api/b2 è l'API orientata agli utenti per le integrazioni con Loomio. Usa la chiave API di un account utente e ogni azione viene eseguita come quell'utente.
Le operazioni sui gruppi usano le iscrizioni e i permessi nei gruppi dell'utente titolare della chiave API. Il ruolo di amministratore dell'istanza non amplia l'accesso di una chiave API ai gruppi o ai contenuti; usa l'API server per l'amministrazione a livello di istanza.
Usa la chiave API dell'account utente Loomio che eseguirà le azioni. Un account bot dedicato è utile quando un'integrazione non deve essere invitata ai sondaggi o ricevere notifiche.
Gli utenti che hanno effettuato l'accesso possono trovare la propria chiave API e gli ID dei gruppi nella pagina di accesso API.
Invia la chiave API in un'intestazione Authorization: Bearer. Le chiavi API nelle stringhe di query vengono rifiutate perché gli URL possono essere registrati dai proxy e nei log di accesso.
Modifica dell'autenticazione
In precedenza, la chiave API veniva accettata come parametro URL api_key. Le richieste che usano ?api_key=YOUR_API_KEY non funzionano più. Usa invece l'intestazione HTTP Authorization:
Authorization: Bearer YOUR_API_KEY
Gli esempi usano YOUR_API_KEY, l'ID gruppo 123 e https://www.loomio.com/. Sostituiscili con la tua chiave API, l'ID del tuo gruppo e l'URL della tua installazione di Loomio.
Dimensione delle risposte e record correlati
Le risposte dell'API utente usano un formato composto: i record principali sono accompagnati da record correlati, come topic, gruppi, utenti, sondaggi e reazioni. Questo consente a un client di popolare un archivio locale di record con una sola richiesta, ma può includere più dati di quanti ne servano a una semplice integrazione.
Passa compact=1 per omettere i record correlati voluminosi relativi a topic, gruppi, gruppi principali, iscrizioni, reazioni, tag e traduzioni. I record principali e i record correlati necessari per interpretarne il contenuto restano presenti.
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1'
Per un controllo diretto, passa exclude_types con i tipi di record al singolare separati da spazi. Ad esempio, exclude_types=group reaction omette i gruppi e le reazioni correlati. I valori comuni sono topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome e topic_item. Le esclusioni si applicano ai record correlati, non alla risorsa principale richiesta dall'endpoint.
Le risposte relative a raccolte includono meta.total quando è definita una dimensione esatta della raccolta. Il totale viene calcolato prima di applicare limit e offset. Gli endpoint come quello di ricerca, che restituiscono intenzionalmente un insieme limitato di risultati, omettono meta.total anziché restituire null.
Riepilogo degli endpoint
| Metodo | Endpoint | Scopo |
|---|---|---|
GET |
/api/b2/groups |
Elenca i gruppi dell'utente titolare della chiave API |
GET |
/api/b2/groups/:id_or_key_or_handle |
Recupera un gruppo visibile |
GET |
/api/b2/reports |
Genera un rapporto sulla partecipazione |
GET |
/api/b2/search |
Cerca discussioni, commenti, sondaggi, voti e conclusioni visibili |
POST |
/api/b2/discussions |
Crea una discussione |
GET |
/api/b2/discussions/:id |
Recupera una discussione |
GET |
/api/b2/discussions |
Elenca le discussioni di un gruppo |
PATCH |
/api/b2/discussions/:id |
Modifica una discussione |
DELETE |
/api/b2/discussions/:id |
Elimina logicamente una discussione |
GET |
/api/b2/threads |
Elenca le conversazioni visibili delle discussioni e dei sondaggi autonomi |
GET |
/api/b2/threads/:topic_id |
Recupera una conversazione |
GET |
/api/b2/threads/:topic_id/items |
Recupera gli elementi ordinati di una conversazione |
GET |
/api/b2/threads/:topic_id/markdown |
Recupera una conversazione completa in formato Markdown |
POST |
/api/b2/comments |
Crea un commento o una risposta |
PATCH |
/api/b2/comments/:id |
Modifica un commento |
DELETE |
/api/b2/comments/:id |
Elimina logicamente un commento |
POST |
/api/b2/polls |
Crea un sondaggio |
GET |
/api/b2/polls/:id |
Recupera un sondaggio |
GET |
/api/b2/polls |
Elenca i sondaggi di un gruppo |
PATCH |
/api/b2/polls/:id |
Modifica un sondaggio |
DELETE |
/api/b2/polls/:id |
Elimina logicamente un sondaggio |
GET |
/api/b2/memberships |
Elenca le iscrizioni a un gruppo |
POST |
/api/b2/memberships |
Aggiunge membri e, facoltativamente, rimuove i membri assenti dall'elenco |
GET |
/api/b2/chatbots |
Elenca le integrazioni di chat e i webhook di un gruppo |
POST |
/api/b2/chatbots |
Crea un'integrazione di chat o un webhook |
PATCH |
/api/b2/chatbots/:id |
Aggiorna un'integrazione di chat o un webhook |
DELETE |
/api/b2/chatbots/:id |
Elimina un'integrazione di chat o un webhook |
POST |
/api/b2/chatbots/check |
Invia un test di connessione a un webhook |
Gruppi
Elenca i gruppi
Restituisce i gruppi in cui l'utente titolare della chiave API ha un'iscrizione attiva.
GET /api/b2/groups
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups
La risposta contiene tutti i record corrispondenti in un array groups senza paginazione. Include gruppi principali e sottogruppi, anche quelli il cui abbonamento non è attualmente attivo. Controlla il campo enabled quando un'integrazione deve operare solo sui gruppi abilitati.
Tra i campi importanti dei gruppi ci sono:
| Campo | Descrizione |
|---|---|
id |
ID numerico del gruppo usato dagli altri endpoint dell'API utente |
key |
Chiave breve e stabile usata negli URL di Loomio |
handle |
Identificativo leggibile del gruppo |
name |
Nome del gruppo |
full_name |
Nome del gruppo che include il contesto del gruppo principale |
parent_id |
ID numerico del gruppo principale per un sottogruppo, altrimenti null |
enabled |
Indica se il gruppo e il suo abbonamento sono attivi |
memberships_count |
Numero di iscrizioni attive e in attesa |
accepted_memberships_count |
Numero di iscrizioni accettate |
pending_memberships_count |
Numero di inviti in attesa |
admin_memberships_count |
Numero di amministratori del gruppo |
delegates_count |
Numero di delegati |
discussions_count |
Numero di discussioni direttamente nel gruppo |
polls_count |
Numero di sondaggi direttamente nel gruppo |
subgroups_count |
Numero di sottogruppi |
La risposta può includere ulteriori impostazioni del gruppo, record correlati del gruppo principale e le iscrizioni dell'utente API. I client dovrebbero ignorare i campi che non usano.
Recupera un gruppo
Restituisce un gruppo visibile all'utente titolare della chiave API.
GET /api/b2/groups/:id_or_key_or_handle
L'identificatore può essere l'ID numerico, la chiave o l'identificativo leggibile del gruppo.
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 risposta contiene il gruppo nell'array groups e usa gli stessi campi dell'endpoint che elenca i gruppi. Una richiesta per un gruppo a cui l'utente titolare della chiave API non può accedere restituisce un errore di autorizzazione.
Webhook
L'API utente si basa sulle richieste: un'integrazione chiama Loomio quando vuole leggere o modificare dati. Un webhook di gruppo permette invece a Loomio di inviare gli aggiornamenti. Loomio invia gli eventi selezionati del gruppo al tuo endpoint quando si verificano, quindi un'integrazione non deve interrogare periodicamente l'API REST per rilevare le modifiche.
I webhook vengono configurati per ciascun gruppo e richiedono i permessi di amministratore del gruppo. Puoi gestirli tramite l'interfaccia di Loomio:
- Apri il gruppo.
- Apri il menu del gruppo e seleziona Integrazioni di chat.
- Aggiungi l'integrazione corrispondente al formato del payload accettato dal tuo endpoint. Per un endpoint generico, usa il formato Mattermost/Markdown.
- Inserisci un nome e l'URL di destinazione.
- Seleziona gli eventi che Loomio deve inviare automaticamente.
- Salva l'integrazione e usa Test connection per inviare un messaggio di prova.
Usa una destinazione HTTPS con un URL impossibile da indovinare. Loomio richiede che la destinazione si risolva in un indirizzo pubblico e blocca le richieste verso indirizzi di rete locali o privati.
Gli agenti e le altre integrazioni possono invece gestire i webhook tramite gli endpoint chatbot con autenticazione Bearer descritti di seguito. La risorsa si chiama chatbots per compatibilità con le integrazioni di chat di Loomio, ma rappresenta anche webhook generici in uscita.
Elenca i webhook
Restituisce le integrazioni di chat configurate per un gruppo. L'utente titolare della chiave API deve essere un amministratore di quel gruppo. La risposta include gli URL di destinazione, quindi non deve essere resa accessibile ai membri ordinari del gruppo.
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 risposta contiene un array chatbots con questi campi:
| Campo | Descrizione |
|---|---|
id |
ID dell'integrazione usato per gli aggiornamenti e l'eliminazione |
group_id |
Gruppo che riceve gli eventi |
name |
Nome dell'integrazione per uso amministrativo |
kind |
webhook per un webhook in uscita o matrix per un'integrazione Matrix |
webhook_kind |
Formato del payload: markdown, slack, discord, microsoft o webex |
server |
URL di destinazione |
event_kinds |
Eventi inviati automaticamente |
notification_only |
Indica se i messaggi contengono solo il titolo della notifica |
Crea 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
L'utente titolare della chiave API deve essere un amministratore del gruppo indicato da group_id. Prima del salvataggio, viene verificato che la destinazione sia un URL pubblico.
Aggiorna un webhook
PATCH /api/b2/chatbots/:id
Invia tutti i campi da modificare. Non puoi trasferire il webhook a un altro gruppo modificando group_id.
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
Verifica una destinazione webhook
Invia un messaggio di prova compatibile con Markdown a una destinazione prima o dopo averne salvato la configurazione.
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
Elimina un webhook
DELETE /api/b2/chatbots/:id
curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456
L'eliminazione della configurazione interrompe gli invii futuri. Non elimina alcun contenuto del gruppo Loomio.
Tipi di evento
Un webhook può iscriversi a questi tipi di evento:
| Evento | Quando viene inviato |
|---|---|
new_discussion |
Viene avviata una discussione |
discussion_edited |
Viene modificata una discussione |
new_comment |
Viene creato un commento |
poll_created |
Viene avviato un sondaggio |
poll_edited |
Viene modificato un sondaggio |
poll_closing_soon |
Un sondaggio si avvicina all'orario di chiusura |
poll_expired |
Un sondaggio raggiunge l'orario di chiusura |
poll_closed_by_user |
Una persona chiude manualmente un sondaggio |
poll_reopened |
Viene riaperto un sondaggio |
outcome_created |
Viene pubblicata una conclusione |
outcome_updated |
Viene aggiornata una conclusione |
outcome_review_due |
Arriva la scadenza per la revisione di una conclusione |
stance_created |
Viene espresso un voto |
stance_updated |
Viene modificato un voto |
Il webhook appartiene a un gruppo e riceve da quel gruppo gli eventi a cui è iscritto. Le persone possono anche selezionare esplicitamente l'integrazione quando condividono contenuti o inviano alcune notifiche, anche quando l'evento automatico corrispondente non è selezionato.
Invio HTTP
Loomio invia una richiesta HTTP POST asincrona all'URL configurato con questa intestazione:
Content-Type: application/json; charset=utf-8
Il timeout della richiesta è di cinque secondi. Una risposta 2xx, inclusa 204 No Content, viene considerata riuscita. I servizi che ricevono i webhook dovrebbero rispondere rapidamente, elaborare le operazioni più lunghe in modo asincrono e gestire invii duplicati o fuori ordine.
Al momento Loomio non aggiunge una firma del webhook, un'intestazione con un segreto condiviso, un ID evento o un ID invio. Tratta l'URL di destinazione completo come una credenziale, non esporlo pubblicamente e includi nell'URL un token impossibile da indovinare quando il servizio ricevente lo supporta. Se ti serve uno schema degli eventi stabile e leggibile da software o un invio firmato, usa il webhook come notifica di modifica e recupera i record aggiornati tramite l'API utente autenticata.
Formati del payload
I payload dei webhook sono messaggi destinati ai servizi di chat e pensati per la visualizzazione. Non sono record Loomio serializzati completi. I link nel messaggio identificano il contenuto Loomio interessato; un'integrazione può recuperare ulteriori informazioni tramite l'API utente quando le serve lo stato attuale in forma strutturata.
| Formato dell'integrazione | Campi JSON principali |
|---|---|
| Mattermost/Markdown | text, icon_url, username |
| Slack | text |
| Discord | content, limitato a circa 1.900 caratteri |
| Microsoft Teams | @type, @context, themeColor, text, sections |
| Webex | markdown |
Ad esempio, il formato Markdown generico invia un corpo con questa struttura:
{
"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"
}
Il testo esatto del messaggio dipende dall'evento, dalle impostazioni locali del gruppo, dall'impostazione che limita i messaggi alla sola notifica e dalla versione di Loomio. I servizi riceventi dovrebbero basarsi sui campi di primo livello documentati del formato selezionato, anziché analizzare la formulazione delle frasi.
Ricerca
Cerca discussioni, commenti, sondaggi, voti e conclusioni visibili all'utente della chiave API. I risultati includono i contenuti pubblici anche quando l'utente non è membro del relativo gruppo; i contenuti privati restano soggetti alle normali regole di visibilità delle conversazioni.
GET /api/b2/search
Parametri
| Nome | Descrizione |
|---|---|
query |
Testo da cercare. Sono supportate corrispondenze esatte e approssimative |
group_id |
Limita i risultati a un gruppo visibile |
org_id |
Limita i risultati a un gruppo principale visibile e ai suoi sottogruppi visibili. Usa 0 per le discussioni dirette |
type |
Limita i risultati a un tipo: Discussion, Comment, Poll, Stance o Outcome |
types |
Elenco dei tipi di risultato separati da virgole |
tag |
Limita i risultati alle conversazioni con questo tag |
author_id |
Limita i risultati ai contenuti di un autore. Senza query, restituisce l'attività recente visibile di quell'autore |
order |
Imposta su authored_at_desc per ordinare i contenuti corrispondenti in base al momento della creazione |
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discussion'
La risposta contiene un array search_results. Ogni risultato identifica il record corrispondente e il suo contesto visibile con campi che includono searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at e tags. I campi non applicabili a un risultato sono null.
Report sulla partecipazione
Restituisce gli stessi dati aggregati sulla partecipazione usati dal report sulla partecipazione di Loomio.
GET /api/b2/reports
Parametri
| Nome | Descrizione |
|---|---|
section |
Sezione del report: base, users o countries. Usa users per l'attività per persona |
group_scope |
custom o my. Il valore precedente all viene trattato come my perché le chiavi dell'API utente non ricevono mai accesso all'intera istanza |
group_ids |
ID dei gruppi separati da virgole quando group_scope=custom. Gli ID dei gruppi a cui l'utente API non appartiene vengono ignorati |
start_month |
Primo mese da includere, nel formato YYYY-MM; il valore predefinito è 12 mesi fa |
end_month |
Ultimo mese da includere, nel formato YYYY-MM; il valore predefinito è il mese corrente |
interval |
Intervallo per la sezione base: day, week, month o year |
member_type |
Imposta su delegate con section=users per restituire solo i delegati attuali |
Una persona è un delegato quando è membro attivo con il ruolo di delegato in almeno uno dei gruppi selezionati. I suoi conteggi vengono aggregati su tutti i gruppi selezionati. Le righe dei delegati vengono restituite anche quando tutti i conteggi delle attività sono pari a zero. I conteggi riguardano conversazioni, commenti, sondaggi, voti, conclusioni e reazioni; non sono tassi di partecipazione al voto. Le righe degli utenti includono anche le schede di voto identificato assegnate, compilate e non compilate. I sondaggi anonimi sono esclusi da tutti i conteggi dei voti per persona. all_votes_cast è true solo quando è stata assegnata almeno una scheda di voto e tutte le schede assegnate sono state compilate.
L'API applica le stesse regole di visibilità dei gruppi del report nell'applicazione. Una chiave API utente non può esporre dati del report relativi a gruppi a cui quell'utente non può accedere.
Esempio
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'
L'array users contiene righe complete sulle attività:
{
"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
}
]
}
Crea una discussione
Crea una discussione come utente della chiave API.
POST /api/b2/discussions
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Gruppo in cui verrà creata la conversazione |
title |
Titolo della conversazione, obbligatorio |
description |
Contesto della conversazione, facoltativo |
description_format |
md o html, facoltativo, valore predefinito md |
recipient_audience |
group o null. Se è group, l'intero gruppo riceverà una notifica sulla nuova conversazione |
recipient_user_ids |
Array di ID degli utenti da notificare o invitare alla conversazione |
recipient_emails |
Array di indirizzi email delle persone da invitare alla conversazione |
recipient_message |
Messaggio da includere nell'invito via email |
Esempio
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
Visualizza una discussione
Recupera una discussione usando il suo ID, un numero intero, oppure la sua chiave, una stringa.
GET /api/b2/discussions/:id
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123
Elenca le discussioni
Elenca le discussioni di un gruppo visibili all'utente della chiave API. Per un gruppo visibile pubblicamente, anche chi non ne è membro può elencare le discussioni pubbliche; le discussioni private restano accessibili solo agli utenti che possono leggerle in Loomio.
GET /api/b2/discussions
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Numero intero, obbligatorio. ID del gruppo di cui elencare le discussioni |
status |
Stringa, facoltativa, valore predefinito open. Valori: open, closed, all |
limit |
Numero intero, facoltativo, valore predefinito 50. Dimensione della pagina |
offset |
Numero intero, facoltativo, valore predefinito 0. Scostamento per la paginazione |
Compatibilità con le versioni precedenti: per e from sono accettati come alias di limit e offset e continueranno a funzionare.
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123'
Elenca le conversazioni
Elenca le conversazioni delle discussioni e dei sondaggi visibili all'utente della chiave API, ordinate per attività più recente. L'ID di una conversazione è il suo topic_id.
GET /api/b2/threads
Parametri
| Nome | Descrizione |
|---|---|
limit |
Numero intero, facoltativo, valore predefinito 50. Dimensione della pagina |
offset |
Numero intero, facoltativo, valore predefinito 0. Scostamento per la paginazione |
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'
Leggi una conversazione
Leggi una conversazione, la sua sequenza ordinata di eventi oppure il suo documento Markdown completo con tutti i contenuti visibili.
GET /api/b2/threads/:topic_id
GET /api/b2/threads/:topic_id/items
GET /api/b2/threads/:topic_id/markdown
Esempio
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
L'endpoint items restituisce la sequenza ordinata di eventi, inclusi commenti, sondaggi, voti e conclusioni visibili. L'endpoint markdown restituisce l'intera conversazione visibile in un unico documento Markdown. I motivi dei voti sono inclusi solo quando sono visibili all'utente della chiave API.
Tutti gli endpoint delle conversazioni applicano gli stessi permessi dell'interfaccia di Loomio. La chiave API non concede l'accesso a una conversazione che l'utente non può normalmente aprire.
Modifica una discussione
Modifica una discussione come utente della chiave API. Si applicano gli stessi permessi di Loomio: l'utente deve essere autorizzato a modificare quella discussione.
PATCH /api/b2/discussions/:id
Parametri
| Nome | Descrizione |
|---|---|
title |
Titolo aggiornato |
description |
Contesto aggiornato |
description_format |
md oppure html, facoltativo, valore predefinito md |
recipient_audience |
group oppure null. Se è group, l'intero gruppo riceverà una notifica della modifica |
recipient_user_ids |
Array di ID degli utenti da notificare o invitare alla conversazione |
recipient_emails |
Array di indirizzi email delle persone da invitare alla conversazione |
recipient_message |
Messaggio da includere nell'invito via email |
Esempio
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
Elimina una discussione senza cancellarne il record
Elimina una discussione come utente titolare della chiave API. La discussione viene rimossa, ma il suo record viene conservato.
DELETE /api/b2/discussions/:id
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123
Crea un commento
Crea un commento in una discussione come utente titolare della chiave API.
POST /api/b2/comments
Parametri
| Nome | Descrizione |
|---|---|
discussion_id |
Numero intero, obbligatorio. ID della discussione da commentare |
body |
Testo del commento, obbligatorio se non viene fornito un allegato |
body_format |
md o html, facoltativo, valore predefinito md |
Esempio
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
Modifica un commento
Modifica un commento come utente titolare della chiave API. Si applicano gli stessi permessi di Loomio: l'utente deve essere autorizzato a modificare quel commento.
PATCH /api/b2/comments/:id
Parametri
| Nome | Descrizione |
|---|---|
body |
Testo aggiornato del commento |
body_format |
md o html, facoltativo, valore predefinito md |
Esempio
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
Elimina un commento senza cancellarne il record
Elimina un commento come utente titolare della chiave API. Il commento viene rimosso e il suo testo viene nascosto, ma il suo record viene conservato.
DELETE /api/b2/comments/:id
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123
Crea un sondaggio
Crea un sondaggio come utente titolare della chiave API.
POST /api/b2/polls
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Intero, facoltativo, valore predefinito null. ID del gruppo del sondaggio. Se viene passato discussion_id, group_id viene ignorato |
discussion_id |
Intero, facoltativo, valore predefinito null. ID della conversazione della discussione a cui aggiungere questo sondaggio |
title |
Stringa, obbligatoria. Titolo del sondaggio |
poll_type |
Stringa, obbligatoria. Valori: proposal, poll, count, score, ranked_choice, meeting, dot_vote |
details |
Stringa, facoltativa. Testo del sondaggio |
details_format |
Stringa, facoltativa, valore predefinito md. Valori: md o html |
options |
Array di stringhe. Se poll_type è proposal, i valori validi sono agree, disagree, abstain, block. Se poll_type è meeting, fornisci stringhe di data o data e ora in formato ISO 8601. Per tutti gli altri tipi di sondaggio, qualsiasi stringa è valida |
closing_at |
Stringa ISO 8601 o null, valore predefinito null. Esempio: 2026-09-01T12:00:00Z. Se null, il voto è disabilitato e il sondaggio è considerato in preparazione |
specified_voters_only |
Booleano, facoltativo, valore predefinito false. Se true, solo le persone specificate possono votare. Se false, tutte le persone del gruppo saranno invitate a votare |
hide_results |
Stringa, facoltativa, valore predefinito off. Valori: off, until_vote, until_closed |
shuffle_options |
Booleano, valore predefinito false. Mostra le opzioni agli elettori in ordine casuale |
anonymous |
Booleano, facoltativo, valore predefinito false. Nasconde le identità degli elettori |
recipient_audience |
group o null, facoltativo, valore predefinito null. Se group, tutto il gruppo riceverà una notifica |
notify_on_closing_soon |
Stringa, facoltativa, valore predefinito nobody. Valori: nobody, author, undecided_voters, voters |
recipient_user_ids |
Array di ID degli utenti a cui inviare una notifica o un invito |
recipient_emails |
Array di indirizzi email delle persone da invitare a votare |
recipient_message |
Messaggio da includere nell'invito via email |
notify_recipients |
Booleano, valore predefinito false. Se false, aggiunge le persone senza inviare notifiche. Se true, tutte le persone invitate con questa richiesta riceveranno una notifica via email |
Esempio
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
Mostra un sondaggio
Recupera un sondaggio usando il suo ID, un intero, oppure la sua chiave, una stringa.
GET /api/b2/polls/:id
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123
Elenca i sondaggi
Elenca i sondaggi di un gruppo visibili all'utente della chiave API. Se il gruppo è visibile pubblicamente, anche chi non è membro può elencarne i sondaggi pubblici; i sondaggi privati restano accessibili solo agli utenti che possono leggerli in Loomio. La risposta include la conclusione attuale di ogni sondaggio visibile, quindi puoi usare status=closed per elencare le proposte su cui è stata presa una decisione.
GET /api/b2/polls
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Intero, obbligatorio. ID del gruppo di cui elencare i sondaggi |
status |
Stringa, facoltativa, valore predefinito active. Valori: active, closed, all |
limit |
Intero, facoltativo, valore predefinito 50. Dimensione della pagina |
offset |
Intero, facoltativo, valore predefinito 0. Scostamento per la paginazione |
Compatibilità con le versioni precedenti: per e from sono accettati come alias di limit e offset e continueranno a funzionare.
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123'
Modifica un sondaggio
Modifica un sondaggio come utente della chiave API. Si applicano gli stessi permessi di Loomio: l'utente deve essere autorizzato a modificare quel sondaggio.
PATCH /api/b2/polls/:id
Parametri
| Nome | Descrizione |
|---|---|
title |
Titolo aggiornato |
details |
Dettagli aggiornati del sondaggio |
details_format |
md o html, facoltativo, valore predefinito md |
options |
Nomi aggiornati delle opzioni. La modifica delle opzioni può influire sui voti esistenti a seconda dello stato del sondaggio |
closing_at |
Stringa ISO 8601 o null |
recipient_audience |
group o null. Se group, tutto il gruppo riceverà una notifica |
recipient_user_ids |
Array di ID degli utenti a cui inviare una notifica o un invito |
recipient_emails |
Array di indirizzi email delle persone da invitare a votare |
recipient_message |
Messaggio da includere nell'invito via email |
Esempio
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
Elimina logicamente un sondaggio
Elimina logicamente un sondaggio come utente della chiave API. Questa operazione rimuove il sondaggio mantenendo il suo record nel database.
DELETE /api/b2/polls/:id
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/polls/123
Elenca le iscrizioni
Elenca le iscrizioni visibili all'utente della chiave API. I membri del gruppo possono leggere nomi, ID, titoli e ruoli dei membri. Gli indirizzi email sono inclusi solo per l'account dell'utente della chiave API o quando questo utente è un amministratore del gruppo.
GET /api/b2/memberships
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Numero intero, obbligatorio. ID del gruppo di cui elencare le iscrizioni |
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/memberships?group_id=123'
Gestisci le iscrizioni
Invia un elenco di indirizzi email. Verrà inviato un invito al gruppo a tutti i nuovi indirizzi email. A differenza dell'elenco delle iscrizioni, questa operazione richiede i permessi di amministratore del gruppo.
POST /api/b2/memberships
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Numero intero, obbligatorio. ID del gruppo di cui gestire le iscrizioni |
emails |
Array di stringhe, obbligatorio. Indirizzi email delle persone da invitare nel gruppo |
remove_absent |
Booleano. Se true, rimuove dal gruppo chiunque abbia un indirizzo email non presente nell'elenco |
Esempio
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
Se passi remove_absent=1, tutti i membri del gruppo non inclusi nell'elenco verranno rimossi dal gruppo. Fai attenzione: potresti rimuovere tutti i membri del tuo gruppo.
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 risposta restituisce un oggetto con {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.