Dokumentation der Loomio-Benutzer-API

/api/user0 ist die benutzerorientierte API für Integrationen mit Loomio. Sie verwendet den API-Schlüssel eines Benutzerkontos, und jede Aktion wird im Namen dieses Kontos ausgeführt.

Gruppenaktionen verwenden die Mitgliedschaften und Gruppenberechtigungen des Kontos, dessen API-Schlüssel verwendet wird. Administrationsrechte für die Instanz erweitern den Zugriff eines API-Schlüssels auf Gruppen oder Inhalte nicht; nutze für die Verwaltung auf Instanzebene die Server-API.

Verwende den API-Schlüssel des Loomio-Benutzerkontos, das die Aktionen ausführen soll. Ein eigenes Bot-Konto ist sinnvoll, wenn eine Integration keine Einladungen zu Abstimmungen oder Benachrichtigungen erhalten soll.

Angemeldete Personen finden ihren API-Schlüssel und ihre Gruppen-IDs auf der Seite für den API-Zugriff.

Sende den API-Schlüssel in einem Authorization: Bearer-Header. API-Schlüssel in Abfrageparametern werden abgelehnt, da URLs von Proxys und in Zugriffsprotokollen aufgezeichnet werden können.

Authorization: Bearer YOUR_API_KEY

Die Beispiele verwenden YOUR_API_KEY, die Gruppen-ID 123 und https://www.loomio.com/. Ersetze diese durch deinen API-Schlüssel, deine Gruppen-ID und die URL deiner Loomio-Installation.

Anfrageinhalte senden

Sende JSON mit Content-Type: application/json. Die cURL-Beispiele verwenden --json, wodurch dieser Header automatisch gesetzt wird. Die Endpunkte zum Erstellen und Bearbeiten von Diskussionen, Kommentaren und Abstimmungen akzeptieren entweder ein flaches Objekt oder ein unter dem Ressourcennamen verschachteltes Objekt, etwa {"poll": {...}}.

Sende Arrays als JSON-Arrays, etwa "options": ["foo", "bar"]. Wenn du stattdessen Formularkodierung verwendest, benötigen Arrays Feldnamen mit eckigen Klammern, etwa options[]=foo&options[]=bar; bei der Wiederholung options=foo&options=bar bleibt nur der letzte Wert erhalten.

Prüfe nach jeder Anfrage den HTTP-Status und den Antwortinhalt. Bei einem Validierungsfehler wird 422 mit einem errors-Objekt zurückgegeben; nach dem erfolgreichen Erstellen einer Abstimmung enthält die Antwort die Abstimmung in polls und ihre Optionen in poll_options.

Übersicht der Endpunkte

Methode Endpunkt Zweck
POST /api/user0/comments Einen Kommentar oder eine Antwort erstellen
PATCH /api/user0/comments/:id Einen Kommentar bearbeiten
DELETE /api/user0/comments/:id Einen Kommentar als gelöscht markieren
POST /api/user0/discussions Eine Diskussion erstellen
GET /api/user0/discussions/:id Eine Diskussion abrufen
GET /api/user0/discussions Diskussionen in einer Gruppe auflisten
PATCH /api/user0/discussions/:id Eine Diskussion bearbeiten
DELETE /api/user0/discussions/:id Eine Diskussion als gelöscht markieren
GET /api/user0/groups Gruppen des Kontos auflisten, dessen API-Schlüssel verwendet wird
GET /api/user0/groups/:id_or_key_or_handle Eine sichtbare Gruppe abrufen
GET /api/user0/memberships Mitgliedschaften einer Gruppe auflisten
POST /api/user0/memberships Mitglieder hinzufügen und optional nicht aufgeführte Mitglieder entfernen
GET /api/user0/reports Einen Beteiligungsbericht erstellen
POST /api/user0/polls Eine Abstimmung erstellen
GET /api/user0/polls/:id Eine Abstimmung abrufen
GET /api/user0/polls Abstimmungen in einer Gruppe auflisten
PATCH /api/user0/polls/:id Eine Abstimmung bearbeiten
DELETE /api/user0/polls/:id Eine Abstimmung als gelöscht markieren
GET /api/user0/search Sichtbare Diskussionen, Kommentare, Abstimmungen, Stimmen und Fazits durchsuchen
GET /api/user0/threads Sichtbare Diskussions-Threads und Threads eigenständiger Abstimmungen auflisten
GET /api/user0/threads/:topic_id Einen Thread abrufen
GET /api/user0/threads/:topic_id/items Die geordneten Einträge eines Threads abrufen
GET /api/user0/threads/:topic_id/markdown Einen vollständigen Thread als Markdown abrufen
GET /api/user0/chatbots Chat-Integrationen und Webhooks einer Gruppe auflisten
POST /api/user0/chatbots Eine Chat-Integration oder einen Webhook erstellen
PATCH /api/user0/chatbots/:id Eine Chat-Integration oder einen Webhook aktualisieren
DELETE /api/user0/chatbots/:id Eine Chat-Integration oder einen Webhook löschen
POST /api/user0/chatbots/check Einen Verbindungstest für einen Webhook senden

Seiteneinteilung

Diskussionen, Gruppen, Mitgliedschaften, Abstimmungen, Threads, Thread-Einträge und Webhooks akzeptieren limit (Standardwert 50) und offset (Standardwert 0). Bei Gruppen, Thread-Einträgen und Webhooks ist limit auf 500 begrenzt.

