Üyeliği güncelle
PATCH /v1/organizations/{org_id}/memberships/{membership_id} · izin organizations:write
Üyeliğin role_ids (elle atanan rollerin tam kümesi) veya expires_at alanını JSON birleştirme yaması (Content-Type: application/merge-patch+json) ile değiştirir. İki alan aynı istekte birlikte değişebilir; tek bir işlemde uygulanırlar, bu yüzden ya ikisi de yazılır ya hiçbiri yazılmaz ve tek bir organization_membership.updated denetim kaydı oluşturulur. expires_at gelecekte olmalı ve üyelik oluşturulduktan sonra en fazla 365 gün sonrası olmalıdır; null bitiş tarihini kaldırır. role_ids: null etkisizdir. Rol kuralları PUT …/roles ile aynıdır. Mevcut değerine eşit bir alan yazılmaz. Yazma işlemi organization_membership.updated olarak denetlenir.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
org_id |
path | evet | Kuruluş kimliği (org_…). |
membership_id |
path | evet | Üyelik kimliği (mem_…). |
If-Match |
header | hayır | Mevcut ETag; verilirse eşleşmesi gerekir (412) ve yazmayı o sürüme sabitler. |
role_ids |
string[] | hayır | Elle atanan rol kimliklerinin (rol_…) tam kümesi, en fazla 50. |
expires_at |
string | null | hayır | Üyeliğin sonu (RFC 3339); null kaldırır. |
Yanıt
200 OK ile güncellenmiş üyelik ve ETag değeri.
{
"id": "mem_01j9xn5p9s0t4v6w8x0y2z4a6c",
"organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"user_id": "usr_01j9xh2k6p7q1r3s5t7v9w1x3y",
"status": "active",
"source": "admin_api",
"reason": null,
"roles": [
{
"role_id": "rol_01j9xr7s1t2w6x8y0z2a4b6c8e",
"source": "admin_api",
"assigned_at": "2026-10-12T09:31:00.123456Z"
}
],
"expires_at": "2027-01-01T00:00:00Z",
"created_at": "2026-10-12T09:31:00.123456Z",
"activated_at": "2026-10-12T09:31:00.123456Z",
"suspended_at": null,
"removed_at": null,
"updated_at": "2026-10-12T10:00:00Z",
"version": 2
}
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 404 | not_found |
Üyelik bu Kuruluşta yok. |
| 403 | role_not_assignable |
Bir rol ortam rolü değil veya bu Kuruluşun rolü değil. |
| 409 | last_org_admin |
Değişiklik Kuruluşu etkin bir yöneticisiz bırakır. |
| 412 | precondition_failed |
If-Match mevcut sürümle eşleşmiyor. |
| 415 | unsupported_media_type |
Gövde application/merge-patch+json değil. |
| 422 | validation_failed |
expires_at aralık dışında veya üyelik silinmiş (invalid_state), ya da bir değer geçersiz. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde gerekli izin yok. Ayrıcalıklı (is_privileged) bir rol atamak ayrıca roles:write gerektirir; bu olmadan hiçbir şey yazılmaz ve required_permissions iki izni de listeler. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
curl -i -X PATCH "https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/memberships/mem_01j9xn5p9s0t4v6w8x0y2z4a6c" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"expires_at":"2027-01-01T00:00:00Z"}'
Kişisel veriler
Bu uç nokta kişisel veri içerir: Kuruluş üyelikleri ve davetler. KeenAuth API'lerinde kişisel veriler neyin saklandığını, ne kadar süre tutulduğunu ve nasıl silindiğini açıklar. Hiçbir alanda özel nitelikli kişisel verileri (sağlık, biyometrik veriler, din, siyasi görüşler, cinsel yönelim) göndermeyin.