A Loomio felhasználói API dokumentációja

A /api/user0 a Loomio-integrációk felhasználói API-ja. Egy felhasználói fiók API-kulcsát használja, és minden műveletet az adott felhasználó nevében hajt végre.

A csoportműveletek az API-kulcshoz tartozó felhasználó tagságait és csoportjogosultságait használják. A példányadminisztrátori szerepkör nem bővíti az API-kulcs hozzáférését a csoportokhoz vagy tartalmakhoz; a példányszintű adminisztrációhoz használd a szerver API-t.

Annak a Loomio-felhasználói fióknak az API-kulcsát használd, amely a műveleteket végrehajtja. Egy külön botfiók hasznos, ha az integrációnak nem kell meghívókat kapnia szavazásokhoz vagy értesítéseket fogadnia.

A bejelentkezett felhasználók az API-hozzáférési oldalon találják meg az API-kulcsukat és a csoportazonosítóikat.

Az API-kulcsot az Authorization: Bearer fejlécben küldd el. A rendszer elutasítja a lekérdezési karakterláncban megadott API-kulcsokat, mert a proxyk és a hozzáférési naplók rögzíthetik az URL-eket.

Authorization: Bearer YOUR_API_KEY

A példákban a YOUR_API_KEY API-kulcs, a 123 csoportazonosító és a https://www.loomio.com/ URL szerepel. Cseréld le ezeket a saját API-kulcsodra, csoportazonosítódra és Loomio-telepítésed URL-jére.

Kéréstörzsek küldése

Küldj JSON-t Content-Type: application/json fejléccel. A cURL-példák a --json kapcsolót használják, amely automatikusan beállítja ezt a fejlécet. A beszélgetések, hozzászólások és szavazások létrehozására és szerkesztésére szolgáló végpontok egyszerű objektumot vagy az erőforrás neve alá ágyazott objektumot is elfogadnak, például: {"poll": {...}}.

A tömböket JSON-tömbként küldd el, például: "options": ["foo", "bar"]. Ha helyette űrlapkódolást használsz, a tömbökhöz szögletes zárójeles mezőnevek szükségesek, például: options[]=foo&options[]=bar; az options=foo&options=bar ismétlés csak az utolsó értéket tartja meg.

Minden kérés után ellenőrizd a HTTP-állapotkódot és a válasz törzsét. Sikertelen ellenőrzés esetén a válasz 422 állapotkódot és egy errors objektumot tartalmaz; szavazás sikeres létrehozásakor a szavazást a polls, a lehetőségeit pedig a poll_options tartalmazza.

A végpontok áttekintése

Metódus Végpont Cél
POST /api/user0/comments Hozzászólás vagy válasz létrehozása
PATCH /api/user0/comments/:id Hozzászólás szerkesztése
DELETE /api/user0/comments/:id Hozzászólás logikai törlése
POST /api/user0/discussions Beszélgetés létrehozása
GET /api/user0/discussions/:id Beszélgetés lekérése
GET /api/user0/discussions Egy csoport beszélgetéseinek listázása
PATCH /api/user0/discussions/:id Beszélgetés szerkesztése
DELETE /api/user0/discussions/:id Beszélgetés logikai törlése
GET /api/user0/groups Az API-kulcshoz tartozó felhasználó csoportjainak listázása
GET /api/user0/groups/:id_or_key_or_handle Egy látható csoport lekérése
GET /api/user0/memberships Egy csoport tagságainak listázása
POST /api/user0/memberships Tagok hozzáadása és igény szerint a listából hiányzó tagok eltávolítása
GET /api/user0/reports Részvételi jelentés készítése
POST /api/user0/polls Szavazás létrehozása
GET /api/user0/polls/:id Szavazás lekérése
GET /api/user0/polls Egy csoport szavazásainak listázása
PATCH /api/user0/polls/:id Szavazás szerkesztése
DELETE /api/user0/polls/:id Szavazás logikai törlése
GET /api/user0/search Keresés a látható beszélgetések, hozzászólások, szavazások, szavazatok és következtetések között
GET /api/user0/threads A látható beszélgetési szálak és önálló szavazási szálak listázása
GET /api/user0/threads/:topic_id Szál lekérése
GET /api/user0/threads/:topic_id/items Egy szál rendezett elemeinek lekérése
GET /api/user0/threads/:topic_id/markdown Teljes szál lekérése Markdown formátumban
GET /api/user0/chatbots Egy csoport csevegési integrációinak és webhookjainak listázása
POST /api/user0/chatbots Csevegési integráció vagy webhook létrehozása
PATCH /api/user0/chatbots/:id Csevegési integráció vagy webhook frissítése
DELETE /api/user0/chatbots/:id Csevegési integráció vagy webhook törlése
POST /api/user0/chatbots/check Webhook-kapcsolat tesztelése

Lapozás

A beszélgetések, csoportok, tagságok, szavazások, szálak, szálelemek és webhookok végpontjai elfogadják a limit (alapértelmezés: 50) és az offset (alapértelmezés: 0) paramétert. A csoportok, szálelemek és webhookok esetében a limit legnagyobb értéke 500.

A következő oldal lekéréséhez növeld az offset értékét a visszaadott elsődleges rekordok számával. A meta.total az összes egyező rekord száma; a kapcsolódó rekordok nem számítanak bele az oldalméretbe.

A részvételi jelentések a teljes kért adathalmazt adják vissza, a keresés pedig legfeljebb 20 találatot. Egyik sem támogatja a lapozást.

A beszélgetések, szavazások és tagságok végpontjai a régi per paramétert is elfogadják a limit, a from paramétert pedig az offset megfelelőjeként. Új integrációkhoz használd a limit és az offset paramétert.

A felhasználói API válaszai összetett formátumot használnak: az elsődleges rekordokat kapcsolódó rekordok, például témák, csoportok, felhasználók, szavazások és reakciók kísérik. Így a kliens egyetlen kérésből feltölthet egy helyi rekordtárat, de a válasz több adatot is tartalmazhat, mint amennyire egy egyszerű integrációnak szüksége van.

Add meg a compact=1 paramétert a nagy méretű kapcsolódó témák, csoportok, szülőcsoportok, tagságok, reakciók, címkék és fordítások kihagyásához. Az elsődleges rekordok és a tartalmuk értelmezéséhez szükséges kapcsolódó rekordok továbbra is szerepelnek a válaszban.

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

A közvetlen szabályozáshoz add meg az exclude_types paramétert szóközzel elválasztott, egyes számú rekordtípusokkal. Például az exclude_types=group reaction kihagyja a kapcsolódó csoportokat és reakciókat. Gyakori értékek: topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome és topic_item. A kizárások a kapcsolódó rekordokra vonatkoznak, nem a végponttól kért elsődleges erőforrásra.

A gyűjteményeket visszaadó válaszok tartalmazzák a meta.total mezőt, ha a gyűjtemény pontos mérete meghatározott. A teljes elemszám kiszámítása a limit és az offset alkalmazása előtt történik. Azok a végpontok, például a keresés, amelyek szándékosan korlátozott eredményhalmazt adnak vissza, kihagyják a meta.total mezőt ahelyett, hogy null értéket adnának vissza.

Hozzászólások

Hozzászólás létrehozása

Hozz létre egy hozzászólást egy beszélgetésben az API-kulcshoz tartozó felhasználó nevében.

POST /api/user0/comments

Paraméterek

Név Leírás
discussion_id Egész szám, kötelező. Annak a beszélgetésnek az azonosítója, amelyhez hozzászólsz
body A hozzászólás szövege, kötelező, kivéve ha mellékletet adsz meg
body_format md vagy html, opcionális, alapértelmezés: md

Példa

curl https://www.loomio.com/api/user0/comments \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "discussion_id": 123,
    "body": "example comment",
    "body_format": "md"
  }'

Hozzászólás szerkesztése

Szerkessz egy hozzászólást az API-kulcshoz tartozó felhasználó nevében. Ugyanazok a jogosultságok érvényesek, mint a Loomióban: a felhasználónak jogosultnak kell lennie az adott hozzászólás szerkesztésére.

PATCH /api/user0/comments/:id

Paraméterek

Név Leírás
body A hozzászólás frissített szövege
body_format md vagy html, opcionális, alapértelmezés: md

Példa

curl https://www.loomio.com/api/user0/comments/123 \
  -X PATCH \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "body": "updated comment",
    "body_format": "md"
  }'

Hozzászólás logikai törlése

Törölj logikailag egy hozzászólást az API-kulcshoz tartozó felhasználó nevében. Ez eltávolítja a hozzászólást és elrejti a szövegét, de megőrzi a hozzászólás adatbázisrekordját.

DELETE /api/user0/comments/:id

Példa

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

Beszélgetések

Beszélgetés létrehozása

Hozz létre beszélgetést az API-kulcshoz tartozó felhasználóként.

POST /api/user0/discussions

Paraméterek

Név Leírás
group_id A csoport, amelyben a szál létrejön
title A szál címe, kötelező
description A szál leírása, nem kötelező
description_format md vagy html, nem kötelező, alapértelmezés szerint md
recipient_audience group vagy null. Ha group, az egész csoport értesítést kap az új szálról
recipient_user_ids A szálról értesítendő vagy a szálba meghívandó felhasználók azonosítóinak tömbje
recipient_emails A szálba meghívandó emberek e-mail-címeinek tömbje
recipient_message Az e-mailes meghívóban szereplő üzenet

Példa

curl https://www.loomio.com/api/user0/discussions \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "title": "example thread",
    "recipient_emails": [
      "person@example.com"
    ]
  }'

Beszélgetés lekérése

Kérj le egy beszélgetést az egész számként megadott azonosítójával vagy a szövegként megadott kulcsával.

GET /api/user0/discussions/:id

Példa

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

Beszélgetések listázása

Listázd egy csoportnak az API-kulcshoz tartozó felhasználó számára látható beszélgetéseit. Nyilvánosan látható csoport esetén a nem tagok is listázhatják a nyilvános beszélgetéseket; a privát beszélgetésekhez továbbra is csak azok a felhasználók férhetnek hozzá, akik a Loomióban is olvashatják őket.

GET /api/user0/discussions

Paraméterek

Név Leírás
group_id Egész szám, kötelező. Annak a csoportnak az azonosítója, amelynek a beszélgetéseit listázni szeretnéd
status Szöveg, opcionális, alapértelmezett értéke open. Értékek: open, closed, all
limit Egész szám, opcionális, alapértelmezett értéke 50. Oldalméret
offset Egész szám, opcionális, alapértelmezett értéke 0. Eltolás a lapozáshoz

Korábbi paraméterek: a per és a from a limit és az offset alternatív neveként használható, és továbbra is működni fog.

Példa

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

Beszélgetés szerkesztése

Szerkessz egy beszélgetést az API-kulcshoz tartozó felhasználó nevében. Ugyanazok a jogosultságok érvényesek, mint a Loomióban: a felhasználónak jogosultnak kell lennie az adott beszélgetés szerkesztésére.

PATCH /api/user0/discussions/:id

Paraméterek

