Дакументацыя API карыстальніка Loomio

/api/b2 — API для інтэграцый з Loomio, якія дзейнічаюць ад імя карыстальніка. Ён выкарыстоўвае ключ API ўліковага запісу, і кожнае дзеянне выконваецца ад імя гэтага карыстальніка.

Аперацыі з групамі залежаць ад удзелу ў групах і правоў карыстальніка, якому належыць ключ API. Правы адміністратара сервера не пашыраюць доступ ключа API да груп або іх змесціва. Для адміністравання сервера выкарыстоўвайце API сервера.

Выкарыстоўвайце ключ API ўліковага запісу Loomio, ад імя якога будуць выконвацца дзеянні. Асобны ўліковы запіс бота падыходзіць для інтэграцыі, якой не трэба атрымліваць запрашэнні да апытанняў або апавяшчэнні.

Карыстальнікі, якія ўвайшлі ў сістэму, могуць знайсці свой ключ API і ідэнтыфікатары груп на старонцы доступу да API.

Перадавайце ключ API ў загалоўку Authorization: Bearer. Ключы API ў радку запыту адхіляюцца, бо URL-адрасы могуць захоўвацца ў журналах проксі-сервераў і доступу.

Змена спосабу аўтэнтыфікацыі

Раней ключ API можна было перадаваць у параметры URL-адраса api_key. Запыты з ?api_key=YOUR_API_KEY больш не працуюць. Замест гэтага выкарыстоўвайце HTTP-загаловак Authorization:

Authorization: Bearer YOUR_API_KEY

У прыкладах выкарыстоўваюцца YOUR_API_KEY, ідэнтыфікатар групы 123 і https://www.loomio.com/. Замяніце іх сваім ключом API, ідэнтыфікатарам групы і URL-адрасам вашага сервера Loomio.

Адказы API карыстальніка маюць складаны фармат: разам з асноўнымі запісамі вяртаюцца звязаныя запісы, напрыклад тэмы, групы, карыстальнікі, апытанні і рэакцыі. Гэта дазваляе кліенту запоўніць лакальнае сховішча запісаў адным запытам, але аб'ём даных можа быць большым, чым патрэбна простай інтэграцыі.

Перадайце compact=1, каб выключыць аб'ёмныя звязаныя запісы тэм, груп, бацькоўскіх груп, удзелу ў групах, рэакцый, тэгаў і перакладаў. Асноўныя запісы і звязаныя запісы, неабходныя для разумення іх змесціва, застануцца ў адказе.

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

Для дакладнейшага кіравання перадайце exclude_types з тыпамі запісаў у адзіночным ліку, падзеленымі прабеламі. Напрыклад, exclude_types=group reaction выключае звязаныя групы і рэакцыі. Распаўсюджаныя значэнні: topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome і topic_item. Выключэнні тычацца звязаных запісаў, а не асноўнага рэсурсу, запытанага праз гэты адрас API.

Адказы з калекцыямі ўтрымліваюць meta.total, калі можна вызначыць дакладны памер калекцыі. Агульная колькасць вылічаецца да прымянення limit і offset. Адрасы API, якія наўмысна вяртаюць абмежаваны набор вынікаў, напрыклад пошук, не ўключаюць meta.total замест вяртання null.

Агляд адрасоў API

