2014-05-14 50 views
0

我在嘗試將一個自定義orgunit的類型更改爲另一個自定義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運行它每documentation但是我改變數據爲:

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

基本上只添加一個「路徑」屬性,因爲它沒有它就發出404。以及改變類型爲紀律而不是部門。但是,返回的對象與原始對象相同,而不更新任何類型信息。

有關如何解決此問題的任何建議?在這一點上刪除和娛樂根本不是一個可行的選擇。因爲這兩個都是「自定義」組織單位類型,我會想象這樣的更新應該不難。

回答

1

這是文檔中的一個疏忽,加上API的一些尷尬演變。該文件目前已更新爲在這種情況更加清晰:

update orgunit properties call可以更新機構單位的NameCode,或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或匹配多個屬性,如CodeName),然後發送回Path發送回來的記錄。 (請注意,您是強烈建議通過過濾類型,代碼和/或名稱來調用以獲取組織單位記錄列表,並且調用是分頁的,因此您可能需要繼續處理幾個次數,如果你沒有足夠的範圍下調查,找到特定組織單位記錄)