İş Ortağı Merkezi API'leri aracılığıyla kullanıcıya lisans atama
Bir müşteri kullanıcıya lisans atama.
Önkoşullar
kimlik doğrulamasında açıklandığı gibi İş Ortağı Merkezi bilgileri. Bu senaryo yalnızca App+User kimlik bilgileriyle kimlik doğrulamasını destekler.
Müşteri kimliği (
customer-tenant-id). Müşterinin kimliğini bilmiyorsanız bu kimliği panoda İş Ortağı Merkezi. İş Ortağı Merkezi'den CSP'yi ve ardından Müşteriler'i seçin. Müşteri listesinden müşteriyi ve ardından Hesap'ı seçin. Müşterinin Hesap sayfasında Müşteri Hesabı Bilgileri bölümünde MicrosoftKimliği'ne bakın. Microsoft Kimliği, müşteri kimliği () ilecustomer-tenant-idaynıdır.Müşteri kullanıcı tanımlayıcısı. Bu kimlik, lisansın atanma kullanıcısını tanımlar.
Lisansın ürününü tanımlayan bir ürün SKU tanımlayıcısı.
Kod aracılığıyla lisans atama
Bir kullanıcıya lisans atadığınız zaman, müşterinin abone olunan SKU'lar koleksiyonundan birini seçmeniz gerekir. Ardından, atamak istediğiniz ürünleri belirlediklerinde, atamaları yapmak için her ürün için ürün SKU Kimliğini elde edinirsiniz. Her SubscribedSku örneği, ProductSku nesnesine başvurarak kimliğini almak için bir ProductSku özelliği içerir.
Lisans ataması isteği, tek bir lisans grubundan lisanslar içermeli. Örneğin, aynı istekte Grup1 ve Grup2'den lisans atayamazsiniz. Tek bir istekte birden fazla gruptan lisans atama girişimi uygun bir hatayla başarısız olur. Lisans grubuna göre hangi lisansların kullanılabilir olduğunu bulmak için bkz. Lisans grubuna göre kullanılabilir lisansların listesini alın.
Kod aracılığıyla lisans atama adımları şu şekildedir:
LicenseAssignment nesnesinin örneğini oluşturma. Bu nesneyi, atanma ürün SKU'su ve hizmet planlarını belirtmek için kullanırsiniz.
LicenseAssignment license = new LicenseAssignment();Nesne özelliklerini aşağıda gösterildiği gibi girin. Bu kod, ürün SKU kimliğine zaten sahip olduğunu ve tüm kullanılabilir hizmet planlarının atandığı varsayar (başka bir ifadeyle, hiçbiri hariç tutulacaktır).
license.SkuId = selectedProductSkuId; license.ExcludedPlans = null;Ürün SKU Kimliğiniz yoksa, abone olunan SKU'ların koleksiyonunu almalı ve bunlardan birinin ürün SKU Kimliğini al gerekir. Ürün SKU'su adını biliyorsanız bir örnek burada vetir.
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;Ardından LicenseAssignmenttüründe yeni bir liste örneği ekleyin ve lisans nesnesini ekleyin. Her birini listeye tek tek ekleyerek birden fazla lisans atabilirsiniz. Bu listeye dahil edilen lisansların aynı lisans grubundan olması gerekir.
List<LicenseAssignment> licenseList = new List<LicenseAssignment>(); licenseList.Add(license);Bir LicenseUpdate örneği oluşturun ve lisans atamalarının listesini LicensesToAssign özelliğine attayabilirsiniz.
LicenseUpdate updateLicense = new LicenseUpdate(); updateLicense.LicensesToAssign = licenseList;Create veya CreateAsync yöntemini çağırarak lisansları atamak için aşağıda gösterildiği gibi lisans güncelleştirme nesnesini geçin.
var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);
C#
Bir müşteri kullanıcıya lisans atamak için, önce bir LicenseAssignment nesnesi örneği oluşturma ve Skuid ve ExcludedPlans özelliklerini doldurmak. Bu nesneyi, atanacak ürün SKU'larını ve hariç tutulacak hizmet planlarını belirtmek için kullanırsiniz. Ardından LicenseAssignmenttüründe yeni bir liste örneği ekleyin ve lisans nesnesini listeye ekleyin. Ardından bir LicenseUpdate örneği oluşturun ve lisans atamalarının listesini LicensesToAssign özelliğine attayabilirsiniz.
Ardından IAggregatePartner.Customers.ById yöntemini müşteri kimliğiyle birlikte kullanarak müşteri kimliğini ve kullanıcı kimliğini kullanarak Users.ById yöntemini kullanın. Ardından LicenseUpdates özelliğinden müşteri kullanıcı lisans güncelleştirme işlemlerine bir arabirim alın.
Son olarak, Create veya CreateAsync yöntemini çağırarak lisansa atamak için lisans güncelleştirme nesnesinin geçişine geçebilirsiniz.
// 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);
Örnek:Konsol test uygulaması. Project:İş Ortağı Merkezi SDK'sı Örnekleri Sınıfı:CustomerUserAssignLicenses.cs
REST isteği
İstek söz dizimi
| Yöntem | İstek URI'si |
|---|---|
| YAYINLA | {baseURL}/v1/customers/{customer-id}/users/{user-id}/licenseupdates HTTP/1.1 |
URI parametreleri
Müşteriyi ve kullanıcıyı tanımlamak için aşağıdaki yol parametrelerini kullanın.
| Ad | Tür | Gerekli | Açıklama |
|---|---|---|---|
| customer-id | string | Yes | Müşteriyi tanımlayan GUID biçimli bir kimlik. |
| user-id | string | Yes | Kullanıcıyı tanımlayan GUID biçimlendirilmiş bir kimlik. |
İstek üst bilgileri
Daha fazla bilgi için bkz. İş Ortağı Merkezi REST üst bilgileri.
İstek gövdesi
İstek gövdesine, atanma lisanslarını belirten bir LicenseUpdate kaynağı dahil etme.
İstek örneği
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"
}
}
REST yanıtı
Başarılı olursa, 201 HTTP yanıt durum kodu döndürülür ve yanıt gövdesi lisans bilgilerini içeren bir LicenseUpdate kaynağı içerir.
Yanıt başarı ve hata kodları
Her yanıt, başarılı veya başarısız olduğunu gösteren bir HTTP durum kodu ve ek hata ayıklama bilgileriyle birlikte gelir. Bu kodu, hata türünü ve ek parametreleri okumak için bir ağ izleme aracı kullanın. Tam liste için bkz. İŞ ORTAĞı MERKEZI REST hata kodları.
Yanıt örneği (başarılı)
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"
}
}
Yanıt örneği (lisans kullanılamıyor)
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'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"
}