'''Hypertext Application Language''' ('''HAL''') is an [[Internet Draft]] (a "work in progress") standard convention for defining [[hypermedia]] such as links to external [[web resource|resources]] within [[JSON]] or [[XML]] code. It is documented in an [[Internet Draft]] (howevera "work in progress"), with the latest version of11 HALpublished Internet-Draftthe expired10th onof NovemberOctober 12, 20162023.). The standard was initially proposed in June 2012, specifically for use with JSON,<ref>{{cite web |last1=Kelly |first1=Mike |title=JSON Hypertext Application Language |url=https://tools.ietf.org/html/draft-kelly-json-hal-00 |publisher=IETF |accessdate=16 October 2018 |date=7 June 2012}}</ref> and has since become available in two variations, JSON and XML. The two associated [[MIME]] types are media type: application/hal+xml and media type: application/hal+json.<ref>{{cite book|last1=Richardson|first1=Leonard|last2=Ruby|first2=Mike Amundsen; foreword by Sam|title=RESTful Web APIs|date=2013|publisher=O'Reilly|___location=Sebastopol, CA|isbn=978-1-4493-5806-8|edition=First|chapter=7}}</ref>
HAL was created to be simple to use and easily applicable across different [[___domain (software engineering)|domains]] by avoiding the need to impose any requirements on how the project be structured. Maintaining this minimal impact approach, HAL has enabled developers to create general-purpose [[library (computing)|libraries]] which can be easily incorporated on any [[API]] that uses HAL.{{Citation needed|reason=RFC4627 does not mention HAL|date=October 2018}}
APIs that adopt HAL simplify the use of [[open-source software|open source]] libraries and make it possible to interact with the [[application programming interface|API]] using JSON or XML. The alternative would be having to develop a [[proprietary format]] which in turn forces developers to learn how to use yet another foreign format.<ref name="stateless">{{cite web|last1=Kelly|first1=Mike|title=HAL - Hypertext Application Language A lean hypermedia type|url=httphttps://stateless.cogroup/hal_specification.html|accessdate=23 July 2014|date=2011-06-13}}</ref>
== Convention ==
HAL is structured in such a way as to represent elements based on two concepts: Resources and Links. Resources consist of [[URI]] links, embedded resources, your standard data (be it JSON or XML), and non URI links. Links have a target URI, as well as the name of the link (referred to as 'rel'), as well as optional properties designed to be mindful of deprecation and content negotiation.<ref name="stateless"/>
==Example==
Line 91:
==External links==
* [https://tools.ietf.org/html/draft-kelly-json-hal-0811 JSON Hypertext Application Language latest draft]