我试图将一个自定义组织的类型更改为另一个自定义组织以更正先前发生的错误。
执行:GET /d2l/api/lp/1.4/orgstructure/6770
结果:
{
"Identifier": "6770",
"Name": "Art",
"Code": "ART",
"Type": {
"Id": 101,
"Code": "Department",
"Name": "Department"
}
}
然后我根据documentation获取该数据并通过PUT /d2l/api/lp/1.4/orgstructure/6770
运行,但我将数据更改为:
{
"Identifier": "6770",
"Path": "/content/",
"Name": "Art",
"Code": "ART",
"Type": {
"Id": 103,
"Code": "Discipline",
"Name": "Discipline"
}
}
基本上只添加"路径"属性,因为它没有它发出404。以及将类型更改为Discipline而不是Department。但是,返回的对象与原始对象相同,但未更新任何类型信息。
有关如何解决此问题的任何建议?此时删除和娱乐根本不是一个可行的选择。因为这两个都是" custom"组织单位类型我认为像这样的更新不应该是困难的。
答案 0 :(得分:1)
这是文档中的疏忽,加上API的一些尴尬的演变。文档现已更新,以便更清楚地了解这种情况:
update orgunit properties call只能 更新orgunit的Name
,Code
或Path
属性,而不是Identifier
(理智地)或它是Type
。 (我不相信是一种更新组织单位类型的方法,一旦创建,即使在LMS的Web UI中 - 您可能必须创建一个新的组织单位,根据需要分配父和子关系,然后删除旧单元。)
不幸的是,必须为组织单位提供有效的Path
,simple call to fetch a single org unit's properties不会告诉您当前的内容。
如果你还不知道路径是什么,那么你需要拨打fetch back a list of org unit records的路线,找到与你的路线匹配的路线(Identifier
,或者通过匹配Code
和 Name
)等几个属性,然后将发回的记录中发送的Path
发回去。 (请注意,您强烈建议通过过滤类型,代码和/或名称来调用范围以获取组织单位记录列表,并且呼叫被分页,因此您可能有如果你没有充分调整范围,找到有问题的特定组织单位记录,可以多次进行。)