
# Eliminar un miembro

`DELETE /fapi/v1/organizations/{org_id}/memberships/{membership_id}` · llamado desde el host de inicio de sesión del entorno

Elimina a un miembro de la organización. La membresía pasa a `removed`, y las sesiones y los tokens del usuario para esta organización quedan revocados; su cuenta y sus otras organizaciones no se modifican.

Requiere la cookie `__Host-idp_session` del usuario autenticado con un `Origin` exacto, o el token de acceso a la API frontal de una aplicación propia (`Authorization: DPoP <token>` con una prueba DPoP; consulte [Token de acceso a la API frontal](/docs/api/fapi/front-api-token)). El usuario debe ser miembro activo de la organización con el permiso `idp_members:remove`. Un usuario que no es miembro recibe `404 not_found`; un miembro sin el permiso recibe `403 insufficient_permissions`.

Eliminar a un miembro es una acción sensible: el usuario debe haber iniciado sesión en los últimos 5 minutos. De lo contrario, la respuesta es `401 step_up_required` con `WWW-Authenticate` indicando `max_age=300`; vuelva a iniciar la sesión del usuario con `maxAge: 300` y vuelva a intentarlo. Esta comprobación se realiza antes de leer cualquier dato de la organización.

- No puede eliminar su propia membresía desde aquí (`403 insufficient_permissions`).
- Solo un miembro que tenga el rol de administrador puede eliminar a un miembro que tenga un rol privilegiado (`403 role_not_assignable`).
- No se puede eliminar al último administrador activo (`409 last_org_admin`).

Con `@keenauth/js`: `await keenauth.organizations.removeMember(orgId, membershipId)`.

## Solicitud

Encabezados:

| Encabezado | Obligatorio | Descripción |
| --- | --- | --- |
| `Idp-Client` | sí | Identificador del SDK. |
| `Origin` | sí, con la cookie | `https://<host de inicio de sesión>`. |
| `If-Match` | no | Una versión, `"<version>"`, de la lista de miembros. Una versión que no coincide, o más de una versión, devuelve `412 precondition_failed`. |

`org_id`: el identificador de la organización (`org_…`). `membership_id`: el identificador de la membresía (`mem_…`).

Sin cuerpo.

## Respuesta

`204 No Content`.

## Errores

| Estado | Código | Cuándo |
| --- | --- | --- |
| 400 | `malformed_request` | `If-Match` está mal formado. |
| 401 | `unauthenticated` | No hay una cookie de sesión o un token válido. |
| 401 | `step_up_required` | El usuario inició sesión hace más de 5 minutos. |
| 403 | `insufficient_permissions` | El usuario no tiene `idp_members:remove`, o la membresía es la del propio usuario. |
| 403 | `role_not_assignable` | El miembro tiene un rol privilegiado y el usuario no tiene el rol de administrador. |
| 403 | `origin_not_allowed` | El `Origin` no coincide. |
| 404 | `not_found` | No existe tal organización o membresía para este usuario; un identificador desconocido, mal formado o ajeno recibe la misma respuesta. |
| 409 | `last_org_admin` | El miembro es el último administrador activo de la organización. |
| 409 | `organization_disabled` | La organización está deshabilitada o pendiente de eliminación (`organization_pending_deletion`). |
| 412 | `precondition_failed` | `If-Match` no coincide con la versión actual de la membresía. |
| 503 | `service_unavailable` | Servicio temporalmente no disponible; vuelva a intentarlo después de `Retry-After`. |

## Ejemplo

```bash
curl -X DELETE "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -b cookies.txt
```

## Datos personales

Este endpoint maneja datos personales: membresías e invitaciones de organizaciones. [Datos personales en las API de KeenAuth](/docs/policies/personal-data) 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.