Erhöhe offset um die Anzahl der zurückgegebenen primären Datensätze, um die nächste Seite abzurufen. meta.total ist die Gesamtanzahl der passenden Datensätze; zugehörige Datensätze zählen nicht zur Seitengröße.

Beteiligungsberichte geben die angeforderten Daten vollständig zurück, die Suche liefert bis zu 20 Ergebnisse. Beide unterstützen keine Seiteneinteilung.

Diskussionen, Abstimmungen und Mitgliedschaften akzeptieren außerdem die älteren Aliasse per für limit und from für offset. Verwende für neue Integrationen limit und offset.

Antworten der Benutzer-API verwenden ein zusammengesetztes Format: Die primären Datensätze werden durch zugehörige Datensätze wie Topics, Gruppen, Benutzerkonten, Abstimmungen und Reaktionen ergänzt. So kann ein Client mit einer einzigen Anfrage einen lokalen Datenspeicher befüllen. Die Antwort kann jedoch mehr Daten enthalten, als eine einfache Integration benötigt.

Übergib compact=1, um umfangreiche zugehörige Topics, Gruppen, Hauptgruppen, Mitgliedschaften, Reaktionen, Schlagwörter und Übersetzungen wegzulassen. Primäre Datensätze und die zugehörigen Datensätze, die zum Verständnis ihrer Inhalte benötigt werden, bleiben enthalten.

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

Für eine gezielte Steuerung übergib exclude_types mit durch Leerzeichen getrennten Datensatztypen im Singular. Beispielsweise lässt exclude_types=group reaction zugehörige Gruppen und Reaktionen weg. Übliche Werte sind topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome und topic_item. Ausschlüsse gelten für zugehörige Datensätze, nicht für die primäre Ressource, die über den Endpunkt angefordert wird.

Antworten mit Datensatzsammlungen enthalten meta.total, wenn eine genaue Gesamtanzahl definiert ist. Die Gesamtanzahl wird berechnet, bevor limit und offset angewendet werden. Endpunkte wie die Suche, die bewusst eine begrenzte Ergebnismenge zurückgeben, lassen meta.total weg, statt null zurückzugeben.

Kommentare

Kommentar erstellen

Erstelle einen Kommentar in einer Diskussion im Namen des Kontos, zu dem der API-Schlüssel gehört.

POST /api/user0/comments

Parameter

Name Beschreibung
discussion_id Ganzzahl, erforderlich. ID der Diskussion, die du kommentieren möchtest
body Kommentartext, erforderlich, sofern kein Anhang mitgesendet wird
body_format Entweder md oder html, optional, Standardwert md

Beispiel

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

Kommentar bearbeiten

Bearbeite einen Kommentar im Namen des Kontos, zu dem der API-Schlüssel gehört. Es gelten dieselben Berechtigungen wie in Loomio: Das Konto muss diesen Kommentar bearbeiten dürfen.

PATCH /api/user0/comments/:id

Parameter

Name Beschreibung
body Aktualisierter Kommentartext
body_format Entweder md oder html, optional, Standardwert md

Beispiel

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

Kommentar als gelöscht markieren

Markiere einen Kommentar im Namen des Kontos, zu dem der API-Schlüssel gehört, als gelöscht. Dadurch wird der Kommentar verworfen und sein Text ausgeblendet, sein Datensatz bleibt jedoch erhalten.

DELETE /api/user0/comments/:id

Beispiel

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

Diskussionen

Diskussion erstellen

Erstelle eine Diskussion im Namen der Person mit dem API-Schlüssel.

POST /api/user0/discussions

Parameter

Name Beschreibung
group_id Gruppe, in der der Thread erstellt wird
title Titel des Threads, erforderlich
description Kontext des Threads, optional
description_format Entweder md oder html, optional, standardmäßig md
recipient_audience group oder null. Bei group wird die gesamte Gruppe über den neuen Thread benachrichtigt
recipient_user_ids Array von Benutzer-IDs der Personen, die benachrichtigt oder zum Thread eingeladen werden sollen
recipient_emails Array von E-Mail-Adressen der Personen, die zum Thread eingeladen werden sollen
recipient_message Nachricht, die in die Einladung per E-Mail aufgenommen wird

Beispiel

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

Diskussion abrufen

Rufe eine Diskussion über ihre ID (eine Ganzzahl) oder ihren Schlüssel (eine Zeichenfolge) ab.

GET /api/user0/discussions/:id

Beispiel

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

Diskussionen auflisten

Liste die Diskussionen in einer Gruppe auf, die für die Person sichtbar sind, deren API-Schlüssel verwendet wird. Bei einer öffentlich sichtbaren Gruppe können auch Personen ohne Mitgliedschaft die öffentlichen Diskussionen auflisten; private Diskussionen bleiben auf Personen beschränkt, die sie in Loomio lesen dürfen.

GET /api/user0/discussions

Parameter

Name Beschreibung
group_id Ganzzahl, erforderlich. ID der Gruppe, deren Diskussionen aufgelistet werden sollen
status Zeichenfolge, optional, Standardwert open. Werte: open, closed, all
limit Ganzzahl, optional, Standardwert 50. Anzahl der Einträge pro Seite
offset Ganzzahl, optional, Standardwert 0. Anzahl der Einträge, die bei der Seiteneinteilung übersprungen werden

Abwärtskompatibilität: per und from werden als Aliasse für limit und offset akzeptiert und funktionieren weiterhin.

Beispiel

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

Diskussion bearbeiten

Bearbeite eine Diskussion als die Person, deren API-Schlüssel verwendet wird. Es gelten dieselben Berechtigungen wie in Loomio: Die Person muss diese Diskussion bearbeiten dürfen.

PATCH /api/user0/discussions/:id

Parameter

Name Beschreibung
title Aktualisierter Titel
description Aktualisierter Kontext
description_format Entweder md oder html, optional, Standardwert md
recipient_audience group oder null. Bei group wird die gesamte Gruppe über die Bearbeitung benachrichtigt
recipient_user_ids Array von Benutzer-IDs der Personen, die benachrichtigt oder zum Thread eingeladen werden sollen
recipient_emails Array von E-Mail-Adressen der Personen, die zum Thread eingeladen werden sollen
recipient_message Nachricht, die in die Einladung per E-Mail aufgenommen werden soll

Beispiel

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

Diskussion als gelöscht markieren

Markiere eine Diskussion im Namen des Kontos, zu dem der API-Schlüssel gehört, als gelöscht. Dadurch wird die Diskussion verworfen, ihr Datensatz bleibt jedoch erhalten.

DELETE /api/user0/discussions/:id

Beispiel

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

Gruppen

Gruppen auflisten

Gibt die Gruppen zurück, in denen das Konto, dessen API-Schlüssel verwendet wird, eine aktive Mitgliedschaft hat.

GET /api/user0/groups

Name Beschreibung
limit Ganzzahl, optional, Standard 50, höchstens 500. Seitengröße
offset Ganzzahl, optional, Standard 0. Versatz für die Seiteneinteilung
curl 'https://www.loomio.com/api/user0/groups?limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Die Antwort enthält eine Seite mit groups, aufsteigend nach Gruppen-ID sortiert, sowie die Gesamtzahl der passenden Gruppen in meta.total. Sie umfasst Hauptgruppen und Untergruppen, einschließlich Gruppen, deren Abonnement derzeit nicht aktiv ist. Prüfe das Feld enabled, wenn eine Integration nur mit aktivierten Gruppen arbeiten soll.

Wichtige Gruppenfelder sind:

Feld Beschreibung
id Numerische Gruppen-ID, die von anderen Endpunkten der Benutzer-API verwendet wird
key Stabiler Kurzschlüssel, der in Loomio-URLs verwendet wird
handle Lesbare Kennung der Gruppe
name Gruppenname
full_name Gruppenname einschließlich des Kontexts der Hauptgruppe
parent_id Numerische ID der Hauptgruppe einer Untergruppe, andernfalls null
enabled Ob die Gruppe und ihr Abonnement aktiv sind
memberships_count Anzahl aktiver und ausstehender Mitgliedschaften
accepted_memberships_count Anzahl angenommener Mitgliedschaften
pending_memberships_count Anzahl ausstehender Einladungen
admin_memberships_count Anzahl der Personen mit Administrationsrechten für die Gruppe
discussions_count Anzahl der Diskussionen direkt in der Gruppe
polls_count Anzahl der Abstimmungen direkt in der Gruppe
subgroups_count Anzahl der Untergruppen

Die Antwort kann zusätzliche Gruppeneinstellungen, zugehörige Datensätze der Hauptgruppen und die Mitgliedschaften des API-Kontos enthalten. Clients sollten Felder ignorieren, die sie nicht verwenden.

Eine Gruppe abrufen

Gibt eine Gruppe zurück, die für das Konto sichtbar ist, dessen API-Schlüssel verwendet wird.

GET /api/user0/groups/:id_or_key_or_handle

Als Bezeichner kannst du die numerische ID, den Schlüssel oder die lesbare Kennung der Gruppe verwenden.

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'

Die Antwort enthält die Gruppe im groups-Array und verwendet dieselben Felder wie der Endpunkt zum Auflisten von Gruppen. Eine Anfrage für eine Gruppe, auf die das Konto keinen Zugriff hat, gibt einen Berechtigungsfehler zurück.

Mitgliedschaften

Mitgliedschaften auflisten

Liste die Mitgliedschaften auf, die für die Person sichtbar sind, deren API-Schlüssel verwendet wird. Gruppenmitglieder können Namen, IDs, Titel und Rollen der Mitglieder lesen. E-Mail-Adressen werden nur für das eigene Konto dieser Person ausgegeben oder wenn sie die Gruppe administriert.

GET /api/user0/memberships

Parameter

Name Beschreibung
group_id Ganzzahl, erforderlich. ID der Gruppe, deren Mitgliedschaften aufgelistet werden sollen
limit Ganzzahl, optional, Standard 50. Seitengröße
offset Ganzzahl, optional, Standard 0. Versatz für die Seiteneinteilung

Abwärtskompatibilität: per und from werden als Aliase für limit und offset akzeptiert und funktionieren weiterhin.

Die Antwort enthält eine Seite mit memberships und zugehörigen users. meta.total ist die Gesamtzahl der sichtbaren Mitgliedschaften in der Gruppe vor der Seiteneinteilung.

Beispiel

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

Mitgliedschaften verwalten

Sende eine Liste von E-Mail-Adressen. Alle neuen E-Mail-Adressen werden zur Gruppe eingeladen. Anders als beim Auflisten von Mitgliedschaften benötigst du für diesen Vorgang Berechtigungen zur Administration der Gruppe.

POST /api/user0/memberships

Parameter

