使用此 REST API 以编程方式更新在 Microsoft Edge 加载项上发布的扩展 (或主题) ,以自动执行上传和发布新版本扩展的过程。 可以将这些 REST API 终结点直接集成到持续集成/持续交付 (CI/CD) 管道中,以在 Microsoft Edge 加载项上发布扩展包更新,而无需使用合作伙伴中心。
此 REST API 公开以下项的终结点:
下面介绍了这些终结点。
若要使用此 REST API,请先使用合作伙伴中心的 “发布 API ”页来启用该 API。
若要最初发布新扩展,请使用合作伙伴中心。 若要更新扩展,请手动使用合作伙伴中心,或以编程方式使用此 REST API。
若要提交建议和反馈,请输入 有关加载项 API 的问题。
更新 REST API 的版本
从 2024 年 9 月 6 日开始,此更新 REST API 的 v1.1 和 v1 均受支持。 对 v1 的支持将于 2024 年 12 月 31 日结束。
使用的组件
使用更新 REST API 的概述
若要使用更新 REST API,请执行以下命令:
在合作伙伴中心开发人员仪表板,通过单击旁边的“启用”按钮来启用新体验,选择加入使用 API 密钥的 UI。 有关详细信息,请参阅下面的 在合作伙伴中心启用更新 REST API。
记下客户端 ID 和新 API 密钥。
根据需要更新身份验证工作流。
重新配置任何持续集成/持续交付 (CI/CD) 管道,这些管道可能会受到 API 密钥的任何更改的影响,例如,如果要从使用此 REST API 的 v1 进行更改,该 API 使用访问令牌而不是 API 密钥。
使用 REST 终结点时,请在请求标头中指定 ClientID 和 API 密钥。 有关详细信息,请参阅下面的 使用 API 终结点。
详细信息如下所示。
术语
Term | 定义 |
---|---|
operation | REST作,例如 GET 或 POST。 |
作 ID | REST作的 ID。 |
package | 包含 .zip Microsoft Edge 扩展的文件的包。 |
产品 | Microsoft Edge 扩展或主题。 有时称为 Microsoft Edge 加载项。 |
产品 ID | 需要发布草稿的产品的产品 ID。 产品 ID 是与合作伙伴中心的产品关联的 128 位 GUID。 例如:d34f98f5-f9b7-42b1-bebb-98707202b21d 。 |
提交 | 正在合作伙伴中心提交到现有产品的更新。 产品的每次更新都是提交,无论状态是 In Draft 、 In Review 还是 In the Store 发布) (。 |
在合作伙伴中心启用更新 REST API
若要使用 Microsoft Edge 加载项 API,首先需要通过创建 API 凭据在 Microsoft 合作伙伴中心为项目启用 API,如下所示:
在合作伙伴中心开发人员仪表板,登录到用于发布 Edge 扩展的帐户。
在 “Microsoft Edge 程序”下,选择“ 发布 API”。
在消息“启用新体验”旁边,单击“ 启用” 按钮:
上面的屏幕截图显示了在单击“启用”按钮切换到 v1.1 UI 之前 v1 UI,包括访问令牌 URL 和机密。
在 “发布 API ”页上,单击“ 创建 API 凭据 ”按钮。 此步骤可能需要几分钟才能完成。
将自动生成客户端 ID 和新的 API 密钥:
API 凭据现已创建;你已启用或续订 API。 以下项现在显示在 “发布 API ”页上:
- 客户端 ID。
-
API 密钥。
- 每个 API 密钥的 到期 日期。
记下以下内容:
- 客户端 ID。
- 新的 API 密钥。
使用 REST 终结点时,会在请求标头中使用客户端 ID 和 API 密钥。
使用 API 终结点
更新 REST API 公开以下项的终结点:
下面介绍了这些终结点。
若要使用此Microsoft Edge 加载项更新 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。
若要获取产品 ID,请执行以下作:
登录到合作伙伴中心开发人员仪表板。
转到 Microsoft Edge>概述。
选择要为其提供产品 ID 的扩展。
此时会打开 “扩展概述 ”页。 产品 ID 显示在页面中。 (产品 ID 也显示为地址栏中的 URL 中的 GUID,介于 和
/packages
之间microsoftedge/
)在“ 扩展标识 ”部分 (或从地址栏) ,选择并复制 “产品 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
检查更新作状态所需的 。
另请参阅:
- 上传包以更新REST API 参考中的现有提交,以便在 Microsoft Edge 加载项上更新扩展。
检查包上传的状态
使用此 API 检查包上传的状态。
$operationID
是在 “上传包以更新现有提交 ”或“ 发布提交”响应标头中返回的作 ID。
另请参阅在Microsoft Edge 加载项更新扩展的 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 加载项上更新扩展。
发布提交
使用此 API 在 Microsoft Edge 加载项上发布产品的当前草稿。
另请参阅在 REST API 参考中发布产品草稿提交,了解如何在 Microsoft Edge 加载项上更新扩展。
终结点说明
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
检查发布作状态所需的 。
另请参阅:
- 在 REST API 参考中发布产品草稿提交,以便在 Microsoft Edge 加载项上更新扩展。
检查发布状态
使用此 API 检查发布作的状态。
$operationID
是在 “上传包以更新现有提交 ”或“ 发布提交”响应标头中返回的作 ID。
另请参阅在Microsoft Edge 加载项更新扩展的 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 加载项上的扩展。
示例:检查发布状态并使用 PowerShell 脚本发布扩展
以下代码是 PowerShell 脚本的示例,该脚本使用 REST API 检查扩展的发布状态,并发布该扩展。
若要使用此脚本,请在 $ClientID
脚本顶部填写 、 $ClientSecret
、 $ProductID
和 $FilePATH
值。
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 加载项上的扩展的 REST API 参考 - 用于更新扩展的 REST API。
- Microsoft Edge 扩展支持的 API - 用于开发扩展的 JavaScript API。
GitHub:
- Microsoft Edge 开发人员文档的存储库中
edge-developer
的问题。
Microsoft 标识平台: