Atribuir licenças a um usuárioAssign licenses to a user

Aplica-se a:Applies to:

  • Partner CenterPartner Center

Como atribuir licenças a um usuário do cliente.How to assign licenses to a customer user.

Pré-requisitosPrerequisites

  • Credenciais, conforme descrito em Autenticação do Partner Center.Credentials as described in Partner Center authentication. Este cenário dá suporte somente à autenticação com credenciais de aplicativo + de usuário.This scenario supports authentication with App+User credentials only.

  • Uma ID do cliente (customer-tenant-id).A customer ID (customer-tenant-id). Se você não souber a ID do cliente, poderá procurar no painel do Partner Center.If you don't know the customer's ID, you can look it up in the Partner Center dashboard. Selecione CSP no menu do Partner Center e, em seguida, Clientes.Select CSP from the Partner Center menu, followed by Customers. Selecione o cliente na lista de clientes e selecione Conta.Select the customer from the customer list, then select Account. Na página Conta do cliente, procure a ID da Microsoft na seção Informações da Conta do Cliente.On the customer’s Account page, look for the Microsoft ID in the Customer Account Info section. A ID da Microsoft é igual à ID do cliente (customer-tenant-id).The Microsoft ID is the same as the customer ID (customer-tenant-id).

  • Um identificador de usuário do cliente.A customer user identifier. Essa ID identifica o usuário a quem atribuir a licença.This ID identifies the user to whom to assign the license.

  • Um identificador de SKU do produto que identifica o produto para a licença.A product SKU identifier that identifies the product for the license.

Atribuindo licenças por meio de códigoAssigning licenses through code

Ao atribuir licenças a um usuário, você deve escolher entre a coleção de SKUs assinadas do cliente.When you assign licenses to a user, you must choose from the customer's collection of subscribed SKUs. Em seguida, tendo identificado os produtos que você deseja atribuir, você deve obter a ID de SKU do produto para cada produto a fim de fazer as atribuições.Then, having identified the products that you want to assign, you must obtain the product SKU ID for each product in order to make the assignments. Cada instância de SubscribedSku contém uma propriedade ProductSku da qual você pode referenciar o objeto ProductSku e obter a ID.Each SubscribedSku instance contains a ProductSku property from which you can reference the ProductSku object and get the ID.

Uma solicitação de atribuição de licença deve conter licenças de um único grupo de licenças.A license assignment request must contain licenses from a single license group. Por exemplo, você não pode atribuir licenças do grupo1 e group2 na mesma solicitação.For example, you cannot assign licenses from Group1 and Group2 in the same request. Uma tentativa de atribuir licenças de mais de um grupo em uma única solicitação falhará com um erro apropriado.An attempt to assign licenses from more than one group in a single request will fail with an appropriate error. Para descobrir quais licenças estão disponíveis por grupo de licenças, veja obter uma lista de licenças disponíveis por grupo de licenças.To find out what licenses are available by license group, see Get a list of available licenses by license group.