Метад Адрас API Прызначэнне
GET /api/b2/groups Атрымаць спіс груп карыстальніка, якому належыць ключ API
GET /api/b2/groups/:id_or_key_or_handle Атрымаць даступную групу
GET /api/b2/reports Стварыць справаздачу аб удзеле
GET /api/b2/search Шукаць даступныя абмеркаванні, каментарыі, апытанні, галасы і высновы
POST /api/b2/discussions Стварыць абмеркаванне
GET /api/b2/discussions/:id Атрымаць абмеркаванне
GET /api/b2/discussions Атрымаць спіс абмеркаванняў у групе
PATCH /api/b2/discussions/:id Рэдагаваць абмеркаванне
DELETE /api/b2/discussions/:id Мякка выдаліць абмеркаванне
GET /api/b2/threads Атрымаць спіс даступных нітак абмеркаванняў і асобных апытанняў
GET /api/b2/threads/:topic_id Атрымаць нітку
GET /api/b2/threads/:topic_id/items Атрымаць элементы ніткі па парадку
GET /api/b2/threads/:topic_id/markdown Атрымаць поўную нітку ў фармаце Markdown
POST /api/b2/comments Стварыць каментарый або адказ
PATCH /api/b2/comments/:id Рэдагаваць каментарый
DELETE /api/b2/comments/:id Мякка выдаліць каментарый
POST /api/b2/polls Стварыць апытанне
GET /api/b2/polls/:id Атрымаць апытанне
GET /api/b2/polls Атрымаць спіс апытанняў у групе
PATCH /api/b2/polls/:id Рэдагаваць апытанне
DELETE /api/b2/polls/:id Мякка выдаліць апытанне
GET /api/b2/memberships Атрымаць спіс удзельнікаў групы
POST /api/b2/memberships Дадаць удзельнікаў і, пры неабходнасці, выдаліць тых, каго няма ў спісе
GET /api/b2/chatbots Атрымаць спіс інтэграцый з чатам і вэбхукаў групы
POST /api/b2/chatbots Стварыць інтэграцыю з чатам або вэбхук
PATCH /api/b2/chatbots/:id Абнавіць інтэграцыю з чатам або вэбхук
DELETE /api/b2/chatbots/:id Выдаліць інтэграцыю з чатам або вэбхук
POST /api/b2/chatbots/check Адправіць тэставы запыт для праверкі падключэння вэбхука

Групы

Спіс груп

Вяртае групы, у якіх карыстальнік, якому належыць ключ API, мае актыўны ўдзел.

GET /api/b2/groups

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

Адказ утрымлівае ўсе адпаведныя запісы ў масіве groups без падзелу на старонкі. Ён уключае бацькоўскія групы і падгрупы, у тым ліку групы, падпіска якіх цяпер неактыўная. Правярайце поле enabled, калі інтэграцыя павінна працаваць толькі з актыўнымі групамі.

Асноўныя палі групы:

Поле Апісанне
id Лічбавы ідэнтыфікатар групы, які выкарыстоўваюць іншыя адрасы API карыстальніка
key Сталы кароткі ключ, які выкарыстоўваецца ў URL-адрасах Loomio
handle Зразумелы людзям ідэнтыфікатар групы
name Назва групы
full_name Назва групы з улікам яе бацькоўскай групы
parent_id Лічбавы ідэнтыфікатар бацькоўскай групы для падгрупы, інакш null
enabled Ці актыўныя група і яе падпіска
memberships_count Колькасць актыўных удзельнікаў і тых, хто чакае далучэння
accepted_memberships_count Колькасць прынятых запрашэнняў да ўдзелу
pending_memberships_count Колькасць запрашэнняў, якія чакаюць адказу
admin_memberships_count Колькасць адміністратараў групы
delegates_count Колькасць дэлегатаў
discussions_count Колькасць абмеркаванняў непасрэдна ў групе
polls_count Колькасць апытанняў непасрэдна ў групе
subgroups_count Колькасць падгруп

Адказ можа таксама ўтрымліваць дадатковыя налады групы, звязаныя запісы бацькоўскай групы і звесткі пра ўдзел карыстальніка API ў групах. Кліенты павінны ігнараваць палі, якія ім не патрэбныя.

Атрымаць групу

Вяртае адну групу, даступную карыстальніку, якому належыць ключ API.

GET /api/b2/groups/:id_or_key_or_handle

Ідэнтыфікатарам можа быць лічбавы ID групы, яе ключ або кароткая назва.

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

