メンバーシップの終了日を設定
PATCH /fapi/v1/organizations/{org_id}/memberships/{membership_id} · 環境のサインインホストから呼び出されます
組織のプロフィール画面向けに、メンバーシップが終了する日付(expires_at)を設定または解除します。日付を過ぎると、メンバーシップは削除され、この組織のコンテキストにおけるメンバーのセッションとトークンは取り消されます。7 日前には membership_expiry_warned イベントが発行されます。ロールを変更するには メンバーのロールを設定 を使用します。このエンドポイントが変更するのは終了日のみです。
認証済みユーザーの __Host-idp_session Cookie(Origin が完全一致すること)、または First-party アプリの Front API アクセストークン(DPoP 証明付きの Authorization: DPoP <token>。Front API アクセストークン を参照)が必要です。ユーザーは、idp_members:update_roles と idp_members:remove の両方の権限を持つ、組織のアクティブなメンバーである必要があります。メンバーでないユーザーには 404 not_found が返されます。両方の権限がないメンバーには 403 insufficient_permissions が返されます。ここで自分自身のメンバーシップを変更することはできず(403 insufficient_permissions)、特権ロールを持つメンバーを変更できるのは管理者ロールを持つメンバーのみです(403 role_not_assignable)。
@keenauth/js を使う場合: await keenauth.organizations.setMemberExpiry(orgId, membershipId, "2027-03-31T00:00:00Z", { expectedVersion: 3 })。日付を解除するには null を渡します。
リクエスト
ヘッダー:
| ヘッダー | 必須 | 説明 |
|---|---|---|
Idp-Client |
はい | SDK の識別子。 |
Origin |
Cookie を使う場合はあり | https://<sign-in host>。 |
If-Match |
いいえ | メンバー一覧から取得した 1 つのバージョン "<version>"。一致しないバージョン、または複数のバージョンを指定すると 412 precondition_failed が返されます。 |
org_id: 組織の識別子(org_…)。membership_id: メンバーシップの識別子(mem_…)。
ボディ: {"expires_at": "<RFC 3339 time>"}、または日付を解除する場合は {"expires_at": null}。expires_at は必須です。時刻は未来であり、メンバーシップ作成日から 365 日以内である必要があります。
レスポンス
200 OK とメンバーシップ(メンバー一覧 の項目と同じフィールド)、および ETag: "<version>" が返されます。
エラー
| ステータス | コード | 発生条件 |
|---|---|---|
| 400 | unknown_field |
ボディに expires_at 以外のフィールドが含まれています。 |
| 400 | malformed_request |
If-Match の形式が不正です。 |
| 401 | unauthenticated |
有効なセッション Cookie もトークンもありません。 |
| 403 | insufficient_permissions |
ユーザーに idp_members:update_roles または idp_members:remove がない、またはメンバーシップがユーザー自身のものです。 |
| 403 | role_not_assignable |
メンバーが特権ロールを持ち、ユーザーが管理者ロールを持っていません。 |
| 403 | origin_not_allowed |
Origin が一致しません。 |
| 404 | not_found |
このユーザーに対応する組織またはメンバーシップがありません。未知、形式不正、または他の組織の識別子も同じ応答になります。 |
| 409 | organization_disabled |
組織が無効化されているか、削除保留中(organization_pending_deletion)です。 |
| 412 | precondition_failed |
If-Match がメンバーシップの現在のバージョンを指定していません。 |
| 422 | validation_failed |
expires_at がない、RFC 3339 形式の時刻ではない、過去の日時である、またはメンバーシップ作成日から 365 日を超えています。 |
| 503 | service_unavailable |
一時的に利用できません。Retry-After の後に再試行してください。 |
例
curl -X PATCH "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" \
-H 'If-Match: "3"' \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{"expires_at": "2027-03-31T00:00:00Z"}'
{
"id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
"user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
"status": "active",
"roles": [{ "role_id": "rol_01jbz6x8kq3m2n4p5r6s7t8v9w", "source": "admin_api" }],
"created_at": "2026-11-03T09:00:00Z",
"activated_at": "2026-11-03T09:00:00Z",
"updated_at": "2026-11-03T11:00:00Z",
"version": 4
}
個人データ
このエンドポイントは個人データを扱います。対象は組織のメンバーシップと招待です。KeenAuth API における個人データ では、保存される内容、保存期間、削除方法を説明しています。いかなるフィールドにも特別な種類の個人データ(健康、生体情報、宗教、政治的意見、性的指向)を送信しないでください。