Name Beschreibung
group_id Ganzzahl, erforderlich. ID der Gruppe, deren Mitgliedschaften verwaltet werden sollen
emails Array von Zeichenfolgen, erforderlich. E-Mail-Adressen der Personen, die zur Gruppe eingeladen werden sollen
remove_absent Boolescher Wert. Wenn true, werden alle Personen aus der Gruppe entfernt, deren E-Mail-Adresse nicht in der Liste steht

Beispiel

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

Wenn du remove_absent=1 übergibst, werden alle Mitglieder aus der Gruppe entfernt, die nicht in der Liste enthalten sind. Sei vorsichtig: Du könntest alle Mitglieder deiner Gruppe entfernen.

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
  }'

Dies gibt ein Objekt mit {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]} zurück.

Beteiligungsbericht

Rufe dieselben zusammengefassten Beteiligungsdaten ab, die im Beteiligungsbericht von Loomio verwendet werden.

GET /api/user0/reports

Parameter

Name Beschreibung
section Berichtsabschnitt: base, users oder countries. Verwende users für die Aktivität pro Person
group_scope custom oder my. Der frühere Wert all wird wie my behandelt, da Schlüssel für die Benutzer-API niemals Zugriff auf die gesamte Instanz erhalten
group_ids Durch Kommas getrennte Gruppen-IDs bei group_scope=custom. IDs von Gruppen, in denen die Person mit dem API-Schlüssel kein Mitglied ist, werden ignoriert
start_month Erster einzubeziehender Monat im Format YYYY-MM; standardmäßig der Monat vor 12 Monaten
end_month Letzter einzubeziehender Monat im Format YYYY-MM; standardmäßig der aktuelle Monat
interval Intervall für den Abschnitt base: day, week, month oder year
member_type Setze den Wert bei section=users auf delegate, um nur aktuelle Delegierte zurückzugeben

Eine Person gilt als delegiert, wenn sie in mindestens einer ausgewählten Gruppe eine aktive Mitgliedschaft als delegierte Person hat. Ihre Anzahlen werden über alle ausgewählten Gruppen hinweg zusammengefasst. Zeilen für Delegierte werden auch dann zurückgegeben, wenn alle Aktivitätszahlen null sind. Die Anzahlen erfassen Threads, Kommentare, Abstimmungen, Stimmen, Fazits und Reaktionen; sie geben keine Beteiligungsquoten an Abstimmungen an. Die Zeilen für Personen enthalten außerdem die Anzahl der ausgegebenen, abgegebenen und nicht abgegebenen Stimmzettel bei nicht anonymen Abstimmungen. Anonyme Abstimmungen sind von allen personenbezogenen Zählungen zur Stimmabgabe ausgeschlossen. all_votes_cast ist nur dann wahr, wenn mindestens ein Stimmzettel ausgegeben und jeder ausgegebene Stimmzettel abgegeben wurde.

Die API wendet dieselben Sichtbarkeitsregeln für Gruppen an wie der Bericht in Loomio. Ein Schlüssel für die Benutzer-API kann keine Berichtsdaten aus Gruppen zugänglich machen, auf die die Person mit diesem Schlüssel keinen Zugriff hat.

Beispiel

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'

Das users-Array enthält vollständige Aktivitätszeilen:

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

Abstimmungen

Abstimmung erstellen

Erstelle eine Abstimmung im Namen des Kontos, zu dem der API-Schlüssel gehört.

POST /api/user0/polls

Parameter

Name Beschreibung
group_id Ganzzahl, optional, Standardwert null. ID der Gruppe für die Abstimmung. Wenn discussion_id übergeben wird, wird group_id ignoriert
discussion_id Ganzzahl, optional, Standardwert null. ID des Diskussions-Threads, dem diese Abstimmung hinzugefügt werden soll
title Zeichenfolge, erforderlich. Titel der Abstimmung
poll_type Zeichenfolge, erforderlich. Werte: proposal, poll, count, score, ranked_choice, meeting, dot_vote
details Zeichenfolge, optional. Text der Abstimmung
details_format Zeichenfolge, optional, Standardwert md. Werte: md oder html
options Einfache Optionsnamen als Array von Zeichenfolgen. Verwende für proposal die Werte agree (Zustimmung), disagree (Widerspruch), abstain (Enthaltung) oder block (Veto), um die standardmäßigen Beschriftungen, Symbole, Bedeutungen und Aufforderungen zu erhalten. Gib für meeting Datums- oder Datumszeit-Zeichenfolgen im ISO-8601-Format an. Gib für andere Abstimmungstypen Optionsnamen an. Verwende für detaillierte Optionen stattdessen poll_options_attributes
poll_options_attributes Alternative zu options: ein Array von Optionsobjekten mit Namen, Bedeutungen, Aufforderungen, Symbolen und Reihenfolge. Siehe Abstimmung mit detaillierten Optionen erstellen
reason_prompt Zeichenfolge, optional. Gemeinsame Aufforderung zur Begründung der Stimme für Abstimmungstypen ohne eigene Aufforderungen pro Option, etwa poll, score und ranked_choice
stance_reason_required Zeichenfolge, Standardwert optional. Werte: disabled, optional, required, required_for_disagree_or_block, required_for_block. Die letzten beiden gelten für die Symbole disagree (Widerspruch) und block (Veto). Anonyme Abstimmungen deaktivieren Begründungen für Stimmen
closing_at ISO-8601-Zeichenfolge oder null, Standardwert null. Beispiel: 2026-09-01T12:00:00Z. Bei null ist die Stimmabgabe deaktiviert und die Abstimmung gilt als in Bearbeitung
specified_voters_only Boolescher Wert, optional, Standardwert false. Bei true können nur die angegebenen Personen abstimmen. Bei false werden alle Personen in der Gruppe zur Stimmabgabe eingeladen
hide_results Zeichenfolge, optional, Standardwert off. Werte: off, until_vote, until_closed
shuffle_options Boolescher Wert, Standardwert false. Zeigt den Abstimmenden die Optionen in zufälliger Reihenfolge an
anonymous Boolescher Wert, optional, Standardwert false. Verbirgt die Identität der Abstimmenden
recipient_audience group oder null, optional, Standardwert null. Bei group wird die gesamte Gruppe benachrichtigt
notify_on_closing_soon Zeichenfolge, optional, Standardwert nobody. Werte: nobody, author, voters_uncast, voters
recipient_user_ids Array von Benutzer-IDs der Personen, die benachrichtigt oder eingeladen werden sollen
recipient_emails Array von E-Mail-Adressen der Personen, die zur Stimmabgabe eingeladen werden sollen
recipient_message Nachricht, die in die Einladung per E-Mail aufgenommen werden soll
notify_recipients Boolescher Wert, Standardwert false. Bei false werden Personen hinzugefügt, ohne Benachrichtigungen zu senden. Bei true erhalten alle mit dieser Anfrage eingeladenen Personen eine Benachrichtigung per E-Mail

Beispiel

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

Einen Abstimmungsentwurf mit vielen Optionen erstellen

Sende alle Optionsnamen im options-Array. Wenn du closing_at weglässt, wird eine Abstimmung in Bearbeitung erstellt, bei der die Stimmabgabe deaktiviert ist; die Abstimmung bleibt für Personen sichtbar, die ihren Thread lesen können. Füge einen zukünftigen Wert für closing_at hinzu, wenn du die Stimmabgabe öffnen möchtest.

Füge alle deine Optionsnamen zum Array hinzu:

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

Abstimmung mit detaillierten Optionen erstellen

Verwende options für eine Liste von Namen oder poll_options_attributes, wenn jede Option eine Bedeutung, eine Aufforderung zur Begründung oder ein Symbol benötigt. Wähle pro Anfrage ein Format. Beide Formate funktionieren in einem flachen JSON-Anfragetext oder innerhalb eines poll-Objekts.

Jedes Objekt in poll_options_attributes akzeptiert diese Felder:

Feld Beschreibung
name Zeichenfolge, für eine neue Option erforderlich. Die Beschriftung, die den Abstimmenden angezeigt wird
meaning Zeichenfolge, optional. Erklärt, was die Auswahl dieser Option bedeutet
prompt Zeichenfolge, optional. Aufforderung zur Begründung, die angezeigt wird, wenn diese Option in proposal, count oder check ausgewählt wird. Setze bei anderen Abstimmungstypen reason_prompt für die Abstimmung
icon Zeichenfolge, optional. Verwende für proposal, count und check die Werte agree (Zustimmung), disagree (Widerspruch), abstain (Enthaltung) oder block (Veto)
priority Ganzzahl. Reihenfolge der Optionen, beginnend bei 0. Gib für jede Option eine eigene Priorität an; Terminoptionen werden stattdessen nach Datum sortiert
test_operator Zeichenfolge oder null, optional. Anforderung an den Stimmenanteil: gte bedeutet mindestens, lte bedeutet höchstens. Setze den Wert auf null, um die Anforderung zu deaktivieren
test_percent Ganzzahl, optional. Prozentsatz für die Anforderung an den Stimmenanteil, von 0 bis 100
test_against Zeichenfolge, optional. score_percent vergleicht den Anteil der Option an der Gesamtbewertung oder den vergebenen Punkten; voter_percent vergleicht die Anzahl der Abstimmenden für diese Option mit der Anzahl aller Stimmberechtigten
id Ganzzahl. Gib diesen Wert beim Bearbeiten einer bestehenden Option an; lasse ihn bei einer neuen Option weg
_destroy Boolescher Wert, optional. Setze den Wert zusammen mit der id einer bestehenden Option auf true, um die Option zu entfernen

Erstelle einen Vorschlag mit eigenen Optionsbeschriftungen und Aufforderungen:

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
      }
    ]
  }'

Verwende für eine reguläre Abstimmung dasselbe Format für detaillierte Optionen und setze eine gemeinsame Aufforderung zur Begründung mit reason_prompt für die Abstimmung:

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
      }
    ]
  }'

Diese Beispiele lassen closing_at weg. Die Stimmabgabe bleibt daher deaktiviert, bis ein zukünftiges Enddatum festgelegt wird.

Abstimmung abrufen

Rufe eine Abstimmung anhand ihrer ID (einer Ganzzahl) oder ihres Schlüssels (einer Zeichenkette) ab.

GET /api/user0/polls/:id

Beispiel

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

Abstimmungen auflisten

Liste die Abstimmungen einer Gruppe auf, die für die Person sichtbar sind, deren API-Schlüssel verwendet wird, einschließlich eigenständiger Abstimmungen und Abstimmungen innerhalb von Diskussionen. Bei einer öffentlich sichtbaren Gruppe können auch Personen ohne Mitgliedschaft deren öffentliche Abstimmungen auflisten; private Abstimmungen bleiben auf Personen beschränkt, die sie in Loomio lesen können. Die Antwort enthält das aktuelle Fazit jeder sichtbaren Abstimmung. Mit status=closed kannst du daher beendete Abstimmungen auflisten und deren Fazits lesen, sofern diese bereits verfasst wurden.