Aqui estão as etapas para atribuir licenças por meio de código:Here are the steps to assign licenses through code:

  1. Crie uma instância de um objeto LicenseAssignment .Instantiate a LicenseAssignment object. Use esse objeto para especificar a SKU do produto e os planos de serviço a serem atribuídos.You use this object to specify the product SKU and service plans to assign.

    LicenseAssignment license = new LicenseAssignment();
    
  2. Preencha as propriedades do objeto, conforme mostrado abaixo.Populate the object properties as shown below. Esse código pressupõe que você já tem a ID de SKU do produto e que todos os planos de serviço disponíveis serão atribuídos (ou seja, nenhum será excluído).This code assumes that you already have the product SKU ID, and that all of the available service plans will be assigned (that is, none will be excluded).

    license.SkuId = selectedProductSkuId;
    license.ExcludedPlans = null;
    
  3. Se você não tiver a ID de SKU do produto, será necessário recuperar a coleção de SKUs assinadas e obter a ID de SKU do produto de um deles.If you don't have the product SKU ID, you need to retrieve the collection of subscribed SKUs and get the product SKU ID from one of them. Aqui está um exemplo se você souber o nome do SKU do produto.Here is an example if you know the product SKU name.

    var customerSubscribedSkus = partnerOperations.Customers.ById(selectedCustomerId).SubscribedSkus.Get();
    var sku = customerSubscribedSkus.Items.Where(n => n.ProductSku.Name == "Office 365 Enterprise E3").First();
    license.SkuId = sku.ProductSku.Id;
    license.ExcludedPlans = null;
    
  4. Em seguida, instancie uma nova lista do tipo LicenseAssignmente adicione o objeto de licença.Next, instantiate a new list of type LicenseAssignment, and add the license object. Você pode atribuir mais de uma licença adicionando cada uma individualmente à lista.You can assign more than one license by adding each individually to the list. As licenças incluídas nesta lista devem ser do mesmo grupo de licenças.The licenses included in this list must be from the same license group.

    List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
    licenseList.Add(license);
    
  5. Crie uma instância de LicenseUpdate e atribua a lista de atribuições de licença à propriedade LicensesToAssign .Create a LicenseUpdate instance and assign the list of license assignments to the LicensesToAssign property.

    LicenseUpdate updateLicense = new LicenseUpdate();
    updateLicense.LicensesToAssign = licenseList;
    
  6. Chame o método Create ou createasync e passe o objeto de atualização de licença, conforme mostrado abaixo para atribuir as licenças.Call the Create or CreateAsync method and pass the license update object as shown below to assign the licenses.

    var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);
    

C#C#

Para atribuir uma licença a um usuário cliente, primeiro crie uma instância de um objeto LicenseAssignment e preencha as propriedades SkuID e ExcludedPlans .To assign a license to a customer user, first instantiate a LicenseAssignment object, and populate the Skuid and ExcludedPlans properties. Use esse objeto para especificar a SKU do produto a ser atribuída e os planos de serviço a serem excluídos.You use this object to specify the product SKU to assign and service plans to exclude. Em seguida, instancie uma nova lista do tipo LicenseAssignmente adicione o objeto de licença à lista.Next, instantiate a new list of type LicenseAssignment, and add the license object to the list. Em seguida, crie uma instância de LicenseUpdate e atribua a lista de atribuições de licença à propriedade LicensesToAssign .Then create a LicenseUpdate instance and assign the list of license assignments to the LicensesToAssign property.

Em seguida, use o método IAggregatePartner. Customers. ById com a ID do cliente para identificar o cliente e o método users. BYID com a ID de usuário para identificar o usuário.Next, use the IAggregatePartner.Customers.ById method with the customer ID to identify the customer, and the Users.ById method with the user ID to identify the user. Em seguida, obtenha uma interface para operações de atualização de licença de usuário do cliente da propriedade LicenseUpdates .Then get an interface to customer user license update operations from the LicenseUpdates property.

Por fim, chame o método Create ou createasync e passe o objeto de atualização de licença para atribuir a licença.Finally, call the Create or CreateAsync method and pass the license update object to assign the license.

// IAggregatePartner partnerOperations;
// string selectedCustomerUserId;
// string selectedCustomerId;
// string selectedProductSkuId;

// Instantiate and populate a LicenseAssignment object.
LicenseAssignment license = new LicenseAssignment();
license.SkuId = selectedProductSkuId;
license.ExcludedPlans = null;

// Instantiate a list of licenses to assign and add the license to it.
List<LicenseAssignment> licenseList = new List<LicenseAssignment>();
licenseList.Add(license);

// Instantiate a LicenseUpdate object and add the list of licenses to assign.
LicenseUpdate updateLicense = new LicenseUpdate();
updateLicense.LicensesToAssign = licenseList;

// Update the user licenses.
var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);

Exemplo: aplicativo de teste do console.Sample: Console test app. Projeto: classede exemplos do SDK do Partner Center: CustomerUserAssignLicenses.csProject: Partner Center SDK Samples Class: CustomerUserAssignLicenses.cs

Solicitação RESTREST request

Sintaxe da solicitaçãoRequest syntax

