利用這個 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 日結束。
所使用的元件
Update REST API 的使用概述
要使用 Update REST API:
在你的合作夥伴中心開發者儀表板,點擊下一組啟用按鈕,選擇使用 API 金鑰的介面,即可啟用新體驗。 詳細資訊請見下方 合作夥伴中心啟用更新 REST API。
寫下客戶端 ID 和新的 API 金鑰。
如有需要,請更新你的認證工作流程。
重新配置任何持續整合/持續交付 (CI/CD) 管線,這些流程可能會因 API 金鑰變更而受影響,例如你從使用 REST API 第一版(v1 使用 access tokens 而非 API 金鑰)轉換。
使用 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 Draft、 In Review或 In the Store (已發佈) 。 |
請在合作夥伴中心啟用 Update REST API
要使用 Microsoft Edge 附加元件 API,首先需要在 Microsoft 合作夥伴中心建立 API 憑證,啟用該專案的 API,具體如下:
在你的 合作夥伴中心開發者儀表板,登入你用來發佈 Edge 擴充功能的帳號。
在 Microsoft Edge 程式中,選擇 發佈 API。
在「啟用新體驗」訊息旁,點擊 啟用 按鈕:
上方截圖顯示了 v1 的介面,包括 存取權杖 URL 和 秘密,然後點擊 啟用 按鈕切換到 v1.1 介面。
在 發佈 API 頁面,點擊 建立 API 憑證 按鈕。 這步驟可能需要幾分鐘完成。
用戶端 ID 與新的 API 金鑰會自動產生:
API 憑證現已建立;你已經啟用或更新了 API。 以下項目現已顯示在 發佈 API 頁面上:
- 你的客戶證。
-
API 金鑰。
- 每個 API 金鑰的 到期 日。
請寫下以下內容:
- 客戶識別碼。
- 新的 API 金鑰。
使用 REST 端點時,你會在請求標頭中使用 Client ID 和 API 金鑰。
使用 API 端點
Update REST API 會暴露以下端點:
以下將介紹這些端點。
要使用此 Microsoft Edge 附加元件 Update REST API,您必須具備以下條件,如上所述:
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。
要取得產品識別碼:
登入您的 合作夥伴中心開發者儀表板。
前往 Microsoft Edge>概覽。
選擇你想要產品 ID 的分機。
擴充 概覽 頁面開啟。 產品識別碼會顯示在頁面中。 (產品 ID 也會以 GUID 顯示在網址列的網址中,介於
microsoftedge//packages.) 之間在 分機識別 區塊 (或地址列) ,選擇並複製 產品 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
另請參閱:
- 在 REST API 參考中查看套件上傳狀態,以更新 Microsoft Edge Add-ons 的擴充功能。
發表投稿
使用此 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。
另請參閱:
- 將產品草案提交 發佈於 REST API 參考,以更新 Microsoft Edge Add-ons 的擴充功能。
檢查出版狀態
使用此 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
另請參閱
- Microsoft Edge Add-ons 中更新擴充功能的 REST API 參考資料 - 用於更新擴充套件的 REST API。
- 支援 Microsoft Edge 擴充功能的 API -用於開發擴充功能的 JavaScript API。
GitHub:
- Microsoft Edge 開發者文件的倉庫問題
edge-developer。
Microsoft 身分識別平台: