Scott's Workblog

scott.bradley.wilson@gmail.com


attention!
This blog has moved! Go to my new blog!


January 31, 2005

Enterprise Services - the REST version

I've knocked together a document providing a simple interface to the IMS Enterprise Web Services spec using a REST-style HTTP+XML approach, rather than requiring SOAP and WSDL.

Its not intended as a replacement for the IMS SOAP binding, but instead may be useful where course enrolments are needed by applications in a read-only fashion, as in "get me the list of everyone on course x", rather than requiring the full transaction capabilities of ESWS.

The details are in this document (PDF, 80k), but in summary what I've set out is a fairly simple URL syntax similar to the SRU specification for repositories.

For example, a request for a list of people at Bangor University on a course with identifier "yce1110" would be:

http://esu.bangor.ac.uk/?operation=readPersonsForGroup&sourcedId=bangor.ac.uk:yce1110

This would return either a list of ims:Person objects in XML, or a ims:StatusInfo block, which would describe any error conditions as per the ESWS spec.

Another use is obtaining very basic course information, for example:

http://esu.cetis.ac.uk/?operation=readGroup&sourcedId=bangor.ac.uk:PSY100

... would return something like ...

<group>
    <groupType>
      <scheme>http://www.mydomain.org/vocabs/groups.xml</scheme>
      <typeValue>
        <type>Module</type>
        <level>1</level>
      </typeValue>
   </groupType>
   <url>http://www.mydomain.org/modules/psychology/100/</url> 
   <description>
      <descShort>PSY100</descShort>
      <descLong>Introduction to Psychology</descLong>  
   </description> 
   <extensionField>
       <fieldName>feed-rss</fieldName>
       <fieldType>URL</fieldType> 
       <fieldValue>http://www.mydomain.org/modules/psychology/100/news.xml</fieldValue>   
   </extensionField>
   <extensionField>
       <fieldName>icalendar</fieldName>
       <fieldType>URL</fieldType>
       <fieldValue>http://www.mydomain.org/modules/psychology/100/timetable.ics</fieldValue>   
   </extensionField>
</group>

Note the use of extension fields for linking RSS news feeds and iCalendar timetables with the course.

In future, I think there is a need to harmonize the use of FOAF, vCard, and Enterprise for representing people in educational contexts, and the same for Groups and Courses.

Perhaps one extension could be to allow formatting choices for requesting person info, as in:

http://esu.cetis.ac.uk/?operation=readPerson&sourcedId=bangor.ac.uk:10198276&format=foaf

Which corresponds to the SRU approach of requesting metadata in DC or other formats in a result set.

In the meantime, we can at least use the IMS Enterprise spec for exchanging fairly basic contextual information about courses and activities.

main archive