Адказ утрымлівае групу ў масіве groups з тымі ж палямі, што і адрас API для спісу груп. Запыт групы, да якой карыстальнік з ключом API не мае доступу, вяртае памылку правоў доступу.

Вэбхукі

API карыстальніка працуе праз запыты: інтэграцыя звяртаецца да Loomio, калі хоча прачытаць або змяніць даныя. Вэбхук групы перадае даныя ў адваротным кірунку. Loomio адпраўляе выбраныя падзеі групы на ваш адрас API адразу пасля іх узнікнення, таму інтэграцыі не трэба рэгулярна апытваць REST API пра змены.

Вэбхукі наладжваюцца асобна для кожнай групы. Для гэтага патрэбныя правы адміністратара групы. Кіраваць імі можна праз інтэрфейс Loomio:

  1. Адкрыйце групу.
  2. Адкрыйце меню групы і выберыце Інтэграцыі з чатам.
  3. Дадайце інтэграцыю з фарматам даных, які прымае ваш адрас API. Для адраса агульнага прызначэння выкарыстоўвайце фармат Mattermost/Markdown.
  4. Увядзіце назву і URL-адрас атрымальніка.
  5. Выберыце падзеі, якія Loomio павінен адпраўляць аўтаматычна.
  6. Захавайце інтэграцыю і націсніце Тэставае падключэнне, каб адправіць тэставае паведамленне.

Выкарыстоўвайце HTTPS-адрас атрымальніка, які немагчыма адгадаць. Loomio патрабуе, каб адрас вёў да публічнага IP-адраса, і блакуе запыты да лакальных або прыватных сеткавых адрасоў.

Агенты і іншыя інтэграцыі могуць кіраваць вэбхукамі праз апісаныя ніжэй адрасы API чат-ботаў з аўтэнтыфікацыяй Bearer. Рэсурс называецца chatbots дзеля сумяшчальнасці з інтэграцыямі Loomio з чатам, але ён таксама прадстаўляе звычайныя выходныя вэбхукі.

Спіс вэбхукаў

Вяртае інтэграцыі з чатам, наладжаныя для групы. Карыстальнік, якому належыць ключ API, павінен быць адміністратарам гэтай групы. Адказ утрымлівае URL-адрасы атрымальнікаў, таму яго нельга паказваць звычайным удзельнікам групы.

GET /api/b2/chatbots?group_id=123

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

Адказ утрымлівае масіў chatbots з наступнымі палямі:

Поле Апісанне
id ID інтэграцыі для абнаўлення і выдалення
group_id Група, падзеі якой перадаюцца
name Назва інтэграцыі для адміністравання
kind webhook для выходнага вэбхука або matrix для інтэграцыі з Matrix
webhook_kind Фармат даных: markdown, slack, discord, microsoft або webex
server URL атрымальніка
event_kinds Падзеі, якія адпраўляюцца аўтаматычна
notification_only Ці змяшчаюць паведамленні толькі загаловак апавяшчэння

Стварыць вэбхук

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, патрэбныя правы адміністратара групы group_id. Перад захаваннем правяраецца, ці вядзе URL атрымальніка на агульнадаступны адрас.

Абнавіць вэбхук

PATCH /api/b2/chatbots/:id

Перадайце палі, якія трэба змяніць. Змяніць групу вэбхука праз поле 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

Праверыць адрас вэбхука

Адпраўце на адрас тэставае паведамленне ў фармаце, сумяшчальным з Markdown. Гэта можна зрабіць да або пасля захавання канфігурацыі.

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

Выдаліць вэбхук

DELETE /api/b2/chatbots/:id

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

Пасля выдалення канфігурацыі новыя паведамленні больш не адпраўляюцца. Змесціва групы ў Loomio не выдаляецца.

Тыпы падзей

Вэбхук можа атрымліваць паведамленні пра наступныя тыпы падзей:

Падзея Калі адпраўляецца
new_discussion Пачынаецца абмеркаванне
discussion_edited Рэдагуецца абмеркаванне
new_comment Ствараецца каментарый
poll_created Пачынаецца апытанне
poll_edited Рэдагуецца апытанне
poll_closing_soon Набліжаецца час закрыцця апытання
poll_expired Надыходзіць час закрыцця апытання
poll_closed_by_user Апытанне закрываюць уручную
poll_reopened Апытанне адкрываюць паўторна
outcome_created Публікуецца выснова
outcome_updated Абнаўляецца выснова
outcome_review_due Надыходзіць час перагледзець выснову
stance_created Падаецца голас
stance_updated Змяняецца голас

Вэбхук належыць адной групе і атрымлівае паведамленні пра выбраныя падзеі гэтай групы. Людзі таксама могуць самі выбраць інтэграцыю, калі дзеляцца змесцівам або адпраўляюць некаторыя апавяшчэнні, нават калі адпаведная аўтаматычная падзея не выбрана.

Дастаўка праз HTTP

Loomio асінхронна адпраўляе HTTP-запыт POST на зададзены URL з наступным загалоўкам:

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

Час чакання адказу складае пяць секунд. Любы адказ 2xx, у тым ліку 204 No Content, лічыцца паспяховым. Сэрвісам, якія прымаюць вэбхукі, варта адказваць хутка, выконваць працяглую апрацоўку асінхронна і ўлічваць магчымасць паўторнай дастаўкі або дастаўкі не ў парадку адпраўкі.

Цяпер Loomio не дадае подпіс вэбхука, загаловак з агульным сакрэтам, ID падзеі або ID дастаўкі. Лічыце поўны URL атрымальніка ўліковымі данымі і не публікуйце яго. Калі сэрвіс-атрымальнік падтрымлівае гэта, уключыце ў URL токен, які немагчыма адгадаць. Калі патрэбная стабільная схема падзей для машыннай апрацоўкі або дастаўка з подпісам, выкарыстоўвайце вэбхук як апавяшчэнне пра змену, а актуальныя запісы атрымлівайце праз API карыстальніка з аўтэнтыфікацыяй.

Фарматы даных

Даныя вэбхукаў — гэта паведамленні для чат-сэрвісаў, а не поўныя серыялізаваныя запісы Loomio. Спасылкі ў паведамленні паказваюць на адпаведнае змесціва ў Loomio. Калі інтэграцыі патрэбныя структураваныя актуальныя даныя, яна можа атрымаць іх праз API карыстальніка.

Фармат інтэграцыі Асноўныя палі JSON
Mattermost/Markdown text, icon_url, username
Slack text
Discord content, не больш за прыкладна 1 900 сімвалаў
Microsoft Teams @type, @context, themeColor, text, sections
Webex markdown

Напрыклад, паведамленне ў агульным фармаце Markdown мае такую структуру:

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

Дакладны тэкст паведамлення залежыць ад падзеі, мовы групы, налады адпраўкі толькі загалоўка апавяшчэння і версіі Loomio. Пры апрацоўцы абапірайцеся на задакументаваныя палі верхняга ўзроўню выбранага фармату, а не на фармулёўкі сказаў.

Шукайце абмеркаванні, каментарыі, апытанні, галасы і высновы, даступныя карыстальніку з ключом API. Вынікі ўключаюць агульнадаступнае змесціва, нават калі гэты карыстальнік не ўваходзіць у адпаведную групу. Доступ да прыватнага змесціва вызначаецца звычайнымі правіламі бачнасці тэм.

GET /api/b2/search

Параметры

