
# Einer vorgeschlagenen Organisation beitreten

`POST /fapi/v1/me/organization-suggestions/{domain_id}:join` · wird vom Anmelde-Host der Umgebung aufgerufen

Nimmt einen Vorschlag aus [Meine Organisationsvorschläge auflisten](/docs/api/fapi/me/organization-suggestions/list) an: Der authentifizierte Benutzer wird mit der Standard-Mitgliederrolle der Umgebung Mitglied der vorgeschlagenen Organisation. Die Quelle der Mitgliedschaft ist `domain_capture`, und der Benutzer wird als Urheber erfasst; ein Ereignis `organization_membership.created` wird gesendet. Bei zwei gleichzeitigen Beitritten gelingt nur einer. Für den Beitritt ist keine kürzlich verifizierte Sitzung erforderlich: Er gewährt nur die Standard-Mitgliederrolle und nur für eine Domain, deren Adresse der Benutzer bestätigt hat. Erforderlich ist das Cookie `__Host-idp_session` des authentifizierten Benutzers; fehlt das Cookie, ist es abgelaufen oder widerrufen, wird `401 unauthenticated` zurückgegeben. Eine First-Party-Anwendung auf einem anderen Origin kann stattdessen ihr Front-API-Zugriffstoken senden (`Authorization: DPoP <token>` mit einem DPoP-Proof; siehe [Front-API-Zugriffstoken](/docs/api/fapi/front-api-token)).

Mit `@keenauth/js`: `await keenauth.organizations.joinSuggestion(id)`.

## Anfrage

Header:

| Header | Erforderlich | Beschreibung |
| --- | --- | --- |
| `Idp-Client` | ja | Kennung des SDK. |
| `Origin` | ja | Muss genau `https://<Anmelde-Host>` sein. |

`domain_id`: die `id` des Vorschlags (`odm_…`).

Kein Body (ein leeres JSON-Objekt wird akzeptiert).

## Antwort

`200 OK` mit `{"membership_id": "mem_…", "organization_id": "org_…"}`.

## Fehler

| Status | Code | Wann |
| --- | --- | --- |
| 401 | `unauthenticated` | Kein gültiges Sitzungs-Cookie oder Front-API-Zugriffstoken. |
| 403 | `origin_not_allowed` | `Origin` fehlt oder ist falsch. |
| 403 | `role_not_assignable` | Die Standard-Mitgliederrolle kann durch Domain-Erfassung nicht vergeben werden. |
| 403 | `user_not_active` | Der Benutzer ist nicht aktiv. |
| 404 | `not_found` | Die Domain ist für diesen Benutzer kein Vorschlag (unbekannt, fehlerhaft, nicht im Modus `suggest`, ohne bestätigte Adresse darin oder dreimal abgelehnt). |
| 409 | `membership_already_exists` | Der Benutzer hat bereits eine Mitgliedschaft in der Organisation. |
| 409 | `organization_disabled` | Die Organisation ist deaktiviert oder wird gelöscht. |
| 409 | `membership_limit_reached` | Der Benutzer hat seine Grenze für Mitgliedschaften erreicht. |
| 409 | `organization_membership_limit_reached` | Die Organisation hat ihre Grenze für Mitgliedschaften erreicht. |
| 503 | `temporarily_unavailable` | Das Mitgliederverzeichnis hat nicht geantwortet; wiederholen Sie die Anfrage später. |

## Beispiel

```bash
curl -X POST https://example.keenauth.app/fapi/v1/me/organization-suggestions/odm_01j9a5c4000000000000000001:join \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -b cookies.txt
```

```json
{
  "membership_id": "mem_01j9yyyyyyyyyyyyyyyyyyyyyy",
  "organization_id": "org_01j9xxxxxxxxxxxxxxxxxxxxxx"
}
```

## Personenbezogene Daten

Dieser Endpunkt verarbeitet personenbezogene Daten: Organisationsmitgliedschaften und Einladungen. [Personenbezogene Daten in den KeenAuth-APIs](/docs/policies/personal-data) beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Übermitteln Sie keine besonderen Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung) in irgendeinem Feld.
