Loomion käyttäjän API:n dokumentaatio

/api/b2 on Loomio-integraatioiden käyttäjäkohtainen API. Se käyttää käyttäjätilin API-avainta, ja kaikki toiminnot tehdään kyseisen käyttäjän nimissä.

Ryhmiä koskevissa toiminnoissa noudatetaan API-avaimen käyttäjän jäsenyyksiä ja ryhmäoikeuksia. Instanssin ylläpitäjän asema ei laajenna API-avaimen pääsyä ryhmiin tai sisältöön. Käytä instanssin hallintaan palvelimen API:a.

Käytä sen Loomio-käyttäjätilin API-avainta, jonka nimissä toiminnot tehdään. Erillinen bottitili on hyödyllinen, jos integraatiota ei pidä kutsua kyselyihin tai sen ei pidä saada ilmoituksia.

Kirjautuneet käyttäjät löytävät API-avaimensa ja ryhmiensä tunnukset API-käyttösivulta.

Lähetä API-avain Authorization: Bearer -otsakkeessa. Kyselymerkkijonossa lähetetyt API-avaimet hylätään, koska välityspalvelimet ja käyttölokit voivat tallentaa URL-osoitteita.

Todennuksen muutos

API-avain hyväksyttiin aiemmin URL-parametrina api_key. Pyynnöt, joissa käytetään parametria ?api_key=YOUR_API_KEY, eivät enää toimi. Käytä sen sijaan HTTP-otsaketta Authorization:

Authorization: Bearer YOUR_API_KEY

Esimerkeissä käytetään arvoja YOUR_API_KEY, ryhmätunnusta 123 ja osoitetta https://www.loomio.com/. Korvaa ne omalla API-avaimellasi, ryhmätunnuksellasi ja Loomio-asennuksesi URL-osoitteella.

Käyttäjän API:n vastaukset ovat yhdistelmämuotoisia: ensisijaisten tietueiden mukana tulee niihin liittyviä tietueita, kuten aiheita, ryhmiä, käyttäjiä, kyselyitä ja reaktioita. Näin asiakasohjelma voi täyttää paikallisen tietuevarastonsa yhdellä pyynnöllä, mutta vastaus voi sisältää enemmän tietoa kuin yksinkertainen integraatio tarvitsee.

Anna parametri compact=1, jos haluat jättää pois tilaa vievät liittyvät aiheet, ryhmät, pääryhmät, jäsenyydet, reaktiot, tunnisteet ja käännökset. Ensisijaiset tietueet ja niiden sisällön tulkintaan tarvittavat liittyvät tietueet säilyvät vastauksessa.

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1'

Jos haluat valita pois jätettävät tyypit itse, anna parametrille exclude_types välilyönneillä erotetut tietuetyypit yksikkömuodossa. Esimerkiksi exclude_types=group reaction jättää pois liittyvät ryhmät ja reaktiot. Tavallisia arvoja ovat topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome ja topic_item. Poisjättö koskee liittyviä tietueita, ei päätepisteestä pyydettyä ensisijaista resurssia.

Kokoelmavastauksissa on meta.total, kun kokoelman tarkka koko on määritetty. Kokonaismäärä lasketaan ennen parametrien limit ja offset käyttöä. Esimerkiksi hakupäätepiste jättää meta.total-kentän pois, kun se palauttaa tarkoituksella rajatun tulosjoukon. Se ei palauta arvoa null.

Päätepisteiden yhteenveto