Név Leírás
title Frissített cím
description Frissített leírás
description_format md vagy html, opcionális, alapértelmezett értéke md
recipient_audience group vagy null. Ha group, az egész csoport értesítést kap a szerkesztésről
recipient_user_ids A szálról értesítendő vagy a szálba meghívandó felhasználók azonosítóinak tömbje
recipient_emails A szálba meghívandó emberek e-mail-címeinek tömbje
recipient_message Az e-mailben küldött meghívóba foglalandó üzenet

Példa

curl https://www.loomio.com/api/user0/discussions/123 \
  -X PATCH \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "title": "updated thread title",
    "description": "updated context",
    "description_format": "md"
  }'

Beszélgetés logikai törlése

Törölj logikailag egy beszélgetést az API-kulcshoz tartozó felhasználó nevében. Ez eltávolítja a beszélgetést, de megőrzi a beszélgetés adatbázisrekordját.

DELETE /api/user0/discussions/:id

Példa

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

Csoportok

Csoportok listázása

Visszaadja azokat a csoportokat, amelyekben az API-kulcshoz tartozó felhasználónak aktív tagsága van.

GET /api/user0/groups

Név Leírás
limit Egész szám, nem kötelező, alapértelmezés szerint 50, legfeljebb 500. Oldalméret
offset Egész szám, nem kötelező, alapértelmezés szerint 0. Eltolás a lapozáshoz
curl 'https://www.loomio.com/api/user0/groups?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_API_KEY'

A válasz a groups rekordok egy oldalát tartalmazza növekvő csoportazonosító szerint rendezve, a megfelelő csoportok teljes számát pedig a meta.total mezőben adja vissza. Szülőcsoportokat és alcsoportokat is tartalmaz, köztük olyan csoportokat, amelyek előfizetése jelenleg nem aktív. Ellenőrizd az enabled mezőt, ha az integrációnak csak engedélyezett csoportokkal kell működnie.

A fontosabb csoportmezők:

Mező Leírás
id A többi felhasználói API-végpont által használt numerikus csoportazonosító
key A Loomio URL-jeiben használt állandó rövid kulcs
handle A csoport ember számára olvasható azonosítója
name A csoport neve
full_name A csoport neve a szülőcsoport nevével együtt
parent_id Alcsoport esetén a szülőcsoport numerikus azonosítója, egyébként null
enabled A csoport és az előfizetése aktív-e
memberships_count Az aktív és függőben lévő tagságok száma
accepted_memberships_count Az elfogadott tagságok száma
pending_memberships_count A függőben lévő meghívók száma
admin_memberships_count A csoportadminisztrátorok száma
discussions_count A közvetlenül a csoportban lévő beszélgetések száma
polls_count A közvetlenül a csoportban lévő szavazások száma
subgroups_count Az alcsoportok száma

A válasz további csoportbeállításokat, kapcsolódó szülőcsoportrekordokat és az API-felhasználó tagságait is tartalmazhatja. A kliensek hagyják figyelmen kívül azokat a mezőket, amelyeket nem használnak.

Csoport lekérése

Visszaad egy, az API-kulcshoz tartozó felhasználó számára látható csoportot.

GET /api/user0/groups/:id_or_key_or_handle

Az azonosító lehet a csoport numerikus azonosítója, kulcsa vagy ember számára olvasható azonosítója.

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

curl https://www.loomio.com/api/user0/groups/example-group \
  -H 'Authorization: Bearer YOUR_API_KEY'

A válasz a groups tömbben tartalmazza a csoportot, és ugyanazokat a mezőket használja, mint a listázási végpont. Ha az API-kulcshoz tartozó felhasználó nem fér hozzá a kért csoporthoz, a kérés jogosultsági hibát ad vissza.

Tagságok

Tagságok listázása

Listázza az API-kulcshoz tartozó felhasználó számára látható tagságokat. A csoport tagjai láthatják a tagok nevét, azonosítóját, titulusát és szerepkörét. Az e-mail-címek csak az API-kulcshoz tartozó felhasználó saját fiókjánál szerepelnek, illetve akkor, ha ez a felhasználó a csoport adminisztrátora.

GET /api/user0/memberships

Paraméterek

Név Leírás
group_id Egész szám, kötelező. Annak a csoportnak az azonosítója, amelynek a tagságait listázni szeretnéd
limit Egész szám, nem kötelező, alapértelmezés szerint 50. Oldalméret
offset Egész szám, nem kötelező, alapértelmezés szerint 0. Eltolás a lapozáshoz

Korábbi paraméternevek: a per és a from a limit és az offset alternatív neveként továbbra is használható.

A válasz a memberships rekordok egy oldalát és a kapcsolódó users rekordokat tartalmazza. A meta.total a csoportban látható tagságok teljes száma a lapozás alkalmazása előtt.

Példa

curl 'https://www.loomio.com/api/user0/memberships?group_id=123&limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Tagságok kezelése

Küldj egy listát az e-mail-címekről. A művelet minden új e-mail-címre meghívót küld a csoportba. A tagságok listázásával ellentétben ehhez a művelethez csoportadminisztrátori jogosultság szükséges.

POST /api/user0/memberships

Paraméterek

Név Leírás
group_id Egész szám, kötelező. Annak a csoportnak az azonosítója, amelynek a tagságait kezelni szeretnéd
emails Karakterláncokból álló tömb, kötelező. A csoportba meghívni kívánt emberek e-mail-címei
remove_absent Logikai érték. Ha igaz, eltávolít a csoportból mindenkit, akinek az e-mail-címe nem szerepel a listában

Példa

curl https://www.loomio.com/api/user0/memberships \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "emails": [
      "person@example.com"
    ]
  }'

Ha megadod a remove_absent=1 paramétert, a művelet eltávolítja a csoport minden olyan tagját, aki nem szerepel a listában. Légy óvatos, mert a csoportod összes tagját eltávolíthatod.

