How to get job content in Sakai via REST

In Sakai, I successfully get Assignemnt through the url: http://xxx/direct/assignment/ASSIGNMENTID.xml . However, there is no detailed context in this object (I mean the instruction of the teacher of the assignment). In XML, there is only a content element contentReference .

 <contentReference>/assignment/c/mercury/b0de53c7-09b6-4ba0-964b-cb0a9e5a028d</contentReference> 

When I followed this link, I got 404 error:

Attempted to access the entity URL path (/ assign / c / mercury / b0de53c7-09b6-4ba0-964b-cb0a9e5a028d) for an entity (/ assign / c) that does not exist

I tried the Google Doc for API on Sakai entities, but it turned out to be out of date (some URLs are incorrect in my Sakai 2.9.3 demo). Then I tried to dig into the Sakai source code. However, I only found the file on the rsmart server:

In it I found:

  throw new IllegalArgumentException( "Must include context and assignmentId in the path (" + view + "): eg /assignment/a/{context}/{assignmentId}"); 

I tried using this url on my server to get detailed content (especially teacher instruction). Another 404 error with the same content as above.

Finally, I found that /assignment/a/ might be a misspelling /assignment/annc/{context}/{assignmentId} . So now I sent:

 http://localhost:8080/direct/assignment/annc/mercury/403d28b4-e152-463d-a615-972db97d34d3.xml 

Another error appears:

HTTP Status 500 - EntityEncodingException: cannot process the output request for xml format for this path (/assignment/annc/mercury/403d28b4-e152-463d-a615-972db97d34d3.xml) for the prefix (assignment) for the object (/ assignment) / annc) , request url (/assignment/annc/mercury/403d28b4-e152-463d-a615-972db97d34d3.xml): Failure in the internal output encoding of the object: / assign / annc

Any idea on the url to get these teacher instructions through RESTful? thanks.


XML job data.

 <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> 
+7
java rest sakai
source share
1 answer

NOTE. . This answer is for Sakai 10. If you have an older version, you will need to add some new features manually that were added to the Keitai project ( https://jira.sakaiproject.org/browse/SAK-23358 ).

Using Sakai 10.x Night Server:

 http://nightly2.sakaiproject.org:8081/portal 

And a site with the following id:

 61a1ebbd-e507-4ca3-8f88-65abca0803d9 

This URL will receive a list of tasks in the course:

 http://nightly2.sakaiproject.org:8081/direct/assignment/site/61a1ebbd-e507-4ca3-8f88-65abca0803d9.json 

(which returns JSON as shown below)

 {"entityPrefix": "assignment", "assignment_collection": [ { "access": { }, "attachments": [], "authorLastModified": "admin", "authors": [], "closeTime": { "display": "Jun 11, 2014 5:00 pm", "time": 1402520400000 }, "closeTimeString": "Jun 11, 2014 5:00 pm", "content": null, "contentReference": "\/assignment\/c\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/1fd9f025-2974-48d1-bcb5-ef47c4e89a30", "context": "61a1ebbd-e507-4ca3-8f88-65abca0803d9", "creator": "admin", "dropDeadTime": { "display": "Jun 11, 2014 5:00 pm", "time": 1402520400000 }, "dropDeadTimeString": "Jun 11, 2014 5:00 pm", "dueTime": { "display": "Jun 11, 2014 5:00 pm", "time": 1402520400000 }, "dueTimeString": "Jun 11, 2014 5:00 pm", "groups": [], "id": "8d96871c-8dcb-4963-b74a-f478dee53142", "instructions": "<p>This is an assignment<\/p>", "openTime": { "display": "Jun 4, 2014 12:00 pm", "time": 1401897600000 }, "openTimeString": "Jun 4, 2014 12:00 pm", "position_order": 0, "section": "", "status": "Open", "timeCreated": { "display": "Jun 4, 2014 11:30 pm", "time": 1401939011264 }, "timeLastModified": { "display": "Jun 4, 2014 11:30 pm", "time": 1401939011286 }, "title": "AZ assignment", "draft": false, "entityReference": "\/assignment\/8d96871c-8dcb-4963-b74a-f478dee53142", "entityURL": "http:\/\/nightly2.sakaiproject.org:8081\/direct\/assignment\/8d96871c-8dcb-4963-b74a-f478dee53142", "entityId": "8d96871c-8dcb-4963-b74a-f478dee53142", "entityTitle": "AZ assignment" } ]} 

From this, you can find the destination identifier in the list (which can also be obtained in other ways), and then return the data of the same destination like this:

 http://nightly2.sakaiproject.org:8081/direct/assignment/item/8d96871c-8dcb-4963-b74a-f478dee53142.json 

(which returns JSON as shown below)

 { "access": { }, "attachments": [], "authorLastModified": "admin", "authors": [], "closeTime": { "display": "Jun 11, 2014 5:00 pm", "time": 1402520400000 }, "closeTimeString": "Jun 11, 2014 5:00 pm", "content": null, "contentReference": "\/assignment\/c\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/1fd9f025-2974-48d1-bcb5-ef47c4e89a30", "context": "61a1ebbd-e507-4ca3-8f88-65abca0803d9", "creator": "admin", "dropDeadTime": { "display": "Jun 11, 2014 5:00 pm", "time": 1402520400000 }, "dropDeadTimeString": "Jun 11, 2014 5:00 pm", "dueTime": { "display": "Jun 11, 2014 5:00 pm", "time": 1402520400000 }, "dueTimeString": "Jun 11, 2014 5:00 pm", "groups": [], "id": "8d96871c-8dcb-4963-b74a-f478dee53142", "instructions": "<p>This is an assignment<\/p>", "openTime": { "display": "Jun 4, 2014 12:00 pm", "time": 1401897600000 }, "openTimeString": "Jun 4, 2014 12:00 pm", "position_order": 0, "section": "", "status": "Open", "timeCreated": { "display": "Jun 4, 2014 11:30 pm", "time": 1401939011264 }, "timeLastModified": { "display": "Jun 4, 2014 11:30 pm", "time": 1401939011286 }, "title": "AZ assignment", "draft": false, "entityReference": "\/assignment\/8d96871c-8dcb-4963-b74a-f478dee53142", "entityURL": "http:\/\/nightly2.sakaiproject.org:8081\/direct\/assignment\/8d96871c-8dcb-4963-b74a-f478dee53142", "entityId": "8d96871c-8dcb-4963-b74a-f478dee53142", "entityTitle": "AZ assignment" } 
+7
source share

All Articles