Назва Апісанне
query Тэкст для пошуку. Падтрымліваюцца дакладныя і прыблізныя супадзенні
group_id Абмежаваць вынікі адной даступнай групай
org_id Абмежаваць вынікі даступнай бацькоўскай групай і яе даступнымі падгрупамі. Для прамых абмеркаванняў выкарыстоўвайце 0
type Абмежаваць вынікі адным тыпам: Discussion, Comment, Poll, Stance або Outcome
types Спіс тыпаў вынікаў, падзеленых коскамі
tag Абмежаваць вынікі тэмамі з гэтым тэгам
author_id Абмежаваць вынікі змесцівам аднаго аўтара. Без query вяртаюцца апошнія даступныя дзеянні гэтага аўтара
order Задайце authored_at_desc, каб упарадкаваць адпаведнае змесціва паводле часу стварэння
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discussion'

Адказ змяшчае масіў search_results. Кожны вынік вызначае знойдзены запіс і яго даступны кантэкст праз палі, у тым ліку searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at і tags. Палі, якія не датычацца выніку, маюць значэнне null.

Справаздача аб удзеле

Вяртае зводныя даныя аб удзеле, якія выкарыстоўваюцца ў справаздачы Loomio аб удзеле.

GET /api/b2/reports

Параметры

Назва Апісанне
section Раздзел справаздачы: base, users або countries. Выкарыстоўвайце users для даных аб дзеяннях асобных людзей
group_scope custom або my. Устарэлае значэнне all разглядаецца як my, бо ключы API карыстальніка не даюць доступу да даных усяго асобніка Loomio
group_ids ID груп, падзеленыя коскамі, калі зададзена group_scope=custom. ID груп, у якіх карыстальнік з ключом API не мае членства, ігнаруюцца
start_month Першы месяц перыяду ў фармаце YYYY-MM; па змаўчанні — месяц 12 месяцаў таму
end_month Апошні месяц перыяду ў фармаце YYYY-MM; па змаўчанні — бягучы месяц
interval Інтэрвал для раздзела base: day, week, month або year
member_type Задайце delegate разам з section=users, каб атрымаць даныя толькі пра дзейных дэлегатаў

Статус дэлегата маюць людзі з актыўным членствам у якасці дэлегата ў любой з выбраных груп. Іх паказчыкі сумуюцца па ўсіх выбраных групах. Радкі дэлегатаў вяртаюцца, нават калі ўсе паказчыкі актыўнасці роўныя нулю. Падлічваюцца тэмы, каментарыі, апытанні, галасы, высновы і рэакцыі; гэтыя паказчыкі не з'яўляюцца доляй удзелу ў галасаваннях. Радкі карыстальнікаў таксама ўключаюць колькасць выдадзеных бюлетэняў для паіменнага галасавання, пададзеных галасоў і бюлетэняў без пададзенага голасу. Ананімныя апытанні не ўключаюцца ў паказчыкі галасавання асобных людзей. all_votes_cast мае значэнне true, толькі калі быў выдадзены хаця б адзін бюлетэнь і па кожным выдадзеным бюлетэні быў пададзены голас.

API прымяняе тыя ж правілы бачнасці груп, што і справаздача ў Loomio. Ключ API карыстальніка не дае доступу да даных справаздачы па групах, да якіх гэты карыстальнік не мае доступу.

Прыклад

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 змяшчае поўныя радкі з данымі аб актыўнасці:

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

Стварыць абмеркаванне

Стварыце абмеркаванне ад імя карыстальніка, якому належыць ключ API.

POST /api/b2/discussions

Параметры

Назва Апісанне
group_id Група, у якой будзе створана тэма
title Назва тэмы, абавязковая
description Кантэкст тэмы, неабавязковы
description_format md або html, неабавязковы, па змаўчанні md
recipient_audience group або null. Калі выбрана group, уся група атрымае апавяшчэнне пра новую тэму
recipient_user_ids Масіў ID карыстальнікаў, якіх трэба апавясціць або запрасіць да тэмы
recipient_emails Масіў адрасоў электроннай пошты людзей, якіх трэба запрасіць да тэмы
recipient_message Паведамленне для электроннага запрашэння

Прыклад

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

Атрымаць абмеркаванне

Атрымайце абмеркаванне па яго лікавым ID або тэкставым ключы.

GET /api/b2/discussions/:id

