Actualizar una organización
PATCH /fapi/v1/organizations/{org_id} · llamado desde el host de inicio de sesión del entorno
Cambia el nombre, el slug o el color de marca de una organización (merge patch de JSON, RFC 7396). Los metadatos, el ID externo y el límite de miembros no se pueden cambiar aquí. 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 a la API frontal (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_org:update. Un usuario que no es miembro recibe 404 not_found; un miembro sin el permiso recibe 403 insufficient_permissions.
Con @keenauth/js: await keenauth.organizations.update(orgId, { name: "Acme Inc" }, { expectedVersion: 4 }).
Solicitud
Encabezados:
| Encabezado | Obligatorio | Descripción |
|---|---|---|
Idp-Client |
sí | Identificador del SDK. |
Origin |
sí, con la cookie | Debe ser exactamente https://<sign-in host>. |
Content-Type |
sí | application/json o application/merge-patch+json. |
If-Match |
no | "<version>" de la organización tal como se leyó por última vez; si ha cambiado desde entonces, devuelve 412 precondition_failed y nada cambia. |
org_id: el identificador de la organización (org_…).
Cuerpo (al menos un campo):
| Campo | Obligatorio | Descripción |
|---|---|---|
name |
no | Nuevo nombre visible; no puede ser null. |
slug |
no | Nuevo slug; no puede ser null. El slug anterior queda reservado durante 90 días, y un slug solo puede cambiarse una vez cada 30 días. |
brand_color |
no | #RRGGBB; null lo elimina. |
Respuesta
200 OK con un nuevo ETag; el cuerpo es la organización (consulte Obtener una organización).
Errores
| Estado | Código | Cuándo |
|---|---|---|
| 400 | unknown_field |
El cuerpo tiene un campo distinto de name, slug y brand_color. |
| 401 | unauthenticated |
No hay una cookie de sesión válida. |
| 403 | origin_not_allowed |
Origin falta o es incorrecto. |
| 403 | insufficient_permissions |
El usuario no tiene idp_org:update en la organización. |
| 404 | not_found |
No existe tal organización para este usuario; un identificador desconocido, mal formado o ajeno recibe la misma respuesta. |
| 409 | slug_taken |
Otra organización usa el slug. |
| 409 | slug_reserved |
El slug está en la reserva de 90 días de otra organización. |
| 409 | slug_change_rate_limited |
El slug ya cambió en los últimos 30 días. |
| 409 | organization_disabled |
La organización está desactivada. |
| 409 | organization_pending_deletion |
La organización está programada para su eliminación. |
| 412 | precondition_failed |
If-Match no indica la versión actual, o la organización cambió mientras se procesaba la solicitud. |
| 422 | validation_failed |
Un campo no es válido o es null donde no se permite, o el patch está vacío (empty_patch). |
| 503 | service_unavailable |
No disponible temporalmente; reintente después de Retry-After. |
Ejemplo
curl -X PATCH https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a \
-H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
-H "Origin: https://example.keenauth.app" \
-H "Content-Type: application/merge-patch+json" \
-H 'If-Match: "4"' \
-b cookies.txt \
-d '{"name": "Acme Inc", "brand_color": null}'
La respuesta tiene la misma forma que Obtener una organización, con "version": 5.