Compartilhar via


Fazer a transição de uma nova assinatura comercial

Aplica-se a: Partner Center | Partner Center operado pela 21Vianet | Partner Center for Microsoft Cloud for US Government

Funções apropriadas

  • Agente de administração

Esses métodos dão suporte a assinaturas de origem de comércio tradicional e nova.

Observação

As novas experiências de comércio para serviços baseados em licença incluem muitos novos recursos e estão disponíveis para todos os CSPs (Provedores de Soluções na Nuvem). Para obter mais informações, confira a visão geral das novas experiências de comércio.

Usado para atualizar a nova assinatura de comércio de um cliente para uma assinatura de destino ou converter uma avaliação NCE em uma assinatura paga. Para fazer a transição de uma assinatura, duas solicitações de API precisam ser feitas. Primeiro GET transições qualificadas para obter os SKUs disponíveis para atualização. Em seguida, POST transição para executar a transição.

Obter elegibilidades de transição

Retorna uma lista de transições qualificadas para um determinado cliente, assinatura e tipo solicitado. Também retorna a qualificação para upgrade de assinatura de destino. As qualificações de transição podem incluir ofertas que estão no estado EndofSaleWithConversions.

Pré-requisitos

Funções GDAP

Você precisará de pelo menos uma das seguintes funções GDAP:

  • Leitor de Diretório
  • Leitor Global

Observação

Embora essa API esteja disponível para legada e NCE, o GDAP só é necessário para a legada.

Solicitação REST

Sintaxe da solicitação

Método URI da solicitação
GET {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitionEligibilities?eligibilityType={immediate, scheduled} HTTP/1.1

Parâmetro do URI

Use os parâmetros de consulta a seguir para retornar transições qualificadas.

Nome Digitar Obrigatória Descrição
id de locatário do cliente guid Y Um GUID correspondente ao locatário do cliente.
id da assinatura guid Y Um GUID correspondente à assinatura inicial.
elegibilidadeTipo cadeia de caracteres N Descreve quando a transição deve ser executada; pode ser imediato ou programado. O padrão é Immediate.

Cabeçalhos da solicitação

Para obter mais informações, confira Cabeçalhos REST do Partner Center.

Corpo da solicitação

Nenhum

Exemplo de solicitação

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

Resposta REST

Se for bem-sucedido, esse método retornará uma lista das transições qualificadas para a assinatura fornecida no corpo da resposta.

Códigos de êxito e de erro de resposta

Cada resposta vem com um código de status HTTP que indica êxito ou falha e mais informações de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e outros parâmetros. Para obter a lista completa, confira Códigos de Erro.

Erros de elegibilidade

Descrições e significado de erros.

Descrição do erro Significado
A assinatura não pode ser transicionada – a assinatura de origem não está ativa. Status do sub original não ativo
A assinatura não pode ser transicionada – a assinatura de origem ainda não foi provisionada. O sub FulfillmentState original não é bem-sucedido
O tipo de transição não é compatível – o mapeamento de assinatura do AzureAD é necessário. Erro LegacyCannotConvertSubscriptionId ao chamar GetSubscriptionUpgradeConflicts
O tipo de transição não é compatível – existem assinaturas conflitantes para transferência de licença. Se algum serviço do Microsoft Entra tiver IDs de assinatura de uma assinatura diferente, adicione-o à lista de conflitos (inclui compras feitas com fluxo de compra herdado ou moderno)

Erros de qualificação de assinatura

Se uma assinatura de destino não estiver qualificada para atualização, um dos seguintes motivos será retornado.

Listas vazias serão retornadas se a assinatura de origem for uma avaliação ou se o eligibilityType for especificado como Agendado. Você só pode fazer a transição para uma assinatura existente com uma transição imediata (também conhecida como "intermediária"), não uma alteração agendada.

Descrição do erro Código do erro
A assinatura não está ativa. SubscriptionNotActive = 1
A assinatura está dentro da janela de cancelamento. SubscriptionInCancellationWindow = 2
A duração do termo da assinatura é menor do que a duração do prazo da assinatura de origem. SubscriptionTermDurationShorterThanSourceTermDuration = 3
A data de término do prazo da assinatura é antes da data de término do prazo da assinatura de origem. A data de término do prazo da assinatura é antes da data de término do prazo da assinatura de origem. = 4

Exemplo de resposta

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"
  }
}

Pós-transição

Lança uma solicitação de transição para um determinado cliente e assinatura. Retorna a transição com seu status inicial.

Pré-requisitos

Funções GDAP

Você precisará de pelo menos uma das seguintes funções GDAP:

  • Leitor de diretório ou leitor global (somente transição)
  • Gravador de diretório (transição com transferência de licença)

Observação

Embora essa API esteja disponível para legada e NCE, o GDAP só é necessário para a legada.

Solicitação REST

Sintaxe da solicitação

Método URI da solicitação
POST {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitions HTTP/1.1

Parâmetro do URI

Use os parâmetros de consulta a seguir para executar uma transição.

Nome Digitar Obrigatória Descrição
id de locatário do cliente guid Y Um GUID correspondente ao locatário do cliente.
id da assinatura guid Y Um GUID correspondente à assinatura inicial.

Cabeçalhos da solicitação

Para obter mais informações, confira Cabeçalhos REST do Partner Center.

Corpo da solicitação

Esta tabela descreve as propriedades Transition no corpo da solicitação.

Propriedade Type Obrigatória Descrição
fromCatalogItemId string Não O item de catálogo do qual você está fazendo a transição.
fromSubscriptionId string Não A ID da assinatura da qual você está fazendo a transição.
toCatalogItemId string Sim O item de catálogo para o qual você está fazendo a transição.
toSubscriptionId string Não A ID da assinatura para a qual você está fazendo a transição.
quantity Número inteiro Sim O número de licenças a serem transferidas.
termDuration string Não Especificar a duração do prazo da assinatura.
billingCycle string Não Especificando o ciclo de cobrança da assinatura.
transitionType string Sim O tipo de transição. Valores possíveis - transition_only, transition_with_license_transfer.

Exemplo de solicitação

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"
}

Resposta REST

Se for bem-sucedido, esse método retornará um recurso de transição com seu status inicial.

Códigos de êxito e de erro de resposta

Cada resposta vem com um código de status HTTP que indica êxito ou falha e mais informações de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e outros parâmetros. Para obter a lista completa, confira Códigos de Erro.

Exemplo de resposta

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" 
    }
}