Alterar a quantidade de licenças numa subscrição de cliente
Aplica-se a: Partner Center | Partner Center operado pela 21Vianet | Partner Center para a Cloud Microsoft para o Governo dos EUA
Atualiza uma assinatura para aumentar ou diminuir a quantidade de licenças.
Pré-requisitos
Credenciais conforme descrito em autenticação do Partner Center. Este cenário oferece suporte à autenticação com credenciais autônomas de Aplicativo e Aplicativo+Usuário.
Um ID de cliente (
customer-tenant-id
). Se não souber o ID do cliente, pode procurá-lo no Partner Center selecionando o espaço de trabalho Clientes, depois o cliente da lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure o ID da Microsoft na seção Informações da Conta do Cliente. A ID da Microsoft é a mesma que a ID do cliente (customer-tenant-id
).Um ID de subscrição.
C#
Para alterar a quantidade da assinatura de um cliente, primeiro obter a assinaturae, em seguida, alterar a propriedade Quantidade da assinatura. Depois de fazer a alteração, use a coleção IAggregatePartner.Customers e chame o método ById(). Em seguida, chame a propriedade Subscriptions, seguida pelo método ById(). Em seguida, termine chamando o método Patch().
// IAggregatePartner partnerOperations;
// var customerId;
// var subscriptionId;
//retrieving the subscription, for the purpose of the sample
ResourceCollection<Subscription> customerSubscriptions = partnerOperations.Customers.ById(selectedCustomerId).Subscriptions.Get();
Subscription selectedSubscription = customerSubscriptions.Items.FirstOrDefault(sub => sub.Status == SubscriptionStatus.Active);
//update selected subscription,
selectedSubscription.Quantity++;
var updatedSubscription = partnerOperations.Customers.ById(selectedCustomerId).Subscriptions.ById(selectedSubscription.Id).Patch(selectedSubscription);
Exemplo de: Aplicativo de teste de console. do Projeto: PartnerSDK.FeatureSample Classe: UpdateSubscription.cs
Pedido REST
Sintaxe da solicitação
Método | Solicitar URI |
---|---|
PATCH | {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id} HTTP/1.1 |
Parâmetro URI
Esta tabela lista o parâmetro de consulta necessário para alterar a quantidade da assinatura.
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
ID do cliente-locatário | guid | Y | Um GUID correspondente ao cliente. |
ID de assinatura | guid | Y | Um GUID correspondente à assinatura. |
Cabeçalhos de solicitação
Para obter mais informações, consulte cabeçalhos REST do Partner Center.
Corpo do pedido
É necessário um recurso completo de Subscrição de no corpo do pedido. Verifique se a propriedade Quantidade foi atualizada.
Exemplo de solicitação
PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/subscriptions/<id-for-subscription> HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
Content-Type: application/json
Content-Length: 1029
Expect: 100-continue
Connection: Keep-Alive
{
"Id": "83ef9d05-4169-4ef9-9657-0e86b1eab1de",
"FriendlyName": "nickname",
"Quantity": 2,
"UnitType": "none",
"ParentSubscriptionId": null,
"CreationDate": "2015-11-25T06:41:12Z",
"EffectiveStartDate": "2015-11-24T08:00:00Z",
"CommitmentEndDate": "2016-12-12T08:00:00Z",
"Status": "active",
"AutoRenewEnabled": false,
"BillingType": "none",
"PartnerId": null,
"ContractType": "subscription",
"OrderId": "6183db3d-6318-4e52-877e-25806e4971be",
"Attributes": {
"Etag": "<etag>",
"ObjectType": "Subscription"
}
}
Exemplo de solicitação de nova assinatura de comércio para reduzir a quantidade
Observação
As novas experiências de comércio para serviços baseados em licença incluem muitos recursos novos e estão disponíveis para todos os CSPs (Provedor de Soluções na Nuvem). Para obter mais informações, consulte visão geral de novas experiências comerciais.
A quantidade de licença só pode ser reduzida dentro de 7 dias após a compra ou renovação de uma assinatura, exceto quando exigido por lei. Da mesma forma, as licenças adicionadas no meio do prazo também só podem ser reduzidas dentro de 7 dias.
Para determinar se sua assinatura permite uma redução, consulte Obter uma assinatura por ID - de desenvolvedor de aplicativo parceiro e o campo refundableQuantity na solicitação de API.
PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/subscriptions/<subscription-id> HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
Content-Type: application/json
Content-Length: 1029
Expect: 100-continue
Connection: Keep-Alive
{
"id": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"offerId": "CFQ7TTC0LH18:0001:CFQ7TTC0K971",
"offerName": "Microsoft 365 Business Basic",
"friendlyName": "Microsoft 365 Business Basic",
"productType": {
"id": "OnlineServicesNCE",
"displayName": "OnlineServicesNCE"
},
"quantity": 1, // original value = 10
"unitType": "Licenses",
"hasPurchasableAddons": false,
"creationDate": "2021-01-14T16:57:15.0966728Z",
"effectiveStartDate": "2021-01-14T16:57:14.498252Z",
"commitmentEndDate": "2022-01-13T00:00:00Z",
"status": "active",
"autoRenewEnabled": true,
"isTrial": false,
"billingType": "license",
"billingCycle": "monthly",
"termDuration": "P1Y",
"renewalTermDuration": "",
"refundOptions": [
{
"type": "Full",
"expiresAt": "2021-01-15T00:00:00Z"
}
],
"isMicrosoftProduct": true,
"partnerId": "",
"attentionNeeded": false,
"actionTaken": false,
"contractType": "subscription",
"links": {
"product": {
"uri": "/products/CFQ7TTC0LH18?country=US",
"method": "GET",
"headers": []
},
"sku": {
"uri": "/products/CFQ7TTC0LH18/skus/0001?country=US",
"method": "GET",
"headers": []
},
"availability": {
"uri": "/products/CFQ7TTC0LH18/skus/0001/availabilities/CFQ7TTC0K971?country=US",
"method": "GET",
"headers": []
},
"self": {
"uri": "/customers/d8202a51-69f9-4228-b900-d0e081af17d7/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"method": "GET",
"headers": []
}
},
"publisherName": "Microsoft Corporation",
"refundableQuantity": {
"totalQuantity": 10,
"details": [
{
"quantity": 10,
"allowedUntilDateTime": "2021-01-24T20:39:17.182697Z"
}
]
},
"orderId": "34b37d7340cc",
"attributes": {
"objectType": "Subscription"
}
}
Resposta REST
Se for bem-sucedido, esse método retornará um HTTP status 200 código de status e atualizado propriedades de de recurso de assinatura no corpo da resposta.
Códigos de sucesso e erro de resposta
Cada resposta retorna um código de status HTTP que indica sucesso ou falha e informações adicionais de depuração. Use uma ferramenta de rastreamento de rede para ler o código de status, o tipo de erro e os parâmetros adicionais. Para obter a lista completa, consulte Códigos de erro.
Quando a operação de patch demora mais do que o tempo esperado, o Partner Center envia um código de status HTTP 202 e um cabeçalho de localização que aponta para onde recuperar a assinatura. Você pode consultar a assinatura periodicamente para monitorar as alterações de status e quantidade.
Exemplos de respostas
Exemplo de resposta #1
Solicitação bem-sucedida com um HTTP status 200 código de status:
PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/subscriptions/<subscriptionID> HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-Contract-Version: v1
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
Content-Type: application/json
Content-Length: 1029
Expect: 100-continue
Connection: Keep-Alive
{
"Id": "83ef9d05-4169-4ef9-9657-0e86b1eab1de",
"FriendlyName": "nickname",
"Quantity": 2,
"UnitType": "none",
"ParentSubscriptionId": null,
"CreationDate": "2015-11-25T06:41:12Z",
"EffectiveStartDate": "2015-11-24T08:00:00Z",
"CommitmentEndDate": "2016-12-12T08:00:00Z",
"Status": "active",
"AutoRenewEnabled": false,
"BillingType": "none",
"PartnerId": null,
"ContractType": "subscription",
"Links": {
"Offer": {
"Uri": "/v1/offers/0CCA44D6-68E9-4762-94EE-31ECE98783B9",
"Method": "GET",
"Headers": []
},
"Entitlement": {
"Uri": "/entitlements?key=<key>",
"Method": "GET",
"Headers": []
},
"Self": {
"Uri": "/subscriptions?key=<key>",
"Method": "GET",
"Headers": []
}
},
"OrderId": "6183db3d-6318-4e52-877e-25806e4971be",
"Attributes": {
"Etag": "<etag>",
"ObjectType": "Subscription"
}
}
Exemplo de resposta #2
Solicitação bem-sucedida com um status HTTP e código de status 202.
PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/subscriptions/<subscription-id> HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: ca7c39f7-1a80-43bc-90d8-ee7d1cad3831
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
Content-Type: application/json
Content-Length: 1029
Expect: 100-continue
Connection: Keep-Alive
{
"id": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"offerId": "CFQ7TTC0LH18:0001:CFQ7TTC0K971",
"offerName": "Microsoft 365 Business Basic",
"friendlyName": "Microsoft 365 Business Basic",
"productType": {
"id": "OnlineServicesNCE",
"displayName": "OnlineServicesNCE"
},
"quantity": 1, // original value = 10
"unitType": "Licenses",
"hasPurchasableAddons": false,
"creationDate": "2021-01-14T16:57:15.0966728Z",
"effectiveStartDate": "2021-01-14T16:57:14.498252Z",
"commitmentEndDate": "2022-01-13T00:00:00Z",
"status": "active",
"autoRenewEnabled": true,
"isTrial": false,
"billingType": "license",
"billingCycle": "monthly",
"termDuration": "P1Y",
"renewalTermDuration": "",
"refundOptions": [
{
"type": "Full",
"expiresAt": "2021-01-15T00:00:00Z"
}
],
"isMicrosoftProduct": true,
"partnerId": "",
"attentionNeeded": false,
"actionTaken": false,
"contractType": "subscription",
"links": {
"product": {
"uri": "/products/CFQ7TTC0LH18?country=US",
"method": "GET",
"headers": []
},
"sku": {
"uri": "/products/CFQ7TTC0LH18/skus/0001?country=US",
"method": "GET",
"headers": []
},
"availability": {
"uri": "/products/CFQ7TTC0LH18/skus/0001/availabilities/CFQ7TTC0K971?country=US",
"method": "GET",
"headers": []
},
"self": {
"uri": "/customers/d8202a51-69f9-4228-b900-d0e081af17d7/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"method": "GET",
"headers": []
}
},
"publisherName": "Microsoft Corporation",
"refundableQuantity": {
"totalQuantity": 1,
"details": [
{
"quantity": 1,
"allowedUntilDateTime": "2021-01-24T20:39:17.182697Z"
}
]
},
"orderId": "34b37d7340cc",
"attributes": {
"objectType": "Subscription"
}
}
Exemplo de resposta para redução de novas licenças de comércio
Observação
As novas experiências de comércio para serviços baseados em licença incluem muitos recursos novos e estão disponíveis para todos os CSPs (Provedor de Soluções na Nuvem). Para obter mais informações, consulte visão geral de novas experiências comerciais.
Exemplo de resposta da API ao tentar reduzir as quantidades de licenças para novas assinaturas de comércio fora da janela de cancelamento de 7 dias.
{
"code": 800090,
"description": "Subscription quantity cannot be decreased.",
"data": [],
"source": "PartnerFD"
}