Я пытаюсь обновить поля, связанные с элементом списка, через Graph Explorer, https://developer.microsoft.com/en-us/graph/graph-explorer (или вызов REST API). Для одного из полей его значением может быть один элемент из набора терминов (управляемые метаданные). Я вижу каждый из элементов в наборе терминов и получаю каждый термин, когда я посещаю https://XXX.sharepoint.com/Lists/TaxonomyHiddenList/AllItems.aspx.
Я пытаюсь сделать запрос PATCH с URL-адресом типа https://graph.microsoft.com/beta/sites/XXX.sharepoint.com,FOO,BAR/drive/root/children/Test%20Document.txt/listItem/fields (или https://graph.microsoft.com/v1.0/sites/XXX.sharepoint.com,FOO,BAR/drive/list/items/1/fields), чтобы определить поля, связанные с конкретным элементом
Чтобы обновить поле CakeType, я установил тело запроса следующим образом:
{
"CakeType": {
"Label": "Apple",
"TermGuid": "3a3ad73f-94ca-4d1e-a25c-XXXX",
"WssId": -1
}
}
Когда я затем нажимаю кнопку «Выполнить запрос», я получаю исключение InvalidClientQueryException с сообщением «Обнаружено значение без имени типа, а ожидаемый тип недоступен. Когда указана модель, каждое значение в полезной нагрузке должно иметь тип, который может быть либо указан в полезной нагрузке, явно вызывающим или неявно выведен из родительского значения. "
Итак, я пытался выяснить, какой тип данных указывать и как ... В различных примерах в Интернете я видел добавление поля с именем __metadata и других, добавляющих @ odata.type, например CakeType @ odata. введите для случая здесь. Я попытался добавить эти строки в CakeType JSON и вне его, для всей структуры. Ни один не работал ...
{
"CakeType": {
"__metadata" : {"type" : "SP.Taxonomy.TaxonomyFieldValue" },
"Label": "Apple",
"TermGuid": "3a3ad73f-94ca-4d1e-a25c-XXXX",
"WssId": -1
}
}
или
{
"__metadata" : {"type" : "SP.Taxonomy.TaxonomyFieldValue" },
"CakeType": {
"Label": "Apple",
"TermGuid": "3a3ad73f-94ca-4d1e-a25c-XXXX",
"WssId": -1
}
}
Я также пытался использовать имя поля в типе, который, как мне показалось, я где-то видел ...
"__metadata" : {"type" : "SP.Data.CakeType" },
и попробовал
"CakeType@odata.type" : "SP.Taxonomy.TaxonomyFieldValue" ,
"CakeType@odata.type" : "SP.Data.CakeType",
"@odata.type" : "SP.Taxonomy.TaxonomyFieldValue" ,
Единственное, что выдало другое сообщение об ошибке, это когда я поместил «CakeType@odata.type»: «SP.Taxonomy.TaxonomyFieldValue», сразу после открытия {или без части CakeType внутри CakeType ...
{
"CakeType@odata.type" : "SP.Taxonomy.TaxonomyFieldValue" ,
"CakeType": {
"Label": "Apple",
"TermGuid": "3a3ad73f-94ca-4d1e-a25c-XXXX",
"WssId": -1
}
}
и
{
"CakeType": {
"@odata.type" : "SP.Taxonomy.TaxonomyFieldValue" ,
"Label": "Apple",
"TermGuid": "3a3ad73f-94ca-4d1e-a25c-XXXXX",
"WssId": -1
}
}
Каждый из них выдавал ошибку «Тип с именем« SP.Taxonomy.TaxonomyFieldValue »не может быть разрешен моделью. Когда модель доступна, каждое имя типа должно разрешаться в допустимый тип».
Это заставляет меня думать, что у меня правильное имя поля, но неправильный тип ...
Итак ... что я должен называть типом, чтобы я мог обновить поле управляемых метаданных? или ... каким должен быть JSON, если указанная выше структура слишком далека ... или как я могу обновить поле строго, используя Graph API.
Спасибо.
Я подумал, что поиск расширений схемы может помочь (GET https://graph.microsoft.com/v1.0/schemaExtensions), но это не ...
В конечном итоге я пытаюсь обновить поле управляемых метаданных из Java с помощью классов в com.microsoft.graph .... так что, если я смогу найти нужные вещи с помощью Graph Explorer, я смогу перейти к Джава. Я видел несколько примеров таких в других языках, но не могу найти правильный способ сделать то же самое в Java.