HATEOAS is the constraint that a client should discover what it can do from the responses it receives, rather than from URLs hard-coded against documentation. Each representation carries links, and those links are what drives the client from one state to the next.
A response includes a links structure — commonly `_links` — naming the available transitions and their URLs: self, next, cancel, approve. A client follows the link named for what it wants to do. Because the available links depend on the current state, an order that has shipped simply does not carry a cancel link, and the client needs no rule of its own about when cancelling is allowed.
That HATEOAS is academic and nobody ships it. Partial HATEOAS is everywhere: the `next` URL in a paginated response is exactly this idea, and a client that follows it rather than incrementing a page counter is already benefiting — it keeps working when the server moves to cursor pagination.
The Protocol Lab document endpoints attach `_links` to every item. The Bank transaction list uses a cursor the client is meant to follow rather than construct.
All glossary terms · Testing techniques · All 39 mock REST APIs