SharePoint Embedded アプリケーションが使用しているテナント内のコンテナーと対話するには、最初にコンテナーの種類を使用しているテナントに登録する必要があります。 コンテナーの種類の登録は、所有するアプリケーションが登録 API を呼び出して、アプリケーションがコンテナーの種類にアクセスする方法を指定するときに発生します。 登録 API は、所有するアプリケーションのコンテナーと対話するための他のゲスト アプリへのアクセスも許可します。 たとえば、SharePoint Embedded アプリケーションは、別のアプリケーション (ゲスト アプリ) にアクセス許可を付与して、ゲスト アプリがそのコンテナーに対してバックアップ操作を実行できるようにします。
コンテナーの種類の登録 API は、使用しているテナント内のコンテナーの種類へのアクセスを制御するため、使用しているテナントで SharePoint Embedded アプリケーションによって呼び出される最初のエンドポイントです。 そうしないと、コンテナーやコンテナー内のコンテンツに対して他の API を呼び出すときに、アクセスが拒否されたエラーが発生します。
登録 API を呼び出すことができる回数に制限はありません。 登録 API が呼び出される頻度と呼び出されるタイミングは、SharePoint Embedded アプリケーションに依存します。 ただし、登録 API の最後に正常に呼び出されると、使用しているテナントで使用される設定が決まります。
認証と承認の要件
コンテナーの種類の所有アプリケーションが使用しているテナントに対して動作するには、いくつかの前提条件を満たす必要があります。
- 所有しているアプリには、使用しているテナントに サービス プリンシパル がインストールされている必要があります
- 所有しているアプリには、使用しているテナントでコンテナーの種類の登録を実行するための管理者の同意が付与されている必要があります。
これらの要件を満たすには、使用しているテナントのグローバル管理者に、コンテナーの種類の所有アプリケーションに 対する管理者の同意を付与 します。
コンテナーの種類の登録 API には、FileStorageContainerTypeReg.Selectedユーザー委任またはアプリ専用のアクセス許可が必要です。 所有アプリケーションがユーザーの代わりにコンテナー型登録 API を呼び出す場合、ユーザーには SharePoint Embedded Administrator ロールまたは グローバル管理者 ロールが割り当てられている必要があります。 所有アプリケーションがユーザー コンテキストなしでコンテナー型登録 API を呼び出す場合は、 クライアント資格情報付与フローを使用してトークンを要求する必要があります。
注:
コンテナーの種類の登録 API は現在プレビュー段階であり、変更される可能性があります。
使用しているテナントのテナント管理者に管理者の同意を要求するには、 管理者の同意エンドポイントに指示できます。 国内クラウド上の適切なエンドポイントについては、「国内クラウド上のMicrosoft ID プラットフォーム エンドポイント」を参照してください。
https://login.microsoftonline.com/{ConsumingTenantId}/v2.0/adminconsent?client_id={OwningAppId}&scope=https://graph.microsoft.com/.default
管理者の同意エンドポイントは、エラーの処理や許可の成功など、ニーズに合わせて構成できます。 詳細については、「同意 URI を管理する」を参照してください。
コンテナーの種類 のアクセス許可
登録 API は、指定されたコンテナーの種類に対して SharePoint Embedded アプリケーションがコンテナーとコンテナー内のコンテンツに対して実行できるアクセス許可を決定します。
| アクセス許可 | 説明 |
|---|---|
| なし | このコンテナーの種類のコンテナーまたはコンテンツに対するアクセス許可がありません。 |
| ReadContent | このコンテナーの種類のコンテナーの内容を読み取ることができます。 |
| WriteContent | このコンテナーの種類のコンテナーにコンテンツを書き込むことができます。 これは、ReadContent アクセス許可なしでは付与できません。 |
| 作成する | このコンテナーの種類のコンテナーを作成できます。 |
| 削除 | このコンテナーの種類のコンテナーを削除できます。 |
| 読み取り | このコンテナーの種類のコンテナーのメタデータを読み取ることができます。 |
| 書き込み | このコンテナーの種類のコンテナーのメタデータを更新できます。 |
| EnumeratePermissions | コンテナーのメンバーと、このコンテナーの種類のコンテナーのロールを列挙できます。 |
| AddPermissions | このコンテナーの種類のコンテナーのコンテナーにメンバーを追加できます。 |
| UpdatePermissions | このコンテナーの種類のコンテナーのコンテナー内の既存のメンバーシップを更新 (のロールの変更) できます。 |
| DeletePermissions | このコンテナーの種類のコンテナーについて、コンテナーから他のメンバー (自己ではない) を削除できます。 |
| DeleteOwnPermissions | このコンテナーの種類のコンテナーのコンテナーから独自のメンバーシップを削除できます。 |
| ManagePermissions | このコンテナーの種類のコンテナーのコンテナー ロールでメンバーを追加、削除 (自己を含む) または更新できます。 |
| ManageContent | コンテナーのコンテンツを管理できます |
| Full | このコンテナーの種類のコンテナーに対するすべてのアクセス許可を持ちます。 |
例
所有しているアプリに対してのみアクセス許可を持つ、使用しているテナントにコンテナーの種類を登録する
使用しているテナントに de988700-d700-020e-0a00-0831f3042f00 コンテナーの種類を登録し、委任された呼び出しとアプリのみの呼び出しに full アクセス許可を所有アプリケーション 71392b2f-1765-406e-86af-5907d9bdb2ab に付与します。
要求
PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/de988700-d700-020e-0a00-0831f3042f00
Content-Type: application/json
{
"applicationPermissionGrants": [
{
"appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"delegatedPermissions": ["full"],
"applicationPermissions": ["full"]
}
]
}
応答
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.fileStorageContainerTypeRegistration",
"id": "de988700-d700-020e-0a00-0831f3042f00",
"name": "Test Container Type",
"owningAppId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"billingClassification": "trial",
"billingStatus": "valid",
"registeredDateTime": "08/11/2025",
"expirationDateTime": "08/11/2025",
"etag": "RVRhZw==",
"settings": {
"@odata.type": "microsoft.graph.fileStorageContainerTypeRegistrationSettings",
"sharingCapability": "disabled",
"urlTemplate": "https://app.contoso.com/redirect?tenant={tenant-id}&drive={drive-id}&folder={folder-id}&item={item-id}",
"isDiscoverabilityEnabled": true,
"isSearchEnabled": true,
"isItemVersioningEnabled": true,
"itemMajorVersionLimit": 50,
"maxStoragePerContainerInBytes": 104857600,
"isSharingRestricted": false
},
"applicationPermissionGrants": [
{
"appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"delegatedPermissions": ["full"],
"applicationPermissions": ["full"]
}
]
}
ゲスト アプリのアクセス許可を使用して、使用しているテナントにコンテナーの種類を登録する
使用しているテナントに de988700-d700-020e-0a00-0831f3042f00 コンテナーの種類を登録し、委任された呼び出しとアプリのみの呼び出しに対して所有アプリケーション 71392b2f-1765-406e-86af-5907d9bdb2ab に完全なアクセス許可を付与します。 さらに、委任された呼び出しに対してのみ、ゲスト アプリ89ea5c94-7736-4e25-95ad-3fa95f62b6readとwriteの両方のアクセス許可を付与します。
要求
PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/de988700-d700-020e-0a00-0831f3042f00
Content-Type: application/json
{
"applicationPermissionGrants": [
{
"appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"delegatedPermissions": ["full"],
"applicationPermissions": ["full"]
},
{
"appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6",
"delegated": ["read", "write"],
"appOnly": ["none"]
}
]
}
応答
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.fileStorageContainerTypeRegistration",
"id": "de988700-d700-020e-0a00-0831f3042f00",
"name": "Test Container Type",
"owningAppId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"billingClassification": "trial",
"billingStatus": "valid",
"registeredDateTime": "08/11/2025",
"expirationDateTime": "08/11/2025",
"etag": "RVRhZw==",
"settings": {
"@odata.type": "microsoft.graph.fileStorageContainerTypeRegistrationSettings",
"sharingCapability": "disabled",
"urlTemplate": "https://app.contoso.com/redirect?tenant={tenant-id}&drive={drive-id}&folder={folder-id}&item={item-id}",
"isDiscoverabilityEnabled": true,
"isSearchEnabled": true,
"isItemVersioningEnabled": true,
"itemMajorVersionLimit": 50,
"maxStoragePerContainerInBytes": 104857600,
"isSharingRestricted": false
},
"applicationPermissionGrants": [
{
"appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
"delegatedPermissions": ["full"],
"applicationPermissions": ["full"]
},
{
"appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6",
"delegated": ["read", "write"],
"appOnly": ["none"]
}
]
}