Loomion palvelimen API:n dokumentaatio
/api/server0 on tarkoitettu palvelintason toimintoihin. Käytä /api/user0-rajapintaa käyttäjäkohtaisiin toimintoihin, jotka suoritetaan Loomion käyttäjätilillä.
Yhdellä palvelinavaimella voit luoda ja hallita tilejä, etsiä ryhmiä koko asennuksesta ja hallita niiden jäsenyyksiä ja rooleja. Bottitiliä, käyttäjän API-avainta tai ryhmien jäsenyyttä ei tarvita. Käyttäjien API-avaimet noudattavat edelleen käyttäjän ryhmäkohtaisia käyttöoikeuksia.
Todennus
Avain määritetään palvelinympäristön SERVER_API_KEY-asetuksella. create_env.sh luo avaimen uusille asennuksille.
Lähetä avain bearer-tokenina:
curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users
Lähetä tunnistetiedot vain Authorization-otsakkeessa. Kyselymerkkijonoissa tai pyyntöjen rungoissa lähetetyt API-avaimet hylätään.
Tilien ja jäsenyyksien luominen ja hallinta
| Metodi | Päätepiste | Tarkoitus |
|---|---|---|
POST |
/api/server0/users |
Luo tili |
GET |
/api/server0/groups |
Etsi ryhmiä koko asennuksesta |
GET |
/api/server0/memberships |
Listaa ryhmän jäsenyydet |
POST |
/api/server0/memberships |
Kutsu jäseniä tai synkronoi koko jäsenluettelo |
PATCH |
/api/server0/memberships/:id |
Muuta ryhmän ylläpitäjän ja edustajan rooleja |
DELETE |
/api/server0/memberships/:id |
Peru yksittäinen jäsenyys |
Olemassa olevien tilien päivittämisen, käytöstä poistamisen, uudelleenaktivoinnin, henkilötietojen poistamisen ja tilien poistamisen päätepisteet kuvataan alempana.
Luo tili
POST /api/server0/users
Lähetä user-objekti, joka sisältää pakollisen email-kentän. Sähköpostiosoitteiden alusta ja lopusta poistetaan tyhjämerkit, ja osoitteet muunnetaan pieniksi kirjaimiksi. Valinnaiset kentät ovat name, username ja is_admin. Tässä is_admin tarkoittaa koko asennuksen ylläpitäjää; ryhmän ylläpitäjärooleja hallitaan jäsenyyksien kautta. Jätä username pois, jos haluat luoda käyttäjänimen automaattisesti. Tuntemattomat kentät hylätään.
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
}
}'
Vastauksena palautetaan HTTP 201 ja user-objekti. Virheelliset kentät tai jo käytössä oleva sähköpostiosoite tai käyttäjänimi palauttavat HTTP 422. Tilin luominen ei lähetä kutsua, kirjaa henkilöä sisään eikä merkitse hänen sähköpostiosoitettaan vahvistetuksi. Kutsu hänet ryhmään jäsenyyksien päätepisteen kautta, jolloin kutsu lähetetään tavallisen ilmoitusprosessin mukaisesti.
Etsi ryhmiä
GET /api/server0/groups
Listaa kaikki ryhmät, joita ei ole poistettu, mukaan lukien yksityiset ryhmät ja ryhmät, joiden tilaus on päättynyt. Tulokset järjestetään tunnuksen mukaan nousevaan järjestykseen. Selaa tuloksia sivuittain parametreilla limit (oletus ja enimmäisarvo 50) ja offset (oletus 0).
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
}
}
Listaa jäsenyydet
GET /api/server0/memberships?group_id=123
group_id on pakollinen. Tulokset sisältävät hyväksytyt jäsenyydet ja odottavat kutsut jäsenyyden tunnuksen mukaan nousevassa järjestyksessä. Perutut jäsenyydet jätetään pois. Käytä sivutukseen parametreja limit (oletus ja enimmäisarvo 50) ja offset (oletus 0).
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
}
}
admin ja delegate ovat ryhmän rooleja. accepted_at on hyväksymisen aikaleima tai null, kun kutsu odottaa hyväksymistä. Tämä päätepiste ei paljasta kutsutunnisteita, kirjautumistietoja eikä ääniä.
Kutsu tai synkronoi jäseniä
POST /api/server0/memberships
Lähetä pakolliset group_id ja emails-taulukko. Oletusarvoisesti tämä lisää luettelon henkilöt, joilla ei vielä ole aktiivista jäsenyyttä, ja säilyttää muiden jäsenyydet ennallaan. Sähköpostiosoitteiden alusta ja lopusta poistetaan tyhjämerkit, osoitteet muunnetaan pieniksi kirjaimiksi ja kaksoiskappaleet poistetaan. Uusille osoitteille luodaan tilit ja odottavat kutsut. Saman organisaation toisen aktiivisen ryhmän olemassa olevat vahvistetut jäsenet hyväksytään automaattisesti käyttäjän API:n kutsuprosessin mukaisesti.
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"
]
}'
Synkronoi koko jäsenluettelo asettamalla remove_absent nimenomaisesti arvoon true. Kaikki luettelosta puuttuvat poistetaan kyseisestä ryhmästä ja sen alaryhmistä. Tyhjä taulukko yhdessä asetuksen remove_absent: true kanssa poistaa kaikki, myös ryhmän ylläpitäjät. Jätä remove_absent pois tai aseta sen arvoksi false, kun vain lisäät henkilöitä. Myös vanhat arvot 1 ja 0 hyväksytään.
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"
]
}
Saman pyynnön toistaminen ei luo päällekkäisiä jäsenyyksiä eikä lähetä kutsuja uudelleen. Jäsenen, jonka jäsenyys on peruttu, kutsuminen uudelleen palauttaa hänen pääsynsä ryhmään mutta ei aiempaa ylläpitäjäroolia. Uudet kutsut ja roolimuutokset käyttävät tavallista ilmoitusprosessia, eikä ketään käyttäjää kirjata toiminnon tekijäksi.
Puuttuvat tai väärin muotoillut sähköpostiluettelot ja virheelliset totuusarvot palauttavat HTTP 400. Luettelossa oleva käytöstä poistettu tili palauttaa HTTP 422; aktivoi se erikseen uudelleen ennen lisäämistä. Virheelliset tilitiedot, tilauksen rajoitukset tai muut virheet peruuttavat koko synkronoinnin, mukaan lukien uudet tilit ja jäsenyyksien poistot. Lisääminen edellyttää aktiivista ryhmää, ja tilauksen jäsenmäärärajoitukset ovat voimassa.
Päivitä jäsenyyden roolit
PATCH /api/server0/memberships/:id
Lähetä membership-objekti, joka sisältää joko toisen tai molemmat totuusarvokentistä admin ja delegate. Pois jätetyt roolit säilyvät ennallaan. Tuntemattomat kentät hylätään; päätepisteellä ei voi siirtää jäsenyyttä, hyväksyä kutsua eikä muuttaa äänten painotuksia.
curl https://loomio.example.org/api/server0/memberships/456 \
-X PATCH \
-H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
--json '{
"membership": {
"admin": true,
"delegate": false
}
}'
Palauttaa membership-objektin, jossa on samat kentät kuin listatussa jäsenyydessä. Roolin myöntäminen luo tavallisen rooli-ilmoituksen; muuttumattoman roolin lähettäminen uudelleen ei lähetä uutta ilmoitusta. Roolimuutokset edellyttävät aktiivista ryhmää. Perutut jäsenyydet palauttavat HTTP 404.
Poista yksittäinen jäsenyys
DELETE /api/server0/memberships/:id
curl https://loomio.example.org/api/server0/memberships/456 \
-X DELETE \
-H 'Authorization: Bearer YOUR_SERVER_API_KEY'
Palauttaa {"success": true}. Poistaminen peruu pääsyn ryhmään ja sen alaryhmiin, mukaan lukien pääsyn aiheisiin ja äänioikeuden aktiivisissa kyselyissä. Se ei poista tiliä, muuta muita ryhmiä eikä poista suoraa pääsyä ketjuihin. Poistamisen toistaminen onnistuu. Voit poistaa jäsenyyksiä ryhmistä, joiden tilaus on päättynyt; poistetut ryhmät palauttavat HTTP 404.
Käyttäjäobjekti
Käyttäjätietoja sisältävien vastausten rakenne on seuraava:
{
"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"
}
]
}
Listaa käyttäjät
Listaa kaikki Loomio-asennuksen käyttäjätilit.
GET /api/server0/users
Esimerkki
curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users
Palauttaa:
{
"users": []
}
Näytä käyttäjä
Etsi käyttäjä Loomion käyttäjä-ID:n tai ulkoisen identiteetin perusteella.
GET /api/server0/users/:id
GET /api/server0/users/identity/:identity_type/:uid
Esimerkkejä
Loomion käyttäjä-ID:n perusteella:
curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123
Ulkoisen identiteetin perusteella:
curl -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123
Palauttaa:
{
"user": {}
}
Päivitä käyttäjä
Päivitä Loomion käyttäjä-ID:n tai ulkoisen identiteetin perusteella löydetyn käyttäjän profiilikentät.
PATCH /api/server0/users/:id
PATCH /api/server0/users/identity/:identity_type/:uid
Parametrit
| Kenttä | Kuvaus |
|---|---|
name |
Näyttönimi |
username |
Loomion käyttäjänimi |
email |
Sähköpostiosoite |
Esimerkkejä
Loomion käyttäjä-ID:n perusteella:
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
Ulkoisen identiteetin perusteella:
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
Palauttaa päivitetyn käyttäjän:
{
"user": {}
}
Poista käyttäjätili käytöstä
Poista käytöstä käyttäjätili, joka on löydetty Loomion käyttäjä-ID:n tai ulkoisen identiteetin perusteella.
POST /api/server0/users/:id/deactivate
POST /api/server0/users/identity/:identity_type/:uid/deactivate
Esimerkkejä
Loomion käyttäjä-ID:n perusteella:
curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123/deactivate
Ulkoisen identiteetin perusteella:
curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123/deactivate
Palauttaa:
{
"success": true,
"user": {}
}
Aktivoi käyttäjä uudelleen
Aktivoi käytöstä poistettu käyttäjätili uudelleen Loomion käyttäjätunnisteen tai ulkoisen identiteetin perusteella.
POST /api/server0/users/:id/reactivate
POST /api/server0/users/identity/:identity_type/:uid/reactivate
Esimerkkejä
Loomion käyttäjätunnisteen perusteella:
curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123/reactivate
Ulkoisen identiteetin perusteella:
curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123/reactivate
Palauttaa:
{
"success": true,
"user": {}
}
Poista käyttäjän tunnistetiedot
Tunnistetietojen poistaminen säilyttää käyttäjän kommentit ja muun käyttäjän luoman sisällön hänen ryhmissään, mutta poistaa tiedossa olevat henkilön tunnistamiseen käytettävät tiedot, kuten nimen, esittelyn, profiilikuvan, sähköpostiosoitteen, kirjautumistiedot, identiteetit ja aktiiviset istunnot.
Tämä on suositeltu tapa poistaa käyttäjä Loomiosta.
POST /api/server0/users/:id/redact
POST /api/server0/users/identity/:identity_type/:uid/redact
Esimerkkejä
Loomion käyttäjätunnisteen perusteella:
curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123/redact
Ulkoisen identiteetin perusteella:
curl -X POST -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123/redact
Palauttaa:
{
"success": true
}
Poista käyttäjä
Poistaminen poistaa käyttäjän ja hänen luomansa tietueet. Kommentit poistetaan ketjuista ja äänet kyselyistä. Myös käyttäjän luomat ryhmät, keskustelut, kyselyt ja muut tietueet voivat poistua tietokannan tietueiden välisten suhteiden kautta.
Tämä poistaa laajasti tietoja. Käyttäjän tunnistetietojen poistaminen on vahvasti suositeltu vaihtoehto.
DELETE /api/server0/users/:id
DELETE /api/server0/users/identity/:identity_type/:uid
Esimerkkejä
Loomion käyttäjätunnisteen perusteella:
curl -X DELETE -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/123
Ulkoisen identiteetin perusteella:
curl -X DELETE -H 'Authorization: Bearer YOUR_SERVER_API_KEY' https://www.loomio.com/api/server0/users/identity/oauth/external-123
Palauttaa:
{
"success": true
}
SSO-profiilin synkronointiasetukset
Käytä näitä asetuksia, kun toinen järjestelmä hallinnoi Loomion profiilikenttiä.
LOOMIO_DISABLE_EDIT_USER_PROFILE=1
# LOOMIO_SSO_UPDATE_USER_PROFILE_ON_LOGIN=1
LOOMIO_DISABLE_EDIT_USER_PROFILE=1 estää käyttäjiä muokkaamasta itse seuraavia kenttiä:
| Kenttä | Huomautukset |
|---|---|
name |
Ulkoisen synkronoinnin hallinnoima |
username |
Ulkoisen synkronoinnin hallinnoima |
email |
Ulkoisen synkronoinnin hallinnoima |
avatar_kind / uploaded_avatar |
Ulkoisen synkronoinnin hallinnoima |
Käyttäjät voivat edelleen muokata Loomion paikallisia kenttiä, kuten short_bio ja location.
LOOMIO_SSO_UPDATE_USER_PROFILE_ON_LOGIN=1 päivittää kentät name ja email SSO-kirjautumistiedoista. Jätä asetus kommentoiduksi tai määrittämättä, kun vain ulkoisen synkronointiskriptin on tarkoitus päivittää näitä kenttiä.
LOOMIO_SSO_FORCE_USER_ATTRS toimii edelleen olemassa olevissa asennuksissa. Se sekä estää käyttäjiä muokkaamasta kenttiä että päivittää kentät name ja email SSO-kirjautumisen yhteydessä.