Collection+JSON - Examples
Description
This page contains examples of valid Collection+JSON documents.
1.
Minimal Representation
Below is an example of a minimal Collection+JSON document. All responses MUST contain at least a valid collection object.
{ "collection" : { "version" : "1.0", "href" : "http://example.org/friends/" } }
2.
Collection Representation
A typical Collection+JSON will contain a set of links, list of items, a queries collection, and a template object.
{ "collection" : { "version" : "1.0", "href" : "http://example.org/friends/", "links" : [ {"rel" : "feed", "href" : "http://example.org/friends/rss"} ], "items" : [ { "href" : "http://example.org/friends/jdoe", "data" : [ {"name" : "full-name", "value" : "J. Doe", "prompt" : "Full Name"}, {"name" : "email", "value" : "jdoe@example.org", "prompt" : "Email"} ], "links" : [ {"rel" : "blog", "href" : "http://examples.org/blogs/jdoe", "prompt" : "Blog"}, {"rel" : "avatar", "href" : "http://examples.org/images/jdoe", "prompt" : "Avatar", "render" : "image"} ] }, { "href" : "http://example.org/friends/msmith", "data" : [ {"name" : "full-name", "value" : "M. Smith", "prompt" : "Full Name"}, {"name" : "email", "value" : "msmith@example.org", "prompt" : "Email"} ], "links" : [ {"rel" : "blog", "href" : "http://examples.org/blogs/msmith", "prompt" : "Blog"}, {"rel" : "avatar", "href" : "http://examples.org/images/msmith", "prompt" : "Avatar", "render" : "image"} ] }, { "href" : "http://example.org/friends/rwilliams", "data" : [ {"name" : "full-name", "value" : "R. Williams", "prompt" : "Full Name"}, {"name" : "email", "value" : "rwilliams@example.org", "prompt" : "Email"} ], "links" : [ {"rel" : "blog", "href" : "http://examples.org/blogs/rwilliams", "prompt" : "Blog"}, {"rel" : "avatar", "href" : "http://examples.org/images/rwilliams", "prompt" : "Avatar", "render" : "image"} ] } ], "queries" : [ {"rel" : "search", "href" : "http://example.org/friends/search", "prompt" : "Search", "data" : [ {"name" : "search", "value" : ""} ] } ], "template" : { "data" : [ {"name" : "full-name", "value" : "", "prompt" : "Full Name"}, {"name" : "email", "value" : "", "prompt" : "Email"}, {"name" : "blog", "value" : "", "prompt" : "Blog"}, {"name" : "avatar", "value" : "", "prompt" : "Avatar"} ] } } }
3.
Item Representation
An item response will usually look like a collection representation, but contain only one item
The server MAY not return the queries or template properties within a response, but include annotated links instead.
{ "collection" : { "version" : "1.0", "href" : "http://example.org/friends/", "links" : [ {"rel" : "feed", "href" : "http://example.org/friends/rss"}, {"rel" : "queries", "href" : "http://example.org/friends/?queries"}, {"rel" : "template", "href" : "http://example.org/friends/?template"} ], "items" : [ { "href" : "http://example.org/friends/jdoe", "data" : [ {"name" : "full-name", "value" : "J. Doe", "prompt" : "Full Name"}, {"name" : "email", "value" : "jdoe@example.org", "prompt" : "Email"} ], "links" : [ {"rel" : "blog", "href" : "http://examples.org/blogs/jdoe", "prompt" : "Blog"}, {"rel" : "avatar", "href" : "http://examples.org/images/jdoe", "prompt" : "Avatar", "render" : "image"} ] } ] } }
4.
Queries Representation
To reduce the size of the response representation, servers MAY return a link to the queries array for a collection. Clients can then request the queries representation directly.
{ "collection" : { "version" : "1.0", "href" : "http://example.org/friends/", "queries" : [ {"rel" : "search", "href" : "http://example.org/friends/search", "prompt" : "Search" "data" : [ {"name" : "search", "value" : ""} ] } ] } }
5.
Template Representation
To reduce the size of the response representation, servers MAY return a link to the template object for a collection. Clients can then request the template representation directly.
{ "collection" : { "version" : "1.0", "href" : "http://example.org/friends/", "template" : { "data" : [ {"name" : "full-name", "value" : "", "prompt" : "Full Name"}, {"name" : "email", "value" : "", "prompt" : "Email"}, {"name" : "blog", "value" : "", "prompt" : "Blog"}, {"name" : "avatar", "value" : "", "prompt" : "Avatar"} ] } } }
6.
Error Representation
When the server encounters an error, it MAY return an error object.
{ "collection" : { "version" : "1.0", "href" : "http://example.org/friends/", "error" : { "title" : "Server Error", "code" : "X1C2", "message" : "The server have encountered an error, please wait and try again." } } }
7.
Write Representation
When sending data to the server, clients should fill in the template object and use that as the body of an HTTP POST (for "create") or HTTP PUT ("update") request. See Reading and Writing Data for more details.
{ "template" : { "data" : [ {"name" : "full-name", "value" : "W. Chandry"}, {"name" : "email", "value" : "wchandry@example.org"}, {"name" : "blog", "value" : "http://example.org/blogs/wchandry"}, {"name" : "avatar", "value" : "http://example.org/images/wchandry"} ] } }
Note that only the template object SHOULD be sent (it does not need to be wrapped in a collection object) and that the only properties needed for each data element are the name and value properties.
Update History
- 2011-05-20
Initial post