curl https://www.loomio.com/api/user0/memberships \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "emails": [
      "person@example.com"
    ],
    "remove_absent": 1
  }'

A válasz egy objektum, amely ezt tartalmazza: {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.

Részvételi jelentés

Ugyanazokat az összesített részvételi adatokat adja vissza, amelyeket a Loomio részvételi jelentése használ.

GET /api/user0/reports

Paraméterek

Név Leírás
section A jelentés szakasza: base, users vagy countries. Személyenkénti tevékenységhez használd a users értéket
group_scope custom vagy my. A régi all értéket my értékként kezeli, mert a Felhasználói API kulcsai soha nem kapnak a teljes példányra kiterjedő hozzáférést
group_ids Vesszővel elválasztott csoportazonosítók, ha group_scope=custom. Figyelmen kívül hagyja azoknak a csoportoknak az azonosítóit, amelyekben az API felhasználója nem tag
start_month Az első figyelembe vett hónap YYYY-MM formátumban; alapértelmezés szerint a 12 hónappal ezelőtti hónap
end_month Az utolsó figyelembe vett hónap YYYY-MM formátumban; alapértelmezés szerint az aktuális hónap
interval A base szakasz időköze: day, week, month vagy year
member_type A section=users mellett állítsd delegate értékre, hogy csak a jelenlegi küldötteket adja vissza

Egy személy akkor számít küldöttnek, ha bármelyik kiválasztott csoportban aktív küldötti tagsággal rendelkezik. A hozzá tartozó darabszámokat az összes kiválasztott csoportból összesíti. A küldöttek sorait akkor is visszaadja, ha minden tevékenység darabszáma nulla. A darabszámok a szálakat, hozzászólásokat, szavazásokat, szavazatokat, következtetéseket és reakciókat fedik le; nem a szavazási részvétel arányát mutatják. A felhasználók sorai az azonosított szavazásokban kiadott, leadott és elmulasztott szavazólapok számát is tartalmazzák. A névtelen szavazások kimaradnak minden személyenkénti szavazati darabszámból. Az all_votes_cast csak akkor igaz, ha legalább egy szavazólapot kiadtak, és minden kiadott szavazólapot leadtak.

Az API ugyanazokat a csoportláthatósági szabályokat alkalmazza, mint az alkalmazásban elérhető jelentés. Egy felhasználói API-kulcs nem teheti elérhetővé olyan csoportok jelentésadatait, amelyekhez a felhasználó nem fér hozzá.

Példa

curl 'https://www.loomio.com/api/user0/reports?section=users&group_scope=custom&group_ids=123&member_type=delegate&start_month=2026-01&end_month=2026-09' \
  -H 'Authorization: Bearer YOUR_API_KEY'

A users tömb a tevékenységi adatokat tartalmazó teljes sorokat adja vissza:

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

Szavazások

Szavazás létrehozása

Hozz létre egy szavazást az API-kulcshoz tartozó felhasználó nevében.

POST /api/user0/polls

Paraméterek

Név Leírás
group_id Egész szám, nem kötelező, alapértelmezés: null. A szavazás csoportjának azonosítója. Ha megadod a discussion_id értékét, a group_id figyelmen kívül marad
discussion_id Egész szám, nem kötelező, alapértelmezés: null. Annak a beszélgetési szálnak az azonosítója, amelyhez hozzáadod ezt a szavazást
title Karakterlánc, kötelező. A szavazás címe
poll_type Karakterlánc, kötelező. Értékek: proposal, poll, count, score, ranked_choice, meeting, dot_vote
details Karakterlánc, nem kötelező. A szavazás szövege
details_format Karakterlánc, nem kötelező, alapértelmezés: md. Értékek: md vagy html
options Egyszerű lehetőségnevek karakterláncok tömbjeként. A proposal típusnál használd az agree, disagree, abstain vagy block értéket a szokásos címkék, ikonok, jelentések és kérdések megjelenítéséhez. A meeting típusnál adj meg ISO 8601 formátumú dátumot vagy dátumot és időpontot tartalmazó karakterláncokat. Más szavazástípusoknál add meg a lehetőségek neveit. Részletes lehetőségekhez használd helyette a poll_options_attributes mezőt
poll_options_attributes Az options alternatívája: a lehetőségek nevét, jelentését, kérdését, ikonját és sorrendjét tartalmazó objektumok tömbje. Lásd: Szavazás létrehozása részletes lehetőségekkel
reason_prompt Karakterlánc, nem kötelező. A szavazat indoklását kérő közös kérdés azokhoz a szavazástípusokhoz, amelyeknél nincsenek lehetőségenkénti kérdések, például poll, score és ranked_choice
stance_reason_required Karakterlánc, alapértelmezés: optional. Értékek: disabled, optional, required, required_for_disagree_or_block, required_for_block. Az utolsó kettő a disagree és block ikonokra vonatkozik. Névtelen szavazásoknál a szavazatok indoklása le van tiltva
closing_at ISO 8601 formátumú karakterlánc vagy null, alapértelmezés: null. Példa: 2026-09-01T12:00:00Z. Ha null, nem lehet szavazni, és a szavazás előkészítés alatt áll
specified_voters_only Logikai érték, nem kötelező, alapértelmezés: false. Ha true, csak a megadott emberek szavazhatnak. Ha false, a csoport minden tagja meghívót kap a szavazásra
hide_results Karakterlánc, nem kötelező, alapértelmezés: off. Értékek: off, until_vote, until_closed
shuffle_options Logikai érték, alapértelmezés: false. A lehetőségek véletlenszerű sorrendben jelennek meg a szavazóknak
anonymous Logikai érték, nem kötelező, alapértelmezés: false. Elrejti a szavazók személyazonosságát
recipient_audience group vagy null, nem kötelező, alapértelmezés: null. Ha group, az egész csoport értesítést kap
notify_on_closing_soon Karakterlánc, nem kötelező, alapértelmezés: nobody. Értékek: nobody, author, voters_uncast, voters
recipient_user_ids Az értesítendő vagy meghívandó felhasználók azonosítóinak tömbje
recipient_emails A szavazásra meghívandó emberek e-mail-címeinek tömbje
recipient_message Az e-mailes meghívóba kerülő üzenet
notify_recipients Logikai érték, alapértelmezés: false. Ha false, értesítés küldése nélkül adja hozzá az embereket. Ha true, mindenki, akit ezzel a kéréssel meghívsz, értesítő e-mailt kap

Példa

curl https://www.loomio.com/api/user0/polls \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "title": "example poll",
    "poll_type": "proposal",
    "options": [
      "agree",
      "disagree"
    ],
    "closing_at": "2026-09-01T12:00:00Z",
    "recipient_emails": [
      "person@example.com"
    ]
  }'

Szavazástervezet létrehozása sok lehetőséggel

Küldd el az összes lehetőség nevét az options tömbben. A closing_at elhagyásával előkészítés alatt álló szavazás jön létre, amelyben nem lehet szavazni; ez nem rejti el a szavazást azok elől, akik olvashatják a szálát. Amikor készen állsz a szavazatok fogadására, adj meg egy jövőbeli closing_at értéket.

Add hozzá az összes lehetőség nevét a tömbhöz:

curl https://www.loomio.com/api/user0/polls \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "title": "Meeting venue",
    "poll_type": "poll",
    "options": [
      "Town hall",
      "Library",
      "Community centre"
    ]
  }'

Szavazás létrehozása részletes lehetőségekkel

A nevek listájához használd az options mezőt, ha pedig minden lehetőséghez jelentésre, az indoklást kérő kérdésre vagy ikonra van szükség, használd a poll_options_attributes mezőt. Kérésenként egy formátumot válassz. Mindkét formátum működik egyszerű JSON-törzsben vagy egy poll objektumon belül.

A poll_options_attributes minden objektuma a következő mezőket fogadja el:

Mező Leírás
name Karakterlánc, új lehetőségnél kötelező. A szavazóknak megjelenő címke
meaning Karakterlánc, nem kötelező. Elmagyarázza, mit jelent ennek a lehetőségnek a kiválasztása
prompt Karakterlánc, nem kötelező. Az indoklást kérő kérdés, amely akkor jelenik meg, amikor ezt a lehetőséget választják ki egy proposal, count vagy check típusú szavazásban. Más szavazástípusoknál állítsd be a szavazás reason_prompt mezőjét
icon Karakterlánc, nem kötelező. A proposal, count és check típusnál használd az agree, disagree, abstain vagy block értéket
priority Egész szám. A lehetőség sorrendje, 0 értéktől kezdve. Minden lehetőséghez különböző prioritást adj meg; az időpont-egyeztetés lehetőségei ehelyett dátum szerint rendeződnek
test_operator Karakterlánc vagy null, nem kötelező. A szavazati arányra vonatkozó követelmény: a gte jelentése legalább, az lte jelentése legfeljebb. A követelmény kikapcsolásához állítsd null értékre
test_percent Egész szám, nem kötelező. A szavazati arányra vonatkozó követelmény százalékos értéke, 0 és 100 között
test_against Karakterlánc, nem kötelező. A score_percent a lehetőség részesedését vizsgálja az összes leadott pontszámból vagy pontból; a voter_percent a lehetőségre szavazókat viszonyítja az összes szavazásra jogosulthoz
id Egész szám. Meglévő lehetőség szerkesztésekor add meg; új lehetőségnél hagyd el
_destroy Logikai érték, nem kötelező. Egy meglévő lehetőség eltávolításához állítsd true értékre, és add meg a lehetőség id értékét

Hozz létre javaslatot egyéni lehetőségcímkékkel és kérdésekkel:

curl https://www.loomio.com/api/user0/polls \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "title": "Should we adopt this proposal?",
    "poll_type": "proposal",
    "stance_reason_required": "optional",
    "poll_options_attributes": [
      {
        "name": "Support",
        "meaning": "I support adopting this proposal",
        "prompt": "What do you support about it?",
        "icon": "agree",
        "priority": 0
      },
      {
        "name": "Oppose",
        "meaning": "I would prefer another approach",
        "prompt": "What would you change?",
        "icon": "disagree",
        "priority": 1
      }
    ]
  }'

Egy szokásos szavazásnál használd ugyanezt a részletes lehetőségformátumot, és állíts be közös reason_prompt értéket a szavazáshoz:

curl https://www.loomio.com/api/user0/polls \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "title": "Choose a venue",
    "poll_type": "poll",
    "reason_prompt": "Why do you prefer this venue?",
    "stance_reason_required": "optional",
    "poll_options_attributes": [
      {
        "name": "Town hall",
        "meaning": "Central, accessible venue",
        "priority": 0
      },
      {
        "name": "Library",
        "meaning": "Smaller room with no hire fee",
        "priority": 1
      }
    ]
  }'

Ezek a példák nem tartalmaznak closing_at értéket, ezért addig nem lehet szavazni, amíg be nem állítasz egy jövőbeli záró dátumot.

Szavazás lekérése

Kérj le egy szavazást az egész számként megadott azonosítójával vagy a karakterláncként megadott kulcsával.

GET /api/user0/polls/:id

Példa

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

Szavazások listázása

Listázd egy csoport szavazásait, amelyek láthatók az API-kulcshoz tartozó felhasználó számára, beleértve az önálló szavazásokat és a beszélgetéseken belüli szavazásokat is. Egy nyilvánosan látható csoport nyilvános szavazásait olyan felhasználó is listázhatja, aki nem tagja a csoportnak; a privát szavazásokhoz továbbra is csak azok a felhasználók férhetnek hozzá, akik a Loomióban is olvashatják őket. A válasz minden látható szavazás aktuális következtetését tartalmazza, így a status=closed használatával listázhatod a lezárt szavazásokat, és elolvashatod a következtetésüket, ha már megadták azt.

Ha a beszélgetések mellett a döntés állapotát is meg szeretnéd jeleníteni, kérd le ugyanannak a csoportnak a beszélgetéseit és szavazásait, a szavazásoknál használd a status=all paramétert, és párosítsd őket a topic_id értékük alapján. Kérd le az összes oldalt a limit és az offset használatával. Egy beszélgetéshez több szavazás is tartozhat, ezért válaszd ki, melyik szavazás határozza meg a megjelenített állapotot, például a legutóbb létrehozott szavazás. A nem null értékű closed_at lezárt szavazást jelöl; a null értékű closing_at piszkozatot jelez. Ha egy szavazáshoz tartozik következtetés, a current_outcome_id értéke a válasz outcomes tömbjének egyik rekordját azonosítja; párosítsd ennek a rekordnak a poll_id értékét a szavazás id értékével.

Egyetlen beszélgetés esetén a GET /api/user0/threads/:topic_id/items használatával a szál elemeit is elolvashatod. Ez a szál szavazásait és következtetéseit is visszaadja a többi elem mellett. Kérd le az összes oldalt, hogy a teljes szálat megkapd.

GET /api/user0/polls

Paraméterek

Név Leírás
group_id Egész szám, kötelező. Annak a csoportnak az azonosítója, amelynek a szavazásait listázod
status Karakterlánc, nem kötelező, alapértelmezés: active. Értékek: active, closed, all
limit Egész szám, nem kötelező, alapértelmezés: 50. Oldalméret
offset Egész szám, nem kötelező, alapértelmezés: 0. A lapozás eltolása

Korábbi paraméterek: a per és a from a limit és az offset alternatív neveként használható, és továbbra is működik.

Példa

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

Szavazás szerkesztése

Szerkessz egy szavazást az API-kulcshoz tartozó felhasználóként. Ugyanazok a jogosultságok érvényesek, mint a Loomióban: a felhasználónak jogosultsággal kell rendelkeznie az adott szavazás szerkesztéséhez.

PATCH /api/user0/polls/:id

Paraméterek

Név Leírás
title Módosított cím
details A szavazás módosított részletei
details_format md vagy html, nem kötelező, alapértelmezés: md
options A lehetőségek módosított nevei. A lehetőségek megváltoztatása a szavazás állapotától függően hatással lehet a meglévő szavazatokra
poll_options_attributes Az options alternatívája. Módosítsd a részletes lehetőségobjektumokat az id alapján, adj hozzá objektumokat id nélkül, vagy távolíts el egy lehetőséget az id és az _destroy: true megadásával. A kihagyott lehetőségek változatlanok maradnak
reason_prompt Az indoklást kérő módosított közös kérdés azokhoz a szavazástípusokhoz, amelyeknél nincsenek lehetőségenkénti kérdések
stance_reason_required Az indoklásra vonatkozó módosított követelmény; ugyanazok az értékek érvényesek, mint a szavazás létrehozásakor
closing_at ISO 8601 formátumú karakterlánc vagy null
recipient_audience group vagy null. Ha group, az egész csoport értesítést kap
recipient_user_ids Az értesítendő vagy meghívandó felhasználók azonosítóinak tömbje
recipient_emails A szavazásra meghívandó emberek e-mail-címeinek tömbje
recipient_message Az e-mailes meghívóba kerülő üzenet

Példa

curl https://www.loomio.com/api/user0/polls/123 \
  -X PATCH \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "title": "updated poll title",
    "details": "updated details",
    "details_format": "md"
  }'

Részletes lehetőségek szerkesztése

Keresd ki a lehetőségek azonosítóit a létrehozásra vagy lekérésre kapott válasz poll_options tömbjéből. Csak a módosítandó mezőket küldd el, minden meglévő lehetőség id értékével együtt:

curl https://www.loomio.com/api/user0/polls/123 \
  -X PATCH \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "poll_options_attributes": [
      {
        "id": 456,
        "meaning": "Updated explanation",
        "prompt": "What would improve this proposal?"
      },
      {
        "name": "Abstain",
        "meaning": "I leave the decision to others",
        "icon": "abstain",
        "priority": 2
      }
    ]
  }'

A lehetőségazonosítóknak a szerkesztett szavazáshoz kell tartozniuk. A szerkesztéshez jogosultság kell a szavazás szerkesztésére, és a lezárt szavazások nem szerkeszthetők. Névtelen szavazásoknál az első szavazat leadása után a lehetőségek beállításai sem módosíthatók.

Szavazás logikai törlése

Törölj logikailag egy szavazást az API-kulcshoz tartozó felhasználóként. Ez töröltként jelöli a szavazást, de megtartja a szavazás rekordját.

DELETE /api/user0/polls/:id

Példa

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

Keress az API-kulcshoz tartozó felhasználó számára látható beszélgetések, hozzászólások, szavazások, szavazatok és következtetések között. Az eredmények akkor is tartalmaznak nyilvános tartalmat, ha a felhasználó nem tagja az adott csoportnak; a privát tartalomra továbbra is a szálak szokásos láthatósági szabályai vonatkoznak.

GET /api/user0/search

Paraméterek

Név Leírás
query Keresési szöveg. Pontos és közelítő egyezések is támogatottak
group_id Az eredmények szűkítése egy látható csoportra
org_id Az eredmények szűkítése egy látható szülőcsoportra és annak látható alcsoportjaira. Közvetlen beszélgetésekhez használd a 0 értéket
type Az eredmények szűkítése egy típusra: Discussion, Comment, Poll, Stance vagy Outcome
types Az eredménytípusok vesszővel elválasztott listája
tag Az eredmények szűkítése az ezzel a címkével ellátott szálakra
author_id Az eredmények szűkítése egy szerző tartalmára. A query nélkül a szerző közelmúltbeli látható tevékenységét adja vissza
order Állítsd authored_at_desc értékre a találatok létrehozási idő szerinti rendezéséhez
curl 'https://www.loomio.com/api/user0/search?query=quarterly+planning&type=Discussion' \
  -H 'Authorization: Bearer YOUR_API_KEY'

A válasz egy search_results tömböt tartalmaz. Minden találat azonosítja az egyező rekordot és annak látható környezetét többek között a következő mezőkkel: searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at és tags. A találatra nem vonatkozó mezők értéke null.

Szálak

Szálak listázása

Listázd az API-kulcshoz tartozó felhasználó számára látható beszélgetési és szavazási szálakat a legutóbbi aktivitás szerint rendezve. A szál azonosítója a topic_id értéke.

GET /api/user0/threads

Paraméterek

Név Leírás
limit Egész szám, opcionális, alapértelmezett értéke 50. Oldalméret
offset Egész szám, opcionális, alapértelmezett értéke 0. Eltolás a lapozáshoz

Példa

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

Szál olvasása

Olvasd el a szálat, annak rendezett eseményfolyamát vagy teljes látható Markdown-dokumentumát.

GET /api/user0/threads/:topic_id

GET /api/user0/threads/:topic_id/items

GET /api/user0/threads/:topic_id/markdown

Az items végpont a következő lapozási paramétereket fogadja el:

Név Leírás
limit Egész szám, opcionális, alapértelmezett értéke 50, legfeljebb 500. Oldalméret
offset Egész szám, opcionális, alapértelmezett értéke 0. Eltolás a lapozáshoz

Példa

GET https://www.loomio.com/api/user0/threads/<topic_id>
GET https://www.loomio.com/api/user0/threads/<topic_id>/items?limit=50&offset=0
GET https://www.loomio.com/api/user0/threads/<topic_id>/markdown

Az items végpont az eseményfolyam egy oldalát adja vissza növekvő sorszám szerint rendezve, beleértve a látható hozzászólásokat, szavazásokat, szavazatokat és következtetéseket. A meta.total a szál összes elemének száma. A teljes eseményfolyam elolvasásához kérd le a további oldalakat. A markdown végpont a teljes látható szálat egyetlen Markdown-dokumentumként adja vissza. A szavazatok indoklásai csak akkor szerepelnek benne, ha láthatók az API-kulcshoz tartozó felhasználó számára.

Minden szálvégpont ugyanazokat a jogosultságokat érvényesíti, mint a Loomio felülete. Az API-kulcs nem biztosít hozzáférést olyan szálhoz, amelyet a felhasználó egyébként nem nyithat meg.

Webhookok

A felhasználói API kérésalapú: az integráció akkor hívja meg a Loomiót, amikor adatot szeretne olvasni vagy módosítani. A csoport webhookja lehetővé teszi az ellenkező irányú adatküldést. A Loomio a kiválasztott csoporteseményeket a bekövetkezésükkor elküldi a végpontodra, így az integrációnak nem kell rendszeresen lekérdeznie a REST API-t a változásokért.

A webhookokat csoportonként kell beállítani, és ehhez csoportadminisztrátori jogosultság szükséges. A Loomio felületén így kezelheted őket:

  1. Nyisd meg a csoportot.
  2. Nyisd meg a csoport menüjét, és válaszd ki a Csevegési integrációk lehetőséget.
  3. Add hozzá a végpontod által fogadott üzenetformátumnak megfelelő integrációt. Általános célú végponthoz használd a Mattermost/Markdown formátumot.
  4. Adj meg egy nevet és a cél URL-jét.
  5. Válaszd ki azokat az eseményeket, amelyeket a Loomio automatikusan küldjön el.
  6. Mentsd el az integrációt, majd a Kapcsolat tesztelése lehetőséggel küldj egy tesztüzenetet.

Használj HTTPS-célcímet nem kitalálható URL-lel. A Loomio megköveteli, hogy a cél nyilvános címre oldódjon fel, és blokkolja a helyi vagy privát hálózati címekre irányuló kéréseket.

Az ágensek és más integrációk az alább ismertetett, Bearer-hitelesítést használó chatbot-végpontokon keresztül is kezelhetik a webhookokat. Az erőforrás neve a Loomio csevegési integrációival való kompatibilitás miatt chatbots, de általános kimenő webhookokat is jelöl.

Webhookok listázása

Visszaadja a csoporthoz beállított csevegési integrációkat. Az API-kulcshoz tartozó felhasználónak a csoport adminisztrátorának kell lennie. A válasz cél-URL-eket tartalmaz, ezért nem tehető hozzáférhetővé a csoport egyszerű tagjai számára.

GET /api/user0/chatbots?group_id=123

