A Loomio szerver API dokumentációja

A /api/server0 a szerverszintű műveletekre szolgál. A Loomio felhasználói fiókkal végzett, felhasználói szintű műveletekhez használd a /api/user0 API-t.

Egyetlen szerverkulccsal hozhatsz létre és kezelhetsz fiókokat, keresheted meg a rendszer összes csoportját, és kezelheted a tagságaikat és szerepköreiket. Ehhez nincs szükség botfiókra, felhasználói API-kulcsra vagy csoporttagságra. A felhasználói API-kulcsokra továbbra is a felhasználó csoportjogosultságai érvényesek.

Hitelesítés

A kulcs a szerverkörnyezet SERVER_API_KEY beállításában található. Új telepítéseknél a create_env.sh hozza létre.

Küldd el a kulcsot bearer tokenként:

curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users

A hitelesítési adatokat kizárólag az Authorization fejlécben küldd el. A rendszer elutasítja a lekérdezési karakterláncban vagy a kérés törzsében küldött API-kulcsokat.

Fiókok és tagságok létrehozása és kezelése

Metódus Végpont Cél
POST /api/server0/users Fiók létrehozása
GET /api/server0/groups A rendszer összes csoportjának megkeresése
GET /api/server0/memberships Egy csoport tagságainak listázása
POST /api/server0/memberships Tagok meghívása vagy a teljes taglista szinkronizálása
PATCH /api/server0/memberships/:id Csoportadmini és küldötti szerepkörök módosítása
DELETE /api/server0/memberships/:id Egy tagság visszavonása

A meglévő fiókok frissítésére, inaktiválására, újraaktiválására, személyes adataik eltávolítására és törlésére szolgáló végpontokat alább ismertetjük.

Fiók létrehozása

POST /api/server0/users

Küldj egy user objektumot a kötelező email mezővel. Az e-mail-címek elejéről és végéről a rendszer eltávolítja a szóközöket, és a címeket kisbetűssé alakítja. Az opcionális mezők: name, username és is_admin. Az is_admin itt a Loomio-példány adminját jelenti; a csoportadmini szerepköröket a tagságokon keresztül kezelheted. A felhasználónév automatikus létrehozásához hagyd ki a username mezőt. A rendszer elutasítja az ismeretlen mezőket.

curl https://loomio.example.org/api/server0/users \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  --json '{
    "user": {
      "email": "ada@example.org",
      "name": "Ada Lovelace",
      "username": "ada",
      "is_admin": false
    }
  }'

A válasz HTTP 201 állapotkódot és egy user objektumot tartalmaz. Érvénytelen mezők vagy már használatban lévő e-mail-cím vagy felhasználónév esetén a válasz HTTP 422. A fiók létrehozása nem küld meghívót, nem jelentkezteti be az illetőt, és nem jelöli ellenőrzöttként az e-mail-címét. Hívd meg egy csoportba a tagsági végponttal, hogy a szokásos értesítési folyamaton keresztül kapjon meghívót.

Csoportok megkeresése

GET /api/server0/groups

Listázd az összes nem törölt csoportot, beleértve a privát csoportokat és a lejárt előfizetésű csoportokat is. A találatok azonosító szerint növekvő sorrendben jelennek meg. A lapozáshoz használd a limit (alapértelmezett és maximális értéke 50) és az offset (alapértelmezett értéke 0) paramétereket.

curl 'https://loomio.example.org/api/server0/groups?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY'
{
  "groups": [
    {
      "id": 123,
      "key": "examplegroup",
      "name": "Planning group",
      "handle": "planning",
      "parent_id": null,
      "group_privacy": "secret"
    }
  ],
  "meta": {
    "total": 1
  }
}

Tagságok listázása

GET /api/server0/memberships?group_id=123

A group_id megadása kötelező. A találatok az elfogadott tagságokat és a függőben lévő meghívókat tartalmazzák, a tagság azonosítója szerint növekvő sorrendben. A visszavont tagságok nem szerepelnek közöttük. A lapozáshoz használd a limit (alapértelmezett és maximális értéke 50) és az offset (alapértelmezett értéke 0) paramétereket.

curl 'https://loomio.example.org/api/server0/memberships?group_id=123&limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY'
{
  "memberships": [
    {
      "id": 456,
      "group_id": 123,
      "user_id": 789,
      "user_email": "ada@example.org",
      "user_name": "Ada Lovelace",
      "admin": false,
      "delegate": false,
      "accepted_at": null,
      "pending": true
    }
  ],
  "meta": {
    "total": 1
  }
}

Az admin és a delegate csoportszerepkörök. Az accepted_at az elfogadás időbélyege, vagy null, amíg a meghívó függőben van. Ez a végpont nem tesz elérhetővé meghívótokeneket, bejelentkezési adatokat vagy szavazatokat.

Tagok meghívása vagy szinkronizálása

POST /api/server0/memberships

