Tilldela licenser till en användare via Partnercenter-API:er
Så här tilldelar du licenser till en kundanvändare.
Förutsättningar
Autentiseringsuppgifter enligt beskrivningen i Partnercenter-autentisering. Det här scenariot stöder endast autentisering med App+User-autentiseringsuppgifter.
En kundanvändaridentifierare. Det här ID:t identifierar den användare som licensen ska tilldelas till.
En produkt-SKU-identifierare som identifierar produkten för licensen.
GDAP-roller
Du behöver minst en av följande GDAP-roller:
- Licensadministratör
- Användaradministratör
- Katalogförfattare
Tilldela licenser via kod
När du tilldelar licenser till en användare måste du välja från kundens samling prenumerations-SKU:er. Efter att ha identifierat de produkter som du vill tilldela måste du sedan hämta produktens SKU-ID för varje produkt för att kunna utföra tilldelningarna. Varje SubscribedSku-instans innehåller en ProductSku-egenskap som du kan referera till ProductSku-objektet från och hämta ID:t från.
Här följer stegen för att tilldela licenser via kod:
Instansiera ett LicenseAssignment-objekt. Du använder det här objektet för att ange produkt-SKU och tjänstplaner som ska tilldelas.
LicenseAssignment license = new LicenseAssignment();
Fyll i objektegenskaperna enligt nedan. Den här koden förutsätter att du redan har produktens SKU-ID och att alla tillgängliga tjänstplaner kommer att tilldelas (det vill säga ingen kommer att undantas).
license.SkuId = selectedProductSkuId; license.ExcludedPlans = null;
Om du inte har SKU-ID:t för produkten måste du hämta samlingen med prenumerations-SKU:er och hämta produktens SKU-ID från någon av dem. Här är ett exempel om du känner till produktens SKU-namn.
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;
Sedan instansierar du en ny lista av typen LicenseAssignment och lägger till licensobjektet. Du kan tilldela fler än en licens genom att lägga till var och en individuellt i listan. Licenserna som ingår i den här listan måste komma från samma licensgrupp.
List<LicenseAssignment> licenseList = new List<LicenseAssignment>(); licenseList.Add(license);
Skapa en LicenseUpdate-instans och tilldela listan över licenstilldelningar till egenskapen LicensesToAssign.
LicenseUpdate updateLicense = new LicenseUpdate(); updateLicense.LicensesToAssign = licenseList;
Anropa metoden Skapa eller SkapaAsync och skicka licensuppdateringsobjektet enligt nedan för att tilldela licenserna.
var assignLicense = partnerOperations.Customers.ById(selectedCustomerId).Users.ById(selectedCustomerUserId).LicenseUpdates.Create(updateLicense);
C#
Om du vill tilldela en licens till en kundanvändare instansierar du först ett LicenseAssignment-objekt och fyller i egenskaperna Skuid och ExcludedPlans. Du använder det här objektet för att ange den produkt-SKU som ska tilldelas och tjänstplaner som ska undantas. Sedan instansierar du en ny lista av typen LicenseAssignment och lägger till licensobjektet i listan. Skapa sedan en LicenseUpdate-instans och tilldela listan över licenstilldelningar till egenskapen LicensesToAssign.
Använd sedan metoden IAggregatePartner.Customers.ById med kund-ID:t för att identifiera kunden och metoden Users.ById med användar-ID:t för att identifiera användaren. Hämta sedan ett gränssnitt för uppdateringsåtgärder för kundanvändares licens från egenskapen Licens Uppdateringar.
Anropa slutligen metoden Skapa eller SkapaAsync och skicka licensuppdateringsobjektet för att tilldela licensen.
// 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);
Exempel: Konsoltestapp. Projekt: SDK-exempelklass för Partnercenter: CustomerUserAssignLicenses.cs
REST-begäran
Syntax för begäran
Metod | URI för förfrågan |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/users/{user-id}/licenseupdates HTTP/1.1 |
URI-parametrar
Använd följande sökvägsparametrar för att identifiera kunden och användaren.
Namn | Typ | Obligatoriskt | Beskrivning |
---|---|---|---|
kund-ID | sträng | Ja | Ett GUID-formaterat ID som identifierar kunden. |
användar-ID | sträng | Ja | Ett GUID-formaterat ID som identifierar användaren. |
Begärandehuvuden
Mer information finns i REST-huvuden för Partnercenter.
Begärandetext
Inkludera en LicenseUpdate-resurs i begärandetexten som anger vilka licenser som ska tilldelas.
Exempel på begäran
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: aaaa0000-bb11-2222-33cc-444444dddddd
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"
}
}
Viktigt!
Från och med juni 2023 arkiveras nu den senaste Partner Center .NET SDK-versionen 3.4.0. Du kan ladda ned SDK-versionen från GitHub tillsammans med en readme-fil som innehåller användbar information.
Partner uppmanas att fortsätta att använda REST-API:er för Partnercenter.
REST-svar
Om det lyckas returneras en HTTP-svarsstatuskod 201 och svarstexten innehåller en LicenseUpdate-resurs med licensinformationen.
Svarsframgång och felkoder
Varje svar levereras med en HTTP-statuskod som anger lyckad eller misslyckad och ytterligare felsökningsinformation. Använd ett verktyg för nätverksspårning för att läsa den här koden, feltypen och ytterligare parametrar. Den fullständiga listan finns i Rest-felkoder för Partnercenter.
Svarsexempel (lyckades)
HTTP/1.1 201 Created
Content-Length: 139
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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"
}
}
Svarsexempel (licensen är inte tillgänglig)
HTTP/1.1 400 Bad Request
Content-Length: 341
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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 are sorry, it looks like you have 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"
}
Svarsexempel (ogiltig token)
HTTP/1.1 400 Bad Request
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: f0caf048-380c-4d6f-968a-3ccce01e11c1
MS-CV: 6npA0K22CUmWPOzC.0
MS-ServerId: 102045524
Date: Thu, 20 Apr 2023 21:12:36 GMT
{
"code": 900316,
"description": "Partner token is not allowed in license management calls. Please call with Partner Access Token. To learn more, see https://learn.microsoft.com/partner-center/developer/enable-secure-app-model#get-access-token",
"source": "PartnerFD"
}
Svarsexempel (problem med princip för villkorsstyrd åtkomst)
HTTP/1.1 403 Forbidden
Content-Length: 342
Content-Type: application/json; charset=utf-8
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: f0caf048-380c-4d6f-968a-3ccce01e11c1
MS-CV: 6npA0K22CUmWPOzC.0
MS-ServerId: 102045524
Date: Thu, 20 Apr 2023 21:12:36 GMT
{
"code": 900309,
"description": "Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. Learn more at https://learn.microsoft.com/azure/active-directory/conditional-access/concept-conditional-access-users-groups.",
"source": "PartnerFD"
}