Upgrade to Pro — share decks privately, control downloads, hide ads and more …

どっちの API SHOW?SharePoint 開発における SharePoint REST...

どっちの API SHOW?SharePoint 開発における SharePoint REST API Microsoft Graph API の違い / Which API show? Differences between Microsoft Graph API and SharePoint REST API

Takashi Shinohara

March 25, 2025
Tweet

More Decks by Takashi Shinohara

Other Decks in Technology

Transcript

  1. どっちの API SHOW? SharePoint 開発における Microsoft Graph API と SharePoint

    REST API の違い 2025/3/25 第 10 回 JPM365DEV 勉強会
  2. 自己紹介 篠原 敬志 (Takashi Shinohara) アバナード株式会社 グループ マネージャー, アジャイル コーチ

    Microsoft MVP for AI Platform (2024-2025) Microsoft MVP M365 (2018-2025) Microsoft Top Partner Engineer Award (2023) JPM365DEV 運営
  3. 本日のアジェンダ SharePoint 開発をする上で Microsoft Graph API と SharePoint REST API

    の違いとどちらを 使うべきかを理解します。 SharePoint REST API の新しい API について説明します。
  4. Microsoft Graph API: サイト (1/2) 名前 エンドポイント ルート サイトを取得する GET

    /sites/root サイトを一覧表示する GET /sites サイトを取得する GET /sites/{site-id} 地域をまたいでサイトを一覧表示する GET /sites/getAllSites サブ サイトを一覧表示する GET /sites/{site-id}/sites パスを使用してサイトを取得する GET /sites/{hostname}:/{relative-path} グループのサイトを取得する GET /groups/{group-id}/sites/root 分析を取得する GET /sites/{site-id}/analytics/allTime GET /sites/{site-id}/analytics/lastSevenDays 間隔ごとにアクティビティを取得する GET /sites/{site-id}/getActivitiesByInterval デルタを取得する GET /sites/delta サイトを検索する GET /sites?search={query} サイトの列を一覧表示する GET /sites/{site-id}/columns サイトの列を取得する GET /sites/{site-id}/columns/{column-id} サイトの列を作成する POST /sites/{site-id}/columns サイトの列を更新する PATCH /sites/{site-id}/columns/{column-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  5. Microsoft Graph API: サイト (2/2) 名前 エンドポイント サイトの列を削除する DELETE /sites/{site-id}/columns/{column-id}

    フォローされたサイトを一覧表示する GET /me/followedSites サイトをフォローする POST /users/{user-id}/followedSites/add サイトのフォローを取り消す POST /users/{user-id}/followedSites/remove アクセス許可を一覧表示する GET /sites/{site-id}/permissions/{permission-id} アクセス許可を取得する GET /sites/{site-id}/permissions アクセス許可を追加する POST /sites/{site-id}/permissions アクセス許可を更新する PATCH /sites/{site-id}/permissions/{permission-id} アクセス許可を削除する DELETE /sites/{site-id}/permissions/{permission-id} 時間のかかる操作を一覧表示する GET /sites/{site-id}/operations 時間のかかる操作を取得する GET /sites/{site-id}/operations/{operation-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  6. Microsoft Graph API: リスト 名前 エンドポイント リストを一覧表示する GET /sites/{site-id}/lists リストを取得する

    GET /sites/{site-id}/lists/{list-id} リストを作成する POST /sites/{site-id}/lists リストを更新する PATCH /sites/{site-id}/lists/{list-id} リストを削除する DELETE /sites/{site-id}/lists/{list-id} リストの列を一覧表示する GET /sites/{site-id}/}/lists/{list-id}/columns リストの列を取得する GET /sites/{site-id}/lists/{list-id}/columns/{column-id} リストの列を作成する POST /sites/{site-id}/lists/{list-id}/columns リストの列を更新する PATCH /sites/{site-id}/lists/{list-id}/columns/{column-id} リストの列を削除する DELETE /sites/{site-id}/lists/{list-id}/columns/{column-id} WebSocket エンドポイントを取得する GET /sites/{site-id}/lists/{list-id}/drive/root/subscriptions/socketIo 時間のかかる操作を一覧表示する GET /sites/{site-id}/lists/{list-id}/operations 時間のかかる操作を取得する GET /sites/{site-id}/lists/{list-id}/operations/{operation-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  7. Microsoft Graph API: リスト アイテム 名前 エンドポイント リスト アイテムを一覧表示する GET

    /sites/{site-id}/lists/{list-id}/items リスト アイテムを取得する GET /sites/{site-id}/lists/{list-id}/items/{item-id} リスト アイテムを作成する POST /sites/{site-id}/lists/{list-id}/items リスト アイテムを更新する PATCH /sites/{site-id}/lists/{list-id}/items/{item-id} リスト アイテムを削除する DELETE /sites/{site-id}/lists/{list-id}/items/{item-id} 分析を取得する GET /sites/{site-id}/lists/{list-id}/items/{item-id}/analytics/allTime GET /sites/{site-id}/lists/{list-id}/items/{item-id}/analytics/lastSevenDays 指定した期間のアクティビティを取得する GET /sites/{site-id}/lists/{list-id}/items/{item-id}/getActivitiesByInterval ドキュメント セットのバージョンを一覧表示する GET /sites/{site-id}/lists/{list-id}/items/{item-id}/documentSetVersions ドキュメント セットのバージョンを取得する GET /sites/{site-id}/lists/{list-id}/items/{item-id}/documentSetVersions /{version-id} ドキュメント セットのバージョンを作成する POST /sites/{site-id}/lists/{list-id}/items/{item-id}/documentSetVersions ドキュメント セットのバージョンを削除する DELETE /sites/{site-id}/lists/{list-id}/items/{item-id}/documentSetVersions /{version-id} ドキュメント セットのバージョンを復元する POST /sites/{site-id}/lists/{list-id}/items/{item-id}/documentSetVersions /{version-id}/restore Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  8. Microsoft Graph API: ドライブとドライブ アイテム (1/3) 名前 エンドポイント ドライブを一覧表示する GET

    /sites/{site-id}/drives ドライブを取得する GET /sites/{site-id}/drives/{drive-id} ドライブのルートを取得する GET /sites/{site-id}/drives/{drive-id}/root ドライブ アイテムを一覧表示する GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/children ドライブ アイテムを取得する GET /sites/{site-id}/drives/{drive-id}/items/{item-id} ドライブ アイテムのバージョンを一覧表示する GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/versions フォルダーを作成する POST /sites/{site-id}/drive/items/{item-id}/children ファイルをアップロードする POST /sites/{site-id}/drive/items/{item-id}/content ファイルのアップロード セッションを作成する POST /sites/{site-id}/drive/items/{item-id}/createUploadSession ファイルをダウンロードする GET /sites/{site-id}/drive/items/{item-id}/content 別の形式でファイルをダウンロードする GET /sites/{site-id}/drive/items/{item-id}/content?format={format} ドライブ アイテムを更新する PATCH /sites/{site-id}/drives/{drive-id}/items/{item-id} ドライブ アイテムを削除する DELETE /sites/{site-id}/drives/{drive-id}/items/{item-id} ドライブ アイテムを完全に削除する POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/permanentDelete ドライブ アイテムを移動する PATCH /sites/{site-id}/drives/{drive-id}/items/{item-id} ドライブ アイテムをコピーする POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/copy Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  9. Microsoft Graph API: ドライブとドライブ アイテム (2/3) 名前 エンドポイント ドライブ アイテムを検索する

    GET /sites/{site-id}/drives/{drive-id}/search(q='{search-text}') ドライブ アイテムをフォローする POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/follow ドライブ アイテムのフォローを取り消す POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/unfollow DELETE /sites/{site-id}/drives/{drive-id}/following/{item-id} サムネイルを取得する GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/thumbnails 共有リンクを作成する POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/createLink アクセス許可を一覧表示する GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/permissions アクセス許可を取得する DELETE /sites/{site-id}/drives/{drive-id}/items/{item-id}/permissions/{perm-id} アクセス許可を追加する POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/invite アクセス許可を更新する DELETE /sites/{site-id}/drives/{drive-id}/items/{item-id}/permissions/{perm-id} ドライブ アイテムをプレビューする GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/preview ドライブ アイテムをチェックインする POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/checkin ドライブ アイテムをチェックアウトする POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/checkout ドライブ アイテムのチェックアウトを破棄する POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/discardCheckout 秘密度ラベルを抽出する POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/extractSensitivityLabels 秘密度ラベルを割り当てる POST /sites/{site-id}/drives/{drive-id}/items/{item-id}/assignSensitivityLabel Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  10. Microsoft Graph API: ドライブとドライブ アイテム (3/3) 名前 エンドポイント 保持ラベルを取得する GET

    /sites/{site-id}/drives/{drive-id}/items/{item-id}/retentionLabel 保持ラベルを設定する PATCH /sites/{site-id}/drives/{drive-id}/items/{item-id}/retentionLabel 保持ラベルを削除する DELETE /sites/{site-id}/drives/{drive-id}/items/{item-id}/retentionLabel レコードをロックまたはロック解除する PATCH /sites/{site-id}/drives/{drive-id}/items/{item-id}/retentionLabel Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  11. Microsoft Graph API: コンテンツ タイプ (1/2) 名前 エンドポイント コンテンツ タイプを一覧表示する

    GET /sites/{site-id}/contentTypes コンテンツ タイプを取得する GET /sites/{site-id}/contentTypes/{contenttype-id} コンテンツ タイプを作成する POST /sites/{site-id}/contentTypes コンテンツ タイプを更新する PATCH /sites/{site-id}/contentTypes/{contenttype-id} コンテンツ タイプを削除する DELETE /sites/{site-id}/contentTypes/{contenttype-id} コンテンツ タイプの発行状態を取得する GET /sites/{siteId}/contentTypes/{contenttype-id}/isPublished コンテンツ タイプを発行する POST /sites/{site-id}/contentTypes/{contenttype-id}/publish コンテンツ タイプの発行を解除する POST /sites/{site-id}/contentTypes/{contenttype-id}/unpublish コンテンツ タイプの列を一覧表示する GET /sites/{site-id}/contentTypes/{contenttype-id}/columns コンテンツ タイプの列を取得する GET /sites/{site-id}/contentTypes/{contenttype-id}/columns/{column-id} コンテンツ タイプの列を作成する POST /sites/{site-id}/contentTypes/{contenttype-id}/columns コンテンツ タイプの列を更新する PATCH /sites/{site-id}/contentTypes/{contenttype-id}/columns/{column-id} コンテンツ タイプの列を削除する DELETE /sites/{site-id}/contentTypes/{contenttype-id}/columns/{column-id} サイトからリストにコンテンツ タイプのコピーを追加する POST /sites/{site-id}/lists/{list-id}/contentTypes/addCopy コンテンツ タイプをハブ サイトの一覧に関連付ける POST /sites/{site-id}/contentTypes/{contenttype-id}/associateWithHubSites コンテンツ タイプの既定のコンテンツの場所にファイルをコピーする POST /sites/{site-id}/contentTypes/{contenttype-id}/copyToDefaultContentLocation Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  12. Microsoft Graph API: コンテンツ タイプ (2/2) 名前 エンドポイント 互換性のあるコンテンツ タイプの一覧を取得する

    GET /sites/{site-id}/contentTypes/getCompatibleHubContentTypes 公開されたコンテンツ タイプのコピーをサイトまたはリストに追加 POST /sites/{site-id}/contentTypes/addCopyFromContentTypeHub または同期する Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  13. Microsoft Graph API: サイト ページ (1/3) 名前 エンドポイント ベース サイト

    ページを一覧表示する GET /sites/{site-id}/pages ベース サイト ページを取得する GET /sites/{site-id}/pages/{page-id} サイト ページを一覧表示する GET /sites/{site-id}/pages/microsoft.graph.sitePage サイト ページを取得する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage サイト ページを作成する POST /sites/{site-id}/pages サイト ページを更新する PATCH /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage サイト ページを削除する DELETE /sites/{site-id}/pages/{page-id} サイト ページを発行する POST /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/publish 水平セクションを一覧表示する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections 水平セクションを取得する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections/{horizontal-section-id} 水平セクションを作成する POST /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections 水平セクションを更新する PATCH /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections/{horizontal-section-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  14. Microsoft Graph API: サイト ページ (2/3) 名前 エンドポイント 水平セクションを削除する DELETE

    /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage /canvasLayout/horizontalSections/{horizontal-section-id} 水平セクション列を一覧表示する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections/{horizontal-section-id}/columns 水平セクション列を取得する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections/{horizontal-section-id}/columns/{horizontal-section-column-id} 垂直セクションを取得する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /verticalSection 垂直セクションを作成する POST /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /verticalSection 垂直セクションを更新する PATCH /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /verticalSection 垂直セクションを削除する DELETE /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /verticalSection Web パーツを一覧表示する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/webparts Web パーツを取得する GET /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/webParts/{webpart-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  15. Microsoft Graph API: サイト ページ (3/3) 名前 エンドポイント Web パーツを作成する

    POST /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /horizontalSections/{horizontal-section-id}/columns/{horizontal-section-column-id} /webparts POST /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/canvasLayout /verticalSection/webparts Web パーツを更新する PATCH /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/webParts /{webpart-id} Web パーツを削除する DELETE /sites/{site-id}/pages/{page-id}/microsoft.graph.sitePage/webParts /{webpart-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  16. Microsoft Graph API: 用語ストア (1/2) 名前 エンドポイント 用語ストアを取得する GET /sites/{site-id}/termStore

    用語ストアを更新する PATCH sites/{site-id}/termStore 用語グループを一覧表示する GET /sites/{site-id}/termStore/groups 用語グループを取得する GET /sites/{site-id}/termStore/groups/{group-id} 用語グループを作成する POST /sites/{site-id}/termStore/groups 用語グループを削除する DELETE /sites/{site-id}/termStore/groups/{group-id} 用語セットを一覧表示する GET /sites/{site-id}/termStore/sets 用語セットを取得する GET /sites/{site-id}/termStore/sets/{set-id} 用語セットを作成する POST /sites/{site-id}/termStore/sets 用語セットを更新する PATCH /sites/{site-id}/termStore/sets/{set-id} 用語セットを削除する DELETE sites/{site-id}/termStore/sets/{set-id} 用語を一覧表示する GET /sites/{site-id}/termStore/sets/{set-id}/children 用語のリレーションを取得する GET /sites/{site-id}/termStore/sets/{set-id}/terms/{term-id}/relations 用語のリレーションを作成する POST /sites/{site-id}/termStore/sets/{set-id}/terms/{term-id}/relations 用語を取得する GET /sites/{site-id}/termStore/sets/{set-id}/terms/{term-id} 用語を作成する POST /sites/{site-id}/termStore/sets/{set-id}/children Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  17. Microsoft Graph API: 用語ストア (2/2) 名前 エンドポイント 用語を更新する PATCH /sites/{site-id}/termStore/sets/{set-id}/terms/{term-id}

    用語を削除する DELETE /sites/{site-id}/termStore/sets/{set-id}/terms/{term-id} Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  18. Microsoft Graph API: テナント管理 名前 エンドポイント SharePoint と OneDrive のテナント

    レベルの設定を取得する GET /admin/sharepoint/settings SharePoint と OneDrive のテナント レベルの設定を更新する PATCH /admin/sharepoint/settings Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  19. SharePoint REST API: サイト (1/3) 名前 エンドポイント ルート サイトを取得する POST

    /_api/SPO.Tenant/getRootSiteUrl サイト コレクションを一覧表示する POST /_api/SPO.Tenant/getSitePropertiesFromSharePoint サイト コレクションを取得する POST /_api/SPO.Tenant/getSitePropertiesByUrl サイト コレクションを作成する POST /_api/SPSiteManager/create サイト コレクションを削除する POST /_api/SPO.Tenant/removeSite 削除されたサイト コレクションを一覧表示する POST /_api/SPO.Tenant/getDeletedSitePropertiesFromSharePoint 削除されたサイト コレクションを取得する POST /_api/SPO.Tenant/getDeletedSitePropertiesByUrl 削除された個人用サイトを一覧表示する POST /_api/SPO.Tenant/getAllDeletedPersonalSitesPropertiesAllVersions 削除された個人用サイトを取得する POST /_api/SPO.Tenant/getDeletedPersonalSitePropertiesAllVersions サイト コレクションを完全に削除する POST /_api/SPO.Tenant/removeDeletedSite サイト コレクションを復元する POST /_api/SPO.Tenant/restoreDeletedSite サイトを取得する GET /_api/web サイトを更新する POST /_api/web サブ サイトを一覧表示する GET /_api/web/webs サブ サイトを作成する POST /_api/web/webinfos/add サイトを削除する DELETE /_api/web Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  20. SharePoint REST API: サイト (2/3) 名前 エンドポイント 権限の継承を削除する POST /_api/web/breakRoleInheritance

    権限の継承をリセットする POST /_api/web/resetRoleInheritance アクセス許可を一覧表示する GET /_api/web/roleAssignments アクセス許可を取得する GET /_api/web/roleAssignments/getByPrincipalId({principal-id}) アクセス許可を追加する POST /_api/web/roleAssignments /addRoleAssignment(principalId={principal-id},roleDefId={roledefinition-id}) アクセス許可を削除する DELETE /_api/web/roleAssignments/getByPrincipalId({principal-id}) ユーザーを取得する GET /_api/web/siteUsers ユーザーを確認する POST /_api/web/ensureUser グループを一覧表示する GET /_api/web/siteGroups グループを取得する GET /_api/web/siteGroups/getById({group-id}) グループを作成する POST /_api/web/siteGroups グループを更新する PATCH /_api/web/siteGroups/getById({group-id}) グループを削除する DELETE /_api/web/siteGroups/getById({group-id}) グループにメンバーを追加する POST /_api/web/siteGroups/getById({group-id})/users グループからメンバーを削除する DELETE /_api/web/siteGroups/getById({group-id})/users/getById({user-id}) Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  21. SharePoint REST API: サイト (3/3) 名前 エンドポイント グループの所有者を設定する POST /_api/web/siteGroups/getById({group-id})/setUserAsOwner({user-id})

    サイトを検索する GET /_api/search/query サイトの列を一覧表示する GET /_api/web/fields サイトの列を取得する GET /_api/web/fields/getById('{field-id}') サイトの列を作成する POST /_api/web/fields サイトの列を更新する PATCH /_api/web/fields/getById('{field-id}') サイトの列を削除する DELETE /_api/web/fields/getById('{field-id}') Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  22. SharePoint REST API: リスト (1/2) 名前 エンドポイント リストを一覧表示する GET /_api/web/lists

    リストを取得する GET /_api/web/lists/getById('{list-id}') リストを作成する POST /_api/web/lists リストを更新する PATCH /_api/web/lists/getById('{list-id}') リストを削除する POST /_api/web/lists/getById('{list-id}')/recycle リストを完全に削除する DELETE /_api/web/lists/getById('{list-id}') 権限の継承を削除する POST /_api/web/lists/getById('{list-id}')/breakRoleInheritance 権限の継承をリセットする POST /_api/web/lists/getById('{list-id}')/resetRoleInheritance アクセス許可を一覧表示する GET /_api/web/lists/getById('{list-id}')/roleAssignments アクセス許可を取得する GET /_api/web/lists/getById('{list-id}')/roleAssignments /getByPrincipalId({principal-id}) アクセス許可を追加する POST /_api/web/lists/getById('{list-id}')/roleAssignments /addRoleAssignment(principalId={principal-id},roleDefId={roledefinition-id}) アクセス許可を削除する DELETE /_api/web/lists/getById('{list-id}')/roleAssignments /getByPrincipalId({principal-id}) ビューを一覧表示する GET /_api/web/lists/getById('{list-id}')/views Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  23. SharePoint REST API: リスト (2/2) 名前 エンドポイント ビューを取得する GET /_api/web/lists/getById('{list-id}')/views/getById('view-id')

    ビューを作成する POST /_api/web/lists/getById('{list-id}')/views ビューを更新する PATCH /_api/web/lists/getById('{list-id}')/views/getById('view-id') ビューを削除する DELETE /_api/web/lists/getById('{list-id}')/views/getById('view-id') リストの列を一覧表示する GET /_api/web/lists/getById('{list-id}')/fields リストの列を取得する GET /_api/web/lists/getById('{list-id}')/fields/getById('{field-id}') リストの列を作成する POST /_api/web/lists/getById('{list-id}')/fields リストの列を更新する PATCH /_api/web/lists/getById('{list-id}')/fields/getById('{field-id}') リストの列を削除する DELETE /_api/web/lists/getById('{list-id}')/fields/getById('{field-id}') Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  24. SharePoint REST API: リスト アイテム (1/3) 名前 エンドポイント リスト アイテムを一覧表示する

    GET /_api/web/lists/getById('{list-id}')/items ストリームとしてリスト アイテムを一覧表示する POST /_api/web/lists/getById('{list-id}')/renderListDataAsStream リスト アイテムを取得する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id}) リスト アイテムを作成する POST /_api/web/lists/getById('{list-id}')/items フォルダー内にリスト アイテムを作成する POST /_api/web/lists/getById('{list-id}')/addValidateUpdateItemUsingPath リスト アイテムを更新する PATCH /_api/web/lists/getById('{list-id}')/items/getById({item-id}) リスト アイテムを削除する POST /_api/web/lists/getById('{list-id}')/items/getById({item-id})/recycle リスト アイテムを完全に削除する DELETE /_api/web/lists/getById('{list-id}')/items/getById({item-id}) 権限の継承を削除する POST /_api/web/lists/getById('{list-id}')/}')/items/getById({item-id}) /breakRoleInheritance 権限の継承をリセットする POST /_api/web/lists/getById('{list-id}')/items/getById({item-id}) /resetRoleInheritance アクセス許可を一覧表示する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/roleAssignments アクセス許可を取得する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/roleAssignments アクセス許可を追加する POST /_api/web/lists/getById('{list-id}')/items/getById({item-id})/roleAssignments /addRoleAssignment(principalId={principal-id},roleDefId={roledefinition-id}) Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  25. SharePoint REST API: リスト アイテム (2/3) 名前 エンドポイント アクセス許可を削除する DELETE

    /_api/web/lists/getById('{list-id}')/items/getById({item-id}) /roleAssignments/getByPrincipalId({principal-id}) リスト アイテムのバージョンを一覧表示する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/versions リスト アイテムのバージョンを取得する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/versions /getById({version-id}) リスト アイテムのバージョンを削除する DELETE /_api/web/lists/getById('{list-id}')/items/getById({item-id})/versions /getById({version-id}) リスト アイテムのバージョンを復元する POST /_api/web/lists/getById('{list-id}')/items/getById({item-id})/versions /getById({version-id})/restoreVerion 添付ファイルを一覧表示する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/attachmentFiles 添付ファイルを取得する GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/attachmentFiles /getByFileName('{file-name}') 添付ファイルをアップロードする POST /_api/web/lists/getById('{list-id}')/items/getById({item-id})/attachmentFiles /add(filename='{file-name}') 添付ファイルをダウンロードする GET /_api/web/lists/getById('{list-id}')/items/getById({item-id})/attachmentFiles /getByFileName('{file-name}')/value Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  26. SharePoint REST API: リスト アイテム (3/3) 名前 エンドポイント 添付ファイルを削除する DELETE

    /_api/web/lists/getById('{list-id}')/items/getById({item-id}) /attachmentFiles/getByFileName('{file-name}') Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  27. SharePoint REST API: ファイルとフォルダー (1/2) 名前 エンドポイント フォルダー内のフォルダーを一覧表示する GET /_api/web/getFolderByServerRelativeUrl('{folder-path}')/folders

    フォルダーを取得する GET /_api/web/getFolderByServerRelativeUrl('{folder-path}') フォルダーを作成する POST /_api/web/getFolderByServerRelativeUrl('{folder-path}')/folders フォルダーを変更する PATCH /_api/web/getFolderByServerRelativeUrl('{folder-path}')/listItemAllFields フォルダーを削除する POST /_api/web/getFolderByServerRelativeUrl('{folder-path}')/recycle フォルダーを完全に削除する DELETE /_api/web/getFolderByServerRelativeUrl('{folder-path}') フォルダー内のファイルを一覧表示する GET /_api/web/getFolderByServerRelativeUrl('{folder-path}')/files フォルダーのアクセス許可を一覧表示する GET /_api/web/getFolderByServerRelativeUrl('{folder-path}')/roleAssignments フォルダーのアクセス許可を取得する GET /_api/web/getFolderByServerRelativeUrl('{folder-path}')/roleAssignments /getByPrincipalId({principal-id}) フォルダーのアクセス許可を追加する POST /_api/web/getFolderByServerRelativeUrl('{folder-path}')/roleAssignments /addRoleAssignment(principalId={principal-id},roleDefId={roledefinition-id}) フォルダーのアクセス許可を削除する DELETE /_api/web/getFolderByServerRelativeUrl('{folder-path}')/roleAssignments /getByPrincipalId({principal-id}) ファイルを取得する GET /_api/web/getFileByServerRelativeUrl('{file-path}') ファイルを更新する PUT _api/web/getFileByServerRelativeUrl('{file-path}')/$value Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  28. SharePoint REST API: ファイルとフォルダー (2/2) 名前 エンドポイント ファイルを削除する POST /_api/web/getFileByServerRelativeUrl('{file-path}')/recycle

    ファイルを完全に削除する DELETE /_api/web/getFileByServerRelativeUrl('{file-path}') ファイルをアップロードする POST /_api/web/getFolderByServerRelativeUrl('{folder-path}')/files /add(url='{file-name}',overwrite={overwrite}) ファイルのアップロード セッションを作成する POST _api/web/getFileByServerRelativeUrl('{file-path}') /startUpload(uploadId='{upload-id}') ファイルをダウンロードする GET _api/web/getFileByServerRelativeUrl('{file-path}')/$value GET _api/web/getFileByServerRelativeUrl('{file-path}')/openbinarystream ファイルのアクセス許可を一覧表示する GET /_api/web/getFileByServerRelativeUrl('{file-path}')/roleAssignments ファイルのアクセス許可を取得する GET /_api/web/getFileByServerRelativeUrl('{file-path}')/roleAssignments /getByPrincipalId({principal-id}) ファイルのアクセス許可を追加する POST /_api/web/getFileByServerRelativeUrl('{file-path}')/roleAssignments /addRoleAssignment(principalId={principal-id},roleDefId={roledefinition-id}) ファイルのアクセス許可を削除する DELETE /_api/web/getFileByServerRelativeUrl('{file-path}')/roleAssignments /getByPrincipalId({principal-id}) ファイルをチェックアウトする POST _api/web/getFileByServerRelativeUrl('{folder-path}')/checkOut Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  29. SharePoint REST API: ファイルとフォルダー (3/3) 名前 エンドポイント ファイルをチェックインする POST _api/web/getFileByServerRelativeUrl('{folder-path}')/checkIn

    ファイルのチェックアウトを破棄する POST _api/web/getFileByServerRelativeUrl('{folder-path}')/undoCheckOut Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  30. SharePoint REST API: コンテンツ タイプ 名前 エンドポイント コンテンツ タイプを一覧表示する GET

    /_api/web/contentTypes コンテンツ タイプを取得する GET /_api/web/contentTypes/getById('{contenttype-id}') コンテンツ タイプを作成する POST /_api/web/contentTypes コンテンツ タイプを更新する PATCH /_api/web/contentTypes/getById('{contenttype-id}') コンテンツ タイプを削除する DELETE /_api/web/contentTypes/getById('{contenttype-id}') コンテンツ タイプの列を一覧表示する GET /_api/web/contentTypes/getById('{contenttype-id}')/fieldLinks コンテンツ タイプの列を取得する GET /_api/web/contentTypes/getById('{contenttype-id}')/fieldLinks /getById('{field-id}') サイトからリストにコンテンツ タイプのコピーを追加する POST /_api/web/contentTypes/getById('{contenttype-id}')/addAvailableContentType Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  31. SharePoint REST API: テナント管理 名前 エンドポイント テナントの設定を取得する GET /_api/SPO.Tenant テナントの設定を更新する

    PATCH /_api/SPO.Tenant Microsoft Graph API v1.0 と SharePoint REST API v1.0 を比較し、Microsoft Graph API にしかないものを赤字、SharePoint REST API にしかないものを青字で表示しています。
  32. ROUND 1: まとめ Microsoft Graph API には SharePoint Online の新しい機能に関する

    API が多い SharePoint REST API には SharePoint の設定を操作する API が多い
  33. SharePoint REST API の新しいエンドポイント SharePoint REST API には Microsoft Graph

    API を呼び出すためのエンドポイントがある • /_api/v2.0/sites • /_api/v2.0/drives • /_api/v2.1/sites • /_api/v2.1/drives 参考: https://learn.microsoft.com/ja-jp/sharepoint/dev/apis/sharepoint-rest-graph
  34. ROUND 1: まとめ (修正) Microsoft Graph API には SharePoint Online

    の新しい機能に関する API が多い SharePoint REST API には SharePoint の設定を操作する API が多い SharePoint REST API の新しいエンドポイントを使用すれば Microsoft Graph API の操作も実 行できる SharePoint REST API
  35. スコープの比較: 委任されたアクセス許可 スコープの種類 Microsoft Graph API SharePoint REST API サイト

    Sites.Read.All AllSites.Read Sites.ReadWrite.All AllSites.Write Sites.Manage.All AllSites.Manage Sites.FullControl.All AllSites.FullControl Sites.Selected - リスト Lists.SelectedOperations.Selected - リスト アイテム ListItems.SelectedOperations.Selected - ファイル Files.Read MyFiles.Read Files.ReadWrite MyFiles.Write Files.Read.All - Files.ReadWrite.All - Files.Read.Selected - Files.SelectedOperations.Selected - 検索 - Sites.Search.All 用語ストア TermStore.Read.All TermStore.Read.All TermStore.ReadWrite.All TermStore.ReadWrite.All
  36. スコープの比較: アプリケーションのアクセス許可 スコープの種類 Microsoft Graph API SharePoint REST API サイト

    Sites.Read.All Sites.Read.All Sites.ReadWrite.All Sites.Write.All Sites.Manage.All Sites.Manage.All Sites.FullControl.All Sites.FullControl.All Sites.Archive.All - Sites.Selected Sites.Selected リスト Lists.SelectedOperations.Selected - リスト アイテム ListItems.SelectedOperations.Selected - ファイル Files.Read.All - Files.ReadWrite.All - Files.ReadWrite.AppFolder - Files.SelectedOperations.Selected - 用語ストア TermStore.Read.All TermStore.Read.All TermStore.ReadWrite.All TermStore.ReadWrite.All
  37. リソース固有のアクセス許可 特定のサイト、リスト、リスト アイテムに対してのアクセス許可を指定できる 例えば Sites.Read.All はユーザーがアクセスできるサイトにはすべてアクセス可能だが Site.Selected はアクセス可能と設定されたサイトにのみアクセスできるように構成できる 実際にアクセス可能なリソースは Microsoft

    Graph API で指定する • /sites/{site-id}/permissions • /sites/{site-is}/lists/{list-id}/permissions • /sites/{site-is}/lists/{list-id}/items/{item-id}/permissions • /drives/{drive-id}/items/{item-id}/permissions 参考: https://learn.microsoft.com/ja-jp/sharepoint/dev/sp-add-ins-modernize/understanding-rsc-for-msgraph-and-sharepoint-online
  38. アプリケーションのアクセス許可での証明書とシークレット SharePoint REST API ではアプリケーションのアクセス許可にシークレットを使用できない アクセス トークンは取得できるが API を呼び出すと Unsupported

    app only token というエラー メッセージが表示されるため証明書を使用する必要がある Microsoft Graph API ではそのような制限はなくシークレットと証明書のどちらも使用できる シークレットより証明書のほうがセキュアのため可能であれば証明書を使用する 参考: https://learn.microsoft.com/ja-jp/sharepoint/dev/solution-guidance/security-apponly-azuread
  39. ROUND 2: まとめ Microsoft Graph API は SharePoint REST API

    に比べてスコープの種類が多い SharePoint REST API はアプリケーションのアクセス許可で証明書しか使用できない Microsoft Graph API
  40. ユーザー レベルのリクエスト調整 調整の種類 間隔 制限 1 秒あたりのリクエスト回数 5 分ごと 3,000

    回 イングレス 1 時間ごと 50 GB エグレス 1 時間ごと 100 GB 委任されたトークンの要求回数 5 分ごと 50 回 外部共有メール 1 時間ごと 200 通 参考: https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online
  41. テナント レベルのリクエスト調整 ライセンス数 0 - 1,000 1,001 - 5,000 5,001

    - 15,000 15,001 - 50,000 50,000 - 5 分ごと 18,750 RU 37,500 RU 56,250 RU 75,000 RU 93,750 RU 参考: https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online
  42. アプリケーション レベルのリクエスト調整 ライセンス数 0 - 1,000 1,001 - 5,000 5,001

    - 15,000 15,001 - 50,000 50,000 - 1 分ごと 1,250 RU 2,500 RU 3,750 RU 5,000 RU 6,250 RU 24 時間ごと 1,200,000 RU 2,400,000 RU 3,600,000 RU 4,800,000 RU 6,000,000 RU 参考: https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online
  43. リソース ユニット (RU) の計算方法 要求あたりのリソース ユニット数 操作 1 アイテムの取得などの単一アイテム クエリ

    トークンを使用した差分 ファイルのダウンロード 2 リストの子などの複数項目クエリ 作成、更新、削除、アップロード 5 すべてのアクセス許可リソース操作 ($expand=permissions を含む) 参考: https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online
  44. 調整を処理する方法 調整を処理するためのベスト プラクティスとして以下の方法があります。 • 同時要求の数を減らす • 要求の急増を回避する • 可能な場合は SharePoint

    REST API よりも Microsoft Graph API を使用する • Retry-After および RateLimit ヘッダーを使用する • HTTP トラフィックを装飾する Microsoft Graph API を使用するべき理由 • SharePoint REST API では RU 以外の内部調整を受ける可能性がある • 一般的に Microsoft Graph API のほうがリソースの消費量が少ない
  45. ROUND 3: まとめ SharePoint REST API と Microsoft Graph API

    では同じリクエスト調整が発生する SharePoint REST API は追加の内部調整が発生する可能性がある Microsoft Graph API のほうがリソースの消費量が少ない Microsoft Graph API
  46. 複数のサービスに対する Entra ID アプリケーションの制限 Microsoft Graph API と SharePoint REST

    API には同じアクセス トークンが使えない アクセス許可が共通していてもアクセス トークンの aud が異なるため片方のサービスで取得し たアクセス トークンをもう片方のサービスで使用できない 複数のサービスのスコープを指定したアクセス トークンも取得できない MSAL では複数のアクセス トークンの取得をサポートしない どうしても複数のサービスを使いたい場合は On-Behalf-Of フローを使用する
  47. On-Behalf-Of フロー Web API から他の Web API にアクセスするための OAuth フロー

    Microsoft Graph API SharePoint REST API Web App Web API Entra ID 1. Web APIへ のアクセス トー クンを取得 2. Web APIに リクエスト 3. アクセス トー クンを交換 4. サービスにリ クエスト/レス ポンス 参考: https://learn.microsoft.com/ja-jp/entra/identity-platform/v2-oauth2-on-behalf-of-flow 5. Web App にレスポンス