Documentazione dell'API utente di Loomio
/api/b2 è l'API utente per le integrazioni con Loomio. Usa la chiave API di un account utente ed esegue ogni azione a nome di quell'utente.
Le operazioni sui gruppi rispettano le partecipazioni e i permessi dell'utente a cui appartiene la chiave API. Il ruolo di amministratore dell'istanza non amplia l'accesso della chiave API ai gruppi o ai contenuti; per amministrare l'istanza, usa la Server API.
Usa la chiave API dell'account Loomio che eseguirà le azioni. Un account bot dedicato è utile se l'integrazione non deve ricevere inviti ai sondaggi o notifiche.
Se hai effettuato l'accesso, trovi la tua chiave API e gli ID dei gruppi nella pagina di accesso API.
Invia la chiave API nell'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 poteva essere passata 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 di gruppo 123 e https://www.loomio.com/. Sostituiscili con la tua chiave API, l'ID del gruppo e l'URL della tua installazione di Loomio.
Dimensioni delle risposte e record correlati
Le risposte dell'API utente hanno un formato composito: 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 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 più voluminosi: topic, gruppi, gruppi principali, partecipazioni, reazioni, tag e traduzioni. I record principali e quelli 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 controllare direttamente le esclusioni, passa exclude_types con i tipi di record al singolare separati da spazi. Per 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 che contengono raccolte includono meta.total quando è definita la dimensione esatta della raccolta. Il totale viene calcolato prima di applicare limit e offset. Gli endpoint come la ricerca, che restituiscono intenzionalmente un insieme limitato di risultati, omettono meta.total invece di restituire null.
Riepilogo degli endpoint
| Metodo | Endpoint | Scopo |
|---|---|---|
GET |
/api/b2/groups |
Elenca i gruppi dell'utente a cui appartiene la 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 una discussione senza rimuoverne il record |
GET |
/api/b2/threads |
Elenca i thread visibili delle discussioni e dei sondaggi autonomi |
GET |
/api/b2/threads/:topic_id |
Recupera un thread |
GET |
/api/b2/threads/:topic_id/items |
Recupera gli elementi ordinati di un thread |
GET |
/api/b2/threads/:topic_id/markdown |
Recupera un thread completo 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 un commento senza rimuoverne il record |
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 un sondaggio senza rimuoverne il record |
GET |
/api/b2/memberships |
Elenca le partecipazioni a un gruppo |
POST |
/api/b2/memberships |
Aggiunge membri e, facoltativamente, rimuove quelli 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
Elencare i gruppi
Restituisce i gruppi di cui l'utente a cui appartiene la chiave API è membro attivo.
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 se il loro abbonamento non è attualmente attivo. Controlla il campo enabled se l'integrazione deve operare solo sui gruppi abilitati.
I principali campi dei gruppi 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 con 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 partecipazioni attive e in attesa |
accepted_memberships_count |
Numero di partecipazioni 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 presenti direttamente nel gruppo |
polls_count |
Numero di sondaggi presenti direttamente nel gruppo |
subgroups_count |
Numero di sottogruppi |
La risposta può includere altre impostazioni del gruppo, i record correlati del gruppo principale e le partecipazioni dell'utente API. I client dovrebbero ignorare i campi che non usano.
Recuperare un gruppo
Restituisce un gruppo visibile all'utente a cui appartiene la chiave API.
GET /api/b2/groups/:id_or_key_or_handle
Puoi identificare il gruppo tramite il suo ID numerico, la chiave o l'identificativo.
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 a cui appartiene la chiave API non può accedere restituisce un errore di autorizzazione.
Webhook
L'API utente funziona tramite richieste: un'integrazione chiama Loomio quando vuole leggere o modificare dati. Un webhook di gruppo consente il flusso nella direzione opposta. Loomio invia al tuo endpoint gli eventi del gruppo selezionati quando si verificano, quindi l'integrazione non deve interrogare periodicamente l'API REST per rilevare le modifiche.
I webhook si configurano per singolo gruppo e richiedono i permessi di amministratore del gruppo. Puoi gestirli dall'interfaccia di Loomio:
- Apri il gruppo.
- Apri il menu del gruppo e seleziona Integrazioni di chat.
- Aggiungi l'integrazione con il 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 difficile da indovinare. Loomio richiede che la destinazione corrisponda a un indirizzo pubblico e blocca le richieste verso indirizzi di reti locali o private.
Gli agenti e le altre integrazioni possono gestire i webhook tramite gli endpoint chatbot descritti sotto, autenticati con Bearer. La risorsa si chiama chatbots per compatibilità con le integrazioni di chat di Loomio, ma rappresenta anche webhook in uscita generici.
Elencare i webhook
Restituisce le integrazioni di chat configurate per un gruppo. L'utente a cui appartiene la chiave API deve essere amministratore di quel gruppo. La risposta include gli URL di destinazione, quindi non deve essere resa accessibile ai normali membri 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 aggiornarla ed eliminarla |
group_id |
Gruppo che riceve gli eventi |
name |
Nome amministrativo dell'integrazione |
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 |
Creare 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 a cui appartiene la chiave API deve essere amministratore di group_id. Prima del salvataggio, Loomio verifica che la destinazione sia un URL pubblico.
Aggiornare un webhook
PATCH /api/b2/chatbots/:id
Invia 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
Verificare la destinazione di un webhook
Invia un messaggio di prova compatibile con Markdown alla 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
Eliminare un webhook
DELETE /api/b2/chatbots/:id
curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456
Eliminando la configurazione interrompi gli invii futuri. I contenuti del gruppo Loomio restano disponibili.
Tipi di evento
Un webhook può ricevere 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 |
Si avvicina la scadenza di un sondaggio |
poll_expired |
Un sondaggio raggiunge la scadenza |
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 solo 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 se 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, incluso 204 No Content, è considerata riuscita. Il servizio che riceve il webhook dovrebbe rispondere rapidamente, elaborare in modo asincrono le operazioni più lunghe e gestire invii duplicati o fuori ordine.
Attualmente Loomio non aggiunge una firma del webhook, un'intestazione con un segreto condiviso, un ID evento o un ID invio. Tratta l'URL completo di destinazione come una credenziale: non renderlo pubblico e includi nell'URL un token difficile da indovinare se 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 delle modifiche e recupera i dati aggiornati tramite l'API utente autenticata.
Formati dei payload
I payload dei webhook sono messaggi pensati per essere mostrati nei servizi di chat. Non contengono tutti i dati dei record Loomio. I link nel messaggio identificano i contenuti Loomio interessati; un'integrazione può usare l'API utente per ottenere i dati strutturati aggiornati.
| 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 |
Per esempio, il formato Markdown generico invia un corpo di questo tipo:
{
"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, dalla lingua del gruppo, dall'impostazione che limita il messaggio alla notifica e dalla versione di Loomio. I servizi riceventi dovrebbero usare i campi principali documentati per il formato selezionato, senza interpretare il testo delle frasi.
Ricerca
Cerca discussioni, commenti, sondaggi, voti e conclusioni visibili all'utente a cui appartiene la chiave API. I risultati includono contenuti pubblici anche se l'utente non è membro del gruppo; i contenuti privati seguono le normali regole di visibilità dell'argomento.
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 agli argomenti con questa etichetta |
author_id |
Limita i risultati ai contenuti di un autore. Senza query, restituisce le attività recenti e visibili di quell'autore |
order |
Imposta authored_at_desc per ordinare i contenuti corrispondenti in base alla data di 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 trovato e il suo contesto visibile tramite campi tra cui searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at e tags. I campi non pertinenti a un risultato hanno valore null.
Report sulla partecipazione
Restituisce gli stessi dati aggregati usati nel report sulla partecipazione di Loomio.
GET /api/b2/reports
Parametri
| Nome | Descrizione |
|---|---|
section |
Sezione del report: base, users o countries. Usa users per le attività delle singole persone |
group_scope |
custom o my. Il valore precedente all è trattato come my perché le chiavi dell'API utente non danno accesso all'intera istanza |
group_ids |
ID dei gruppi separati da virgole quando group_scope=custom. Gli ID dei gruppi di cui l'utente API non è membro vengono ignorati |
start_month |
Primo mese da includere nel formato YYYY-MM; per impostazione predefinita è il mese di 12 mesi fa |
end_month |
Ultimo mese da includere nel formato YYYY-MM; per impostazione predefinita è il mese corrente |
interval |
Intervallo per la sezione base: day, week, month o year |
member_type |
Imposta delegate con section=users per restituire solo i delegati attuali |
Una persona è delegata se ha un'adesione attiva come delegata in almeno uno dei gruppi selezionati. I suoi conteggi sono aggregati per tutti i gruppi selezionati. Le righe dei delegati vengono restituite anche quando tutti i conteggi delle attività sono pari a zero. I conteggi riguardano discussioni, commenti, sondaggi, voti, conclusioni e reazioni; non sono tassi di partecipazione al voto. Le righe degli utenti includono anche il numero di schede di voto nominative assegnate, compilate e non compilate. I sondaggi anonimi sono esclusi da tutti i conteggi dei voti per persona. all_votes_cast è true solo se è 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 in Loomio. La chiave API di un utente non può esporre i dati dei report relativi a gruppi a cui quell'utente non ha accesso.
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 con tutti i dati delle 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
}
]
}
Creare una discussione
Crea una discussione usando l'account associato alla chiave API.
POST /api/b2/discussions
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Gruppo in cui verrà creata la discussione |
title |
Titolo della discussione, obbligatorio |
description |
Contesto della discussione, facoltativo |
description_format |
md o html, facoltativo; valore predefinito: md |
recipient_audience |
group o null. Se è group, l'intero gruppo riceverà una notifica della nuova discussione |
recipient_user_ids |
Elenco di ID utente delle persone a cui inviare una notifica o un invito alla discussione |
recipient_emails |
Elenco di indirizzi email delle persone da invitare alla discussione |
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
Visualizzare una discussione
Recupera una discussione tramite il suo ID numerico o la sua chiave testuale.
GET /api/b2/discussions/:id
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123
Elencare le discussioni
Elenca le discussioni di un gruppo visibili all'utente associato alla chiave API. Se il gruppo è visibile pubblicamente, anche chi non ne fa parte può elencare le sue 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. Posizione iniziale per la paginazione |
Per compatibilità, 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'
Elencare i thread
Elenca i thread delle discussioni e dei sondaggi visibili all'utente associato alla chiave API, ordinati per attività più recente. L'ID di un thread è 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. Posizione iniziale per la paginazione |
Esempio
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'
Leggere un thread
Leggi un thread, la sua sequenza ordinata di eventi o il documento Markdown completo dei 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 degli eventi, inclusi commenti, sondaggi, voti e conclusioni visibili. L'endpoint markdown restituisce l'intero thread visibile come un unico documento Markdown. Le motivazioni dei voti sono incluse solo se sono visibili all'utente associato alla chiave API.
Tutti gli endpoint dei thread applicano gli stessi permessi dell'interfaccia di Loomio. La chiave API non consente di accedere a un thread che l'utente normalmente non può aprire.
Modificare una discussione
Modifica una discussione usando l'account associato alla chiave API. Si applicano gli stessi permessi di Loomio: l'utente deve essere autorizzato a modificare la discussione.
PATCH /api/b2/discussions/:id
Parametri
| Nome | Descrizione |
|---|---|
title |
Titolo aggiornato |
description |
Contesto aggiornato |
description_format |
md o html, facoltativo; valore predefinito: md |
recipient_audience |
group o null. Se è group, l'intero gruppo riceverà una notifica della modifica |
recipient_user_ids |
Elenco di ID utente delle persone a cui inviare una notifica o un invito alla discussione |
recipient_emails |
Elenco di indirizzi email delle persone da invitare alla discussione |
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
Eliminare una discussione senza rimuoverne il record
Elimina una discussione usando l'account associato alla chiave API. La discussione viene scartata, 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
Creare un commento
Crea un commento in una discussione usando l'account associato alla 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
Modificare un commento
Modifica un commento usando l'account associato alla chiave API. Si applicano gli stessi permessi di Loomio: l'utente deve essere autorizzato a modificare il 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
Eliminare un commento senza rimuoverne il record
Elimina un commento usando l'account associato alla chiave API. Il commento viene scartato e il suo testo nascosto, ma il 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 usando l'account associato alla chiave API.
POST /api/b2/polls
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Numero intero, facoltativo, valore predefinito null. ID del gruppo del sondaggio. Se viene passato discussion_id, group_id viene ignorato |
discussion_id |
Numero intero, facoltativo, valore predefinito null. ID della discussione a cui aggiungere il 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 date o date e ore nel formato ISO 8601. Per gli altri tipi di sondaggio, è valida qualsiasi stringa |
closing_at |
Stringa ISO 8601 o null, valore predefinito null. Esempio: 2026-09-01T12:00:00Z. Se il valore è null, non si può votare e il sondaggio è considerato in preparazione |
specified_voters_only |
Valore booleano facoltativo, predefinito false. Se true, possono votare solo le persone indicate. 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 |
Valore booleano, predefinito false. Mostra le opzioni ai votanti in ordine casuale |
anonymous |
Valore booleano facoltativo, predefinito false. Nasconde l'identità dei votanti |
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 utente delle persone da avvisare o invitare |
recipient_emails |
Array di indirizzi email delle persone da invitare a votare |
recipient_message |
Messaggio da includere nell'email di invito |
notify_recipients |
Valore booleano, predefinito false. Se false, aggiunge le persone senza inviare notifiche. Se true, tutte le persone invitate con questa richiesta riceveranno un'email di notifica |
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
Visualizza un sondaggio
Recupera un sondaggio tramite il suo ID numerico o la sua chiave, che è 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 associato alla chiave API. Se il gruppo è visibile pubblicamente, anche chi non ne è membro può elencare i sondaggi pubblici. I sondaggi privati restano accessibili solo a chi può leggerli in Loomio. La risposta include la conclusione corrente di ogni sondaggio visibile: puoi quindi usare status=closed per elencare le proposte su cui è stata presa una decisione.
GET /api/b2/polls
Parametri
| Nome | Descrizione |
|---|---|
group_id |
Numero intero, obbligatorio. ID del gruppo di cui elencare i sondaggi |
status |
Stringa, facoltativa, valore predefinito active. Valori: active, closed, all |
limit |
Numero intero, facoltativo, valore predefinito 50. Dimensione della pagina |
offset |
Numero intero, facoltativo, valore predefinito 0. Posizione iniziale per la paginazione |
Per compatibilità, 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 usando l'account associato alla chiave API. Si applicano gli stessi permessi di Loomio: devi poter 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 utente delle persone da avvisare o invitare |
recipient_emails |
Array di indirizzi email delle persone da invitare a votare |
recipient_message |
Messaggio da includere nell'email di invito |
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 un sondaggio senza cancellarne il record
Elimina un sondaggio usando l'account associato alla chiave API. Il sondaggio viene scartato, ma il suo record resta nel sistema.
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 associato alla chiave API. I membri del gruppo possono leggere nomi, ID, titoli e ruoli degli altri membri. Gli indirizzi email sono inclusi solo per l'account associato alla chiave API o se quell'utente è 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. I nuovi indirizzi riceveranno un invito a unirsi al gruppo. 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 |
Valore booleano. Se true, rimuove dal gruppo tutte le persone il cui 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 saranno rimossi. 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 è un oggetto con {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.