Прыклад

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

Спіс абмеркаванняў

Атрымайце спіс абмеркаванняў у групе, даступных карыстальніку, якому належыць ключ API. У публічнай групе людзі, якія не ўваходзяць у яе, могуць атрымаць спіс публічных абмеркаванняў. Прыватныя абмеркаванні даступныя толькі тым, хто можа чытаць іх у Loomio.

GET /api/b2/discussions

Параметры

Назва Апісанне
group_id Цэлы лік, абавязковы. ID групы, абмеркаванні якой трэба атрымаць
status Радок, неабавязковы, па змаўчанні open. Значэнні: open, closed, all
limit Цэлы лік, неабавязковы, па змаўчанні 50. Памер старонкі
offset Цэлы лік, неабавязковы, па змаўчанні 0. Зрух для пагінацыі

Для сумяшчальнасці per і from прымаюцца як альтэрнатыўныя назвы для limit і offset і будуць працаваць надалей.

Прыклад

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

Спіс тэм

Атрымайце спіс тэм абмеркаванняў і апытанняў, даступных карыстальніку, якому належыць ключ API. Тэмы ўпарадкаваны паводле апошняй актыўнасці. ID тэмы — гэта яе topic_id.

GET /api/b2/threads

Параметры

Назва Апісанне
limit Цэлы лік, неабавязковы, па змаўчанні 50. Памер старонкі
offset Цэлы лік, неабавязковы, па змаўчанні 0. Зрух для пагінацыі

Прыклад

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

Прачытаць тэму

Прачытайце тэму, упарадкаваны паток яе падзей або поўны даступны дакумент у фармаце Markdown.

GET /api/b2/threads/:topic_id

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

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

Прыклад

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 вяртае ўпарадкаваны паток падзей, у тым ліку даступныя каментары, апытанні, галасы і высновы. Канчатковы пункт markdown вяртае ўсю даступную тэму як адзін дакумент Markdown. Прычыны галасавання ўключаюцца толькі тады, калі яны даступныя карыстальніку, якому належыць ключ API.

Для ўсіх канчатковых пунктаў тэм дзейнічаюць тыя ж правы доступу, што і ў інтэрфейсе Loomio. Ключ API не дае доступу да тэмы, якую карыстальнік звычайна не можа адкрыць.

Рэдагаваць абмеркаванне

Адрэдагуйце абмеркаванне ад імя карыстальніка, якому належыць ключ API. Дзейнічаюць тыя ж правы, што і ў Loomio: гэты карыстальнік павінен мець права рэдагаваць абмеркаванне.

PATCH /api/b2/discussions/:id

Параметры

Назва Апісанне
title Абноўленая назва
description Абноўлены кантэкст
description_format md або html, неабавязковы, па змаўчанні md
recipient_audience group або null. Калі выбрана group, уся група атрымае апавяшчэнне пра змены
recipient_user_ids Масіў ID карыстальнікаў, якіх трэба апавясціць або запрасіць да тэмы
recipient_emails Масіў адрасоў электроннай пошты людзей, якіх трэба запрасіць да тэмы
recipient_message Паведамленне для электроннага запрашэння

Прыклад

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

Мякка выдаліць абмеркаванне

Мякка выдаліце абмеркаванне ад імя карыстальніка, якому належыць ключ API. Абмеркаванне будзе пазначана як выдаленае, але яго запіс застанецца.

DELETE /api/b2/discussions/:id

Прыклад

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

Стварыць каментар

Стварыце каментар у абмеркаванні ад імя карыстальніка, якому належыць ключ API.

POST /api/b2/comments

Параметры

Назва Апісанне
discussion_id Цэлы лік, абавязковы. ID абмеркавання, да якога трэба дадаць каментар
body Тэкст каментара, абавязковы, калі няма далучанага файла
body_format md або html, неабавязковы, па змаўчанні md

Прыклад

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

Рэдагаваць каментар