Név Leírás
group_id Egész szám, kötelező. Annak a csoportnak az azonosítója, amelynek webhookjait listázni szeretnéd
limit Egész szám, opcionális, alapértelmezett értéke 50, legfeljebb 500. Oldalméret
offset Egész szám, opcionális, alapértelmezett értéke 0. Eltolás a lapozáshoz
curl 'https://www.loomio.com/api/user0/chatbots?group_id=123&limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_API_KEY'

A válasz a chatbots egy oldalát tartalmazza növekvő integrációazonosító szerint rendezve, a meta.total mezőben pedig a csoport összes integrációjának számát. Minden integráció a következő mezőket tartalmazza:

Mező Leírás
id A frissítéshez és törléshez használt integrációazonosító
group_id Az eseményeket fogadó csoport
name Az integráció adminisztrációhoz használt neve
kind Kimenő webhook esetén webhook, Matrix-integráció esetén matrix
webhook_kind Üzenetformátum: markdown, slack, discord, microsoft vagy webex
server A cél URL-je
event_kinds Automatikusan elküldött események
notification_only Az üzenetek csak az értesítés címsorát tartalmazzák-e

Webhook létrehozása

POST /api/user0/chatbots

curl https://www.loomio.com/api/user0/chatbots \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "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
  }'

Az API-kulcshoz tartozó felhasználónak a group_id által megadott csoport adminisztrátorának kell lennie. Mentés előtt a rendszer ellenőrzi, hogy a cél nyilvános URL-e.

Webhook frissítése

PATCH /api/user0/chatbots/:id

Küldd el a módosítani kívánt mezőket. A webhook nem helyezhető át másik csoportba a group_id módosításával.

curl https://www.loomio.com/api/user0/chatbots/456 \
  -X PATCH \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "name": "Planning events",
    "event_kinds": [
      "new_discussion",
      "outcome_created"
    ]
  }'

Webhook célcímének tesztelése

Küldj Markdown-kompatibilis tesztüzenetet a célcímre a beállítások mentése előtt vagy után.

POST /api/user0/chatbots/check

curl https://www.loomio.com/api/user0/chatbots/check \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  --json '{
    "group_id": 123,
    "server": "https://hooks.example.org/loomio/unguessable-token"
  }'

Webhook törlése

DELETE /api/user0/chatbots/:id

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

A konfiguráció törlése leállítja a további kézbesítéseket. A Loomio-csoport tartalmát nem törli.

Eseménytípusok

Egy webhook a következő eseménytípusokra iratkozhat fel:

Esemény Mikor történik a küldés
new_discussion Beszélgetés indul
discussion_edited Beszélgetést szerkesztenek
new_comment Hozzászólás jön létre
poll_created Szavazás indul
poll_edited Szavazást szerkesztenek
poll_closing_soon Közeledik a szavazás lezárásának időpontja
poll_expired Elérkezik a szavazás lezárásának időpontja
poll_closed_by_user Valaki kézzel lezár egy szavazást
poll_reopened Szavazást újranyitnak
outcome_created Következtetést tesznek közzé
outcome_updated Következtetést frissítenek
outcome_review_due Esedékessé válik egy következtetés felülvizsgálata
stance_created Szavazatot adnak le
stance_updated Szavazatot módosítanak

A webhook egy csoporthoz tartozik, és ebből a csoportból kapja meg azokat az eseményeket, amelyekre feliratkozott. Megosztáskor vagy egyes értesítések küldésekor az emberek külön is kiválaszthatják az integrációt, akkor is, ha a megfelelő automatikus esemény nincs kiválasztva.

HTTP-kézbesítés

A Loomio aszinkron HTTP POST kérést küld a beállított URL-re ezzel a fejléccel:

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

A kérés időkorlátja öt másodperc. A 2xx válasz sikeresnek számít, beleértve a 204 No Content választ is. A webhookot fogadó szolgáltatások válaszoljanak gyorsan, a hosszabb feladatokat aszinkron módon dolgozzák fel, és kezeljék az ismétlődő vagy eltérő sorrendben érkező kézbesítéseket.

A Loomio jelenleg nem ad hozzá webhook-aláírást, közös titkot tartalmazó fejlécet, eseményazonosítót vagy kézbesítési azonosítót. Kezeld a teljes cél-URL-t hitelesítő adatként, ne tedd nyilvánossá, és helyezz el benne egy kitalálhatatlan tokent, ha a fogadó szolgáltatás ezt támogatja. Ha stabil, géppel olvasható eseménysémára vagy aláírt kézbesítésre van szükséged, használd a webhookot változásértesítésként, és kérd le az aktuális rekordokat a hitelesített Felhasználói API-n keresztül.

Adatformátumok

A webhookok által küldött adatok csevegőszolgáltatásokban való megjelenítésre szánt üzenetek. Nem teljes, szerializált Loomio-rekordok. Az üzenetben található hivatkozások azonosítják az érintett Loomio-tartalmat; az integráció a Felhasználói API-n keresztül kérhet további adatokat, ha strukturált formában van szüksége az aktuális állapotra.

Integrációs formátum Fő JSON-mezők
Mattermost/Markdown text, icon_url, username
Slack text
Discord content, körülbelül 1900 karakterre korlátozva
Microsoft Teams @type, @context, themeColor, text, sections
Webex markdown

Az általános Markdown-formátum például ilyen szerkezetű törzset küld:

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

Az üzenet pontos szövege az eseménytől, a csoport nyelvi beállításától, a csak értesítést küldő beállítástól és a Loomio verziójától függ. A fogadó szolgáltatások a kiválasztott formátum dokumentált legfelső szintű mezőire támaszkodjanak a mondatok szövegének elemzése helyett.

Ezt az oldalt gépi fordítással készítettük. Ha egy szó hibás vagy nem egyértelmű, írj a contact@loomio.org címre, és kijavítjuk.