Skip to content

Instantly share code, notes, and snippets.

@kevinswiber
Created July 7, 2012 14:56
Show Gist options
  • Select an option

  • Save kevinswiber/3066768 to your computer and use it in GitHub Desktop.

Select an option

Save kevinswiber/3066768 to your computer and use it in GitHub Desktop.
JSON Siren vs. HAL Representations
{
"_links": {
"self": { "href": "/orders" },
"next": { "href": "/orders?page=2" },
"find": { "href": "/orders{?id}", "templated": true }
},
"_embedded": {
"orders": [{
"_links": {
"self": { "href": "/orders/123" },
"basket": { "href": "/baskets/98712" },
"customer": { "href": "/customers/7809" }
},
"total": 30.00,
"currency": "USD",
"status": "shipped",
},{
"_links": {
"self": { "href": "/orders/124" },
"basket": { "href": "/baskets/97213" },
"customer": { "href": "/customers/12369" }
},
"total": 20.00,
"currency": "USD",
"status": "processing"
}]
},
"currentlyProcessing": 14,
"shippedToday": 20
}
{
"class": "orders",
"properties": {
"currentlyProcessing": 14,
"shippedToday": 20
},
"entities": [
{
"class": "order list-item",
"rel": "order",
"properties": {
"total": 30.00,
"currency": "USD",
"status": "shipped"
},
"entities": [
{ "rel": "basket", "href": "/baskets/98712" },
{ "rel": "customer", "href": "/customers/7809" }
],
"links": [{ "rel": "self", "href": "/orders/123" }]
},
{
"class": "order list-item",
"rel": "order",
"properties": {
"total": 20.00,
"currency": "USD",
"status": "processing"
},
"entities": [
{ "rel": "basket", "href": "/baskets/98713" },
{ "rel": "customer", "href": "/customers/12369" }
],
"links": [{ "rel": "self", "href": "/orders/124" }]
}
],
"actions": [{
"class": "find-order",
"href": "/orders",
"fields": [{ "name": "id", "type": "number" }]
}],
"links": [
{ "rel": "self", "href": "/orders" },
{ "rel": "next", "href": "/orders?page=2" }
]
}
@cappelaere

Copy link
Copy Markdown

Is a "class" a string as in provide example or must be an array as in spec (spec says "MUST") ? [or can be either but spec needs to not say MUST]
Same question for rels.
Many thanks.

@tobnee

tobnee commented Jun 23, 2014

Copy link
Copy Markdown

A minor issue with the HAL resource is that it is not valid JSON because of this comma at the line end (the draft has the same issue)

@zdennis

zdennis commented Aug 15, 2014

Copy link
Copy Markdown

@cappelaere, it looks like this was created one month before @kevinswiber moved class and rel to be arrays so it's likely an out of date aspect of this gist. kevinswiber/siren@9972c84

@redben

redben commented Sep 2, 2014

Copy link
Copy Markdown

In my opinion HAL is the most straightforward... well apart from the _embeded concept which can become cumbersome sometimes. So I like HAL - _embeded !

@nduane

nduane commented Feb 11, 2015

Copy link
Copy Markdown

The SIREN representation doesn't seem equivalent to the HAL one. The HAL representation has an embedded representation called "orders" which is an array of orders. The SIREN representation has two embedded resources, unfortunately unnamed, which are order list-item.

@kirkins

kirkins commented Dec 29, 2016

Copy link
Copy Markdown

Anyone know which json standard has become most popular? I'm writing a bunch of json schema for various multimedia apps but standardization among units is lacking. Will probably go with something closer to Siren.

You may find this useful and/or interesting: http://json-schema.org/latest/json-schema-core.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment