0

我正在尝试将一个自定义 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"
   }
}

本质上只添加一个“路径”属性,因为它在没有它的情况下发出 404。以及将类型更改为学科而不是部门。但是,返回的对象与原始对象相同,但没有更新任何类型信息。

有关如何解决此问题的任何建议?此时删除和重新创建根本不是一个可行的选择。因为这两种都是“自定义”组织单位类型,所以我想像这样的更新应该不难。

4

1 回答 1

1

这是文档中的疏忽,再加上 API 的演变有些尴尬。文档现已更新,以更清楚地说明这种情况:

update orgunit properties 调用只能更新 orgunit 的Name属性CodePath而不是 it's Identifier(明智地)或 it's Type。(我不相信有一种方法可以更新组织单位的类型,一旦创建,即使在 LMS 的 Web UI 中也是如此——您可能必须创建一个新的组织单位,并根据需要重新分配父子关系,然后丢弃旧单元。)

不幸的是,您必须为组织单位提供有效的、有益Path的,并且获取单个组织单位属性的简单调用不会告诉您当前的属性是什么。

如果您还不知道路径是什么并且应该是什么,那么您需要调用该路径以获取组织单位记录列表,找到与您的记录匹配的确切路径(通过Identifier,或通过匹配几个Code ) 之类的属性Name,然后将Path在发送回那里的记录中分配的那个发回。(请注意,强烈建议您通过过滤类型、代码和/或名称来确定调用范围以取回组织单位记录列表,并且调用是分页的,因此您可能需要多次处理,如果您没有充分缩小通话范围,无法找到有问题的特定组织单位记录。)

于 2014-05-16T15:12:07.303 回答