Desire2Learn Valence API创建和更新部分?

时间:2014-01-23 23:19:43

标签: desire2learn valence

我正在与我们大学的SIS系统进行整合,并且我对与创建和更新部分相关的文档感到磕磕绊绊。 http://docs.valence.desire2learn.com/res/enroll.html#Section.SectionData

我可以使用路由PUT /d2l/api/lp/(version)/(orgUnitId)/sections/来创建一个名为Section 1的默认部分,其中部分代码为sec1但是当我尝试更新它或添加一个包含路径的附加部分时:PUT /d2l/api/lp/(version)/(orgUnitId)/sections/(sectionId)(带有sectionId)从我之前的PUT中获取)或POST /d2l/api/lp/(version)/(orgUnitId)/sections/

我正在使用以下块来获取我的json数据:

{
  "Name": "Section 1d",
  "Code": "Dan 101",
  "Description": {
    "Text": "",
    "Html": ""
  }
}

语法中缺少什么?

谢谢

2 个答案:

答案 0 :(得分:1)

使用Valence Learning Framework API为课程产品创建部分的方式是特殊的。假设您从空白课程开始,没有后代组织单元(没有部分,没有组,没有):

GET /d2l/api/lp/1.3/orgstructure/113459
> {"Name": "Extensibility 106",
   "Identifier": "113459", 
   "Type": {"Name": "Course Offering", 
            "Code": "Course Offering",
            "Id": 3},
   "Code": "EXT-106"}

GET /d2l/api/lp/1.3/orgstructure/113459/children
> []

使用部分属性初始化课程。您要做的第一件事是定义课程产品的部分属性:您希望在课程设置下创建哪些部分?要创建课程产品的部分属性,请使用SectionPropertyData块;这里有一个说“我希望这门课程有10个部分并随机自动注册这些部分”(EnrollmentStyle 2对应NumberOfSectionsAutoEnrollment):

{"AutoEnroll": true,
 "EnrollmentQuantity": 10,
 "EnrollmentStyle": 2,
 "RandomizeEnrollments": true}

现在,要使用这些设置初始化课程,并创建第一个默认部分,我们 PUT 阻止此路线:

PUT /d2l/api/lp/1.3/113459/sections/
> [{"SectionId":113460,
    "Name":"Section 1",
    "Description":{"Text":"","Html":""},
    "Enrollments":[]},
   ...
   {"SectionId":113469,
    "Name":"Section 10",
    "Description":{"Text":"","Html":""},
    "Enrollments":[]}
  ]

请注意,通过此次调用,我们现在已经创建了10个部分作为本课程的子级,后端服务已自动为它们生成了名称(和代码)。

在事实之后添加新部分。现在假设我们要在此课程中添加第11个部分。首先,我们需要为新部分的属性使用SectionData块:

{"Name": "Section 11",
 "Code": "Sec11",
 "Description": {"Content": "New Section Descr.", "Type": "Text} }

注意:当您创建此块以创建新部分时,您必须为RichTextInput属性使用Description类型结构。当您获取属性时从服务返回的一个部分,它使用RichText属性编写描述。这是开发者新手的常见粘性点)

然后,你 POST 阻止这条路线:

POST /d2l/api/lp/1.3/113459/sections/
> {"SectionId":113470,
   "Name":"Section 11",
   "Description":{"Text":"Description","Html":""},
   "Enrollments":[]}

您将获得新创建的部分的属性。

<强>摘要即可。所以,“为什么PUT然后POST”?是的,这有点令人困惑,但想到这一点:

  1. PUT的第一个用途是更新课程提供的“部分属性”属性(因此,当最初定义课程提供的部分属性时,作为副作用,后端创建了与这些新设置一起使用的部分组织单位。

  2. POST的第二个用途是创建一个新的组织单位(一个新的部分),并将其分配给课程提供。

答案 1 :(得分:0)

看起来你的路线和你的要求还可以。路线只有一个小变化。您需要使用文档D2L Conventions

中描述的RichTextInput字段

基本上不是:

"Description": {
   "Text": "",
   "Html": ""
}

你需要:

"Description": {
   "Content": "",
   "Type": "" (Either Text or Html)
}