🏗️
Microsoft Graph API でサイト コレクションの作成ができるようになりました
以下のブログでも紹介されているように Microsoft Graph API を使用してサイト コレクションの作成ができるようになりました。
これまではサイト コレクションを作成する場合、SharePoint REST API を使用する必要がありました。エンドポイントは /_api/SPSiteManager/create です。
この方法ではいくつか問題点がありました。
- SharePoint REST API は Microsoft Graph API のアクセス トークンでは呼び出せないため別にアクセス トークンを取得しなければならない
- Sites.FullControl.All というほぼなんでもできる非常に強いアクセス許可を必要とする
特にセキュリティを考えるとアクセス許可は最小限にしたいところです。Microsoft Graph API のサイト コレクションの作成では新たに Sites.Create.All というスコープを導入し、最低限のアクセス許可で動作するようになっています。
API の呼び出しはそれほど難しくありません。
POST https://graph.microsoft.com/beta/sites
Content-Type: application/json
{
"name": "Communication Site Test",
"webUrl": "https://contoso.sharepoint.com/sites/commsite1",
"locale": "en-US",
"shareByEmailEnabled": false,
"description": "Test Site Description",
"template": "sitepagepublishing",
"ownerIdentityToResolve": {
"email": "ryan@contoso.com"
}
}
選択できるサイト テンプレートは以下の 3 つになります。これ以外の種類を選択することはまずありませんが注意が必要です。
| オプション | テンプレート名 | テンプレート ID |
|---|---|---|
| sts | チーム サイト | STS#3 |
| sitepagepublishing | コミュニケーション サイト | SITEPAGEPUBLISHING#0 |
| group | Microsoft 365 グループ サイト | GROUPS#0 |
作成されたサイトには Sites.Selected (リソース固有のアクセス許可) のスコープで動作するためのアクセス許可が割り当てられます。これは /sites/{{site-id}}/permission を呼び出して確認できます。
{
"value": [
{
"id": "aTowaS50...",
"roles": [
"fullcontrol"
],
"grantedToIdentitiesV2": [
{
"application": {
"displayName": "Sample Application",
"id": "95b74787-..."
}
}
],
"grantedToIdentities": [
{
"application": {
"displayName": "Sample Application",
"id": "95b74787-..."
}
}
]
}
]
}
サイト コレクションに対するフル コントロールのアクセス許可があるので、アクセス許可の追加やリストの作成などさまざまな操作ができるようになります。リソース固有のアクセス許可については Microsoft Learn のドキュメントも参考にしてください。
Discussion