Küldd el a kötelező group_id értéket és az emails tömböt. Alapértelmezés szerint ez hozzáadja a felsorolt személyek közül azokat, akiknek még nincs aktív tagságuk, és mindenki más tagságát változatlanul hagyja. Az e-mail-címek elejéről és végéről a rendszer eltávolítja a szóközöket, a címeket kisbetűssé alakítja, és kiszűri az ismétlődéseket. Az új címekhez fiókokat és függőben lévő meghívókat hoz létre. Az ugyanazon szervezet másik aktív csoportjában már tagsággal és ellenőrzött e-mail-címmel rendelkező személyek tagságát automatikusan elfogadja, a felhasználói API meghívási folyamatával megegyezően.

curl https://loomio.example.org/api/server0/memberships \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  --json '{
    "group_id": 123,
    "emails": [
      "ada@example.org",
      "alex@example.org"
    ]
  }'

A teljes taglista szinkronizálásához állítsd a remove_absent értékét kifejezetten true értékre. A rendszer mindenkit eltávolít a csoportból és annak alcsoportjaiból, aki hiányzik a listáról. Egy üres tömb a remove_absent: true beállítással mindenkit eltávolít, a csoport adminjait is beleértve. Ha csak személyeket szeretnél hozzáadni, hagyd ki a remove_absent paramétert, vagy állítsd false értékre. A korábban használt 1 és 0 értékeket is elfogadja a rendszer.

curl https://loomio.example.org/api/server0/memberships \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  --json '{
    "group_id": 123,
    "emails": [
      "ada@example.org"
    ],
    "remove_absent": true
  }'
{
  "added_emails": [],
  "removed_emails": [
    "alex@example.org"
  ]
}

Ugyanannak a kérésnek a megismétlése nem hoz létre ismétlődő tagságokat, és nem küldi el újra a meghívókat. Egy visszavont tagságú tag újbóli meghívása helyreállítja a hozzáférését a csoporthoz, de a korábbi admini szerepkörét nem állítja vissza. Az új meghívók és a szerepkörváltozások a szokásos értesítési folyamatot használják, és a rendszer egyetlen felhasználót sem rögzít a művelet végrehajtójaként.

Hiányzó vagy hibás formátumú e-mail-lista és érvénytelen logikai érték esetén a válasz HTTP 400. Ha a listán inaktivált fiók szerepel, a válasz HTTP 422; a hozzáadás előtt külön aktiváld újra a fiókot. Érvénytelen fiókadatok, előfizetési korlátok vagy más hibák esetén a rendszer visszavonja a teljes szinkronizálást, az új fiókok létrehozását és a tagságok eltávolítását is beleértve. A hozzáadáshoz aktív csoport szükséges, és az előfizetés taglétszámkorlátai továbbra is érvényesek.

Tagsági szerepkörök frissítése

PATCH /api/server0/memberships/:id

Küldj egy membership objektumot, amely az admin és a delegate logikai mezők egyikét vagy mindkettőt tartalmazza. A kihagyott szerepkörök változatlanok maradnak. A rendszer elutasítja az ismeretlen mezőket; a végponttal nem lehet tagságot áthelyezni, meghívót elfogadni vagy szavazati súlyokat módosítani.

curl https://loomio.example.org/api/server0/memberships/456 \
  -X PATCH \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  --json '{
    "membership": {
      "admin": true,
      "delegate": false
    }
  }'

Egy membership objektumot ad vissza, ugyanazokkal a mezőkkel, mint a listázott tagságok. Egy szerepkör megadása létrehozza a szokásos szerepkör-értesítést; egy változatlan szerepkör ismételt megadása nem küld újabb értesítést. A szerepkörök módosításához aktív csoport szükséges. Visszavont tagságok esetén a válasz HTTP 404.

Egy tagság eltávolítása

DELETE /api/server0/memberships/:id

curl https://loomio.example.org/api/server0/memberships/456 \
  -X DELETE \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY'

A válasz {"success": true}. Az eltávolítás visszavonja a hozzáférést a csoporthoz és annak alcsoportjaihoz, beleértve a témákhoz való hozzáférést és az aktív szavazásokon való szavazati jogot. Nem törli a fiókot, nem módosít más csoportokat, és nem szünteti meg a szálakhoz való közvetlen hozzáférést. Az eltávolítás megismétlése sikeres. Lejárt előfizetésű csoportokból is eltávolíthatsz tagságokat; törölt csoportok esetén a válasz HTTP 404.

Felhasználói objektum

A felhasználói adatokat tartalmazó válaszok szerkezete:

{
  "id": 123,
  "name": "Ada Lovelace",
  "username": "ada",
  "email": "ada@example.org",
  "is_admin": false,
  "active": true,
  "deactivated_at": null,
  "identities": [
    {
      "id": 456,
      "identity_type": "oauth",
      "uid": "external-123",
      "email": "ada@example.org",
      "name": "Ada Lovelace"
    }
  ]
}

Felhasználók listázása

Listázd a Loomio rendszer összes felhasználói fiókját.

GET /api/server0/users

Példa

curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users

Válasz:

