アプリケーション ライフサイクル管理 (ALM) API

ALM API は、テナント全体で SharePoint Framework ソリューションとアドインの展開を管理するためのシンプルな API を提供します。 ALM API でサポートされる機能は次のとおりです。

  • テナントまたはサイト コレクションのアプリ カタログに SharePoint Framework ソリューションまたは SharePoint アドインを追加します。
  • テナントまたはサイト コレクションのアプリ カタログから SharePoint Framework ソリューションまたは SharePoint アドインを削除します。
  • テナントまたはサイト コレクションのアプリ カタログにインストールできるように、SharePoint Framework ソリューションまたは SharePoint アドインを有効にします。
  • テナントまたはサイト コレクションのアプリ カタログにインストールできないように、SharePoint Framework ソリューションまたは SharePoint アドインを無効にします。
  • テナントまたはサイト コレクションのアプリ カタログからサイトに SharePoint Framework ソリューションまたは SharePoint アドインをインストールします。
  • サイトの SharePoint Framework ソリューションまたは SharePoint アドインをアップグレードします (テナントまたはサイト コレクションのアプリ カタログで使用可能な新しいバージョンがある場合)。
  • サイトから SharePoint Framework ソリューションまたは SharePoint アドインをアンインストールします。
  • テナントまたはサイト コレクションのアプリ カタログ内の SharePoint Framework ソリューションまたは SharePoint アドインを一覧表示して詳細を取得します。

ALM API は、UI から実行できる操作とまったく同じ操作を実行する際に使用できます。 この API を使用すると、すべての一般的な処理が実行されます。 次に、ALM API の特徴をいくつか示します。

  • InstallUnInstall イベントは、対応する操作が発生したときにプロバイダー向けのホスト型アドインに向けてトリガーされます。
  • ALM API は、SharePoint Framework ソリューションでのみアプリベースの操作をサポートします。

ALM API は、テナントを対象としたサイト コレクションとサイト コレクション アプリ カタログをサポートします。 特定のアプリ カタログを対象とする場合は、対応するアプリ カタログの URL を使用します。 このページで説明するアクションを含むサイト コレクションのアプリ カタログを対象にする前に、有効にする必要があります。

重要

テナント管理用のアクセス許可を必要とするテナント スコープのアクセス許可は、ALM API ではサポートされません。

ALM API の操作に関する詳細オプション

ALM API は、REST API を使用することでネイティブに提供されますが、SharePoint PnP コミュニティ チャネルを通じて追加の クライアント オブジェクト モデル (CSOM) 拡張機能、PowerShell コマンドレット、クロスプラットフォームの CLI for Microsoft 365 も使用できます。

SharePoint REST API

ALM API は、SharePoint REST API のエンドポイントとしてネイティブに提供されています。

以下に示す例のように、REST API を使用する場合は、すべての HTTP 要求にアプリ カタログを含める必要があります。 エンドポイントで {app-catalog-scope} プレースホルダーをアプリ カタログの範囲に置き換えます。 利用可能なスコープ オプションは、tenantappcatalog および sitecollectionappcatalog です。

次に例を示します。

範囲 Endpoint
tenant https://contoso.sharepoint.com/sites/AppCatalog/_api/web/tenantappcatalog/{command}
サイト コレクション https://contoso.sharepoint.com/sites/Marketing/_api/web/sitecollectionappcatalog/{command}
  • https://contoso.sharepoint.com/sites/AppCatalog にあるテナントのアプリ カタログを対象とする場合、エンドポイントは ** になります

詳細情報はこちら: SharePoint REST API

PnP CSOM (別名: PnP Sites Core)

PnP CSOM は、SharePoint REST API を呼び出して ALM API を実装します。

PnP CSOM で ALM API を使用する前に、Microsoft.SharePointOnline.CSOM を使用して、認証済みのクライアント コンテキストを取得する必要があります。 次に、認証されたクライアント コンテキストを使用して、PnP CSOM の AppManager オブジェクトのインスタンスを取得し、ALM コマンドを呼び出します。

using Microsoft.SharePoint.Client;
using OfficeDevPnP.Core.ALM;

// ...

using (var context = new ClientContext(webURL)) {
  context.Credentials = new SharePointOnlineCredentials(username, securePassword);
  var appManager = new AppManager(context);
  // execute PnP CSOM ALM command
}

PnP Core のすべてのメソッドでは、要求が SharePoint CSOM ClientContext オブジェクトを使用して接続するテナントのアプリ カタログを対象にすることを想定しています。 オプションの scope 引数を使用して、すべてのコマンドの範囲を上書きすることができます。例

appManager.Install('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx', AppCatalogScope.Site);

詳細情報はこちら: PnP PowerShell

PnP PowerShell

PnP PowerShell は、PnP CSOM を呼び出して ALM API を実装します。

PnP PowerShell モジュールのいずれかのコマンドレットを使用する前に、まず Connect-PnPOnline コマンドレットを使用して SharePoint Online に接続する必要があります。

PowerShell のすべてのコマンドレットでは、要求が Connect-PnPOnline コマンドレットを使用して接続するテナントのアプリ カタログを対象にすることを想定しています。 -Scope パラメーターを使用してコマンドの範囲をオーバーライドし、サイト コレクション アプリ カタログを対象にすることができます。

詳細情報はこちら: PnP PowerShell

注:

PnP PowerShell はオープン ソース ソリューションであり、アクティブなコミュニティでサポートが提供されています。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