Адрэдагуйце каментар ад імя карыстальніка, якому належыць ключ API. Дзейнічаюць тыя ж правы, што і ў Loomio: гэты карыстальнік павінен мець права рэдагаваць каментар.

PATCH /api/b2/comments/:id

Параметры

Назва Апісанне
body Абноўлены тэкст каментара
body_format md або html, неабавязковы, па змаўчанні md

Прыклад

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

Мякка выдаліць каментар

Мякка выдаліце каментар ад імя карыстальніка, якому належыць ключ API. Тэкст каментара будзе схаваны, але яго запіс застанецца.

DELETE /api/b2/comments/:id

Прыклад

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

Стварыць апытанне

Стварыце апытанне ад імя карыстальніка, якому належыць ключ API.

POST /api/b2/polls

Параметры

Назва Апісанне
group_id Цэлы лік, неабавязковы, па змаўчанні null. Ідэнтыфікатар групы для апытання. Калі перададзены discussion_id, значэнне group_id ігнаруецца
discussion_id Цэлы лік, неабавязковы, па змаўчанні null. Ідэнтыфікатар абмеркавання, у якое трэба дадаць апытанне
title Радок, абавязковы. Назва апытання
poll_type Радок, абавязковы. Значэнні: proposal, poll, count, score, ranked_choice, meeting, dot_vote
details Радок, неабавязковы. Тэкст апісання апытання
details_format Радок, неабавязковы, па змаўчанні md. Значэнні: md або html
options Масіў радкоў. Калі poll_type мае значэнне proposal, дапушчальныя значэнні: agree, disagree, abstain, block. Калі poll_type мае значэнне meeting, укажыце дату або дату і час у фармаце ISO 8601. Для ўсіх іншых тыпаў апытання падыходзіць любы радок
closing_at Радок у фармаце ISO 8601 або null, па змаўчанні null. Прыклад: 2026-09-01T12:00:00Z. Пры значэнні null галасаванне адключана, а апытанне лічыцца незавершаным
specified_voters_only Лагічнае значэнне, неабавязковае, па змаўчанні false. Пры значэнні true галасаваць могуць толькі ўказаныя людзі. Пры значэнні false запрашэнне прагаласаваць атрымаюць усе ў групе
hide_results Радок, неабавязковы, па змаўчанні off. Значэнні: off, until_vote, until_closed
shuffle_options Лагічнае значэнне, па змаўчанні false. Паказваць варыянты ўдзельнікам галасавання ў выпадковым парадку
anonymous Лагічнае значэнне, неабавязковае, па змаўчанні false. Хаваць асобы ўдзельнікаў галасавання
recipient_audience group або null, неабавязковае, па змаўчанні null. Пры значэнні group апавяшчэнне атрымае ўся група
notify_on_closing_soon Радок, неабавязковы, па змаўчанні nobody. Значэнні: nobody, author, undecided_voters, voters
recipient_user_ids Масіў ідэнтыфікатараў карыстальнікаў, якіх трэба апавясціць або запрасіць
recipient_emails Масіў адрасоў электроннай пошты людзей, якіх трэба запрасіць прагаласаваць
recipient_message Паведамленне для запрашэння па электроннай пошце
notify_recipients Лагічнае значэнне, па змаўчанні false. Пры значэнні false людзі будуць дададзены без адпраўкі апавяшчэнняў. Пры значэнні true усе запрошаныя праз гэты запыт атрымаюць апавяшчэнне па электроннай пошце

Прыклад

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

Атрымаць апытанне

Атрымайце апытанне па яго лікавым ідэнтыфікатары або радковым ключы.

GET /api/b2/polls/:id

Прыклад

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

Спіс апытанняў

Атрымайце спіс апытанняў групы, бачных карыстальніку, якому належыць ключ API. У агульнадаступнай групе людзі, якія не ўваходзяць у яе, могуць атрымаць спіс агульнадаступных апытанняў. Прыватныя апытанні даступныя толькі тым, хто можа праглядаць іх у Loomio. Адказ змяшчае бягучую выснову для кожнага бачнага апытання, таму праз status=closed можна атрымаць спіс прапаноў з прынятай высновай.

