Representational state transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web.

"REST has emerged over the past few years as a predominant Web service design model. REST has increasingly displaced other design models such as SOAP and WSDL due to its simpler style.

The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation. Fielding is one of the principal authors of the Hypertext Transfer Protocol (HTTP) specification versions 1.0 and 1.1." - wikipedia

mydigitalstructure & REST

Taking a step back, mydigitalstructure can be used in both a RPC and REST architecture.   A lot of the mydigitalstructure documention and examples are based on RPC principles.

REST sits above this and using hypermedia and some payload standards creates the "story" of the represented information via hyperlinks/links.  mydigitalstructure has an single entry point that allows it to be consumed into a RESTful enviroment.

The REST client (eg web-browser, iPhone...) sends a request over HTTP/HTTPS to either:

  • request information (eg list of contacts)
  • change the state of some information (eg change the phone number of a contact). 

Based on the Richardson Maturity Model, is a Level 3 service.

We currently have a project underway to increase the maturity level of the mydigitalstructure REST interface.

You can use a hybrid rpc-rest methodology - eg getting not logged on response as a 401 http status.  To do this, either:

  • Set X-HTTP-myds-rest-level equal to "1" in the request header
  • Add &rest=1 to the data payload


/image - get an image using attachmentlink

/download - download a file using attachmentlink

/rest - entity (object) resource URIs


More information:




GET To retrieve an entity (search)
POST To create an entity (add)
PUT To update an entity
DELETE To delete an entity (remove)
HEAD To get an entities meta data
Accept Return format set as MIME Type
200 OK Default
201 Created When a new entity is created (added) via a POST.
202 Accepted When an existing entity is updated via a PUT.
304 Not Modified If exception (ER) generated on existing entity via a PUT.
401 Not Authorised No rights.
404 Not Found Resource the URI is referring to does not exist.
406 Not Acceptable When mandatory data is missing or an in-model rule as been violated.



Every time you retrieve an instance of a resource and request the "modifieddate" attribute, there will be a http header "Last Modified" included in the response - this header contains the last modified time of the resource at rest on the mydigitalstructure service.

If at a later time you want to check if the local instance you have is the latest, you include "If-Modified-Since" with the time returned in the original "Last-Modified" http header.

If the resource at rest on mydigitalstructure has not been modified since the time sent a status of 304 will be returned with no body contents.

more on...


Example using 1blankspace advancedsearch object

var oSearch = new AdvancedSearch();
oSearch.method = 'CONTACT_PERSON_SEARCH';
oSearch.addFilter('id', 'EQUAL_TO', '1');
oSearch.headers = {"If-Modified-Since": "Fri, 15 Aug 2014 10:22:41 GMT"}
oSearch.send(function(data) {});