Menetelmä Päätepiste Tarkoitus
GET /api/b2/groups Listaa API-avaimen käyttäjän ryhmät
GET /api/b2/groups/:id_or_key_or_handle Hae käyttäjälle näkyvä ryhmä
GET /api/b2/reports Luo osallistumisraportti
GET /api/b2/search Hae näkyvistä keskusteluista, kommenteista, kyselyistä, äänistä ja yhteenvedoista
POST /api/b2/discussions Luo keskustelu
GET /api/b2/discussions/:id Hae keskustelu
GET /api/b2/discussions Listaa ryhmän keskustelut
PATCH /api/b2/discussions/:id Muokkaa keskustelua
DELETE /api/b2/discussions/:id Poista keskustelu pehmeästi
GET /api/b2/threads Listaa näkyvät keskusteluketjut ja erillisten kyselyiden ketjut
GET /api/b2/threads/:topic_id Hae ketju
GET /api/b2/threads/:topic_id/items Hae ketjun kohteet järjestyksessä
GET /api/b2/threads/:topic_id/markdown Hae koko ketju Markdown-muodossa
POST /api/b2/comments Luo kommentti tai vastaus
PATCH /api/b2/comments/:id Muokkaa kommenttia
DELETE /api/b2/comments/:id Poista kommentti pehmeästi
POST /api/b2/polls Luo kysely
GET /api/b2/polls/:id Hae kysely
GET /api/b2/polls Listaa ryhmän kyselyt
PATCH /api/b2/polls/:id Muokkaa kyselyä
DELETE /api/b2/polls/:id Poista kysely pehmeästi
GET /api/b2/memberships Listaa ryhmän jäsenyydet
POST /api/b2/memberships Lisää jäseniä ja halutessasi poista luettelosta puuttuvat jäsenet
GET /api/b2/chatbots Listaa ryhmän chat-integraatiot ja webhookit
POST /api/b2/chatbots Luo chat-integraatio tai webhook
PATCH /api/b2/chatbots/:id Päivitä chat-integraatio tai webhook
DELETE /api/b2/chatbots/:id Poista chat-integraatio tai webhook
POST /api/b2/chatbots/check Lähetä webhookin yhteystesti

Ryhmät

Listaa ryhmät

Palauta ryhmät, joissa API-avaimen käyttäjällä on aktiivinen jäsenyys.

GET /api/b2/groups

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups

Vastaus sisältää kaikki ehdot täyttävät tietueet sivuttamattomassa groups-taulukossa. Mukana ovat pääryhmät ja alaryhmät, myös ryhmät, joiden tilaus ei ole tällä hetkellä voimassa. Tarkista enabled-kenttä, jos integraation pitää käsitellä vain käytössä olevia ryhmiä.

Tärkeitä ryhmän kenttiä ovat:

Kenttä Kuvaus
id Numeerinen ryhmätunnus, jota muut käyttäjän API:n päätepisteet käyttävät
key Loomion URL-osoitteissa käytetty pysyvä lyhyt tunnus
handle Ihmiselle luettava ryhmätunniste
name Ryhmän nimi
full_name Ryhmän nimi pääryhmän yhteydessä
parent_id Alaryhmän pääryhmän numeerinen tunnus, muuten null
enabled Ovatko ryhmä ja sen tilaus aktiivisia
memberships_count Aktiivisten ja odottavien jäsenyyksien määrä
accepted_memberships_count Hyväksyttyjen jäsenyyksien määrä
pending_memberships_count Odottavien kutsujen määrä
admin_memberships_count Ryhmän ylläpitäjien määrä
delegates_count Edustajien määrä
discussions_count Suoraan ryhmään kuuluvien keskustelujen määrä
polls_count Suoraan ryhmään kuuluvien kyselyiden määrä
subgroups_count Alaryhmien määrä

Vastaus voi sisältää myös muita ryhmäasetuksia, liittyviä pääryhmän tietueita ja API-käyttäjän jäsenyyksiä. Asiakasohjelman tulee ohittaa kentät, joita se ei käytä.

Hae ryhmä

Palauta yksi API-avaimen käyttäjälle näkyvä ryhmä.

GET /api/b2/groups/:id_or_key_or_handle

Tunnisteena voi käyttää ryhmän numeerista tunnusta, lyhyttä tunnusta tai ryhmätunnistetta.

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

Vastaus sisältää ryhmän groups-taulukossa ja käyttää samoja kenttiä kuin listauspäätepiste. Jos API-avaimen käyttäjällä ei ole pääsyä pyydettyyn ryhmään, palvelin palauttaa oikeusvirheen.

