Published on May 25, 2012

I would like to introduce the term WebPack.  A WebPack is a shareable implementation of link relations, media types and other types that provides a client application with sufficient semantics to be able to communicate with a Web API.

Depending on how the semantics are shared, a WebPack may be used in a RESTFul (level 3) or Hypermedia API, or it could be used in a HTTP based API.

It should never be required to use an API’s WebPack to consume the API.  The WebPack is simply there to make it easier.

A WebPack is different than a API client library in that it does not have any knowledge of the URLs/Resources exposed by the API.  However, it may contain information about the “types” of those Resources.

Ideally a WebPack for an API should be as small as possible as it is an indicator of API specific coupling.  In a perfect world there would be no need for WebPacks because APIs would just reuse existing media types and link relations to communicate semantics.  Until that richness of shared semantics exists, WebPacks allow us to be specific about what semantics are being shared between client and server.  WebPacks can be versioned to facilitate evolution of the API without having to resort to all or nothing URL versioning techniques.

I will be talking more about this in the future, I just wanted to lay claims to the term Smile.