Mitglied einladen
POST /fapi/v1/organizations/{org_id}/invitations · aufgerufen vom Anmeldehost der Umgebung
Lädt eine E-Mail-Adresse in die Organisation ein. KeenAuth versendet die Einladungs-E-Mail; das Einladungstoken und der Annahme-Link werden Ihnen nie zurückgegeben. Existiert bereits eine ausstehende Einladung für dieselbe Adresse mit denselben Rollen, wird sie erneut gesendet und die Antwort lautet 200 OK; eine neue Einladung ergibt 201 Created.
Erforderlich ist das Cookie __Host-idp_session des authentifizierten Benutzers mit einem exakten Origin oder das Front-API-Zugriffstoken einer First-Party-App (Authorization: DPoP <token> mit einem DPoP-Proof; siehe Front-API-Zugriffstoken). Der Benutzer muss ein aktives Mitglied der Organisation sein und die Berechtigung idp_members:invite besitzen. Ein Benutzer, der kein Mitglied ist, erhält 404 not_found; ein Mitglied ohne die Berechtigung erhält 403 insufficient_permissions. Nur ein Mitglied mit der Administratorrolle kann mit einer privilegierten Rolle einladen (403 role_not_assignable).
Mit @keenauth/js: const { invitation, resent } = await keenauth.organizations.invite(orgId, { email, roleIds: [roleId] }).
Anfrage
Header:
| Header | Erforderlich | Beschreibung |
|---|---|---|
Idp-Client |
ja | SDK-Kennung. |
Origin |
ja, mit dem Cookie | https://<Anmeldehost>. |
org_id: die Kennung der Organisation (org_…).
Body:
| Feld | Erforderlich | Beschreibung |
|---|---|---|
email |
ja | Die einzuladende Adresse, höchstens 254 Zeichen. |
role_ids |
nein | Höchstens 10 Rollen (rol_…); ohne Angabe gilt die Standardrolle der Organisation. |
ttl_days |
nein | Wie lange die Einladung gültig bleibt, 1–30 Tage; ohne Angabe der Standardwert der Umgebung. |
Antwort
201 Created mit Location und ETag, oder 200 OK, wenn eine ausstehende Einladung erneut gesendet wurde. Der Body ist die Einladung:
id (inv_…), email (nur solange ausstehend, sonst null), role_ids, delivery, delivery_status (queued, sent, bounced oder not_sent), status (pending, accepted, revoked oder expired), send_count, last_sent_at, expires_at, accepted_user_id, accepted_at, revoked_at, created_at, updated_at, version.
Fehler
| Status | Code | Wann |
|---|---|---|
| 400 | unknown_field |
Der Body enthält ein Feld, das oben nicht aufgeführt ist. |
| 401 | unauthenticated |
Kein gültiges Sitzungs-Cookie oder Token. |
| 403 | insufficient_permissions |
Der Benutzer hat in der Organisation nicht idp_members:invite. |
| 403 | role_not_assignable |
Eine Rolle ist privilegiert und der Benutzer hat nicht die Administratorrolle. |
| 403 | origin_not_allowed |
Der Origin passt nicht. |
| 404 | not_found |
Für diesen Benutzer existiert keine solche Organisation oder Rolle. |
| 409 | invitation_already_pending |
Für diese Adresse existiert eine ausstehende Einladung mit anderen Rollen. |
| 409 | membership_already_exists |
Die Adresse gehört bereits einem Mitglied der Organisation. |
| 409 | organization_membership_limit_reached |
Die Organisation hat ihre Mitgliederobergrenze erreicht. |
| 409 | organization_disabled |
Die Organisation ist deaktiviert oder zur Löschung vorgemerkt (organization_pending_deletion). |
| 422 | validation_failed |
email, role_ids oder ttl_days fehlt oder ist ungültig. |
| 429 | invite_rate_limited |
Zu viele Einladungen oder erneute Sendungen; wiederholen Sie die Anfrage nach Retry-After. |
| 501 | not_implemented |
Der Versand von Einladungs-E-Mails ist in dieser Umgebung nicht eingerichtet. |
| 503 | service_unavailable |
Vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach Retry-After. |
Beispiel
curl -X POST "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/invitations" \
-H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
-H "Origin: https://example.keenauth.app" \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{"email":"new.member@example.com","role_ids":["rol_01jbz6x8kq3m2n4p5r6s7t8v9w"],"ttl_days":7}'
{
"id": "inv_01jbz6x8kq3m2n4p5r6s7t8v9d",
"email": "new.member@example.com",
"role_ids": ["rol_01jbz6x8kq3m2n4p5r6s7t8v9w"],
"delivery": "email",
"delivery_status": "queued",
"status": "pending",
"send_count": 1,
"last_sent_at": "2026-11-03T10:00:00Z",
"expires_at": "2026-11-10T10:00:00Z",
"accepted_user_id": null,
"accepted_at": null,
"revoked_at": null,
"created_at": "2026-11-03T10:00:00Z",
"updated_at": "2026-11-03T10:00:00Z",
"version": 1
}
Personenbezogene Daten
Dieser Endpunkt verarbeitet personenbezogene Daten: Organisationsmitgliedschaften und Einladungen. Personenbezogene Daten in den KeenAuth-APIs beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Senden Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).