In Sakai, I successfully get a Assignemnt via url: http://xxx/direct/assignment/ASSIGNMENTID.xml
. However, in this entity, there is no detailed context (I mean, the teacher's instruction of assignment). There's only a content contentReference
element in XML.
<contentReference>/assignment/c/mercury/b0de53c7-09b6-4ba0-964b-cb0a9e5a028d</contentReference>
When I followed this link, I got 404 Error:
Attempted to access an entity URL path (/assignment/c/mercury/b0de53c7-09b6-4ba0-964b-cb0a9e5a028d) for an entity (/assignment/c) that does not exist
I tried Google for API document on Sakai entity, but it turns out to be out dated (some url are wrong on my demo version of Sakai 2.9.3). Then I tried digging into the source code of Sakai. However, what I found is only a file on rsmart server:
AssignmentEntityProvider.java :
In it I found:
throw new IllegalArgumentException(
"Must include context and assignmentId in the path ("
+ view
+ "): e.g. /assignment/a/{context}/{assignmentId}");
I tried using this URL on my server to get the detailed content(especially the teacher's instruction). Still another 404 Error with the same content as above.
At last, I found that the /assignment/a/
might be a mis-spelling of /assignment/annc/{context}/{assignmentId}
. So now I sent:
http://localhost:8080/direct/assignment/annc/mercury/403d28b4-e152-463d-a615-972db97d34d3.xml
Another error pop out:
HTTP Status 500 - EntityEncodingException: Unable to handle output request for format xml for this path (/assignment/annc/mercury/403d28b4-e152-463d-a615-972db97d34d3.xml) for prefix (assignment) for entity (/assignment/annc), request url (/assignment/annc/mercury/403d28b4-e152-463d-a615-972db97d34d3.xml): Failure during internal output encoding of entity: /assignment/annc
Any idea about the url to get the teacher's instruction data via RESTful? Thx.
The XML data of an assignment.
<assignment type='bean' size='29'>
<access type='bean' size='0'>
</access>
<attachments type='collection' size='1'>
<decoratedattachment type='bean' size='2'>
<name>LC Circuit (show name).png</name>
<url>http://localhost:8080/access/content/attachment/mercury/%E4%BD%9C%E4%B8%9A/a11ef34a-0578-433a-ba7e-9c3bad948bf5/1111.png</url>
</decoratedattachment>
</attachments>
<authorLastModified>admin</authorLastModified>
<authors type='collection' size='0'>
</authors>
<closeTime type='bean' size='2'>
<display>2014-9-12 下午5:00</display>
<time type='number'>1410512400000</time>
</closeTime>
<closeTimeString>2014-9-12 下午5:00</closeTimeString>
<content/>
<contentReference>/assignment/c/mercury/b0de53c7-09b6-4ba0-964b-cb0a9e5a028d</contentReference>
<context>mercury</context>
<creator>admin</creator>
<dropDeadTime type='bean' size='2'>
<display>2014-8-12 下午5:00</display>
<time type='number'>1407834000000</time>
</dropDeadTime>
<dropDeadTimeString>2014-8-12 下午5:00</dropDeadTimeString>
<dueTime type='bean' size='2'>
<display>2014-8-12 下午5:00</display>
<time type='number'>1407834000000</time>
</dueTime>
<dueTimeString>2014-8-12 下午5:00</dueTimeString>
<groups type='collection' size='0'>
</groups>
<id>403d28b4-e152-463d-a615-972db97d34d3</id>
<openTime type='bean' size='2'>
<display>2014-5-5 下午12:00</display>
<time type='number'>1399262400000</time>
</openTime>
<openTimeString>2014-5-5 下午12:00</openTimeString>
<position_order type='number'>0</position_order>
<section></section>
<status>开始</status>
<timeCreated type='bean' size='2'>
<display>2014-5-5 上午11:33</display>
<time type='number'>1399260782158</time>
</timeCreated>
<timeLastModified type='bean' size='2'>
<display>2014-5-6 上午8:46</display>
<time type='number'>1399337194163</time>
</timeLastModified>
<title>A test assign</title>
<draft type='boolean'>false</draft>
<entityReference>/assignment/403d28b4-e152-463d-a615-972db97d34d3</entityReference>
<entityURL>http://localhost:8080/direct/assignment/403d28b4-e152-463d-a615-972db97d34d3</entityURL>
<entityId>403d28b4-e152-463d-a615-972db97d34d3</entityId>
<entityTitle>A test assign</entityTitle>
</assignment>
NOTE: This answer is for Sakai 10. If you have an older version you will need to add some of new features manually that were added in project Keitai (https://jira.sakaiproject.org/browse/SAK-23358).
Using the Sakai 10.x nightly server:
And a site with the following id:
This URL will get a list of the assignments in a course:
(which returns JSON as shown below)
From that you can find the id of an assignment in the list (which is also possible to get other ways) and then return the data of a single assignment like so:
(which returns JSON as shown below)