MétodoMethod URI da solicitaçãoRequest URI
POSTPOST {baseURL}/v1/Customers/{Customer-ID}/Users/{User-ID}/licenseupdates http/1.1{baseURL}/v1/customers/{customer-id}/users/{user-id}/licenseupdates HTTP/1.1

Parâmetros do URIURI parameters

Use os seguintes parâmetros de caminho para identificar o cliente e o usuário.Use the following path parameters to identify the customer and user.

NomeName TipoType ObrigatórioRequired DescriçãoDescription
id do clientecustomer-id stringstring SimYes Uma ID formatada de GUID que identifica o cliente.A GUID formatted ID that identifies the customer.
user-iduser-id stringstring SimYes Uma ID formatada de GUID que identifica o usuário.A GUID formatted ID that identifies the user.

Cabeçalhos de solicitaçãoRequest headers

Para obter mais informações, confira Cabeçalhos REST do Partner Center.For more information, see Partner Center REST headers.

Corpo da solicitaçãoRequest body

Inclua um recurso LicenseUpdate no corpo da solicitação que especifica as licenças a serem atribuídas.Include a LicenseUpdate resource in the request body that specifies the licenses to assign.

Exemplo de solicitaçãoRequest example

POST https://api.partnercenter.microsoft.com/v1/customers/0c39d6d5-c70d-4c55-bc02-f620844f3fd1/users/554526aa-cf5e-46fa-95df-98dbc55d8a1e/licenseupdates HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: a37d3009-665d-4e12-b76e-1aa10cf80140
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 183
Expect: 100-continue

{
    "LicensesToAssign": [{
            "ExcludedPlans": null,
            "SkuId": "f8a1db68-be16-40ed-86d5-cb42ce701560"
        }
    ],
    "LicensesToRemove": null,
    "LicenseWarnings": null,
    "Attributes": {
        "ObjectType": "LicenseUpdate"
    }
}

Resposta RESTREST response

Se for bem-sucedido, um código de status de resposta HTTP 201 será retornado e o corpo da resposta conterá um recurso LicenseUpdate com as informações de licença.If successful, an HTTP response status code 201 is returned and the response body contains a LicenseUpdate resource with the license information.

Códigos de êxito e de erro de respostaResponse success and error codes

Cada resposta vem com um código de status HTTP que indica êxito ou falha e informações de depuração adicionais.Each response comes with an HTTP status code that indicates success or failure and additional debugging information. Use uma ferramenta de rastreamento de rede para ler esse código, o tipo de erro e os parâmetros adicionais.Use a network trace tool to read this code, error type, and additional parameters. Para obter a lista completa, confira Códigos de erro REST do Partner Center.For the full list, see Partner Center REST error codes.

Exemplo de resposta (êxito)Response example (success)

HTTP/1.1 201 Created
Content-Length: 139
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
MS-RequestId: a37d3009-665d-4e12-b76e-1aa10cf80140
MS-CV: 5AnzcZQrvUqCq3kd.0
MS-ServerId: 030020525
Date: Thu, 20 Apr 2017 21:50:39 GMT

{
    "licensesToAssign": [{
            "skuId": "f8a1db68-be16-40ed-86d5-cb42ce701560"
        }
    ],
    "licenseWarnings": [],
    "attributes": {
        "objectType": "LicenseUpdate"
    }
}

Exemplo de resposta (a licença não está disponível)Response example (license isn't available)

HTTP/1.1 400 Bad Request
Content-Length: 341
Content-Type: application/json; charset=utf-8
MS-CorrelationId: c73c9570-c352-459e-98a3-dafe4bd8c821
MS-RequestId: f4f3b748-8b22-4d07-a5a1-dceb32824192
MS-CV: 5npA0K22CUmWPOzB.0
MS-ServerId: 102030524
Date: Thu, 20 Apr 2017 22:12:36 GMT

{
    "code": 60012,
    "description": "We&#39;re sorry, it looks like you've run out of licenses. Buy more licenses, and then try again.",
    "data": ["LicenseQuotaExceededException : Subscription with Account 0c39d6d5-c70d-4c55-bc02-f620844f3fd1 and SKU f8a1db68-be16-40ed-86d5-cb42ce701560 does not have any available licenses left."],
    "source": "PartnerFD"
}