Дакументацыя 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. Выключэнні ўжываюцца да звязаных запісаў, а не да асноўнага рэсурсу, запытанага праз канцавы пункт.
Адказы з калекцыямі ўключаюць meta.total, калі вызначаны дакладны памер калекцыі. Агульная колькасць вылічаецца да ўжывання limit і offset. Канцавыя пункты, такія як пошук, якія наўмысна вяртаюць абмежаваны набор вынікаў, не ўключаюць meta.total замест таго, каб вяртаць null.
Агляд канцавых пунктаў
| Метад | Канцавы пункт | Прызначэнне |
|---|---|---|
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 карыстальніка працуе на аснове запытаў: інтэграцыя звяртаецца да Loomio, калі ёй трэба прачытаць або змяніць даныя. Вэбхук групы забяспечвае адпраўку даных у зваротным кірунку. Loomio адпраўляе выбраныя падзеі групы на ваш канчатковы пункт адразу, калі яны адбываюцца, таму інтэграцыі не трэба перыядычна звяртацца да REST API, каб правяраць змены.
Вэбхукі наладжваюцца асобна для кожнай групы і патрабуюць правоў адміністрацыі групы. Імі можна кіраваць праз інтэрфейс Loomio:
- Адкрыйце групу.
- Адкрыйце меню групы і выберыце Інтэграцыі з чатам.
- Дадайце інтэграцыю, якая адпавядае фармату даных, што прымае ваш канчатковы пункт. Для канчатковага пункта агульнага прызначэння выкарыстоўвайце фармат Mattermost/Markdown.
- Увядзіце назву і URL прызначэння.
- Выберыце падзеі, якія Loomio мае адпраўляць аўтаматычна.
- Захавайце інтэграцыю і націсніце Тэставае падключэнне, каб адправіць тэставае паведамленне.
Выкарыстоўвайце HTTPS-адрас прызначэння з URL, які немагчыма адгадаць. Loomio патрабуе, каб адрас прызначэння вызначаўся як публічны адрас, і блакуе запыты да лакальных або прыватных сеткавых адрасоў.
Агенты і іншыя інтэграцыі могуць замест гэтага кіраваць вэбхукамі праз апісаныя ніжэй канчатковыя пункты чат-ботаў з аўтэнтыфікацыяй 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 |
Ідэнтыфікатар інтэграцыі для абнаўлення і выдалення |
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 не дадае подпіс вэбхука, загаловак з агульным сакрэтам, ідэнтыфікатар падзеі або ідэнтыфікатар дастаўкі. Стаўцеся да поўнага 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 |
Ідэнтыфікатары груп, падзеленыя коскамі, калі group_scope=custom. Ідэнтыфікатары груп, да якіх уліковы запіс 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 прымяняе тыя ж правілы бачнасці груп, што і справаздача ў праграме. 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 |
Масіў ідэнтыфікатараў карыстальнікаў для апавяшчэння або запрашэння ў тэму |
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. ID групы для апытання. Калі перададзены discussion_id, group_id ігнаруецца |
discussion_id |
Цэлы лік, неабавязковы, па змаўчанні null. ID тэмы абмеркавання, у якую трэба дадаць гэтае апытанне |
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 |
Масіў ID карыстальнікаў, якім трэба даслаць апавяшчэнне або запрашэнне |
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
Атрыманне апытання
Атрымайце апытанне па яго ID — цэлым ліку — або ключы — радку.
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 |
Цэлы лік, абавязковы. 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 |
Масіў ID карыстальнікаў, якім трэба даслаць апавяшчэнне або запрашэнне |
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, або калі ўладальнікі ключа 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"]}.