Skip to content

Latest commit

 

History

History
67 lines (52 loc) · 1.97 KB

File metadata and controls

67 lines (52 loc) · 1.97 KB

#hyperfriendly+json

A simple and extensible JSON hypermedia format.

media-type: "vnd/hyperfriendly+json"

The hyperfriendly+json spec adds link semantics to a JSON object. Its semantics are extendable by adding resource- and link profiles. Anyone can extend hyperfriendly+json with their own profiles.

For an introduction to hyperfriendly+json, see the wiki

##Links

A hyperfriendly+json object MUST contain a _links object. The _links object contains rels with one or more links. If a rel contains a single link it MUST be represented as an JSON object. If a rel contains multiple links it MUST be represented as a JSON array.

A link MUST contain a href which can be an absolute or a releative URI.

{
  "_links": {
    "self": {
      "href": "/users/1"
    },
    "friends": {
      "href": "/friends/1"
    },
    "alternate": [
      {
        "href": "/people/1"
      },
      {
        "href": "/customers/1"
      }
    ]
  },
  "firstName": "Bob",
  "lastName": "Anderson",
  "address": {
    "street": "Somestreet",
    "postalCode": "1337",
    "city": "Leetville"
  }
}

##Link profiles

The semantics of a link can be extended by adding a link profile to the OPTIONAL linkProfiles array. A link profile MUST be a valid URI.

##Profiles

The semantics of an entire hyperfriendly+json resource can be added through profiles. Setting a profile is as simple as adding one or more profile links pointing to a special URI.