A generic architecture for hypermedia API's