Unirse a una organización sugerida
POST /fapi/v1/me/organization-suggestions/{domain_id}:join · llamado desde el host de inicio de sesión del entorno
Acepta una sugerencia de Listar mis sugerencias de organización: el usuario autenticado pasa a ser miembro de la organización sugerida con el rol de miembro predeterminado del entorno. El origen de la membresía es domain_capture y el usuario queda registrado como actor; se envía un evento organization_membership.created. De dos uniones simultáneas, solo una tiene éxito. Unirse no requiere una sesión verificada recientemente: solo concede el rol de miembro predeterminado, y únicamente para un dominio cuya dirección de correo electrónico el usuario haya verificado. Requiere la cookie __Host-idp_session del usuario autenticado; si la cookie falta, ha caducado o ha sido revocada, devuelve 401 unauthenticated. Una aplicación de primera parte en otro origen puede enviar en su lugar su token de acceso de la API frontal (Authorization: DPoP <token> con una prueba DPoP; consulte Token de acceso de la API frontal).
Con @keenauth/js: await keenauth.organizations.joinSuggestion(id).
Solicitud
Encabezados:
| Encabezado | Obligatorio | Descripción |
|---|---|---|
Idp-Client |
sí | Identificador del SDK. |
Origin |
sí | Debe ser exactamente https://<host de inicio de sesión>. |
domain_id: el id de la sugerencia (odm_…).
Sin cuerpo (se acepta un objeto JSON vacío).
Respuesta
200 OK con {"membership_id": "mem_…", "organization_id": "org_…"}.
Errores
| Estado | Código | Cuándo |
|---|---|---|
| 401 | unauthenticated |
No hay una cookie de sesión válida ni un token de acceso de la API frontal. |
| 403 | origin_not_allowed |
Origin falta o es incorrecto. |
| 403 | role_not_assignable |
La captura por dominio no puede conceder el rol de miembro predeterminado. |
| 403 | user_not_active |
El usuario no está activo. |
| 404 | not_found |
El dominio no es una sugerencia para este usuario (desconocido, mal formado, no está en modo suggest, no hay una dirección verificada en él, o se descartó tres veces). |
| 409 | membership_already_exists |
El usuario ya tiene una membresía en la organización. |
| 409 | organization_disabled |
La organización está deshabilitada o en proceso de eliminación. |
| 409 | membership_limit_reached |
El usuario ha alcanzado su límite de membresías. |
| 409 | organization_membership_limit_reached |
La organización ha alcanzado su límite de membresías. |
| 503 | temporarily_unavailable |
El directorio de membresías no respondió; reintente más tarde. |
Ejemplo
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
{
"membership_id": "mem_01j9yyyyyyyyyyyyyyyyyyyyyy",
"organization_id": "org_01j9xxxxxxxxxxxxxxxxxxxxxx"
}
Datos personales
Este endpoint contiene datos personales: membresías e invitaciones de organizaciones. Datos personales en las APIs de KeenAuth describe qué se almacena, durante cuánto tiempo se conserva y cómo se elimina. No envíe categorías especiales de datos personales (salud, datos biométricos, religión, opiniones políticas, orientación sexual) en ningún campo.