Webhookit

Käyttäjän API perustuu pyyntöihin: integraatio kutsuu Loomiota, kun se haluaa lukea tai muuttaa tietoja. Ryhmän webhook lähettää tietoa toiseen suuntaan. Loomio lähettää valitut ryhmän tapahtumat päätepisteeseesi niiden tapahtuessa, joten integraation ei tarvitse kysellä muutoksia REST API:sta.

Webhookit määritetään ryhmäkohtaisesti, ja niiden hallintaan tarvitaan ryhmän ylläpitäjän oikeudet. Voit hallita niitä Loomion käyttöliittymässä:

  1. Avaa ryhmä.
  2. Avaa ryhmän valikko ja valitse Chat-integraatiot.
  3. Lisää integraatio, jonka sisältömuoto sopii päätepisteellesi. Yleiskäyttöiselle päätepisteelle sopii Mattermost/Markdown-muoto.
  4. Anna nimi ja kohteen URL-osoite.
  5. Valitse tapahtumat, jotka Loomion pitää lähettää automaattisesti.
  6. Tallenna integraatio ja lähetä testiviesti valitsemalla Testaa yhteys.

Käytä HTTPS-kohdetta, jonka URL-osoitetta ei voi arvata. Loomio edellyttää, että kohdeosoite vastaa julkista osoitetta, ja estää pyynnöt paikallisiin tai yksityisiin verkko-osoitteisiin.

Agentit ja muut integraatiot voivat hallita webhookeja myös alla kuvattujen Bearer-todennettujen chatbot-päätepisteiden kautta. Resurssin nimi on chatbots, jotta se on yhteensopiva Loomion chat-integraatioiden kanssa. Se kattaa myös yleiset lähtevät webhookit.

Listaa webhookit

Palauta ryhmälle määritetyt chat-integraatiot. API-avaimen käyttäjän on oltava kyseisen ryhmän ylläpitäjä. Vastaus sisältää kohteiden URL-osoitteet, joten sitä ei saa näyttää tavallisille ryhmän jäsenille.

GET /api/b2/chatbots?group_id=123

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123'

Vastaus sisältää chatbots-taulukon, jossa on seuraavat kentät:

Kenttä Kuvaus
id Integraation tunnus, jota käytetään päivittämiseen ja poistamiseen
group_id Ryhmä, jonka tapahtumia lähetetään
name Integraation ylläpidossa käytettävä nimi
kind webhook tarkoittaa lähtevää webhookia ja matrix Matrix-integraatiota
webhook_kind Viestin muoto: markdown, slack, discord, microsoft tai webex
server Kohteen URL-osoite
event_kinds Automaattisesti lähetettävät tapahtumat
notification_only Sisältävätkö viestit vain ilmoituksen otsikon

Luo 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

API-avaimen käyttäjän on oltava group_id-ryhmän ylläpitäjä. Ennen tallennusta tarkistetaan, että kohteen URL-osoite on julkinen.

Päivitä webhook

PATCH /api/b2/chatbots/:id

Lähetä kentät, joita haluat muuttaa. Webhookia ei voi siirtää toiseen ryhmään muuttamalla group_id-kenttää.

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

Testaa webhookin kohde

Lähetä kohteeseen Markdown-muotoinen testiviesti ennen asetusten tallentamista tai sen jälkeen.

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

Poista webhook

DELETE /api/b2/chatbots/:id

curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456

Asetusten poistaminen lopettaa tulevat lähetykset. Se ei poista ryhmän sisältöä Loomiosta.

Tapahtumatyypit

Webhook voi tilata seuraavat tapahtumatyypit:

