共用方式為


使用 REST API 更新 Microsoft Edge Add-ons 的擴充功能

利用這個 REST API 程式化更新已在 Microsoft Edge Add-ons 發布的擴充 (或主題) ,自動化上傳與發佈新版本擴充功能的流程。 你可以直接將這些 REST API 端點整合到你的持續整合/持續交付 (CI/CD) 流程中,無需使用 Partner Center 即可在 Edge 外掛上發布擴充套件更新Microsoft。

此 REST API 會暴露以下端點:

這些端點如下所述。

要使用此 REST API,首先使用合作夥伴中心的 發佈 API 頁面啟用 API。

要最初發布新的擴充功能,請使用合作夥伴中心。 要更新擴充功能,請手動使用 Partner Center,或是用程式化方式使用這個 REST API。

若要提交建議與回饋,請輸入 關於附加元件 API 的問題

Update REST API 的版本

自 2024 年 9 月 6 日起,支援此更新 REST API 的 v1.1 與 v1。 v1 的支援將於 2024 年 12 月 31 日結束。

所使用的元件

v1.1 使用API金鑰。 合作夥伴中心的使用者介面提供 API 金鑰。

REST 端點在 v1.1 使用特定的請求標頭。

Update REST API 的使用概述

要使用 Update REST API:

  1. 在你的合作夥伴中心開發者儀表板,點擊下一組啟用按鈕,選擇使用 API 金鑰的介面,即可啟用新體驗 詳細資訊請見下方 合作夥伴中心啟用更新 REST API

  2. 寫下客戶端 ID 和新的 API 金鑰。

  3. 如有需要,請更新你的認證工作流程。

  4. 重新配置任何持續整合/持續交付 (CI/CD) 管線,這些流程可能會因 API 金鑰變更而受影響,例如你從使用 REST API 第一版(v1 使用 access tokens 而非 API 金鑰)轉換。

  5. 使用 REST 端點時,請在請求標頭中指定 ClientID 和 API 金鑰。 詳細資訊請見下方 「使用 API 端點」。

詳情如下。

術語

術語 定義
手術 REST 操作如 GET 或 POST。
操作識別碼 REST 操作的 ID。
包含 .zip 你 Microsoft Edge 擴充功能的檔案的套件。
產品附加元件 一個在 Microsoft Edge Add-ons 發布的 Microsoft Edge 擴充功能或主題。
產品識別碼 需要發佈草稿的產品 ID。 產品 ID 是一個 128 位元的 GUID,與合作夥伴中心的產品相關聯。 例如:d34f98f5-f9b7-42b1-bebb-98707202b21d
服從 這是正在提交給合作夥伴中心現有產品的更新。 每一次產品的更新都是一種提交,無論狀態是 In DraftIn ReviewIn the Store (已發佈) 。

請在合作夥伴中心啟用 Update REST API

要使用 Microsoft Edge 附加元件 API,首先需要在 Microsoft 合作夥伴中心建立 API 憑證,啟用該專案的 API,具體如下:

  1. 在你的 合作夥伴中心開發者儀表板,登入你用來發佈 Edge 擴充功能的帳號。

  2. Microsoft Edge 程式中,選擇 發佈 API

  3. 在「啟用新體驗」訊息旁,點擊 啟用 按鈕:

    在合作夥伴中心啟用 API,適用於 v1.1

    上方截圖顯示了 v1 的介面,包括 存取權杖 URL秘密,然後點擊 啟用 按鈕切換到 v1.1 介面。

  4. 發佈 API 頁面,點擊 建立 API 憑證 按鈕。 這步驟可能需要幾分鐘完成。

    用戶端 ID 與新的 API 金鑰會自動產生:

    點擊「建立 API 憑證」後,合作夥伴中心的「發佈 API」頁面,現在顯示客戶端 ID 和 API 金鑰

    API 憑證現已建立;你已經啟用或更新了 API。 以下項目現已顯示在 發佈 API 頁面上:

    • 你的客戶證。
    • API 金鑰
      • 每個 API 金鑰的 到期 日。
  5. 請寫下以下內容:

    • 客戶識別碼。
    • 新的 API 金鑰

    使用 REST 端點時,你會在請求標頭中使用 Client ID 和 API 金鑰。

使用 API 端點

Update REST API 會暴露以下端點:

以下將介紹這些端點。

要使用此 Microsoft Edge 附加元件 Update REST API,您必須具備以下條件,如上所述:

API 金鑰和 Client ID。

API 可在端點根 https://api.addons.microsoftedge.microsoft.com節點取得。

目前沒有針對以下項目的 REST API 端點:

  • 創造新產品。
  • 更新產品的元資料,例如描述。

