Поделиться через


Перенос новой коммерческой подписки

Область применения: Центр партнеров | Центр партнеров, управляемый 21Vianet | Центр партнеров для Microsoft Cloud для правительства США

Соответствующие роли

  • Агент по администрированию

Эти методы поддерживают как традиционные, так и новые коммерческие подписки.

Примечание.

Новые коммерческие возможности для служб на основе лицензий включают многие новые функции и доступны для всех поставщиков облачных решений. Дополнительные сведения см. в обзоре новых коммерческих возможностей.

Используется для обновления новой коммерческой подписки клиента до целевой подписки или преобразования пробной версии NCE в платную подписку. Чтобы перейти к подписке, необходимо выполнить два запроса API. Сначала используйте команду GET для получения переходов, которые позволят уточнить доступные для обновления номера SKU. Затем POST переход для выполнения транзакции.

Получение прав на переход

Возвращает список доступных переходов для данного клиента, подписки и запрошенного типа. Также возвращает право на обновление целевой подписки. Условия перехода могут включать предложения, которые находятся в состоянии EndofSaleWithConversions.

Предварительные требования

  • Учетные данные, как описано в проверке подлинности в Центре партнеров. Этот сценарий поддерживает проверку подлинности с помощью автономных учетных данных приложения, а также учетных данных приложения и пользователя.

  • Идентификатор клиента (customer-tenant-id). Если вы не знаете идентификатор клиента, его можно найти в Центре Партнеров, выбрав рабочую область "Клиенты", затем выберите клиента из списка клиентов, а затем Учетная запись. На странице "Учетная запись клиента" найдите идентификатор Microsoft в разделе "Сведения об учетной записи клиента". Идентификатор Microsoft совпадает с идентификатором клиента (customer-tenant-id).

  • Идентификатор подписки для начальной подписки.

Роли GDAP

Вам потребуется по крайней мере одна из следующих ролей GDAP:

  • Читатель каталога
  • Глобальный читатель

Примечание.

Хотя этот API доступен для устаревших версий и NCE, GDAP требуется только для устаревших версий.

Запрос REST

Синтаксис запроса

Способ URI запроса
GET {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitionEligibilities?eligibilityType={immediate, scheduled} HTTP/1.1

Параметр URI

Используйте следующие параметры запроса для возврата подходящих переходов.

Имя. Тип Обязательно Описание
customer-tenant-id GUID Y GUID, соответствующий арендатору клиента.
subscription-id guid Y GUID, соответствующий начальной подписке.
тип права на участие string N Описывает, когда переход должен выполняться; может быть немедленно или запланировано. По умолчанию — Immediate.

Заголовки запросов

Для получения дополнительной информации см. заголовки REST API для Центра партнеров.

Текст запроса

нет

Пример запроса

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. Ошибка LegacyCannotConvertSubscriptionId во время вызова GetSubscriptionUpgradeConflicts
Тип перехода несовместим. Конфликтующие подписки для передачи лицензий существуют. Если у какой-либо службы Microsoft Entra есть идентификаторы подписки, принадлежащие другой подписке, добавьте их в список конфликтов (включая покупки, произведенные с использованием как устаревшего, так и современного процесса покупки).

Ошибки, связанные с доступностью подписки

Если целевая подписка не соответствует критериям для обновления, будет указана одна из следующих причин.

Пустые списки будут возвращены, если исходная подписка является пробной версией или если тип соответствия указан как запланированный. Вы можете перейти только в существующую подписку с немедленным переходом (также известным как "midterm"), а не запланированным переходом.

Описание ошибки Код ошибки
Подписка не активна. ПодпискаНеАктивна = 1
Подписка находится в окне отмены. ОкноОтменыПодписки = 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"
  }
}

После перехода

Отправляет запрос на переход для данного клиента и подписки. Возвращает переход с его начальным статусом.

Предварительные требования

  • Учетные данные, как описано в аутентификации в Центре партнеров. Этот сценарий поддерживает аутентификацию с использованием как автономных учетных данных приложения, так и учетных данных приложения и пользователя.

  • Идентификатор клиента (customer-tenant-id). Если вы не знаете идентификатор клиента, вы можете его найти в Центре партнеров, выбрав Рабочая область «Клиенты», затем выберите клиента из списка клиентов и затем учетную запись. На странице "Учетная запись клиента" найдите идентификатор Microsoft в разделе сведений об учетной записи клиента. Идентификатор Майкрософт совпадает с идентификатором клиента (customer-tenant-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, соответствующий арендатору клиента.
идентификатор-подписки guid Y GUID, соответствующий начальной подписке.

Заголовки запросов

Для получения дополнительной информации см. заголовки REST Партнерского центра.

Текст запроса

В этой таблице описываются свойства перехода в теле запроса.

Свойство Тип Обязательно Описание
изИдентификаторЭлементаКаталога строка Нет Элемент каталога, из которого вы переходите.
изИдентификатораПодписки строка Нет Идентификатор подписки, с которого вы переходите.
toCatalogItemId строка Да Элемент каталога, на который вы переходите.
toSubscriptionId строка Нет Идентификатор подписки, на который вы переходите.
количество целое число Да Количество лицензий для перехода на другую платформу.
длительность срока строка Нет Указание срока действия подписки.
billingCycle строка Нет Указание платежного цикла подписки.
тип перехода строка Да Тип перехода. Возможные значения — 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

Если выполнение прошло успешно, этот метод возвращает ресурс Transition с его начальными статусами.

Коды успешного и ошибочного ответов

Каждый ответ поставляется с кодом состояния 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" 
    }
}