Tapahtuma Milloin se lähetetään
new_discussion Keskustelu aloitetaan
discussion_edited Keskustelua muokataan
new_comment Kommentti luodaan
poll_created Kysely aloitetaan
poll_edited Kyselyä muokataan
poll_closing_soon Kyselyn sulkeutumisaika lähestyy
poll_expired Kyselyn sulkeutumisaika saavutetaan
poll_closed_by_user Käyttäjä sulkee kyselyn käsin
poll_reopened Kysely avataan uudelleen
outcome_created Johtopäätös julkaistaan
outcome_updated Johtopäätöstä päivitetään
outcome_review_due Johtopäätöksen tarkistamisen määräaika koittaa
stance_created Ääni annetaan
stance_updated Ääntä muutetaan

Webhook kuuluu yhteen ryhmään ja vastaanottaa ryhmästä tilaamansa tapahtumat. Käyttäjät voivat myös valita integraation erikseen jakaessaan sisältöä tai lähettäessään joitakin ilmoituksia, vaikka vastaavaa automaattista tapahtumaa ei olisi valittu.

HTTP-lähetys

Loomio lähettää määritettyyn URL-osoitteeseen asynkronisen HTTP POST -pyynnön, jossa on seuraava otsake:

Content-Type: application/json; charset=utf-8

Pyynnön aikakatkaisu on viisi sekuntia. 2xx-vastaus, myös 204 No Content, tulkitaan onnistumiseksi. Webhookin vastaanottajan kannattaa vastata nopeasti, käsitellä pidemmät tehtävät asynkronisesti ja varautua päällekkäisiin tai väärässä järjestyksessä saapuviin lähetyksiin.

Loomio ei tällä hetkellä lisää webhookin allekirjoitusta, jaetun salaisuuden otsaketta, tapahtumatunnusta eikä lähetystunnusta. Käsittele koko kohteen URL-osoitetta tunnistetietona äläkä julkaise sitä. Lisää URL-osoitteeseen vaikeasti arvattava tunniste, jos vastaanottava palvelu tukee sitä. Jos tarvitset vakaan, koneellisesti luettavan tapahtumamallin tai allekirjoitetun lähetyksen, käytä webhookia muutosilmoituksena ja hae ajantasaiset tietueet tunnistautumista edellyttävän käyttäjän API:n kautta.

Viestien muodot

Webhookin viestit on tarkoitettu näytettäviksi chat-palveluissa. Ne eivät sisällä täydellisiä Loomio-tietueita. Viestin linkit osoittavat sisältöön, jota tapahtuma koskee. Integraatio voi hakea ajantasaiset rakenteiset tiedot käyttäjän API:n kautta.

Integraation muoto JSON-pääkentät
Mattermost/Markdown text, icon_url, username
Slack text
Discord content, enintään noin 1 900 merkkiä
Microsoft Teams @type, @context, themeColor, text, sections
Webex markdown

Esimerkiksi yleisen Markdown-muodon viestin runko on seuraavanlainen:

{
  "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"
}

Viestin tarkka teksti riippuu tapahtumasta, ryhmän kieliasetuksesta, pelkän ilmoituksen asetuksesta ja Loomion versiosta. Vastaanottajan kannattaa käyttää valitun muodon dokumentoituja ylimmän tason kenttiä sen sijaan, että se tulkitsisi lauseiden sanamuotoa.

Hae keskusteluja, kommentteja, kyselyitä, ääniä ja johtopäätöksiä, jotka API-avaimen käyttäjä voi nähdä. Tuloksiin sisältyy julkista sisältöä, vaikka käyttäjä ei olisi ryhmän jäsen. Yksityisen sisällön näkyvyys määräytyy aiheen tavallisten käyttöoikeuksien mukaan.

GET /api/b2/search

Parametrit

Nimi Kuvaus
query Hakuteksti. Tukee tarkkoja ja likimääräisiä osumia
group_id Rajaa tulokset yhteen näkyvään ryhmään
org_id Rajaa tulokset näkyvään pääryhmään ja sen näkyviin alaryhmiin. Käytä suorille keskusteluille arvoa 0
type Rajaa tulokset yhteen tyyppiin: Discussion, Comment, Poll, Stance tai Outcome
types Pilkuilla erotettu luettelo tulostyypeistä
tag Rajaa tulokset aiheisiin, joissa on tämä tunniste
author_id Rajaa tulokset yhden kirjoittajan sisältöön. Ilman query-parametria palauttaa kirjoittajan viimeaikaisen näkyvän toiminnan
order Käytä arvoa authored_at_desc, jos haluat järjestää osumat kirjoitusajan mukaan
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discussion'

Vastaus sisältää search_results-taulukon. Jokainen tulos yksilöi löytyneen tietueen ja sen näkyvän asiayhteyden. Kenttiä ovat esimerkiksi searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at ja tags. Kentän arvo on null, jos kenttä ei koske tulosta.

Osallistumisraportti

Palauta samat koostetut osallistumistiedot, joita Loomion osallistumisraportti käyttää.

GET /api/b2/reports

Parametrit

Nimi Kuvaus
section Raportin osio: base, users tai countries. Käytä arvoa users, kun haluat nähdä toiminnan henkilöittäin
group_scope custom tai my. Vanhaa arvoa all käsitellään arvona my, koska käyttäjän API-avaimet eivät anna pääsyä koko Loomio-asennuksen tietoihin
group_ids Pilkuilla erotetut ryhmätunnukset, kun group_scope=custom. Ryhmät, joiden jäsen API:n käyttäjä ei ole, jätetään huomiotta
start_month Ensimmäinen mukaan otettava kuukausi muodossa YYYY-MM. Oletus on 12 kuukautta sitten
end_month Viimeinen mukaan otettava kuukausi muodossa YYYY-MM. Oletus on nykyinen kuukausi
interval base-osion aikaväli: day, week, month tai year
member_type Käytä arvoa delegate yhdessä arvon section=users kanssa, kun haluat palauttaa vain nykyiset delegaatit

Henkilö on delegaatti, jos hänellä on aktiivinen delegaatin jäsenyys jossakin valitussa ryhmässä. Hänen lukumääränsä lasketaan yhteen kaikista valituista ryhmistä. Delegaatin rivi palautetaan, vaikka kaikki toiminnan lukumäärät olisivat nollia. Lukumäärät kattavat ketjut, kommentit, kyselyt, äänet, johtopäätökset ja reaktiot. Ne eivät kuvaa äänestysaktiivisuutta. Käyttäjän riveillä näkyvät myös tunnistettujen äänestyslippujen määrät: lähetetyt, annetut ja käyttämättä jääneet. Nimettömät kyselyt eivät sisälly henkilökohtaisiin äänimääriin. all_votes_cast on tosi vain, jos vähintään yksi äänestyslippu on lähetetty ja kaikki lähetetyt äänestysliput on käytetty.

API noudattaa samoja ryhmän näkyvyyssääntöjä kuin Loomion oma raportti. Käyttäjän API-avain ei voi paljastaa raporttitietoja ryhmistä, joihin käyttäjällä ei ole pääsyä.

Esimerkki

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'

users-taulukko sisältää täydet toimintatiedot kullakin rivillä:

{
  "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
    }
  ]
}

Luo keskustelu

Luo keskustelu API-avaimen käyttäjänä.

POST /api/b2/discussions

Parametrit

Nimi Kuvaus
group_id Ryhmä, johon keskusteluketju luodaan
title Keskusteluketjun otsikko, pakollinen
description Keskusteluketjun taustatiedot, valinnainen
description_format md tai html, valinnainen, oletus md
recipient_audience group tai null. Jos arvo on group, koko ryhmä saa ilmoituksen uudesta keskusteluketjusta
recipient_user_ids Niiden käyttäjien tunnukset taulukkona, joille lähetetään ilmoitus tai kutsu keskusteluketjuun
recipient_emails Keskusteluketjuun kutsuttavien henkilöiden sähköpostiosoitteet taulukkona
recipient_message Sähköpostikutsuun lisättävä viesti

Esimerkki

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

Hae keskustelu

Hae keskustelu sen numeerisella tunnuksella tai merkkijonomuotoisella avaimella.

GET /api/b2/discussions/:id

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123

Listaa keskustelut

Listaa ryhmän keskustelut, jotka API-avaimen käyttäjä näkee. Julkisesti näkyvän ryhmän julkiset keskustelut voi listata myös henkilö, joka ei kuulu ryhmään. Yksityiset keskustelut näkyvät vain käyttäjille, joilla on niihin lukuoikeus Loomiossa.

GET /api/b2/discussions

Parametrit

Nimi Kuvaus
group_id Kokonaisluku, pakollinen. Sen ryhmän tunnus, jonka keskustelut listataan
status Merkkijono, valinnainen, oletus open. Arvot: open, closed, all
limit Kokonaisluku, valinnainen, oletus 50. Sivun koko
offset Kokonaisluku, valinnainen, oletus 0. Sivutuksen aloituskohta

Vanhat parametrit per ja from toimivat edelleen parametrien limit ja offset vaihtoehtoisina niminä.

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123'

Listaa keskusteluketjut

Listaa API-avaimen käyttäjälle näkyvät keskustelu- ja kyselyketjut viimeisimmän toiminnan mukaan järjestettyinä. Keskusteluketjun tunnus on sen topic_id.

GET /api/b2/threads

Parametrit

Nimi Kuvaus
limit Kokonaisluku, valinnainen, oletus 50. Sivun koko
offset Kokonaisluku, valinnainen, oletus 0. Sivutuksen aloituskohta

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'

Lue keskusteluketju

Lue keskusteluketju, sen aikajärjestyksessä olevat tapahtumat tai koko näkyvä Markdown-asiakirja.

GET /api/b2/threads/:topic_id

GET /api/b2/threads/:topic_id/items

GET /api/b2/threads/:topic_id/markdown

Esimerkki

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

items-rajapinta palauttaa tapahtumat järjestyksessä, mukaan lukien näkyvät kommentit, kyselyt, äänet ja johtopäätökset. markdown-rajapinta palauttaa koko näkyvän keskusteluketjun yhtenä Markdown-asiakirjana. Äänten perustelut sisältyvät vastaukseen vain, jos API-avaimen käyttäjä saa nähdä ne.

Kaikki keskusteluketjujen rajapinnat noudattavat samoja käyttöoikeuksia kuin Loomion käyttöliittymä. API-avain ei anna pääsyä keskusteluketjuun, jota käyttäjä ei normaalisti voi avata.

Muokkaa keskustelua

Muokkaa keskustelua API-avaimen käyttäjänä. Samat käyttöoikeudet pätevät kuin Loomiossa: käyttäjällä on oltava oikeus muokata kyseistä keskustelua.

PATCH /api/b2/discussions/:id

Parametrit

Nimi Kuvaus
title Päivitetty otsikko
description Päivitetyt taustatiedot
description_format md tai html, valinnainen, oletus md
recipient_audience group tai null. Jos arvo on group, koko ryhmä saa ilmoituksen muokkauksesta
recipient_user_ids Niiden käyttäjien tunnukset taulukkona, joille lähetetään ilmoitus tai kutsu keskusteluketjuun
recipient_emails Keskusteluketjuun kutsuttavien henkilöiden sähköpostiosoitteet taulukkona
recipient_message Sähköpostikutsuun lisättävä viesti

Esimerkki

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

Poista keskustelu pehmeästi

Poista keskustelu pehmeästi API-avaimen käyttäjänä. Keskustelu poistuu käytöstä, mutta sen tietue säilyy.

DELETE /api/b2/discussions/:id

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123

Luo kommentti

Luo kommentti keskusteluun API-avaimen käyttäjänä.

POST /api/b2/comments

Parametrit

Nimi Kuvaus
discussion_id Kokonaisluku, pakollinen. Sen keskustelun tunnus, johon kommentti lisätään
body Kommentin teksti, pakollinen, ellei liitettä ole annettu
body_format md tai html, valinnainen, oletus md

Esimerkki

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

Muokkaa kommenttia

Muokkaa kommenttia API-avaimen käyttäjänä. Samat käyttöoikeudet pätevät kuin Loomiossa: käyttäjällä on oltava oikeus muokata kyseistä kommenttia.

PATCH /api/b2/comments/:id

Parametrit

Nimi Kuvaus
body Päivitetty kommentin teksti
body_format md tai html, valinnainen, oletus md

Esimerkki

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

Poista kommentti pehmeästi

Poista kommentti pehmeästi API-avaimen käyttäjänä. Kommentti poistuu käytöstä ja sen teksti piilotetaan, mutta kommentin tietue säilyy.

DELETE /api/b2/comments/:id

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123

Luo kysely

Luo kysely API-avaimen käyttäjänä.

POST /api/b2/polls

Parametrit

Nimi Kuvaus
group_id Kokonaisluku, valinnainen, oletusarvo null. Sen ryhmän tunnus, johon kysely luodaan. Jos annat discussion_id-arvon, group_id ohitetaan
discussion_id Kokonaisluku, valinnainen, oletusarvo null. Sen keskusteluketjun tunnus, johon kysely lisätään
title Merkkijono, pakollinen. Kyselyn otsikko
poll_type Merkkijono, pakollinen. Arvot: proposal, poll, count, score, ranked_choice, meeting, dot_vote
details Merkkijono, valinnainen. Kyselyn sisältöteksti
details_format Merkkijono, valinnainen, oletusarvo md. Arvot: md tai html
options Merkkijonojen taulukko. Jos poll_type on proposal, kelvolliset arvot ovat agree, disagree, abstain ja block. Jos poll_type on meeting, anna ISO 8601 -muotoisia päivämääriä tai päivämääriä ja kellonaikoja. Muissa kyselytyypeissä mikä tahansa merkkijono kelpaa
closing_at ISO 8601 -muotoinen merkkijono tai null, oletusarvo null. Esimerkki: 2026-09-01T12:00:00Z. Jos arvo on null, äänestäminen on pois käytöstä ja kysely katsotaan keskeneräiseksi
specified_voters_only Totuusarvo, valinnainen, oletusarvo false. Jos arvo on true, vain nimetyt henkilöt voivat äänestää. Jos arvo on false, kaikki ryhmän jäsenet kutsutaan äänestämään
hide_results Merkkijono, valinnainen, oletusarvo off. Arvot: off, until_vote, until_closed
shuffle_options Totuusarvo, oletusarvo false. Näytä vaihtoehdot äänestäjille satunnaisessa järjestyksessä
anonymous Totuusarvo, valinnainen, oletusarvo false. Piilota äänestäjien henkilöllisyydet
recipient_audience group tai null, valinnainen, oletusarvo null. Jos arvo on group, koko ryhmälle lähetetään ilmoitus
notify_on_closing_soon Merkkijono, valinnainen, oletusarvo nobody. Arvot: nobody, author, undecided_voters, voters
recipient_user_ids Ilmoitettavien tai kutsuttavien käyttäjien tunnusten taulukko
recipient_emails Äänestämään kutsuttavien henkilöiden sähköpostiosoitteiden taulukko
recipient_message Sähköpostikutsuun lisättävä viesti
notify_recipients Totuusarvo, oletusarvo false. Jos arvo on false, henkilöt lisätään lähettämättä ilmoituksia. Jos arvo on true, kaikki tällä pyynnöllä kutsutut saavat ilmoituksen sähköpostitse

Esimerkki

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

Näytä kysely

Hae kysely sen numeerisella tunnuksella tai merkkijonomuotoisella avaimella.

GET /api/b2/polls/:id

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123

Listaa kyselyt

