APIを更新する
PATCH /v1/apis/{api_id} · 権限 apis:write
JSONマージパッチでAPIを更新します(RFC 7396、application/merge-patch+json)。送信したフィールドは変更され、省略したフィールドはそのままです。If-Matchが必須です。keyとidentifierは作成後に変更することはできず、システムAPIは変更できません。何も変更しないパッチは何も書き込まず、バージョンは保持されます。
リクエスト
| パラメータ | 入力 | 説明 |
|---|---|---|
api_id |
path | APIのID。 |
If-Match |
header | 最後の読み取り時のETag(必須)。 |
ボディ: 下記の書き込み可能なフィールドのいずれか(すべてオプション)。フィールドはnullで削除することはできません。
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
key |
string | いいえ | 安定した設定キー、^[a-z0-9_-]{1,64}$。変更不可。 |
identifier |
string | いいえ | トークンオーディエンス: httpsURL(クエリまたはフラグメントなし)またはurn:<nid>:<nss>。正規形式で保存されます。変更不可。urn:idp:ネームスペースは予約されています。 |
name |
string | いいえ | 1~128文字。 |
access_token_lifetime_s |
integer | いいえ | 60~86400。デフォルト3600(mcp_profileを使用する場合は600)。 |
token_format |
string | いいえ | jwt(デフォルト)またはopaque。 |
rbac_mode |
string | いいえ | ロールと権限がトークンに反映される方法: claims(デフォルト)はpermissionsとorg_permissionsを追加します。offはどちらも追加しません(org_rolesは引き続き追加されます)。enforceはそれらを追加し、さらに付与されるスコープをユーザーの有効な権限に制限します。 |
allow_offline_access |
boolean | いいえ | デフォルトtrue。 |
require_resource_indicator |
boolean | いいえ | デフォルトfalse(mcp_profileを使用する場合はtrue)。 |
dpop_required |
boolean | いいえ | デフォルトfalse。 |
mcp_profile |
boolean | いいえ | httpsのidentifierとrequire_resource_indicator: trueが必要です。 |
first_party_access |
string | いいえ | all(デフォルト)またはgranted_only。 |
introspection_applications |
array | いいえ | このAPIのトークンをイントロスペクトできるアプリケーション(app_…)、最大50個、重複なし。同じ環境のwebおよびm2mアプリケーションのみ。リストは全体として置き換えられます。[]は空にし、nullは拒否されます。 |
イントロスペクトアプリケーション
イントロスペクトエンドポイント(POST <issuer>/oauth2/introspect、RFC 7662)は、アクセストークンに対して、トークンが発行されたアプリケーション、またはトークンのaudで指定されたAPIのintrospection_applicationsリストにあるアプリケーションの2つの呼び出し元にのみactive: trueで応答します。他のすべての呼び出し元はactive: falseを取得するため、APIは互いのトークンを読むことができません。同じ環境の機密アプリケーション(web、m2m)のみをリストできます。リストはセットとして保存され、ID順で返されます。一時停止されたアプリケーションはリストに残りますが、イントロスペクトはできません。システムAPIのリストは書き込みできません。
レスポンス
200 OKと新しいETag:
{
"id": "api_01h455vb4pex5vsknk084sn02q",
"key": "orders",
"identifier": "https://api.example.com/orders",
"name": "Orders API",
"is_system": false,
"access_token_lifetime_s": 3600,
"token_format": "jwt",
"rbac_mode": "off",
"allow_offline_access": true,
"require_resource_indicator": false,
"dpop_required": false,
"mcp_profile": false,
"first_party_access": "all",
"introspection_applications": ["app_01h455vb4pex5vsknk084sn02r"],
"created_at": "2026-10-05T12:00:00Z",
"updated_at": "2026-10-05T12:00:00Z"
}
エラー
| HTTP | code | 情況 |
|---|---|---|
| 400 | unknown_field |
パッチに読み取り専用または不明なフィールドが含まれています。 |
| 404 | not_found |
この環境にそのようなAPIはありません。 |
| 409 | conflict |
APIはシステムAPIです。 |
| 412 | precondition_failed |
If-Matchが現在のバージョンと一致しません。 |
| 415 | unsupported_media_type |
コンテンツタイプがapplication/merge-patch+jsonではありません。 |
| 422 | validation_failed |
値が無効であるか、フィールドがnullに設定されているか、key / identifierが変更されました。 |
| 422 | validation_failed |
introspection_applicationsアイテムがこの環境に存在しない(unknown_application)、機密ではない(not_confidential)、重複している(duplicate)、またはapp_… IDではありません(invalid_value)。ポインタはリクエスト内のインデックスを名付けます。 |
| 428 | precondition_required |
If-Matchが欠落しています。 |
例
curl -X PATCH https://api.eu.keenauth.com/v1/apis/api_01h455vb4pex5vsknk084sn02q \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-H 'If-Match: "1"' \
-d '{"access_token_lifetime_s":900}'