
# Aderisci a un'organizzazione suggerita

`POST /fapi/v1/me/organization-suggestions/{domain_id}:join` · chiamato dall'host di accesso dell'ambiente

Accetta un suggerimento da [Elenca i miei suggerimenti di organizzazione](/docs/api/fapi/me/organization-suggestions/list): l'utente autenticato diventa membro dell'organizzazione suggerita con il ruolo di membro predefinito dell'ambiente. L'origine dell'appartenenza è `domain_capture` e l'utente viene registrato come autore; viene inviato un evento `organization_membership.created`. Tra due adesioni simultanee, ne riesce solo una. Aderire non richiede una sessione verificata di recente: concede solo il ruolo di membro predefinito, e solo per un dominio il cui indirizzo email l'utente ha verificato. Richiede il cookie `__Host-idp_session` dell'utente autenticato; se il cookie manca, è scaduto o è stato revocato, restituisce `401 unauthenticated`. Un'app first-party su un'altra origine può invece inviare il proprio access token Front API (`Authorization: DPoP <token>` con una prova DPoP; vedi [Token di accesso Front API](/docs/api/fapi/front-api-token)).

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

## Richiesta

Intestazioni:

| Intestazione | Obbligatoria | Descrizione |
| --- | --- | --- |
| `Idp-Client` | sì | Identificatore dell'SDK. |
| `Origin` | sì | Deve essere esattamente `https://<host di accesso>`. |

`domain_id`: l'`id` del suggerimento (`odm_…`).

Nessun corpo (è accettato un oggetto JSON vuoto).

## Risposta

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

## Errori

| Stato | Codice | Quando |
| --- | --- | --- |
| 401 | `unauthenticated` | Cookie di sessione o access token Front API assente o non valido. |
| 403 | `origin_not_allowed` | `Origin` manca oppure è errato. |
| 403 | `role_not_assignable` | Il ruolo di membro predefinito non può essere concesso tramite cattura del dominio. |
| 403 | `user_not_active` | L'utente non è attivo. |
| 404 | `not_found` | Il dominio non è un suggerimento per questo utente (sconosciuto, malformato, non in modalità `suggest`, senza indirizzo verificato al suo interno, oppure ignorato tre volte). |
| 409 | `membership_already_exists` | L'utente ha già un'appartenenza nell'organizzazione. |
| 409 | `organization_disabled` | L'organizzazione è disattivata oppure in fase di eliminazione. |
| 409 | `membership_limit_reached` | L'utente ha raggiunto il proprio limite di appartenenze. |
| 409 | `organization_membership_limit_reached` | L'organizzazione ha raggiunto il proprio limite di membri. |
| 503 | `temporarily_unavailable` | La directory delle appartenenze non ha risposto; riprova più tardi. |

## Esempio

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

## Dati personali

Questo endpoint contiene dati personali: appartenenze e inviti alle organizzazioni. [Dati personali nelle API di KeenAuth](/docs/policies/personal-data) descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale) in nessun campo.