Um den Entscheidungsstatus neben Diskussionen anzuzeigen, rufe Diskussionen und Abstimmungen derselben Gruppe ab. Verwende dabei status=all für die Abstimmungen und ordne sie anhand ihrer topic_id-Werte zu. Rufe mit limit und offset jede Seite ab. Eine Diskussion kann mehrere Abstimmungen enthalten. Wähle daher aus, welche Abstimmung den angezeigten Status bestimmt, zum Beispiel die zuletzt erstellte Abstimmung. Ein Wert ungleich null für closed_at kennzeichnet eine beendete Abstimmung; ein null-Wert für closing_at kennzeichnet einen Entwurf. Wenn eine Abstimmung ein Fazit hat, verweist ihre current_outcome_id auf einen Datensatz im outcomes-Array der Antwort. Ordne diesen Datensatz anhand seiner poll_id der id der Abstimmung zu.

Für eine einzelne Diskussion kannst du auch mit GET /api/user0/threads/:topic_id/items die Elemente ihres Threads lesen. Dadurch werden die Abstimmungen und Fazits des Threads zusammen mit seinen übrigen Elementen zurückgegeben. Rufe jede Seite ab, um den vollständigen Thread zu erhalten.

GET /api/user0/polls

Parameter

Name Beschreibung
group_id Ganzzahl, erforderlich. ID der Gruppe, deren Abstimmungen aufgelistet werden sollen
status Zeichenkette, optional, Standardwert active. Werte: active, closed, all
limit Ganzzahl, optional, Standardwert 50. Anzahl der Einträge pro Seite
offset Ganzzahl, optional, Standardwert 0. Anzahl der Einträge, die bei der Seitennavigation übersprungen werden

Abwärtskompatibilität: per und from werden als Aliasse für limit und offset akzeptiert und funktionieren weiterhin.

Beispiel

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

Abstimmung bearbeiten

Bearbeite eine Abstimmung als die Person, deren API-Schlüssel verwendet wird. Es gelten dieselben Berechtigungen wie in Loomio: Diese Person muss die Abstimmung bearbeiten dürfen.

PATCH /api/user0/polls/:id

Parameter

Name Beschreibung
title Aktualisierter Titel
details Aktualisierte Details der Abstimmung
details_format Entweder md oder html, optional, Standardwert md
options Aktualisierte Optionsnamen. Änderungen an den Optionen können sich je nach Zustand der Abstimmung auf vorhandene Stimmen auswirken
poll_options_attributes Alternative zu options. Aktualisiere detaillierte Optionsobjekte anhand ihrer id, füge Objekte ohne id hinzu oder entferne eine Option mit id und _destroy: true. Nicht angegebene Optionen bleiben unverändert
reason_prompt Aktualisierte gemeinsame Aufforderung zur Begründung für Abstimmungstypen ohne eigene Aufforderungen pro Option
stance_reason_required Aktualisierte Anforderung an die Begründung; es gelten dieselben Werte wie beim Erstellen einer Abstimmung
closing_at ISO-8601-Zeichenfolge oder null
recipient_audience group oder null. Bei group wird die gesamte Gruppe benachrichtigt
recipient_user_ids Array von Benutzer-IDs der Personen, die benachrichtigt oder eingeladen werden sollen
recipient_emails Array von E-Mail-Adressen der Personen, die zur Stimmabgabe eingeladen werden sollen
recipient_message Nachricht, die in die Einladung per E-Mail aufgenommen werden soll

Beispiel

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

Detaillierte Optionen bearbeiten

Entnimm die Options-IDs dem poll_options-Array in der Antwort auf eine Anfrage zum Erstellen oder Abrufen einer Abstimmung. Sende nur die zu ändernden Felder zusammen mit der id der jeweiligen bestehenden Option:

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
      }
    ]
  }'

Options-IDs müssen zur bearbeiteten Abstimmung gehören. Zum Bearbeiten ist die Berechtigung zum Bearbeiten der Abstimmung erforderlich. Beendete Abstimmungen können nicht bearbeitet werden. Bei anonymen Abstimmungen kann außerdem die Konfiguration der Optionen nach der ersten Stimmabgabe nicht mehr geändert werden.

Abstimmung als gelöscht markieren

Markiere eine Abstimmung als gelöscht, indem du den API-Schlüssel der handelnden Person verwendest. Dadurch wird die Abstimmung verworfen, ihr Datensatz bleibt jedoch erhalten.

DELETE /api/user0/polls/:id

Beispiel

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

Suche nach Diskussionen, Kommentaren, Abstimmungen, Stimmen und Fazits, die für die Person mit dem API-Schlüssel sichtbar sind. Die Ergebnisse enthalten öffentliche Inhalte auch dann, wenn die Person kein Mitglied der jeweiligen Gruppe ist; für private Inhalte gelten weiterhin die üblichen Sichtbarkeitsregeln für Threads.

GET /api/user0/search

Parameter