若要建立新產品或更新產品元資料,您必須使用 Microsoft 合作夥伴中心。

上傳套件以更新現有的投稿

利用這個 REST API 端點更新外掛的套件。 此 API 會上傳套件以更新附加元件產品的現有草稿提交。

另見 REST API 參考中 「上傳套件以更新現有提交以更新 Microsoft Edge 附加元件中的擴充功能

終點描述

Endpoint: /v1/products/$productID/submissions/draft/package
Type: POST
Header Parameters: Authorization: ApiKey $ApiKey; X-ClientID: $ClientID; Content-Type: application/zip
Body content: the package file to upload

$productID 是你想更新的 Microsoft Edge 擴充功能的產品 ID。

要取得產品識別碼:

  1. 登入您的 合作夥伴中心開發者儀表板

  2. 前往 Microsoft Edge>概覽

  3. 選擇你想要產品 ID 的分機。

    擴充 概覽 頁面開啟。 產品識別碼會顯示在頁面中。 (產品 ID 也會以 GUID 顯示在網址列的網址中,介於 microsoftedge//packages.) 之間

  4. 分機識別 區塊 (或地址列) ,選擇並複製 產品 ID

範例要求

要上傳套件以更新現有提交,請在命令提示元使用 curl 以下指令:

> curl \
-H "Authorization: ApiKey $ApiKey" \
-H "X-ClientID: $ClientID" \
-H "Content-Type: application/zip" \
-X POST \
-T $FILE_NAME \
-v \
https://api.addons.microsoftedge.microsoft.com/v1/products/$productID/submissions/draft/package

如果請求成功且更新程序開始,你會收到 202 Accepted 帶有 Location 標頭的回應狀態碼。 這個位置標頭包含 operationID 檢查更新操作狀態所需的 that。

另請參閱:

  • 上傳套件以更新 REST API Reference 中的現有提交以更新 Microsoft Edge Add-ons 的擴充功能

檢查包裹上傳狀態

使用此 API 來檢查套件上傳狀態。

$operationID 是從 上傳套件以更新現有提交發佈提交,在回應標頭中回傳的操作 ID。

另請參閱 Microsoft Edge Add-ons 更新擴充功能的發佈狀態,請參考 REST API 參考。

終點描述

Endpoint: /v1/products/$productID/submissions/draft/package/operations/$operationID
Type: GET
Header Parameters: Authorization: ApiKey $ApiKey; X-ClientID: $ClientID

範例要求

要檢查套件上傳狀態,請在命令提示字元使用 curl 以下指令:

> curl \
-H "Authorization: ApiKey $ApiKey" \
-H "X-ClientID: $ClientID" \
-X GET \
-v \
https://api.addons.microsoftedge.microsoft.com/v1/products/$productID/submissions/draft/package/operations/$operationID

另請參閱:

發表投稿

使用此 API 將產品目前草案發佈至 Microsoft Edge Add-ons

另見 在 REST API 參考中 發佈產品草案 提交, 以更新 Microsoft Edge Add-ons 的擴充功能

終點描述

Endpoint: /v1/products/$productID/submissions
Type: POST
Header Parameters: Authorization: ApiKey $ApiKey; X-ClientID: $ClientID
Body content: Notes for certification, in JSON format

範例要求

要發佈提交,請在命令提示字元使用 curl 以下指令:

> curl \
-H "Authorization: ApiKey $ApiKey" \
-H "X-ClientID: $ClientID" \
-X POST \
-d '{ "notes"="text value" }' \
-v \
https://api.addons.microsoftedge.microsoft.com/v1/products/$productID/submissions

如果請求成功並開始發佈流程,你會收到 202 Accepted 帶有 Location 標頭的回應狀態碼。 這個位置標頭包含 operationID 檢查發佈操作狀態所需的 that。

另請參閱:

檢查出版狀態

使用此 API 來檢查發佈操作的狀態。

$operationID 是從 上傳套件以更新現有提交發佈提交,在回應標頭中回傳的操作 ID。

另請參閱 Microsoft Edge Add-ons 更新擴充功能的發佈狀態,請參考 REST API 參考。

終點描述

Endpoint: /v1/products/$productID/submissions/operations/$operationID
Type: GET
Header Parameters: Authorization: ApiKey $ApiKey; X-ClientID: $ClientID

範例要求

要查詢發佈狀態,請在命令提示字元使用 curl 以下指令:

> curl \
-H "Authorization: ApiKey $ApiKey" \
-H "X-ClientID: $ClientID" \
-X GET \
-v \
https://api.addons.microsoftedge.microsoft.com/v1/products/$productID/submissions/operations/$operationID

另請參閱:

  • 請查看 REST API 參考中關於更新 Microsoft Edge Add-ons 擴充功能的發佈狀態

範例:檢查發佈狀態並使用 PowerShell 腳本發佈擴充功能

以下程式碼是一個使用 REST API 檢查擴充功能的 PowerShell 腳本範例,並發布該擴充功能。

使用此腳本時,請在腳本頂端填寫 $ClientID$FilePATH$ClientSecret$ProductID、 和 數值。

Param(
    [string] $ClientID = '',
    [string] $ClientSecret = '',
    [string] $ProductID = '',
    [string] $FilePATH = '',
    [int] $RetryLimit = 10,
    [int] $RetryAfterPeriod = 5,
    [string] $ApiEndpoint = 'https://api.addons.microsoftedge.microsoft.com',
    [string] $PublishNotes = 'This is a test publish'
)

function ReadKeyFromJSON($jsonContent, $keyToFetch){
    $jsonContent.TrimStart('{').TrimEnd('}').Split(',') |ForEach-Object {
        $key,$value = $_.Split(':')
        if($key.Trim('"') -eq $keyToFetch) {
            return $value.Trim('"')
        }
    }
    return ''
}

function ReadLocationFromRawContent($jsonRawContent) {
    $jsonRawContent.Split([System.Environment]::NewLine, [System.StringSplitOptions]::RemoveEmptyEntries) | ForEach-Object {
        $key,$value = $_.Split(':')
        if ($key -eq 'Location') {
            return $value
        }
    }
    return ''
}

$PublishNotesBody = @{
    notes = $PublishNotes
}

$GetTokenHeaders = @{
    'Content-Type' = 'application/x-www-form-urlencoded'
}

$UploadHeaders = @{
    "Authorization" = "ApiKey $ClientSecret"
    "Content-Type" = "application/zip"
    "X-ClientID" = "$ClientID"
}

$uploadResponse = Invoke-WebRequest "$ApiEndpoint/v1/products/$ProductID/submissions/draft/package" -Headers $UploadHeaders -Method 'POST' -InFile $FilePATH

$uploadResponse

$uploadOperationId = ''

if($uploadResponse.StatusCode -eq 202) {
    "Upload Successful"
    $uploadOperationId = ReadLocationFromRawContent($uploadResponse.RawContent)
}

$uploadStatusResponse = Invoke-WebRequest "$ApiEndpoint/v1/products/$ProductID/submissions/draft/package/operations/$UploadOperationId" -Headers $UploadHeaders -Method 'GET'

$uploadStatusResponse

$uploadStatus = 'InProgress'

if($uploadStatusResponse.StatusCode -eq 202) {
    "Upload Status Received Successfully"
    $retryCount = 1;
    while($uploadStatus -eq 'InProgress') {
        if($retryCount -gt $RetryLimit) {
            Exit-PSSession
        }
        $uploadStatusResponse = Invoke-WebRequest "$ApiEndpoint/v1/products/$ProductID/submissions/draft/package/operations/$UploadOperationId" -Headers $UploadHeaders -Method 'GET'
        $retryCount = $retryCount + 1
        Start-Sleep -Seconds $RetryAfterPeriod
        $uploadStatus = ReadKeyFromJSON($uploadStatusResponse.Content, 'status')
    }
}

$publishResponse = Invoke-WebRequest "$ApiEndpoint/v1/products/$productID/submissions" -Headers $UploadHeaders -Method 'POST' -Body $PublishNotesBody

$publishResponse

$PublishOperationId = ''

if($publishResponse.StatusCode -eq 202) {
    "Published Successfully"
    $PublishOperationId = ReadLocationFromRawContent($publishResponse.RawContent)
}

$PublishOperationId

$publishStatusResponse = Invoke-WebRequest "$ApiEndpoint/v1/products/$ProductID/submissions/operations/$PublishOperationId" -Headers $UploadHeaders -Method 'GET'

$publishStatusResponse

$publishStatus = 'InProgress'

$publishStatusResponse.Content

if($publishStatusResponse.StatusCode -eq 202) {
    "Publish Status Received Successfully"
    $retryCount = 1;
    while($publishStatus -eq 'InProgress') {
        if($retryCount -gt $RetryLimit) {
            Exit-PSSession
        }
        $publishStatusResponse = Invoke-WebRequest "$ApiEndpoint/v1/products/$ProductID/submissions/operations/$PublishOperationId" -Headers $UploadHeaders -Method 'GET'
        $retryCount = $retryCount + 1
        Start-Sleep -Seconds $RetryAfterPeriod
        $publishStatus = ReadKeyFromJSON($publishStatusResponse.Content, 'status')
    }
}

$publishStatus

另請參閱

GitHub:

  • Microsoft Edge 開發者文件的倉庫問題edge-developer

Microsoft 身分識別平台: