SCIM
System for Cross-domain Identity Management (SCIM) APIを使用すると、インスタンスまたは組織の管理者はW&B組織内のユーザー、グループ、およびカスタムロールを管理できます。SCIMグループはW&Bのチームにマップされます。
SCIM APIは <host-url>/scim/ でアクセス可能であり、RC7643プロトコルにあるフィールドのサブセットをサポートする/Users と /Groups エンドポイントを提供します。さらに、公式のSCIMスキーマには含まれない /Roles エンドポイントも含まれています。W&Bは、W&B組織内でのカスタムロールの自動管理をサポートするために /Roles エンドポイントを追加しています。
SCIM APIは、Dedicated Cloud、Self-managed instances、およびSaaS Cloudを含むすべてのホスティングオプションに適用されます。SaaS Cloudでは、組織管理者がSCIM APIリクエストが正しい組織に向かうことを確認するために、ユーザー設定でデフォルトの組織を設定する必要があります。この設定はユーザー設定のSCIM API Organizationセクションで利用可能です。
認証
SCIM APIはインスタンスまたは組織の管理者が自分のAPIキーを使用して基本認証でアクセス可能です。基本認証を使用すると、HTTPリクエストをAuthorizationヘッダーと共に送信し、ヘッダーにはBasicという単語のあとにスペースとusername:passwordをbase64エンコードした文字列が続きます。ここでpasswordはAPIキーです。例えば、demo:p@55w0rdとして認証するには、ヘッダーはAuthorization: Basic ZGVtbzpwQDU1dzByZA== となります。
Userリソース
SCIMユーザーリソースはW&Bのユーザーにマップされます。
ユーザー情報の取得
- エンドポイント: <host-url>/scim/Users/{id}
- メソッド: GET
- 説明: SaaS Cloud組織またはあなたのDedicated CloudまたはSelf-managedインスタンスの特定のユーザーの情報をユーザーのユニークIDで取得します。
- リクエスト例:
GET /scim/Users/abc
- レスポンス例:
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1"
}
ユーザーリストの取得
- エンドポイント: <host-url>/scim/Users
- メソッド: GET
- 説明: SaaS Cloud組織またはあなたのDedicated CloudまたはSelf-managedインスタンスのすべてのユーザーリストを取得します。
- リクエスト例:
GET /scim/Users
- レスポンス例:
(Status 200)
{
    "Resources": [
        {
            "active": true,
            "displayName": "Dev User 1",
            "emails": {
                "Value": "dev-user1@test.com",
                "Display": "",
                "Type": "",
                "Primary": true
            },
            "id": "abc",
            "meta": {
                "resourceType": "User",
                "created": "2023-10-01T00:00:00Z",
                "lastModified": "2023-10-01T00:00:00Z",
                "location": "Users/abc"
            },
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User"
            ],
            "userName": "dev-user1"
        }
    ],
    "itemsPerPage": 9999,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 1,
    "totalResults": 1
}
ユーザーの作成
- エンドポイント: <host-url>/scim/Users
- メソッド: POST
- 説明: 新しいユーザーリソースの作成。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| emails | Multi-Valued Array | はい (プライマリメールはセットされるべきです) | 
| userName | String | はい | 
- リクエスト例:
POST /scim/Users
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "emails": [
    {
      "primary": true,
      "value": "admin-user2@test.com"
    }
  ],
  "userName": "dev-user2"
}
- レスポンス例:
(Status 201)
{
    "active": true,
    "displayName": "Dev User 2",
    "emails": {
        "Value": "dev-user2@test.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "def",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "location": "Users/def"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user2"
}
ユーザーの削除
- エンドポイント: <host-url>/scim/Users/{id}
- メソッド: DELETE
- 説明: SaaS Cloud組織やDedicated CloudまたはSelf-managedインスタンスからユーザーを完全に削除します。必要に応じて、Create user APIを使用してユーザーを再度組織またはインスタンスに追加します。
- リクエスト例:
一時的にユーザーを無効にするには、PATCHエンドポイントを使用するDeactivate user APIを参照してください。
DELETE /scim/Users/abc
- レスポンス例:
(Status 204)
ユーザーの無効化
- エンドポイント: <host-url>/scim/Users/{id}
- メソッド: PATCH
- 説明: Dedicated CloudまたはSelf-managedインスタンスのユーザーを一時的に無効にします(ユーザーのユニークIDを提供)。必要に応じてReactivate user APIを使用してユーザーを再有効化します。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| op | String | 操作タイプ。許可される唯一の値は replaceです。 | 
| value | Object | ユーザーを無効にすべきことを示すオブジェクト {"active": false}。 | 
ユーザーの無効化と再有効化の操作はSaaS Cloudではサポートされていません。
- リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": false}
        }
    ]
}
- レスポンス例: このレスポンスはUserオブジェクトを返します。
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1"
}
ユーザーの再有効化
- エンドポイント: <host-url>/scim/Users/{id}
- メソッド: PATCH
- 説明: 無効化されたユーザーを再度有効にします (Dedicated Cloud](/ja/guides/hosting/hosting-options/dedicated_cloud) または Self-managedインスタンスの中の)。ユーザーのユニークIDを提供。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| op | String | 操作タイプ。許可される唯一の値は replaceです。 | 
| value | Object | ユーザーを再度有効にすべきことを示すオブジェクト {"active": true}。 | 
ユーザーの無効化と再有効化の操作はSaaS Cloudではサポートされていません。
- リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": true}
        }
    ]
}
- レスポンス例: このレスポンスはUserオブジェクトを返します。
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1"
}
ユーザーに組織レベルのロールを割り当てる
- エンドポイント: <host-url>/scim/Users/{id}
- メソッド: PATCH
- 説明: ユーザーに組織レベルのロールを割り当てます。ロールは admin,viewerまたはmemberのいずれかです。こちらで説明されています。 SaaS Cloudの場合、SCIM API用に正しい組織をユーザー設定で設定していることを確認してください。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| op | String | 操作タイプ。許可される唯一の値は replaceです。 | 
| path | String | ロール割り当て操作が実施されるスコープ。許可される唯一の値は organizationRoleです。 | 
| value | String | ユーザーに割り当てられる事前定義の組織レベルのロール。 admin,viewer,memberのいずれか。このフィールドは事前定義のロールに対しては大文字小文字を区別しません。 | 
- リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin" // ユーザーの組織スコープロールをadminに設定します
        }
    ]
}
- レスポンス例: このレスポンスはUserオブジェクトを返します。
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1",
    "teamRoles": [  // ユーザーが所属するすべてのチームでのロールを返します
        {
            "teamName": "team1",
            "roleName": "admin"
        }
    ],
    "organizationRole": "admin" // 組織スコープでのユーザーのロールを返します
}
ユーザーにチームレベルのロールを割り当てる
- エンドポイント: <host-url>/scim/Users/{id}
- メソッド: PATCH
- 説明: ユーザーにチームレベルのロールを割り当てます。ロールは admin,viewer,memberまたはこちらで説明されているカスタムロールのいずれかです。 SaaS Cloudの場合、SCIM APIの正しい組織をユーザー設定で設定していることを確認してください。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| op | String | 操作タイプ。許可される唯一の値は replaceです。 | 
| path | String | ロール割り当て操作が実施されるスコープ。許可される唯一の値は teamRolesです。 | 
| value | オブジェクト配列 | 1つのオブジェクト配列の中で、オブジェクトは teamNameとroleName属性で構成されます。teamNameはユーザーが役割を持つチームの名前であり、roleNameはadmin,viewer,memberまたはカスタムロールのいずれかです。このフィールドは事前定義のロールに対しては大文字小文字を区別しませんが、カスタムロールに対しては区別します。 | 
- リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "teamRoles",
            "value": [
                {
                    "roleName": "admin", // 事前定義ロールの場合は大文字小文字を区別しませんがカスタムロールの場合は区別します
                    "teamName": "team1" // チームteam1でユーザーのロールをadminに設定します
                }
            ]
        }
    ]
}
- レスポンス例: このレスポンスはUserオブジェクトを返します。
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1",
    "teamRoles": [  // ユーザーが所属するすべてのチームでのロールを返します
        {
            "teamName": "team1",
            "roleName": "admin"
        }
    ],
    "organizationRole": "admin" // 組織スコープでのユーザーのロールを返します
}
Groupリソース
SCIMグループリソースはW&Bのチームにマップされます。つまり、SCIMグループをW&Bのデプロイメントで作成すると、W&Bのチームが作成されます。他のグループエンドポイントも同様です。
チーム情報の取得
- エンドポイント: <host-url>/scim/Groups/{id}
- メソッド: GET
- 説明: チームのユニークIDを提供してチーム情報を取得します。
- リクエスト例:
GET /scim/Groups/ghi
- レスポンス例:
(Status 200)
{
    "displayName": "wandb-devs",
    "id": "ghi",
    "members": [
        {
            "Value": "abc",
            "Ref": "",
            "Type": "",
            "Display": "dev-user1"
        }
    ],
    "meta": {
        "resourceType": "Group",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Groups/ghi"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
    ]
}
チームリストの取得
- エンドポイント: <host-url>/scim/Groups
- メソッド: GET
- 説明: チームリストを取得します。
- リクエスト例:
GET /scim/Groups
- レスポンス例:
(Status 200)
{
    "Resources": [
        {
            "displayName": "wandb-devs",
            "id": "ghi",
            "members": [
                {
                    "Value": "abc",
                    "Ref": "",
                    "Type": "",
                    "Display": "dev-user1"
                }
            ],
            "meta": {
                "resourceType": "Group",
                "created": "2023-10-01T00:00:00Z",
                "lastModified": "2023-10-01T00:00:00Z",
                "location": "Groups/ghi"
            },
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:Group"
            ]
        }
    ],
    "itemsPerPage": 9999,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 1,
    "totalResults": 1
}
チームの作成
- エンドポイント: <host-url>/scim/Groups
- メソッド: POST
- 説明: 新しいチームリソースを作成します。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| displayName | String | はい | 
| members | Multi-Valued Array | はい ( valueサブフィールドは必須で、ユーザーIDにマップされます) | 
- リクエスト例:
wandb-supportというチームをdev-user2をメンバーとして作成する。
POST /scim/Groups
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "wandb-support",
    "members": [
        {
            "value": "def"
        }
    ]
}
- レスポンス例:
(Status 201)
{
    "displayName": "wandb-support",
    "id": "jkl",
    "members": [
        {
            "Value": "def",
            "Ref": "",
            "Type": "",
            "Display": "dev-user2"
        }
    ],
    "meta": {
        "resourceType": "Group",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Groups/jkl"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
    ]
}
チームの更新
- エンドポイント: <host-url>/scim/Groups/{id}
- メソッド: PATCH
- 説明: 既存のチームのメンバーシップリストを更新します。
- 対応操作: addメンバー,removeメンバー
- リクエスト例:
wandb-devsにdev-user2を追加する
PATCH /scim/Groups/ghi
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add",
            "path": "members",
            "value": [
          {
                    "value": "def",
                }
        ]
        }
    ]
}
- レスポンス例:
(Status 200)
{
    "displayName": "wandb-devs",
    "id": "ghi",
    "members": [
        {
            "Value": "abc",
            "Ref": "",
            "Type": "",
            "Display": "dev-user1"
        },
        {
            "Value": "def",
            "Ref": "",
            "Type": "",
            "Display": "dev-user2"
        }
    ],
    "meta": {
        "resourceType": "Group",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:01:00Z",
        "location": "Groups/ghi"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
    ]
}
チームの削除
- チームの削除はSCIM APIでは現在サポートされていません。チームには追加のデータがリンクされているためです。すべてのデータが削除されることを確認するには、アプリからチームを削除してください。
Roleリソース
SCIMロールリソースはW&Bカスタムロールにマップされます。前述のように、/Rolesエンドポイントは公式SCIMスキーマには含まれておらず、W&BはW&B組織内でカスタムロールの自動管理をサポートするために/Rolesエンドポイントを追加しています。
カスタムロールの取得
- エンドポイント: <host-url>/scim/Roles/{id}
- メソッド: GET
- 説明: ロールのユニークIDを提供してカスタムロールの情報を取得します。
- リクエスト例:
GET /scim/Roles/abc
- レスポンス例:
(Status 200)
{
    "description": "A sample custom role for example",
    "id": "Um9sZTo3",
    "inheritedFrom": "member", // 事前定義ロールを示しています。
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // member事前定義ロールから継承されています
        },
        ...
        ...
        {
            "name": "project:update",
            "isInherited": false // 管理者によって追加されたカスタム権限
        }
    ],
    "schemas": [
        ""
    ]
}
カスタムロールの一覧
- エンドポイント: <host-url>/scim/Roles
- メソッド: GET
- 説明: W&B組織内のすべてのカスタムロールの情報を取得します
- リクエスト例:
GET /scim/Roles
- レスポンス例:
(Status 200)
{
   "Resources": [
        {
            "description": "A sample custom role for example",
            "id": "Um9sZTo3",
            "inheritedFrom": "member", // カスタムロールが継承する事前定義されたロールを示します。
            "meta": {
                "resourceType": "Role",
                "created": "2023-11-20T23:10:14Z",
                "lastModified": "2023-11-20T23:31:23Z",
                "location": "Roles/Um9sZTo3"
            },
            "name": "Sample custom role",
            "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
            "permissions": [
                {
                    "name": "artifact:read",
                    "isInherited": true // member事前定義ロールから継承されています
                },
                ...
                ...
                {
                    "name": "project:update",
                    "isInherited": false // 管理者によって追加されたカスタム権限
                }
            ],
            "schemas": [
                ""
            ]
        },
        {
            "description": "Another sample custom role for example",
            "id": "Um9sZToxMg==",
            "inheritedFrom": "viewer", // カスタムロールが継承する事前定義されたロールを示します。
            "meta": {
                "resourceType": "Role",
                "created": "2023-11-21T01:07:50Z",
                "location": "Roles/Um9sZToxMg=="
            },
            "name": "Sample custom role 2",
            "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
            "permissions": [
                {
                    "name": "launchagent:read",
                    "isInherited": true // viewer事前定義ロールから継承されています
                },
                ...
                ...
                {
                    "name": "run:stop",
                    "isInherited": false // 管理者によって追加されたカスタム権限
                }
            ],
            "schemas": [
                ""
            ]
        }
    ],
    "itemsPerPage": 9999,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 1,
    "totalResults": 2
}
カスタムロールの作成
- エンドポイント: <host-url>/scim/Roles
- メソッド: POST
- 説明: W&B組織内に新しいカスタムロールを作成します。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| name | String | カスタムロールの名前 | 
| description | String | カスタムロールの説明 | 
| permissions | オブジェクト配列 | 各オブジェクトが nameという文字列フィールドを含む権限オブジェクトの配列。この値はw&bobject:operationの形式となります。例えば、W&B runsの削除操作に対してnameをrun:deleteとします。 | 
| inheritedFrom | String | カスタムロールが継承する事前定義されたロール。 memberまたはviewerのいずれかです。 | 
- リクエスト例:
POST /scim/Roles
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Sample custom role",
    "description": "A sample custom role for example",
    "permissions": [
        {
            "name": "project:update"
        }
    ],
    "inheritedFrom": "member"
}
- レスポンス例:
(Status 201)
{
    "description": "A sample custom role for example",
    "id": "Um9sZTo3",
    "inheritedFrom": "member", // 事前定義ロールを示しています。
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // member事前定義ロールから継承されています。
        },
        ...
        ...
        {
            "name": "project:update",
            "isInherited": false // 管理者によって追加されたカスタム権限。
        }
    ],
    "schemas": [
        ""
    ]
}
カスタムロールの削除
- エンドポイント: <host-url>/scim/Roles/{id}
- メソッド: DELETE
- 説明: W&B組織内のカスタムロールを削除します。 慎重に使用してください。カスタムロールから継承した事前定義ロールは、操作前にカスタムロールが割り当てられていたすべてのユーザーに再度割り当てられます。
- リクエスト例:
DELETE /scim/Roles/abc
- レスポンス例:
(Status 204)
カスタムロール権限の更新
- エンドポイント: <host-url>/scim/Roles/{id}
- メソッド: PATCH
- 説明: W&B組織内のカスタムロールでカスタム権限を追加または削除します。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| operations | オブジェクト配列 | 操作オブジェクトの配列 | 
| op | String | 操作オブジェクト内の操作タイプ。 addまたはremoveのどちらか。 | 
| path | String | 操作オブジェクト内の静的フィールド。許可される唯一の値は permissionsです。 | 
| value | オブジェクト配列 | 各オブジェクトが nameという文字列フィールドを含む権限オブジェクトの配列。この値はw&bobject:operationの形式となります。例えば、W&B runsの削除操作に対してnameをrun:deleteとします。 | 
- リクエスト例:
PATCH /scim/Roles/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add", // 操作タイプを示しています。もう一つの可能な値は `remove` です。
            "path": "permissions",
            "value": [
                {
                    "name": "project:delete"
                }
            ]
        }
    ]
}
- レスポンス例:
(Status 200)
{
    "description": "A sample custom role for example",
    "id": "Um9sZTo3",
    "inheritedFrom": "member", // 事前定義ロールを示しています。
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // member事前定義ロールから継承されています。
        },
        ...
        ...
        {
            "name": "project:update",
            "isInherited": false // 更新前に管理者によって追加された既存のカスタム権限。
        },
        {
            "name": "project:delete",
            "isInherited": false // 更新により管理者によって追加された新しいカスタム権限。
        }
    ],
    "schemas": [
        ""
    ]
}
カスタムロールのメタデータを更新
- エンドポイント: <host-url>/scim/Roles/{id}
- メソッド: PUT
- 説明: W&B組織内のカスタムロールの名前、説明、または継承元のロールを更新します。この操作は、既存の非継承カスタム権限には影響しません。
- 対応フィールド:
| フィールド | タイプ | 必須 | 
|---|---|---|
| name | String | カスタムロールの名前 | 
| description | String | カスタムロールの説明 | 
| inheritedFrom | String | カスタムロールが継承する事前定義ロール。 memberまたはviewerのいずれか。 | 
- リクエスト例:
PUT /scim/Roles/abc
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Sample custom role",
    "description": "A sample custom role for example but now based on viewer",
    "inheritedFrom": "viewer"
}
- レスポンス例:
(Status 200)
{
    "description": "A sample custom role for example but now based on viewer", // 要求に応じて説明が変更されました。
    "id": "Um9sZTo3",
    "inheritedFrom": "viewer", // 要求に従って変更された事前定義ロールを示します。
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // viewer事前定義ロールから継承されています。
        },
        ... // member事前定義ロールにあるがviewerにはない権限は更新後には継承されません
        {
            "name": "project:update",
            "isInherited": false // 管理者によって追加されたカスタム権限
        },
        {
            "name": "project:delete",
            "isInherited": false // 管理者によって追加されたカスタム権限
        }
    ],
    "schemas": [
        ""
    ]
}