Name Beschreibung
query Suchtext. Exakte und unscharfe Treffer werden unterstützt
group_id Beschränke die Ergebnisse auf eine sichtbare Gruppe
org_id Beschränke die Ergebnisse auf eine sichtbare Hauptgruppe und ihre sichtbaren Untergruppen. Verwende 0 für direkte Diskussionen
type Beschränke die Ergebnisse auf einen Typ: Discussion, Comment, Poll, Stance oder Outcome
types Durch Kommas getrennte Liste der Ergebnistypen
tag Beschränke die Ergebnisse auf Threads mit diesem Schlagwort
author_id Beschränke die Ergebnisse auf Inhalte einer verfassenden Person. Ohne query wird deren jüngste sichtbare Aktivität zurückgegeben
order Setze den Wert auf authored_at_desc, um passende Inhalte nach ihrem Erstellungszeitpunkt zu sortieren
curl 'https://www.loomio.com/api/user0/search?query=quarterly+planning&type=Discussion' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Die Antwort enthält ein search_results-Array. Jedes Ergebnis identifiziert den gefundenen Datensatz und seinen sichtbaren Kontext anhand von Feldern wie searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at und tags. Felder, die auf ein Ergebnis nicht zutreffen, haben den Wert null.

Threads

Threads auflisten

Liste die Diskussions- und Abstimmungs-Threads auf, die für die Person sichtbar sind, deren API-Schlüssel verwendet wird, sortiert nach der neuesten Aktivität. Die ID eines Threads ist seine topic_id.

GET /api/user0/threads

Parameter

Name Beschreibung
limit Ganzzahl, optional, Standardwert 50. Anzahl der Einträge pro Seite
offset Ganzzahl, optional, Standardwert 0. Anzahl der Einträge, die bei der Seiteneinteilung übersprungen werden

Beispiel

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

Thread lesen

Lies einen Thread, seinen geordneten Ereignisstrom oder sein vollständiges sichtbares Markdown-Dokument.

GET /api/user0/threads/:topic_id

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

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

Der Endpunkt items akzeptiert diese Parameter zur Seiteneinteilung:

Name Beschreibung
limit Ganzzahl, optional, Standardwert 50, höchstens 500. Anzahl der Einträge pro Seite
offset Ganzzahl, optional, Standardwert 0. Anzahl der Einträge, die bei der Seiteneinteilung übersprungen werden

Beispiel

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

Der Endpunkt items gibt eine Seite des Ereignisstroms in aufsteigender Reihenfolge zurück, einschließlich sichtbarer Kommentare, Abstimmungen, Stimmen und Fazits. meta.total ist die Gesamtzahl der Einträge im Thread. Rufe die folgenden Seiten ab, um den gesamten Ereignisstrom zu lesen. Der Endpunkt markdown gibt den vollständigen sichtbaren Thread als ein Markdown-Dokument zurück. Begründungen zu Stimmen werden nur aufgenommen, wenn sie für die Person sichtbar sind, deren API-Schlüssel verwendet wird.

Alle Thread-Endpunkte setzen dieselben Berechtigungen durch wie die Loomio-Oberfläche. Der API-Schlüssel gewährt keinen Zugriff auf einen Thread, den die Person normalerweise nicht öffnen darf.

Webhooks

Die Benutzer-API basiert auf Anfragen: Eine Integration ruft Loomio auf, wenn sie Daten lesen oder ändern möchte. Ein Gruppen-Webhook ermöglicht die Übertragung in die andere Richtung. Loomio sendet ausgewählte Gruppenereignisse an deinen Endpunkt, sobald sie eintreten. So muss eine Integration die REST-API nicht regelmäßig nach Änderungen abfragen.

Webhooks werden für jede Gruppe einzeln eingerichtet und erfordern Administrationsrechte für die Gruppe. Du kannst sie über die Loomio-Oberfläche verwalten:

  1. Öffne die Gruppe.
  2. Öffne das Gruppenmenü und wähle Chat-Integrationen.
  3. Füge die Integration hinzu, die zum Nutzdatenformat passt, das dein Endpunkt akzeptiert. Verwende für einen allgemein nutzbaren Endpunkt das Mattermost/Markdown-Format.
  4. Gib einen Namen und die Ziel-URL ein.
  5. Wähle die Ereignisse aus, die Loomio automatisch senden soll.
  6. Speichere die Integration und sende mit Testverbindung eine Testnachricht.

Verwende ein HTTPS-Ziel mit einer nicht erratbaren URL. Loomio verlangt, dass das Ziel zu einer öffentlichen Adresse aufgelöst wird, und blockiert Anfragen an lokale oder private Netzwerkadressen.

Agenten und andere Integrationen können Webhooks stattdessen über die unten beschriebenen Chatbot-Endpunkte mit Bearer-Authentifizierung verwalten. Die Ressource heißt aus Kompatibilitätsgründen mit Loomios Chat-Integrationen chatbots, steht aber auch für allgemeine ausgehende Webhooks.

Webhooks auflisten

Gibt die für eine Gruppe eingerichteten Chat-Integrationen zurück. Das Konto, dessen API-Schlüssel verwendet wird, muss Administrationsrechte für diese Gruppe haben. Die Antwort enthält Ziel-URLs und darf deshalb gewöhnlichen Gruppenmitgliedern nicht zugänglich gemacht werden.

GET /api/user0/chatbots?group_id=123

Name Beschreibung
group_id Ganzzahl, erforderlich. ID der Gruppe, deren Webhooks aufgelistet werden sollen
limit Ganzzahl, optional, Standardwert 50, höchstens 500. Anzahl der Einträge pro Seite
offset Ganzzahl, optional, Standardwert 0. Anzahl der Einträge, die bei der Seiteneinteilung übersprungen werden
curl 'https://www.loomio.com/api/user0/chatbots?group_id=123&limit=50&offset=0' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Die Antwort enthält eine Seite von chatbots, sortiert nach aufsteigender Integrations-ID, mit der Gesamtzahl für die Gruppe in meta.total. Jede Integration hat diese Felder:

Feld Beschreibung
id ID der Integration für Aktualisierungen und das Löschen
group_id Gruppe, die die Ereignisse empfängt
name Name zur Verwaltung der Integration
kind webhook für einen ausgehenden Webhook oder matrix für eine Matrix-Integration
webhook_kind Nutzdatenformat: markdown, slack, discord, microsoft oder webex
server Ziel-URL
event_kinds Automatisch gesendete Ereignisse
notification_only Ob Nachrichten nur die Überschrift der Benachrichtigung enthalten

Einen Webhook erstellen

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
  }'

Das Konto, dessen API-Schlüssel verwendet wird, muss Administrationsrechte für die Gruppe mit der ID group_id haben. Vor dem Speichern wird geprüft, ob das Ziel eine öffentliche URL ist.

Einen Webhook aktualisieren

PATCH /api/user0/chatbots/:id

Sende alle Felder, die geändert werden sollen. Durch eine Änderung von group_id kann der Webhook nicht in eine andere Gruppe übertragen werden.

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

Ein Webhook-Ziel testen

Sende eine Markdown-kompatible Testnachricht an ein Ziel, bevor oder nachdem du dessen Konfiguration speicherst.

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 löschen

DELETE /api/user0/chatbots/:id

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

Das Löschen der Konfiguration stoppt zukünftige Zustellungen. Dabei werden keine Inhalte der Loomio-Gruppe gelöscht.

Ereignistypen

Ein Webhook kann diese Ereignistypen abonnieren:

Ereignis Wann es gesendet wird
new_discussion Eine Diskussion wird gestartet
discussion_edited Eine Diskussion wird bearbeitet
new_comment Ein Kommentar wird erstellt
poll_created Eine Abstimmung wird gestartet
poll_edited Eine Abstimmung wird bearbeitet
poll_closing_soon Eine Abstimmung nähert sich ihrem Endzeitpunkt
poll_expired Eine Abstimmung erreicht ihren Endzeitpunkt
poll_closed_by_user Eine Person beendet eine Abstimmung manuell
poll_reopened Eine Abstimmung wird wieder geöffnet
outcome_created Ein Fazit wird veröffentlicht
outcome_updated Ein Fazit wird aktualisiert
outcome_review_due Die Überprüfung eines Fazits wird fällig
stance_created Eine Stimme wird abgegeben
stance_updated Eine Stimme wird geändert

Der Webhook gehört zu einer Gruppe und empfängt die abonnierten Ereignisse aus dieser Gruppe. Personen können die Integration auch ausdrücklich beim Teilen oder beim Senden bestimmter Benachrichtigungen auswählen, selbst wenn das entsprechende automatische Ereignis nicht ausgewählt ist.

HTTP-Zustellung

Loomio sendet einen asynchronen HTTP POST mit diesem Header an die konfigurierte URL:

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

Das Zeitlimit für die Anfrage beträgt fünf Sekunden. Eine 2xx-Antwort, einschließlich 204 No Content, gilt als erfolgreich. Dienste, die Webhooks empfangen, sollten zügig antworten, längere Aufgaben asynchron verarbeiten und mit doppelten Zustellungen oder Zustellungen in abweichender Reihenfolge umgehen können.

Loomio fügt derzeit keine Webhook-Signatur, keinen Header mit einem gemeinsamen Geheimnis, keine Ereignis-ID und keine Zustellungs-ID hinzu. Behandle die vollständige Ziel-URL als Zugangsdaten, mache sie nicht öffentlich zugänglich und füge der URL ein nicht erratbares Token hinzu, wenn der empfangende Dienst dies unterstützt. Wenn du ein stabiles, maschinenlesbares Ereignisschema oder eine signierte Zustellung benötigst, verwende den Webhook als Änderungsbenachrichtigung und rufe die aktuellen Datensätze über die authentifizierte Benutzer-API ab.

Nutzdatenformate

Webhook-Nutzdaten sind für die Anzeige in Chatdiensten bestimmte Nachrichten. Sie sind keine vollständig serialisierten Loomio-Datensätze. Links in der Nachricht verweisen auf die betroffenen Loomio-Inhalte; eine Integration kann die Benutzer-API nutzen, wenn sie den aktuellen Stand in strukturierter Form benötigt.

Integrationsformat Wichtigste JSON-Felder
Mattermost/Markdown text, icon_url, username
Slack text
Discord content, auf etwa 1.900 Zeichen begrenzt
Microsoft Teams @type, @context, themeColor, text, sections
Webex markdown

Das allgemeine Markdown-Format sendet beispielsweise einen Nachrichteninhalt mit dieser Struktur:

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

Der genaue Nachrichtentext hängt vom Ereignis, der Sprache der Gruppe, der Einstellung für reine Benachrichtigungen und der Loomio-Version ab. Empfangende Dienste sollten sich auf die dokumentierten Felder der obersten Ebene des ausgewählten Formats verlassen, statt den Wortlaut der Sätze auszuwerten.

Diese Seite wurde maschinell übersetzt. Wenn ein Wort falsch oder unklar ist, schreib eine E-Mail an contact@loomio.org, und wir korrigieren es.