Из python я пытаюсь назначить лицензию пользователю в Office365 с использованием MS Graph API.
request_url = "https://graph.microsoft.com/v1.0/users/[email protected]/assignLicense"
headers = {
'Authorization' : 'Bearer ' + token,
'Content-Type' : 'application/json',
}
response = requests.post(url = request_url, headers = headers, json={'addLicenses': 'testGUID'})
Однако я получаю следующее сообщение об ошибке:
{
"error": {
"code": "Request_BadRequest",
"innerError": {
"date": "2018-08-27T15:56:45",
"request-id": "9ddde6c8-5fe1-4425-ba84-bc49fa35e2b8"
},
"message": "When trying to read a null collection parameter value in JSON Light, a node of type 'PrimitiveValue' with the value 'test' was read from the JSON reader; however, a primitive 'null' value was expected."
}
}
Как я могу назвать assignLicense из python?
Вы назначаете GUID для addLicenses
который является неправильным. Из документации addLicenses
определяется как:
Коллекция
assignedLicense
объектов License, которые определяют лицензии для добавления.
Другими словами, это массив assignedLicense
объектов License. Чтобы назначить лицензию пользователю, вам необходимо отправить следующую полезную нагрузку JSON:
{
"addLicenses": [
{
"disabledPlans":[ ],
"skuId": "guid"
}
],
"removeLicenses":[ ]
}
Я считаю, что Python для этого будет выглядеть примерно так:
request_url = "https://graph.microsoft.com/v1.0/users/[email protected]/assignLicense"
headers = {
'Authorization' : 'Bearer ' + token,
'Content-Type' : 'application/json',
}
data = [
"addLicenses": [
{
"disabledPlans":[ ],
"skuId": "GUID"
}
],
"removeLicenses":[ ]
]
requests.post(url, json=data, headers=headers)
removeLicenses
является обязательным свойством. Я полагаю, что вы получаете ошибку из пустой строки (['']
). Я обновил мой пример выше, чтобы отразить дополнительные реквизиты.