CLI for Microsoft 365

CLI for Microsoft 365 は、Windows、MacOS、Linux などのあらゆるプラットフォームで使用できるクロスプラットフォーム コマンド ライン インターフェイスです。 CLI は、SharePoint REST API を呼び出して ALM API を実装します。

CLI for Microsoft 365 でコマンドを使用する前に、まず m365 login コマンドを使用して、Microsoft 365 テナントに接続する必要があります。

詳細情報はこちら: CLI for Microsoft 365

注:

CLI for Microsoft 365 はオープン ソース ソリューションであり、アクティブなコミュニティでサポートが提供されています。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

ソリューション パッケージを追加する

まず、アプリ パッケージ (*.sppkg または *.app) をアプリ カタログに追加して、SharePoint サイトで使用できるようにします。

HTTP 要求

POST /_api/web/{scope}appcatalog/Add(overwrite=true, url='sharepoint-solution-package.sppkg')

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
Content-Type application/json
X-RequestDigest {form digest}
binaryStringRequestBody true

要求本文

ファイルのバイト配列

ソリューション パッケージを展開する

ソリューションを展開することで、サイトにインストールできるようになります。

HTTP 要求

POST /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')/Deploy

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
Content-Type application/json;odata=nometadata;charset=utf-8
X-RequestDigest {form digest}

要求本文

{
  "skipFeatureDeployment": true
}

注:

この操作は、Add エンドポイントを呼び出した後、特定のサイトにパッケージをインストールする前にのみ行うことができます。

重要

複数のパッケージを並行して展開することはサポートされていません。 展開操作をシリアル化して、展開エラーを防いでください。

ソリューション パッケージを取り消す

これは、上記の展開手順の逆です。 ソリューションを取り消すと、サイトにインストールすることはできません。

HTTP 要求

POST /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')/Retract

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
X-RequestDigest {form digest}

注:

この操作により、サイトでのソリューションのインストールがブロックされ、既存のインストールが無効になります。

ソリューション パッケージを削除する

これは、上記の追加手順の逆です。 アプリ カタログから削除されると、そのソリューションは展開できません。

HTTP 要求

POST /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')/Remove

注:

取り消しの操作が削除の操作の前に実行されていない場合は、ソリューションの取り消しが自動的に行われます。

利用可能なパッケージのリストの作成

この操作では、アプリ カタログで利用可能な SharePoint Framework ソリューションまたは SharePoint アドインのリストを返します。

HTTP 要求

GET /_api/web/{scope}appcatalog/AvailableApps

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata

応答

{
  "value": [
    {
      "AadAppId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
      "ContainsTenantWideExtension": false,
      "CurrentVersionDeployed": true,
      "Deployed": true,
      "ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
      "IsClientSideSolution": true,
      "IsEnabled": true,
      "IsPackageDefaultSkipFeatureDeployment": false,
      "IsValidAppPackage": true,
      "ShortDescription": "",
      "SkipDeploymentFeature": false,
      "Title": "sharepoint-solution-package"
    },
    {
      "AadAppId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
      "ContainsTenantWideExtension": false,
      "CurrentVersionDeployed": true,
      "Deployed": true,
      "ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
      "IsClientSideSolution": true,
      "IsEnabled": true,
      "IsPackageDefaultSkipFeatureDeployment": false,
      "IsValidAppPackage": true,
      "ShortDescription": "",
      "SkipDeploymentFeature": false,
      "Title": "sharepoint-solution-package2"
    }
  ]
}

特定のソリューションを取得する

この操作は、アプリ カタログ内の利用可能な SharePoint Framework ソリューションまたは SharePoint アドインの詳細を返します。

HTTP 要求

GET /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata

応答

{
  "AadAppId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
  "ContainsTenantWideExtension": false,
  "CurrentVersionDeployed": true,
  "Deployed": true,
  "ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
  "IsClientSideSolution": true,
  "IsEnabled": true,
  "IsPackageDefaultSkipFeatureDeployment": false,
  "IsValidAppPackage": true,
  "ShortDescription": "",
  "SkipDeploymentFeature": false,
  "Title": "sharepoint-solution-package"
}

ソリューション パッケージをサイトにインストールする

アプリ カタログから特定の ID を持つソリューション パッケージを、URL コンテキストに基づいてサイトにインストールします。

HTTP 要求

POST /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')/Install

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
X-RequestDigest {form digest}

インストール済みソリューション パッケージのアップグレード

ソリューション パッケージをサイトから、アプリ カタログで利用可能な新しいバージョンにアップグレードします。

HTTP 要求

POST /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')/Upgrade

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
X-RequestDigest {form digest}

サイトからソリューション パッケージをアンインストールする

この操作は、上記のインストールコマンドの逆です。

注:

以下のいずれかの方法で、サイトからソリューション パッケージをアンインストールする場合、そのパッケージは完全に削除され、ごみ箱に配置されることはありません。

HTTP 要求

POST /_api/web/{scope}appcatalog/AvailableApps/GetById('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')/Uninstall

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
X-RequestDigest {form digest}

ソリューションをMicrosoft Teams App Catalogに同期させます

この操作では アプリ カタログ サイトでソリューションのリストアイテム ID を参照する必要があります。

HTTP 要求

POST /_api/web/{scope}appcatalog/SyncSolutionToTeams(id=xxxxx)

要求ヘッダー

ヘッダー
Authorization Bearer {token}
承諾 application/json;odata=nometadata
X-RequestDigest {form digest}

関連項目