# Permission Policy API ここに示す操作は、Treasure Data REST APIを通じてパーミッションポリシーを設定、一覧表示、または更新するために使用されます。管理者が認証の詳細なパーミッションを有効にしていない場合、同じ動作が表示されない場合があります。最新バージョンにアップグレードするには、カスタマーサポートエンジニアにお問い合わせください。 ## GET /v3/access_control/policies ポリシーの一覧を取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/policies` | ポリシーの一覧を取得 | ### リクエストボディ | **プロパティ名** | **値** | **説明** | | --- | --- | --- | | policy | object | ポリシーの名前 | ### サンプルレスポンス Status: 200 OK ```json [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] ``` ## POST /v3/access_control/policies ポリシーを作成します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | POST | `/v3/access_control/policies` | ポリシーを作成 | **URIパラメータ** | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy` | Yes | object | 例:`{"policy": { "name": "name of policy", "description": "Description of policy" }` | | `name` | Yes | string | ポリシーの名前 | | `description` | | string | ポリシーの説明 | ### サンプルリクエスト ```json { "policy": { "name": "some_policy", "description": "written about the policy" } } ``` #### サンプルレスポンス Status: 200 OK ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## GET /v3/access_control/policies/:policy_id ポリシーに関する情報を取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/policies/:policy_id` | 特定のポリシーを取得 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | Integer | AccessControlPolicyId 例: `67` | #### サンプルレスポンス Status: 200 OK ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## PATCH /access_control/policies/:policy_id ポリシーに関連する情報を更新します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/policies/:policy_id` | 特定のポリシーを更新 | #### URIパラメータ #### **パラメータ名** | **必須**| **型**| **説明** ---|---|---|--- `policy_id`| Yes| Integer| AccessControlPolicyId 例: `67` `policy`| Yes| Object| TBD #### リクエストボディ | **プロパティ名** | **値** | **説明** | | --- | --- | --- | | policy | object | ポリシーの名前 | #### サンプルリクエスト ```json { "policy": { "name": "some_policy", "description": "written about the policy" } } ``` #### サンプルレスポンス Status: 200 OK ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## DELETE /v3/access_control/policies/:policy_id ポリシーを削除します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | DELETE | `/v3/access_control/policies/:policy_id` | 特定のポリシーを削除 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | Integer | AccessControlPolicyId 例: `67` | #### サンプルレスポンス ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## GET /v3/access_control/users/:user_id/policies ユーザーごとのポリシーを一覧表示します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/users/:user_id/policies` | ユーザーごとのポリシー一覧を取得 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `user_id` | Yes | integer | UserId 例: `123` | #### サンプルレスポンス Status: 200 OK ```json [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] ``` ## PATCH /v3/access_control/users/:user_id/policies ユーザーのポリシーを更新します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/users/:user_id/policies` | ユーザーのポリシーを更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `user_id` | Yes | integer | UserId 例: `123` | #### リクエストボディ | **プロパティ名** | **値** | **説明** | | --- | --- | --- | | policy_ids | array of string | ポリシーのリスト | #### サンプルリクエスト ```json { "policy_ids": [ "1", "2", "42" ] } ``` #### サンプルレスポンス Status: 200 OK ```json [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] ``` ## POST /v3/access_control/users/:user_id/policies/:policy_id ポリシーをユーザーにアタッチします。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | POST | `/v3/access_control/users/:user_id/policies/:policy_id` | ポリシーをユーザーにアタッチ | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `user_id` | Yes | integer | UserId 例: `123` | | `policy_id` | Yes | integer | 例: `67` | #### サンプルレスポンス Status: 200 OK ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## DELETE /v3/access_control/users/:user_id/policies/:policy_id ユーザーのポリシーを削除します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | DELETE | `/v3/access_control/users/:user_id/policies/:policy_id` | ユーザーのポリシーを削除 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `user_id` | Yes | integer | UserId 例: `123` | | `policy_id` | Yes | integer | 例: `67` | #### サンプルレスポンス ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## POST /v3/access_control/policies/:policy_id/users/:user_id ユーザーを特定のポリシーにアタッチします。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | POST | `/v3/access_control/policies/:policy_id/users/:user_id` | ユーザーをポリシーにアタッチ | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | | `user_id` | Yes | Integer | Userid 例: 123 | #### サンプルレスポンス Status: 200 OK ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## DELETE /v3/access_control/policies/:policy_id/users/:user_id ユーザーを特定のポリシーからデタッチします。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | DELETE | `/v3/access_control/policies/:policy_id/users/:user_id` | ユーザーをポリシーから削除 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | | `user_id` | Yes | Integer | Userid 例: 123 | #### サンプルレスポンス Status: 200 OK ```json { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ``` ## GET /v3/access_control/permissions すべてのパーミッションを一覧表示します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/permissions` | すべてのパーミッションを一覧表示 | #### サンプルレスポンス Status: 200 OK ```json [ { "id": 0, "permission_set_id": 0, "resource_type": "string", "filter_expression": "string", "filter_operator": "string", "filter_value": "string", "can_create": true, "can_read": true, "can_update": true, "can_delete": true, "can_execute": true, "custom_operation": "string" } ] ``` ## GET /v3/access_control/policies/:policy_id/permissions 特定のポリシーのパーミッションを一覧表示します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/policies/:policy_id/permissions` | ポリシーのパーミッションを一覧表示 | | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | #### サンプルレスポンス Status: 200 OK ```json { "WorkflowProject": [ { "operation": "view" } ], "WorkflowProjectLevel": [ { "operation": "view", "name": "my_wf" } ], "Segmentation": [ { "operation": "full" } ], "MasterSegmentConfigs": [ { "operation": "view" } ], "MasterSegmentConfig": [ { "operation": "view", "id": "42" } ], "SegmentAllFolders": [ { "operation": "view", "audience_id": "42" } ], "SegmentFolder": [ { "operation": "view", "id": "42" } ], "Authentications": [ { "operation": "use" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] } ``` ## PATCH /v3/access_control/policies/:policy_id/permissions 特定のポリシーのパーミッションを更新します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/policies/:policy_id/permission` | ポリシーのパーミッションを更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | #### 利用可能なリクエストボディフィールド | **パラメータ名** | **値** | **説明** | **例** | | --- | --- | --- | --- | | WorkflowProject | Array of object | すべてのワークフローに対する "view"、"run"、または "edit" アクセスを指定します。 | 例:operation (string)enum: "view" "run" "edit"name (string) | | WorkflowProjectLevel | Array of object | 特定のワークフロープロジェクトに対する "view"、"run"、または "edit" アクセスを指定します。 | 例:operation (string)enum: `"view" "run" "edit"`name (string) | | Segmentation | Array of object | すべてのセグメンテーションに対する "full" アクセスを付与します。 | 例:operation (string)value: `"full"` | | MasterSegmentConfigs | Array of object | すべてのマスターセグメント設定に対する "view" または "edit" アクセス、またはすべてのCDP生成ワークフローに対する "full" アクセスを付与します。 | 例:operation (string)enum: `"view" "edit"` | | MasterSegmentConfig | Array of object | 特定のマスターセグメント設定に対する "view" または "edit" アクセス、または特定のCDP生成ワークフローに対する "full" アクセスを付与します。 | 例:operation (string)enum: `"view" "edit"`id (string) | | MasterSegmentColumn | Array of object | マスターセグメントカラムに対するパーミッションを付与します。 | 例: operations (string)enum: "view_clear" "view_non_pii" "view_pii" "blocked" | | MasterSegmentAllColumns | Array of object | マスターセグメントのすべてのカラムに対するパーミッションを付与します。 | 例: operations (string)enum: "view_clear" "view_non_pii" "view_pii" "blocked_only_for_migration_purpose" | | SegmentAllFolders | Array of object | すべてのセグメントフォルダに対する "view" または "edit" アクセスを付与します。 | 例:operation (string)enum: `"view" "edit"`audience_id (string) | | SegmentFolder | Array of object | 特定のセグメントフォルダに対する "view" または "edit" アクセスを付与します。 | 例:operation (string)enum: `"view" "edit"`id (string) | | Databases | Array of object | すべてのデータベースに対する "manage" アクセスを付与します。所有データベースに対する "owner_manage" アクセスを付与します。"ids" を使用して特定のデータベースに対する "edit"、"query"、"import" アクセスを付与します。読み取り権限があるデータベースのダウンロードを許可する "download" を付与します。 | 例:operation (string)enum: "manage" "owner_manage" "edit" "query" "import"ids: (string, operation が "edit" "query" "import" の場合必須)"1,2,3" | | Authentications | Array of object | すべての認証に対する "use" または "full" アクセスを付与します。"use" は認証の表示権限を指定します。 | 例: operation (string) | | enum: "use" "full" "owner_manage" "use_limited" ## 順序は任意 | | | | | ids (string, `operation` が "use_limited" の場合必須) | | | | | "1, 2, 3" | | | | | Sources | Array of object | すべてのソースに対する "restricted" アクセスを設定します。 | 例: どの権限を持っているかを記述します(1つのタイプのみ選択可能)例: | | operation (string) | | | | | enum: "restricted" | | | | | Destinations | Array of object | 結果エクスポート用のデスティネーション使用に対する "restricted" アクセスを付与します。 | 例: | | operation (string) | | | | | enum: "restricted" | | | | #### サンプルリクエスト ```json { "Authentications": [ { "operation": "full" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] } ``` #### サンプルレスポンス Status: 200 OK ```json { "Authentications": [ { "operation": "full" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] } ``` ## GET /v3/access_control/users ユーザーとそのパーミッションの一覧を取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/users` | ユーザーとそのパーミッションの一覧を取得 | #### サンプルレスポンス Status: 200 OK ```json [ { "user_id": 123, "account_id": 123, "permissions": { "WorkflowProject": [ { "operation": "view" } ], "WorkflowProjectLevel": [ { "operation": "view", "name": "my_wf" } ], "Segmentation": [ { "operation": "full" } ], "MasterSegmentConfigs": [ { "operation": "view" } ], "MasterSegmentConfig": [ { "operation": "view", "id": "42" } ], "SegmentAllFolders": [ { "operation": "view", "audience_id": "42" } ], "SegmentFolder": [ { "operation": "view", "id": "42" } ], "Authentications": [ { "operation": "use" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] }, "policies": [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] } ] ``` ## GET /v3/access_control/users/:user_id IDで特定のユーザーを取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/users/:user_id` | ユーザーを取得 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | #### サンプルレスポンス Status: 200 OK ```json { "user_id": 123, "account_id": 123, "permissions": { "WorkflowProject": [ { "operation": "view" } ], "WorkflowProjectLevel": [ { "operation": "view", "name": "my_wf" } ], "Segmentation": [ { "operation": "full" } ], "MasterSegmentConfigs": [ { "operation": "view" } ], "MasterSegmentConfig": [ { "operation": "view", "id": "42" } ], "SegmentAllFolders": [ { "operation": "view", "audience_id": "42" } ], "SegmentFolder": [ { "operation": "view", "id": "42" } ], "Authentications": [ { "operation": "use" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] }, "policies": [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] } ``` ## PATCH /v3/access_control/users/:user_id/permissions 特定のユーザーのパーミッションを更新します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/users/:user_id/permissions` | パーミッションを更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `user_id` | Yes | Integer | Userid 例: 123 | #### リクエストボディ | **プロパティ名** | **値** | **説明** | | --- | --- | --- | | WorkflowProject | array of object | 例:operation (string)enum:`"view" "run" "edit"`property name (any) | | WorkflowProjectLevel | array of object | 例:operation (string)enum:`"view" "run" "edit"`name (string)property name (any) | #### サンプルリクエスト ```json { "WorkflowProject": [ { "operation": "view" } ], "WorkflowProjectLevel": [ { "operation": "view", "name": "my_wf" } ] } ``` #### サンプルレスポンス Status: 200 OK ```json { "user_id": 123, "permissions": { "WorkflowProject": [ { "operation": "view" } ], "WorkflowProjectLevel": [ { "operation": "view", "name": "my_wf" } ], "Segmentation": [ { "operation": "full" } ], "MasterSegmentConfigs": [ { "operation": "view" } ], "MasterSegmentConfig": [ { "operation": "view", "id": "42" } ], "SegmentAllFolders": [ { "operation": "view", "audience_id": "42" } ], "SegmentFolder": [ { "operation": "view", "id": "42" } ], "Authentications": [ { "operation": "use" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] } } ``` ## GET /v3/access_control/policies/:policy_id/users 特定のポリシーに関連付けられたユーザーの一覧を取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/policies/:policy_id/users` | ポリシーのユーザー一覧を取得 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | #### サンプルレスポンス Status: 200 OK ```json [ { "user_id": 123, "account_id": 123, "email": "jake@gmail.com", "name": "Jake Becker" } ] ``` ## PATCH /v3/access_control/policies/:policy_id/users 特定のポリシーに関連付けられたユーザーの一覧を更新します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/policies/:policy_id/users` | ポリシーに関連付けられたユーザー一覧を更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | #### リクエストボディ | **プロパティ名** | **値** | **説明** | | --- | --- | --- | | user_ids | array of integer | ユーザーIDのリスト | #### サンプルリクエスト ```json { "user_ids": [ 123 ] } ``` #### サンプルレスポンス Status: 200 OK ```json [ { "user_id": 123, "account_id": 123, "permissions": { "WorkflowProject": [ { "operation": "view" } ], "WorkflowProjectLevel": [ { "operation": "view", "name": "my_wf" } ], "Segmentation": [ { "operation": "full" } ], "MasterSegmentConfigs": [ { "operation": "view" } ], "MasterSegmentConfig": [ { "operation": "view", "id": "42" } ], "SegmentAllFolders": [ { "operation": "view", "audience_id": "42" } ], "SegmentFolder": [ { "operation": "view", "id": "42" } ], "Authentications": [ { "operation": "use" } ], "Sources": [ { "operation": "restricted" } ], "Destinations": [ { "operation": "restricted" } ] }, "policies": [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] } ] ``` ## GET /v3/access_control/policies/{policy_id}/column_permissions カラムレベルのパーミッションを含むポリシーに関する情報を取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/access_control/policies/{policy_id}/column_permissions` | カラムレベルのパーミッションを含むポリシーに関する情報を取得 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | AccessControlPolicyId 例: `67` | #### サンプルレスポンス ```json { "tags": [ "string" ], "except": true, "masking" : "hash" } ``` ## GET /v3/access_control/policies?column_permissions_tag={tag} カラムタグを含むすべてのポリシーを取得します。 | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | GET | `/v3/access_control/policies?column_permission_tag={tag}` | カラムタグを含むすべてのポリシーを取得 | #### サンプルレスポンス ```json [ { "id": 67, "account_id": 123, "name": "some_policy", "description": "written about the policy", "user_count": 3 } ] ``` ## PATCH /v3/access_control/policies/{policy_id}/column_permissions カラムレベルのアクセス制御ポリシーに関する情報を更新します。 | **制御タイプ** | **説明** | | --- | --- | | Allow | "xxx, yyy, zzz" タグでアクセスを許可するポリシー | | Allow - Except | "aaa, bbb, ccc" タグを除くすべてのカラムへのアクセスを許可するポリシー | | Mask | 変更されたコンテンツを使用して指定されたカラムを非表示にするポリシー | ### **ALLOW** | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/policies/:policy_id/column_permissions` | 特定のタグへのアクセスを許可するように特定のポリシーを更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | policy_id 例: `6196842` | #### サンプルリクエスト ```bash curl -X PATCH \ -H "Authorization: TD1 ${TD1_KEY}" \ -H "Content-Type: application/json" \ -d '{"column_permissions":[ {"tags":["home-address"]} ]}' ``` #### サンプルレスポンス ```json [ { "tags": [ "home-address" ] } ] ``` ### **ALLOW Except** | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/policies/:policy_id/column_permissions` | 特定のタグへのアクセスを許可するように特定のポリシーを更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | policy_id 例: `6196842` | #### サンプルリクエスト ```bash curl -X PATCH \ -H "Authorization: TD1 ${TD1_KEY}" \ -H "Content-Type: application/json" \ -d '{"column_permissions":[ {"tags":["email-raw"], "except":true} ]}' ``` #### サンプルレスポンス ```json [ { "tags": [ "email-raw" ], "except": true } ] ``` ### **MASKING** | **HTTPメソッド** | **リソース** | **説明** | | --- | --- | --- | | PATCH | `/v3/access_control/policies/:policy_id/column_permissions` | 特定のタグへのアクセスを許可するように特定のポリシーを更新 | #### URIパラメータ | **パラメータ名** | **必須** | **型** | **説明** | | --- | --- | --- | --- | | `policy_id` | Yes | integer | policy_id 例: `6196842` | #### サンプルリクエスト ```bash curl -X PATCH \ -H "Authorization: TD1 ${TD1_KEY}" \ -H "Content-Type: application/json" \ -d '{"column_permissions":[ {"tags":["home-address"], "masking":"hash"} ]}' ``` #### サンプルレスポンス ```json [ { "tags": [ "home-address" ], "masking": "hash" } ] ```