Listaa ryhmän kyselyt, jotka näkyvät API-avaimen käyttäjälle. Julkisesti näkyvän ryhmän julkiset kyselyt voi listata myös henkilö, joka ei kuulu ryhmään. Yksityiset kyselyt näkyvät vain käyttäjille, joilla on oikeus lukea niitä Loomiossa. Vastaus sisältää kunkin näkyvän kyselyn nykyisen lopputuloksen, joten voit käyttää arvoa status=closed päätettyjen ehdotusten listaamiseen.

GET /api/b2/polls

Parametrit

Nimi Kuvaus
group_id Kokonaisluku, pakollinen. Sen ryhmän tunnus, jonka kyselyt listataan
status Merkkijono, valinnainen, oletusarvo active. Arvot: active, closed, all
limit Kokonaisluku, valinnainen, oletusarvo 50. Sivun koko
offset Kokonaisluku, valinnainen, oletusarvo 0. Sivutuksen aloituskohta

Vanhat parametrit per ja from toimivat edelleen parametrien limit ja offset vaihtoehtoisina niminä.

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123'

Muokkaa kyselyä

Muokkaa kyselyä API-avaimen käyttäjänä. Samat käyttöoikeudet pätevät kuin Loomiossa: käyttäjällä on oltava oikeus muokata kyseistä kyselyä.

PATCH /api/b2/polls/:id

Parametrit

Nimi Kuvaus
title Päivitetty otsikko
details Päivitetty kyselyn kuvaus
details_format md tai html, valinnainen, oletusarvo md
options Päivitetyt vaihtoehtojen nimet. Vaihtoehtojen muuttaminen voi vaikuttaa annettuihin ääniin kyselyn tilan mukaan
closing_at ISO 8601 -muotoinen merkkijono tai null
recipient_audience group tai null. Jos arvo on group, koko ryhmälle lähetetään ilmoitus
recipient_user_ids Ilmoitettavien tai kutsuttavien käyttäjien tunnusten taulukko
recipient_emails Äänestämään kutsuttavien henkilöiden sähköpostiosoitteiden taulukko
recipient_message Sähköpostikutsuun lisättävä viesti

Esimerkki

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

Poista kysely pehmeästi

Poista kysely pehmeästi API-avaimen käyttäjänä. Kysely poistuu käytöstä, mutta sen tietue säilyy.

DELETE /api/b2/polls/:id

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/polls/123

Listaa jäsenyydet

Listaa jäsenyydet, jotka näkyvät API-avaimen käyttäjälle. Ryhmän jäsenet voivat nähdä jäsenten nimet, tunnukset, tittelit ja roolit. Sähköpostiosoitteet näkyvät vain API-avaimen käyttäjän omalta tililtä tai silloin, kun API-avaimen käyttäjä on ryhmän ylläpitäjä.

GET /api/b2/memberships

Parametrit

Nimi Kuvaus
group_id Kokonaisluku, pakollinen. Sen ryhmän tunnus, jonka jäsenyydet listataan

Esimerkki

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/memberships?group_id=123'

Hallinnoi jäsenyyksiä

Lähetä luettelo sähköpostiosoitteista. Uudet osoitteet kutsutaan ryhmään. Toisin kuin jäsenyyksien listaaminen, tämä toiminto edellyttää ryhmän ylläpitäjän oikeuksia.

POST /api/b2/memberships

Parametrit

Nimi Kuvaus
group_id Kokonaisluku, pakollinen. Sen ryhmän tunnus, jonka jäsenyyksiä hallinnoidaan
emails Merkkijonojen taulukko, pakollinen. Ryhmään kutsuttavien henkilöiden sähköpostiosoitteet
remove_absent Totuusarvo. Jos arvo on true, ryhmästä poistetaan kaikki, joiden sähköpostiosoite ei ole luettelossa

Esimerkki

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

Jos annat arvon remove_absent=1, kaikki ryhmän jäsenet, joita ei ole luettelossa, poistetaan ryhmästä. Ole varovainen: voit poistaa ryhmästäsi kaikki jäsenet.

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

Vastaus on olio, jossa on {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.