パッケージ フライトの申請の管理
Microsoft Store 申請 API には、段階的なパッケージのロールアウトなど、アプリのパッケージ フライト申請を管理するために使用できるメソッドが用意されています。 Microsoft Store 申請 API の概要については、「Microsoft Store サービスを使用した申請の作成と管理」をご覧ください。この API を使用するための前提条件などの情報があります。
重要
Microsoft Store 申請 API を使ってパッケージ フライトの提出を作成する場合、申請にさらに変更を加えるには、必ずパートナー センターではなく API のみを使ってください。 ダッシュボードを使用して API を使用して最初に作成した申請を変更した場合、API を使用してその申請を変更またはコミットできなくなります。 場合によっては、申請がエラー状態のままになり、申請プロセスを進めることができなくなります。 この場合、申請を削除して新しい申請を作成する必要があります。
パッケージ フライトの申請を管理するためのメソッド
パッケージ フライトの申請を取得、作成、更新、コミット、または削除するには、次のメソッドを使用します。 これらのメソッドを使うには、パッケージ フライトをパートナー センターに用意しておく必要があります。 パッケージ フライトは、パートナー センターで作成するか、「パッケージ フライトの管理」で説明されている Microsoft Store 申請 API のメソッドを使って作成できます。
Method | URI | 説明 |
---|---|---|
GET | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} | 既存のパッケージ フライトの申請を取得する |
GET | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/status | 既存のパッケージ フライト申請の状態を取得する |
投稿 | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions | 新しいパッケージ フライトの申請を作成する |
PUT | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} | 既存のパッケージ フライトの申請を更新する |
投稿 | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/commit | 新しいパッケージ フライトの申請または更新されたパッケージ フライトの申請をコミットする |
DELETE | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} | パッケージ フライトの申請の削除 |
パッケージ フライトの申請の作成
パッケージ フライトの申請を作成するには、このプロセスに従います。
「Microsoft Store サービスを使用した申請の作成と管理」に記載されている前提条件が満たされていない場合は、前提条件を整えてください。これには、Azure AD アプリケーションのパートナー センター アカウントへの関連付けや、クライアント ID およびキーの取得が含まれます。 この作業は 1 度行うだけでよく、クライアント ID とキーを入手したら、新しい Azure AD アクセス トークンの作成が必要になったときに、いつでもそれらを再利用できます。
Azure AD のアクセス トークンを取得します。 このアクセス トークンを Microsoft Store 申請 API のメソッドに渡す必要があります。 アクセス トークンを取得した後、アクセス トークンを使用できるのは、その有効期限が切れるまでの 60 分間です。 トークンの有効期限が切れたら新しいトークンを取得できます。
Microsoft Store 申請 API で次のメソッドを実行して パッケージ フライトの申請を作成します。 このメソッドによって、新しい申請が作成され、審査中になります。これは、前回発行した申請のコピーです。
POST https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions
応答本文には、新しい申請の ID、申請用のパッケージを Azure Blob Storage にアップロードするための共有アクセス署名 (SAS) URI、および新しい申請のデータ (すべての登録情報と価格情報が含まれます) を含むフライトの申請リソースが含まれます。
Note
SAS URI では、アカウント キーを必要とせずに、Azure Storage 内のセキュリティで保護されたリソースにアクセスできます。 SAS URI の背景情報と Azure Blob Storage での SAS URI の使用については、「Shared Access Signatures、第 1 部: SAS モデルについて」と「Shared Access Signature、第 2 部: BLOB ストレージでの SAS の作成と使用」を参照してください。
申請用に新しいパッケージを追加する場合は、パッケージ 準備し ZIP アーカイブに追加します。
新しい申請に必要な変更を含む フライト申請 データを修正し、次のメソッドを実行してパッケージ フライトの申請を 更新します。
PUT https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}
Note
申請に新しいパッケージを追加する場合は、ZIP アーカイブ内のこれらのファイルの名前と相対パスを参照するように申請データを更新してください。
申請用に新しいパッケージを追加する場合は、上記で呼び出した POST メソッドの応答本文に含まれていた SAS URI を使って、ZIP アーカイブを Azure Blob Storage にアップロードします。 さまざまなプラットフォームでこれを行うために使用できる、次のようなさまざまな Azure ライブラリがあります。
次の C# コード例は、.NET 用 Azure Storage クライアント ライブラリの CloudBlockBlob クラスを使って ZIP アーカイブを Azure Blob Storage にアップロードする方法を示しています。 この例では、ZIP アーカイブが既にストリーム オブジェクトに書き込まれていることを前提としています。
string sasUrl = "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl"; Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl)); await blockBob.UploadFromStreamAsync(stream);
次のメソッドを実行して パッケージ フライトの申請をコミットします。 これで、申請が完了し、更新がアカウントに適用されていることがパートナー センターに通知されます。
POST https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/commit
次のメソッドを実行してコミットの状態を確認し、パッケージ フライトの申請の状態を 取得します。
GET https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/status
申請の状態を確認するには、応答本文の status の値を確認します。 この値が CommitStarted から PreProcessing (要求が成功した場合) または CommitFailed (要求でエラーが発生した場合) に変わっています。 エラーがある場合は、statusDetails フィールドにエラーについての詳細情報が含まれています。
コミットが正常に処理されると、インジェストのために申請がストアに送信されます。 上記のメソッドを使うか、パートナー センターのダッシュボードから、申請の進行状況を引き続き監視できます。
コード例
次の記事では、いくつかの異なるプログラミング言語でパッケージ フライト申請を作成する方法を示す詳細なコード例を示します。
StoreBroker PowerShell モジュール
Microsoft Store 申請 API を直接呼び出す代わりに、API の上にコマンド ライン インターフェイスを実装するオープンソースの PowerShell モジュールも用意されています。 このモジュールは、StoreBroker と呼ばれています。 このモジュールを使うと、Microsoft Store 申請 API を直接呼び出さずに、コマンド ラインからアプリ、フライト、アドオンの申請を管理できます。また、ソースを参照して、この API を呼び出す方法の例を確認することもできます。 StoreBroker モジュールは、多くのファースト パーティ アプリケーションをストアに申請する主要な方法として Microsoft 内で積極的に使っています。
詳しくは、GitHub の StoreBroker に関するページをご覧ください。
パッケージ フライト申請の段階的なパッケージ ロールアウトを管理する
パッケージ フライト申請の更新されたパッケージを、Windows 10 および Windows 11 のアプリの顧客の割合に徐々にロールアウトできます。 これにより、特定のパッケージのフィードバックと分析データを監視して、更新プログラムをより広範にロールアウトする前に確実に更新プログラムを確認できます。 公開された申請のロールアウト率を変更 (または更新を停止) できます。新しい申請を作成する必要はありません。 パートナー センターで段階的なパッケージのロールアウトの有効化と管理を行う方法などについて詳しくは、この記事をご覧ください。
パッケージ フライト申請の段階的なパッケージ ロールアウトをプログラムで有効にするには、Microsoft Store 申請 API のメソッドを使用して次のプロセスに従います。
- パッケージ フライトの申請を作成するかパッケージ フライトの申請を取得。
- 応答データで、 packageRollout リソースを見つけ、 isPackageRollout フィールドを true に設定し、 packageRolloutPercentage フィールドを、更新されたパッケージを取得するアプリの顧客の割合に設定します。
- 更新されたパッケージ フライト申請データを update a package flight submission メソッドに渡します。
パッケージ フライトの申請に対して段階的なパッケージ ロールアウトが有効になった後、次の方法を使用して、段階的なロールアウトをプログラムで取得、更新、停止、または完了できます。
Method | URI | 説明 |
---|---|---|
GET | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/packagerollout | パッケージ フライトの申請に関する段階的なロールアウト情報を取得する |
投稿 | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/updatepackagerolloutpercentage | パッケージ フライトの申請の段階的なロールアウト率を更新する |
投稿 | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/haltpackagerollout | パッケージ フライトの申請の段階的なロールアウトを停止する |
投稿 | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/finalizepackagerollout | パッケージ フライトの申請の段階的なロールアウトを完了する |
データ リソース
パッケージ フライトの申請を管理するための Microsoft Store 申請 API メソッドでは、次の JSON データ リソースが使用されます。
フライト申請リソース
このリソースでは、パッケージ フライトの申請について説明します。
{
"id": "1152921504621243649",
"flightId": "cd2e368a-0da5-4026-9f34-0e7934bc6f23",
"status": "PendingCommit",
"statusDetails": {
"errors": [],
"warnings": [],
"certificationReports": []
},
"flightPackages": [
{
"fileName": "newPackage.appx",
"fileStatus": "PendingUpload",
"id": "",
"version": "1.0.0.0",
"languages": ["en-us"],
"capabilities": [],
"minimumDirectXVersion": "None",
"minimumSystemRam": "None"
}
],
"packageDeliveryOptions": {
"packageRollout": {
"isPackageRollout": false,
"packageRolloutPercentage": 0.0,
"packageRolloutStatus": "PackageRolloutNotStarted",
"fallbackSubmissionId": "0"
},
"isMandatoryUpdate": false,
"mandatoryUpdateEffectiveDate": "1601-01-01T00:00:00.0000000Z"
},
"fileUploadUrl": "https://productingestionbin1.blob.core.windows.net/ingestion/8b389577-5d5e-4cbe-a744-1ff2e97a9eb8?sv=2014-02-14&sr=b&sig=wgMCQPjPDkuuxNLkeG35rfHaMToebCxBNMPw7WABdXU%3D&se=2016-06-17T21:29:44Z&sp=rwl",
"targetPublishMode": "Immediate",
"targetPublishDate": "",
"notesForCertification": "No special steps are required for certification of this app."
}
このリソースには、次の値があります。
値 | 種類 | 説明 |
---|---|---|
id | string | 申請の ID。 |
flightId | string | 申請が関連付けられているパッケージ フライトの ID。 |
status | string | 申請の状態。 次のいずれかの値を指定できます。
|
statusDetails | object | エラーに関する情報など、申請のステータスに関する追加情報が保持されるステータスの詳細に関するリソースです。 |
flightPackages | 配列 | フライト パッケージ リソースが含まれています送信内の各パッケージに関する詳細を提供します。 |
packageDeliveryOptions | オブジェクト | パッケージ配信オプション リソース申請の段階的なパッケージのロールアウトと必須の更新設定が含まれています。 |
fileUploadUrl | string | 申請のパッケージのアップロードに使用する共有アクセス署名 (SAS) URI です。 申請用に新しいパッケージを追加する場合は、パッケージを含む ZIP アーカイブをこの URI にアップロードします。 詳細については、「 パッケージ フライトの申請を作成する」を参照してください。 |
targetPublishMode | string | 申請の公開モードです。 次のいずれかの値を指定できます。
|
targetPublishDate | string | targetPublishMode が SpecificDate に設定されている場合、ISO 8601 形式での申請の公開日です。 |
notesForCertification | string | テスト アカウントの資格情報や、機能のアクセスおよび検証手順など、審査担当者に対して追加情報を提供します。 詳しくは、「認定の注意書き」をご覧ください。 |
ステータスの詳細に関するリソース
このリソースには、申請の状態についての追加情報が保持されます。 このリソースには、次の値があります。
値 | 種類 | 説明 |
---|---|---|
エラー | object | 申請のエラーの詳細が保持されるステータスの詳細リソースの配列です。 |
warnings | object | 申請の警告の詳細が保持されるステータスの詳細リソースの配列です。 |
certificationReports | object | 申請の認定レポート データへのアクセスを提供する認定レポート リソースです。 認定されなかった場合に、これらのレポートから詳しい情報を知ることができます。 |
ステータスの詳細に関するリソース
このリソースには、申請に関連するエラーや警告についての追加情報が保持されます。 このリソースには、次の値があります。
値 | 種類 | 説明 |
---|---|---|
code | string | エラーや警告の種類を説明する申請ステータス コードです。 |
details | string | 問題についての詳細が含まれるメッセージです。 |
認定レポート リソース
このリソースは、申請の認定レポート データへのアクセスを提供します。 このリソースには、次の値があります。
値 | 種類 | 説明 |
---|---|---|
date | string | ISO 8601 形式で表された、レポートが生成された日付と時刻です。 |
reportUrl | string | レポートにアクセスできる URL です。 |
フライト パッケージ リソース
このリソースは、申請内のパッケージに関する詳細を提供します。
{
"flightPackages": [
{
"fileName": "newPackage.appx",
"fileStatus": "PendingUpload",
"id": "",
"version": "1.0.0.0",
"languages": ["en-us"],
"capabilities": [],
"minimumDirectXVersion": "None",
"minimumSystemRam": "None"
}
],
}
このリソースには、次の値があります。
Note
update a package flight submission メソッドを呼び出す場合、要求本文には、fileName、fileStatus、minimumDirectXVersion、および minimumSystemRam 値のみが必要です。 他の値はパートナー センターによって設定されます。
値 | 種類 | 説明 |
---|---|---|
fileName | string | パッケージの名前です。 |
fileStatus | string | パッケージの状態。 次のいずれかの値を指定できます。
|
ID | string | パッケージを一意に識別する ID。 この値はパートナー センターで使われます。 |
version | string | アプリ パッケージのバージョン。 詳細については、「 Package のバージョン番号付けを参照してください。 |
アーキテクチャ | string | アプリ パッケージのアーキテクチャ (ARM など)。 |
言語 | 配列 | アプリがサポートする言語の言語コードの配列。 詳細については、「 サポートされている言語」を参照してください。 |
capabilities | 配列 | パッケージに必要な機能の配列。 機能の詳細については、「 App capability 宣言」を参照してください。 |
minimumDirectXVersion | string | アプリ パッケージでサポートされている DirectX の最小バージョン。 これは、Windows 8.x を対象とするアプリにのみ設定できます。他のバージョンを対象とするアプリでは無視されます。 次のいずれかの値を指定できます。
|
minimumSystemRam | string | アプリ パッケージに必要な最小 RAM。 これは、Windows 8.x を対象とするアプリにのみ設定できます。他のバージョンを対象とするアプリでは無視されます。 次のいずれかの値を指定できます。
|
パッケージ配信オプション リソース
このリソースには、申請の段階的なパッケージのロールアウトと必須の更新設定が含まれています。
{
"packageDeliveryOptions": {
"packageRollout": {
"isPackageRollout": false,
"packageRolloutPercentage": 0.0,
"packageRolloutStatus": "PackageRolloutNotStarted",
"fallbackSubmissionId": "0"
},
"isMandatoryUpdate": false,
"mandatoryUpdateEffectiveDate": "1601-01-01T00:00:00.0000000Z"
},
}
このリソースには、次の値があります。
値 | 種類 | 説明 |
---|---|---|
packageRollout | オブジェクト | 申請の段階的なパッケージ ロールアウト設定を含む パッケージ ロールアウト リソース 。 |
isMandatoryUpdate | boolean | この申請のパッケージを、アプリの更新プログラムの自己インストールに必須として扱うかどうかを示します。 アプリの更新プログラムを自己インストールするための必須パッケージの詳細については、「 アプリのパッケージ更新プログラムをダウンロードしてインストールするを参照してください。 |
mandatoryUpdateEffectiveDate | 日付 | この申請のパッケージが必須になる日時 (ISO 8601 形式と UTC タイム ゾーン)。 |
パッケージ ロールアウト リソース
このリソースには、申請の段階的な パッケージロールアウト設定 が含まれています。 このリソースには、次の値があります。
値 | 種類 | 説明 |
---|---|---|
isPackageRollout | boolean | 申請に対して段階的なパッケージ ロールアウトが有効になっているかどうかを示します。 |
packageRolloutPercentage | float | 段階的なロールアウトでパッケージを受け取るユーザーの割合。 |
packageRolloutStatus | string | 段階的なパッケージロールアウトの状態を示す次のいずれかの文字列。
|
fallbackSubmissionId | string | 段階的なロールアウト パッケージを取得しないお客様が受け取る申請の ID。 |
Note
packageRolloutStatus と fallbackSubmissionId の値はパートナー センターで割り当てられます。これらの値は、開発者が設定する値ではありません。 これらの値を要求本文に含める場合、これらの値は無視されます。
列挙型
これらのメソッドでは、次の列挙型が使用されます。
申請の状態コード
次のコードは、申請の状態を表します。
コード | 説明 |
---|---|
なし | コードが指定されていません。 |
InvalidArchive | パッケージが含まれる ZIP アーカイブは無効であるか、認識できないアーカイブ形式です。 |
MissingFiles | ZIP アーカイブに、申請データで指定されているすべてのファイルが含まれていないか、ファイルのアーカイブ内の場所が正しくありません。 |
PackageValidationFailed | 申請の 1 つ以上のパッケージを検証できませんでした。 |
InvalidParameterValue | 要求本文に含まれるパラメーターの 1 つが無効です。 |
InvalidOperation | 実行された操作は無効です。 |
InvalidState | 実行された操作は、パッケージ フライトの現在の状態では無効です。 |
ResourceNotFound | 指定されたパッケージ フライトは見つかりませんでした。 |
ServiceError | 内部サービス エラーのため、要求を処理できませんでした。 もう一度要求を行ってください。 |
ListingOptOutWarning | 開発者が以前の申請の登録情報を削除しているか、パッケージによってサポートされる登録情報を含めていませんでした。 |
ListingOptInWarning | 開発者が登録情報を追加しました。 |
UpdateOnlyWarning | 開発者が、更新サポートしかないものを挿入しようとしています。 |
その他 | 申請が非認識または未分類の状態です。 |
PackageValidationWarning | パッケージ検証プロセスの結果、警告が生成されました。 |