转换新的商业订阅
适用于:合作伙伴中心 |由世纪互联运营的合作伙伴中心 |美国政府Microsoft云合作伙伴中心
相应的角色
- 管理员代理
这些方法同时支持传统和新的商业源订阅。
注意
基于许可证的服务的新商业体验包括许多新功能,可供所有云解决方案提供商(CSP)使用。 有关详细信息,请参阅新商业体验概述。
用于将客户的新商务订阅升级到目标订阅或将 NCE 试用版转换为付费订阅。 若要转换订阅,需要发出两个 API 请求。 首先 获取符合条件的转换 ,以获取可用于升级的 SKU。 然后 POST 转换 以执行转换。
获取转换资格
返回给定客户、订阅和请求类型的合格转换列表。 还返回目标订阅升级资格。 转换资格可能包括处于 EndofSaleWithConversions 状态的产品/服务。
先决条件
合作伙伴中心身份验证中所述的凭据。 此方案支持使用独立应用和 App+User 凭据进行身份验证。
客户 ID (
customer-tenant-id
)。 如果不知道客户的 ID,可以通过选择“客户”工作区,然后从客户列表中选择客户,然后选择“帐户”,在合作伙伴中心中查找该 ID。 在客户的“帐户”页上,在“客户帐户信息”部分查找Microsoft ID。 Microsoft ID 与客户 ID (customer-tenant-id
) 相同。初始订阅的订阅 ID。
GDAP 角色
至少需要以下 GDAP 角色之一:
- 目录读取者
- 全局读取者
注意
虽然此 API 适用于旧版和 NCE,但 GDAP 仅适用于旧版。
REST 请求
请求语法
方法 | 请求 URI |
---|---|
GET | {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitionEligibibility?eligibilityType={immediate, scheduled} HTTP/1.1 |
URI 参数
使用以下查询参数返回符合条件的转换。
名称 | 类型 | 必需 | 说明 |
---|---|---|---|
customer-tenant-id | guid | Y | 对应于客户的租户的 GUID。 |
subscription-id | guid | Y | 对应于初始订阅的 GUID。 |
eligibilityType | string | N | 描述何时执行转换;可以立即或计划。 默认值为 Immediate 。 |
请求标头
有关详细信息,请参阅合作伙伴中心 REST 标头。
请求正文
无
请求示例
GET https://api.partnercenter.microsoft.com/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitionEligibilities?eligibilityType=immediate HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
REST 响应
如果成功,此方法在响应正文中返回给定订阅的合格转换列表。
响应的成功和错误代码
每个响应都有一个 HTTP 状态代码,指示成功或失败以及更多的调试信息。 使用网络跟踪工具读取此代码、错误类型和其他参数。 有关完整列表,请参阅错误代码。
资格错误
错误说明和含义。
错误说明 | 含义 |
---|---|
无法转换订阅 - 源订阅未处于活动状态。 | 原始子状态不处于活动状态 |
无法转换订阅 - 尚未预配源订阅。 | 原始子履行日期未成功 |
转换类型不兼容 - 需要 AzureAD 订阅映射。 | 调用 GetSubscriptionUpgradeConflicts 时,LegacyCannotConvertSubscriptionId 错误 |
转换类型不兼容 - 存在许可证转移的冲突订阅。 | 如果任何Microsoft Entra 服务具有来自不同订阅的订阅 ID,请将其添加到冲突列表(包括使用旧版或新式购买流进行的购买) |
订阅资格错误
如果目标订阅不符合升级到的条件,将返回以下原因之一。
如果源订阅是试用版,或者是否将资格类型指定为 Scheduled,则返回空列表。 只能转换为具有即时(也称为“中期”)转换的现有订阅,而不是计划的更改。
错误说明 | 错误代码 |
---|---|
订阅未处于活动状态。 | SubscriptionNotActive = 1 |
订阅位于取消窗口中。 | SubscriptionInCancellationWindow = 2 |
订阅期限持续时间比源订阅的期限持续时间短。 | SubscriptionTermDurationShorterThanSourceTermDuration = 3 |
订阅期限结束日期在源订阅期限结束日期之前。 | 订阅期限结束日期在源订阅期限结束日期之前。 = 4 |
响应示例
HTTP/1.1 200 OK
Content-Length: 138
Content-Type: application/json
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
Date: Fri, 26 Feb 2021 20:42:26 GMT
{
"totalCount": 2,
"items": [
{
"operationId": "1caf8ec7-62cc-4ab5-b35d-572d2a62974c",
"catalogItemId": "CFQ7TTC0KZCR:0001:CFQ7TTC0K71H",
"title": "Microsoft 365 E5 Test Sku Title",
"description": "Microsoft 365 E5 Test Sku Description",
"quantity": 1,
"subscriptionEligibilities": [
{
"isEligible": false,
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"subscriptionFriendlyName": "Microsoft 365 Business Premium",
"subscriptionTermDuration": "P1M",
"subscriptionBillingCycle": "monthly",
"errors": [
{
"code": 3,
"description": "The subscription's term duration is shorter than the source subscription's term duration."
}
]
},
{
"isEligible": true,
"subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"subscriptionFriendlyName": "Microsoft 365 Business Premium",
"subscriptionTermDuration": "P1Y",
"subscriptionBillingCycle": "monthly",
"errors": []
}
],
"eligibilities": [
{
"isEligible": true,
"transitionType": "transition_only",
"errors": []
},
{
"isEligible": false,
"transitionType": "transition_with_license_transfer",
"errors": [
{
"code": 3,
"description": "Subscription cannot be transitioned because there are conflicting services."
}
]
}
],
"attributes": {
"objectType": "TransitionEligibility"
}
},
{
"operationId": "1caf8ec7-62cc-4ab5-b35d-572d2a62974c",
"catalogItemId": "CFQ7TTC0L4M3:0001:CFQ7TTC0K78T",
"title": "Business Premium Test Sku Title",
"description": "Business Premium Test Sku Description",
"quantity": 1,
"eligibilities": [
{
"isEligible": false,
"transitionType": "transition_with_license_transfer",
"errors": [
{
"code": 3,
"description": "Subscription cannot be transitioned because there are conflicting services."
}
]
}
],
"attributes": {
"objectType": "TransitionEligibility"
}
}
],
"attributes": {
"objectType": "Collection"
}
}
过渡后
发布给定客户和订阅的过渡请求。 返回其初始状态的转换。
先决条件
合作伙伴中心身份验证中所述的凭据。 此方案支持使用独立应用和 App+User 凭据进行身份验证。
客户 ID (
customer-tenant-id
)。 如果不知道客户的 ID,可以通过选择“客户”工作区,然后从客户列表中选择客户,然后选择“帐户”,在合作伙伴中心中查找该 ID。 在客户的“帐户”页上,在“客户帐户信息”部分查找Microsoft ID。 Microsoft ID 与客户 ID (customer-tenant-id
) 相同。初始订阅的订阅 ID。
GDAP 角色
至少需要以下 GDAP 角色之一:
- 目录读取器或全局读取器(仅转换)
- 目录编写器(使用许可证转移转换)
注意
虽然此 API 适用于旧版和 NCE,但 GDAP 仅适用于旧版。
REST 请求
请求语法
方法 | 请求 URI |
---|---|
POST | {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitions HTTP/1.1 |
URI 参数
使用以下查询参数执行转换。
名称 | 类型 | 必需 | 说明 |
---|---|---|---|
customer-tenant-id | guid | Y | 对应于客户的租户的 GUID。 |
subscription-id | guid | Y | 对应于初始订阅的 GUID。 |
请求标头
有关详细信息,请参阅合作伙伴中心 REST 标头。
请求正文
下表描述了 请求正文中的转换 属性。
properties | 类型 | 必需 | 说明 |
---|---|---|---|
fromCatalogItemId | string | 否 | 要从中转换的目录项。 |
fromSubscriptionId | string | 否 | 要从中转换的订阅 ID。 |
toCatalogItemId | string | 是 | 要转换到的目录项。 |
toSubscriptionId | string | 否 | 要转换到的订阅 ID。 |
quantity | integer | 是 | 要转换的许可证数。 |
termDuration | string | 否 | 指定订阅的期限持续时间。 |
billingCycle | string | 否 | 指定订阅计费周期。 |
transitionType | string | 是 | 转换类型。 可能的值 - transition_only , transition_with_license_transfer 。 |
请求示例
POST https://api.partnercenter.microsoft.com/v1/customers/{customerId}/subscriptions/{subscriptionId}/transitions HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
{
"fromCatalogItemId": "CFQ7TTC0LF8Q:0001:CFQ7TTC0K39X",
"fromSubscriptionId": "e487e8dc-421e-4275-cb42-3c1c8daccf70",
"toCatalogItemId": "CFQ7TTC0LF8R:0001:CFQ7TTC0KCSV",
"toSubscriptionId": "0af52192-4a2a-4364-d25b-c8ecab3a5697",
"quantity": 2,
"termDuration": "P1M",
"billingCycle": "Monthly",
"transitionType": "transition_only"
}
REST 响应
如果成功,此方法将 返回其初始状态为“转换 ”资源。
响应的成功和错误代码
每个响应都有一个 HTTP 状态代码,指示成功或失败以及更多的调试信息。 使用网络跟踪工具读取此代码、错误类型和其他参数。 有关完整列表,请参阅错误代码。
响应示例
HTTP/1.1 200 OK
Content-Length: 138
Content-Type: application/json
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
Date: Fri, 26 Feb 2021 20:42:26 GMT
{
"fromCatalogItemId": "CFQ7TTC0LF8Q:0001:CFQ7TTC0K39X",
"fromSubscriptionId": "e487e8dc-421e-4275-cb42-3c1c8daccf70",
"toCatalogItemId": "CFQ7TTC0LF8R:0001:CFQ7TTC0KCSV",
"toSubscriptionId": "0af52192-4a2a-4364-d25b-c8ecab3a5697",
"quantity": 2,
"termDuration": "P1M",
"billingCycle": "Monthly",
"transitionType": "transition_only"
"Events": [
{
"name": "Conversion",
"status": "Started ",
"timestamp": "2021-01-08T18:01:14.7488618Z",
"attributes":
{
"objectType": "TransitionEvent"
}
}
],
"attributes":
{
"objectType": "Transition"
}
}