Invitar a un miembro

POST /fapi/v1/organizations/{org_id}/invitations · llamado desde el host de inicio de sesión del entorno

Invita a una dirección de correo electrónico a la organización. KeenAuth envía el correo de invitación; el token de invitación y el enlace de aceptación nunca se devuelven a usted. Si ya existe una invitación pendiente para la misma dirección con los mismos roles, se vuelve a enviar y la respuesta es 200 OK; una invitación nueva es 201 Created.

Requiere la cookie __Host-idp_session del usuario autenticado con un Origin exacto, o el token de acceso de la API frontal de una aplicación de primera parte (Authorization: DPoP <token> con una prueba DPoP; consulte Token de acceso de la API frontal). El usuario debe ser miembro activo de la organización con el permiso idp_members:invite. Un usuario que no es miembro recibe 404 not_found; un miembro sin el permiso recibe 403 insufficient_permissions. Solo un miembro con el rol de administrador puede invitar con un rol privilegiado (403 role_not_assignable).

Con @keenauth/js: const { invitation, resent } = await keenauth.organizations.invite(orgId, { email, roleIds: [roleId] }).

Solicitud

Encabezados:

Encabezado Obligatorio Descripción
Idp-Client sí Identificador del SDK.
Origin sí, con la cookie https://<host de inicio de sesión>.

org_id: el identificador de la organización (org_…).

Cuerpo:

Campo Obligatorio Descripción
email sí La dirección que se invita, de como máximo 254 caracteres.
role_ids no Como máximo 10 roles (rol_…); si no se indica ninguno, se usa el rol predeterminado de la organización.
ttl_days no Durante cuántos días sigue válida la invitación, de 1 a 30 días; si se omite, se usa el valor predeterminado del entorno.

Respuesta

201 Created con Location y ETag, o 200 OK cuando se volvió a enviar una invitación pendiente. El cuerpo es la invitación:

id (inv_…), email (solo mientras está pendiente; si no, null), role_ids, delivery, delivery_status (queued, sent, bounced o not_sent), status (pending, accepted, revoked o expired), send_count, last_sent_at, expires_at, accepted_user_id, accepted_at, revoked_at, created_at, updated_at, version.

Errores

Estado Código Cuándo
400 unknown_field El cuerpo contiene un campo no listado arriba.
401 unauthenticated No hay una cookie de sesión o un token válido.
403 insufficient_permissions El usuario no tiene idp_members:invite en la organización.
403 role_not_assignable Un rol es privilegiado y el usuario no tiene el rol de administrador.
403 origin_not_allowed Origin no coincide.
404 not_found No existe tal organización o rol para este usuario.
409 invitation_already_pending Ya hay una invitación pendiente para esta dirección con roles distintos.
409 membership_already_exists La dirección pertenece a un miembro de la organización.
409 organization_membership_limit_reached La organización ha alcanzado su límite de miembros.
409 organization_disabled La organización está desactivada o pendiente de eliminación (organization_pending_deletion).
422 validation_failed Falta email, role_ids o ttl_days, o alguno no es válido.
429 invite_rate_limited Demasiadas invitaciones o reenvíos; reintente después de Retry-After.
501 not_implemented El envío de correos de invitación no está configurado en este entorno.
503 service_unavailable No disponible temporalmente; reintente después de Retry-After.

Ejemplo

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
}

Datos personales

Este endpoint contiene datos personales: membresías e invitaciones de organizaciones. Datos personales en las API de KeenAuth describe qué se almacena, 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.