GET /api/b2/polls

Параметры

Назва Апісанне
group_id Цэлы лік, абавязковы. Ідэнтыфікатар групы, апытанні якой трэба атрымаць
status Радок, неабавязковы, па змаўчанні active. Значэнні: active, closed, all
limit Цэлы лік, неабавязковы, па змаўчанні 50. Памер старонкі
offset Цэлы лік, неабавязковы, па змаўчанні 0. Зрух для разбіўкі на старонкі

Для сумяшчальнасці per і from прымаюцца як альтэрнатыўныя назвы для limit і offset і будуць працаваць надалей.

Прыклад

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

Рэдагаваць апытанне

Рэдагуйце апытанне ад імя карыстальніка, якому належыць ключ API. Дзейнічаюць тыя ж правы, што і ў Loomio: карыстальніку павінна быць дазволена рэдагаваць гэтае апытанне.

PATCH /api/b2/polls/:id

Параметры

Назва Апісанне
title Абноўленая назва
details Абноўленае апісанне апытання
details_format md або html, неабавязковае, па змаўчанні md
options Абноўленыя назвы варыянтаў. Змена варыянтаў можа паўплываць на існыя галасы ў залежнасці ад стану апытання
closing_at Радок у фармаце ISO 8601 або null
recipient_audience group або null. Пры значэнні group апавяшчэнне атрымае ўся група
recipient_user_ids Масіў ідэнтыфікатараў карыстальнікаў, якіх трэба апавясціць або запрасіць
recipient_emails Масіў адрасоў электроннай пошты людзей, якіх трэба запрасіць прагаласаваць
recipient_message Паведамленне для запрашэння па электроннай пошце

Прыклад

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

Мякка выдаліць апытанне

Мякка выдаліце апытанне ад імя карыстальніка, якому належыць ключ API. Апытанне будзе адхілена, але запіс пра яго застанецца.

DELETE /api/b2/polls/:id

Прыклад

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

Спіс удзельнікаў групы

Атрымайце спіс удзельнікаў груп, бачных карыстальніку, якому належыць ключ API. Удзельнікі групы могуць бачыць імёны, ідэнтыфікатары, пасады і ролі іншых удзельнікаў. Адрасы электроннай пошты даступныя толькі для ўласнага ўліковага запісу карыстальніка, якому належыць ключ API, або калі гэты карыстальнік мае правы адміністратара групы.

GET /api/b2/memberships

Параметры

Назва Апісанне
group_id Цэлы лік, абавязковы. Ідэнтыфікатар групы, спіс удзельнікаў якой трэба атрымаць

Прыклад

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

Кіраванне ўдзельнікамі групы

Адпраўце спіс адрасоў электроннай пошты. На ўсе новыя адрасы будуць адпраўлены запрашэнні ў групу. У адрозненне ад прагляду спіса ўдзельнікаў, для гэтай аперацыі патрэбныя правы адміністратара групы.

POST /api/b2/memberships

Параметры

Назва Апісанне
group_id Цэлы лік, абавязковы. Ідэнтыфікатар групы, удзельнікамі якой трэба кіраваць
emails Масіў радкоў, абавязковы. Адрасы электроннай пошты людзей, якіх трэба запрасіць у групу
remove_absent Лагічнае значэнне. Пры значэнні true з групы будуць выдалены ўсе, чые адрасы электроннай пошты адсутнічаюць у спісе

Прыклад

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

Калі перадаць remove_absent=1, з групы будуць выдалены ўсе ўдзельнікі, не ўключаныя ў спіс. Будзьце ўважлівыя: так можна выдаліць з вашай групы ўсіх удзельнікаў.

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

У адказ вяртаецца аб’ект {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.