{
  "users": []
}

Felhasználó lekérdezése

Keress meg egy felhasználót a Loomio felhasználói azonosítója vagy külső identitása alapján.

GET /api/server0/users/:id

GET /api/server0/users/identity/:identity_type/:uid

Példák

Loomio felhasználói azonosító alapján:

curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123

Külső identitás alapján:

curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123

Válasz:

{
  "user": {}
}

Felhasználó frissítése

Frissítsd a Loomio felhasználói azonosító vagy külső identitás alapján megtalált felhasználó profilmezőit.

PATCH /api/server0/users/:id

PATCH /api/server0/users/identity/:identity_type/:uid

Paraméterek

Mező Leírás
name Megjelenített név
username Loomio felhasználónév
email E-mail-cím

Példák

Loomio felhasználói azonosító alapján:

curl -X PATCH \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \
  https://www.loomio.com/api/server0/users/123

Külső identitás alapján:

curl -X PATCH \
  -H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \
  https://www.loomio.com/api/server0/users/identity/oauth/external-123

A válasz a frissített felhasználót tartalmazza:

{
  "user": {}
}

Felhasználó deaktiválása

Deaktiváld a Loomio felhasználói azonosító vagy külső identitás alapján megtalált felhasználói fiókot.

POST /api/server0/users/:id/deactivate

POST /api/server0/users/identity/:identity_type/:uid/deactivate

Példák

Loomio felhasználói azonosító alapján:

curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123/deactivate

Külső identitás alapján:

curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123/deactivate

Válasz:

{
  "success": true,
  "user": {}
}

Felhasználó újraaktiválása

Aktiválj újra egy deaktivált felhasználói fiókot a Loomio-felhasználóazonosítója vagy külső azonosítója alapján.

POST /api/server0/users/:id/reactivate

POST /api/server0/users/identity/:identity_type/:uid/reactivate

Példák

Loomio-felhasználóazonosító alapján:

curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123/reactivate

Külső azonosító alapján:

curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123/reactivate

Válasz:

{
  "success": true,
  "user": {}
}

Felhasználó személyes adatainak eltávolítása

A személyes adatok eltávolítása megőrzi a felhasználó hozzászólásait és más, általa létrehozott tartalmakat a csoportjaiban, de eltávolítja az ismert, személyazonosításra alkalmas adatokat, például a nevet, a bemutatkozást, a profilképet, az e-mail-címet, a bejelentkezési adatokat, a külső azonosítókat és az aktív munkameneteket.

Ez az ajánlott módja egy felhasználó eltávolításának a Loomióból.

POST /api/server0/users/:id/redact

POST /api/server0/users/identity/:identity_type/:uid/redact

Példák

Loomio-felhasználóazonosító alapján:

curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123/redact

Külső azonosító alapján:

curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123/redact

Válasz:

{
  "success": true
}

Felhasználó törlése

A törlés eltávolítja a felhasználót és az általa létrehozott rekordokat. A hozzászólások törlődnek a szálakból, a szavazatok törlődnek a szavazásokból, és az adatbázisban lévő kapcsolatok révén a felhasználó által létrehozott csoportok, beszélgetések, szavazások és egyéb rekordok is törlődhetnek.

Ez jelentős adatvesztéssel jár. Helyette erősen ajánlott a személyes adatok eltávolítása.

DELETE /api/server0/users/:id

DELETE /api/server0/users/identity/:identity_type/:uid

Példák

Loomio-felhasználóazonosító alapján:

curl -X DELETE -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123

Külső azonosító alapján:

curl -X DELETE -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123

Válasz:

{
  "success": true
}

SSO-profilszinkronizálási beállítások

Használd ezeket a beállításokat, ha egy másik rendszer kezeli a Loomio profilmezőit.

LOOMIO_DISABLE_EDIT_USER_PROFILE=1
# LOOMIO_SSO_UPDATE_USER_PROFILE_ON_LOGIN=1

A LOOMIO_DISABLE_EDIT_USER_PROFILE=1 megakadályozza, hogy a felhasználók saját maguk szerkesszék ezeket a mezőket:

Mező Tudnivalók
name Külső szinkronizálás kezeli
username Külső szinkronizálás kezeli
email Külső szinkronizálás kezeli
avatar_kind / uploaded_avatar Külső szinkronizálás kezeli

A felhasználók továbbra is szerkeszthetik a Loomio helyi mezőit, például a short_bio és a location mezőt.

A LOOMIO_SSO_UPDATE_USER_PROFILE_ON_LOGIN=1 az SSO-bejelentkezés adataiból frissíti a name és az email mezőt. Hagyd meg kommentként, vagy ne állítsd be, ha ezeket a mezőket kizárólag egy külső szinkronizáló szkriptnek kell frissítenie.

A LOOMIO_SSO_FORCE_USER_ATTRS a meglévő telepítéseken továbbra is működik. Letiltja a felhasználók általi szerkesztést, és SSO-bejelentkezéskor frissíti a name és az email mezőt.

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.