権限を作成
POST /v1/permissions · 権限 apis:write
API に権限(OAuth スコープ)を追加します。同意画面に表示するテキストも必要に応じて指定できます。Idempotency-Key に対応しています。
リクエスト
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
api_id |
string | はい | 対象の API(api_…)。 |
value |
string | はい | スコープの値。resource:action 形式(^[a-z0-9_.-]{1,64}:[a-z0-9_.*-]{1,64}$)。API 内で一意であり、変更できません。idp_ プレフィックスは予約されています。 |
display_name |
string | null | いいえ | 同意画面で、スコープの値の代わりに表示される短い名前。128 文字以内。 |
description |
string | null | いいえ | 同意画面で名前の下に表示される詳細説明。1024 文字以内。 |
consent_text_i18n |
object | null | いいえ | 言語タグから同意画面のテキストへの対応。例:{"en": "Read your orders"}。30 言語まで、各テキストは 1〜1024 文字、合計 16 KiB まで。 |
sensitivity |
string | いいえ | normal(既定)または sensitive。 |
同意画面のテキスト
提供される同意画面では、要求された各スコープを次のように表示します。ページの言語に対応する consent_text_i18n の項目(タグが完全一致するもの、なければその基本サブタグ)を使い、それもなければ display_name、さらになければスコープの value を使います。description は詳細行として表示されます。3 つはいずれもプレーンテキストです。制御文字(改行やタブを含む)、行区切りと段落区切り、双方向の埋め込み、オーバーライド、分離の文字(U+202A-U+202E、U+2066-U+2069)は 422 で拒否されます。前後の空白は取り除かれ、トリミング後に空になるテキストは null として保存されます。HTML は解釈されず、同意画面ではエスケープされて表示されます。
レスポンス
201 Created
{
"id": "perm_01h455vb4pex5vsknk084sn02s",
"api_id": "api_01h455vb4pex5vsknk084sn02q",
"value": "read:orders",
"display_name": "Read orders",
"description": "See your past orders and their status",
"consent_text_i18n": {
"en": "Read your orders",
"tr": "Siparişlerinizi okuyun"
},
"sensitivity": "normal"
}
エラー
| HTTP | code | 発生条件 |
|---|---|---|
| 400 | unknown_field |
リクエストボディに未知のフィールドが含まれています。 |
| 403 | insufficient_permissions |
認証情報に apis:write がありません。 |
| 403 | quota_exceeded |
API にすでに 1,000 件の権限があります。 |
| 404 | not_found |
この環境に該当する API が存在しません。 |
| 409 | conflict |
同じ value がこの API にすでに存在するか、対象がシステム API です。 |
| 422 | validation_failed |
フィールドが欠けているか無効であるか、テキストがプレーンテキストではありません(errors[].pointer が該当フィールドを示します。例:/consent_text_i18n)。 |
例
curl -X POST https://api.eu.keenauth.com/v1/permissions \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1d2c1e-perm-create" \
-d '{"api_id":"api_01h455vb4pex5vsknk084sn02q","value":"read:orders","display_name":"Read orders","consent_text_i18n":{"en":"Read your orders"}}'
CLI を使う場合は、--data で言語マップを渡します。
echo '{"consent_text_i18n":{"en":"Read your orders"}}' | keenauth permissions create \
--api-id api_01h455vb4pex5vsknk084sn02q --value read:orders --display-name "Read orders" --data -