Изменить тип OrgUnit через Valence

Я пытаюсь изменить тип одного пользовательского orgunit на другой, чтобы исправить ошибку, которая была сделана ранее.

Выполнение: GET /d2l/api/lp/1.4/orgstructure/6770

Результаты в:

{
   "Identifier": "6770",
   "Name": "Art",
   "Code": "ART",
   "Type": {
       "Id": 101,
       "Code": "Department",
       "Name": "Department"
   }
}

Затем я беру эти данные и провожу их через PUT /d2l/api/lp/1.4/orgstructure/6770 однако согласно документации я изменяю данные на:

{
   "Identifier": "6770",
   "Path": "/content/",
   "Name": "Art",
   "Code": "ART",
   "Type": {
       "Id": 103,
       "Code": "Discipline",
       "Name": "Discipline"
   }
}

По сути, только добавление свойства "Path", потому что оно выдает 404 без него. А также изменение типа на дисциплину, а не отдел. Однако возвращаемый объект идентичен оригиналу без обновления какой-либо информации о типе.

Любые предложения, как это исправить? Удаление и отдых на этом этапе вообще не осуществимы. Поскольку оба они являются "пользовательскими" типами организационных единиц, я думаю, что обновление не должно быть трудным.

1 ответ

Решение

Это упущение в документации в сочетании с несколько неловкой эволюцией API. Теперь документация была обновлена, чтобы лучше понять эту ситуацию:

Вызов update orgunit properties может только обновить Name, Code, или же Path свойства orgunit, а не это Identifier (разумно) или это Type, (Я не верю, что существует способ обновить тип организационного подразделения после его создания даже в веб-интерфейсе для LMS - вам, вероятно, придется создать новый организационный элемент, при необходимости переназначить родительские и дочерние отношения, а затем бросьте старый блок.)

К сожалению, вы должны предоставить действительный, хороший Path для подразделения org, и простой вызов для извлечения свойств одного подразделения org не скажет вам, какой из них является текущим.

Если вы еще не знаете, что это за путь и каким он должен быть, вам нужно будет вызвать маршрут, чтобы получить список записей подразделений организации, найти точный, который соответствует вашему (по Identifier или путем сопоставления нескольких свойств, таких как Code а также Name), а затем отправить обратно Path распределено в записи, отправленной туда. (Обратите внимание, что вам настоятельно рекомендуется охватить вызов для извлечения списка записей организационных единиц путем фильтрации по типу, коду и / или имени, и вызов разбивается на страницы, поэтому вам может потребоваться выполнить его несколько раз, если Вы не успеваете уменьшить вызов, чтобы найти конкретную запись о органе, о которой идет речь.)

Другие вопросы по тегам