A client that composes server addresses from fragments knows too much. When a route moves, the client breaks. This release has the server say where every action lives, in the response, and the client follow.
Two phases
- The server speaks Every cursor action, data-modification route, thread route and editor route arrives as a Link header, with relation names and URI templates in the standard forms, on the three cursor surfaces.
- The client listens The client stops building URLs; the form editor, print, mail and import flows were converted to follow links. Twenty-six route constants on the server side carry the names.
Why
- Routes can move A server-side change of path no longer needs a client release.
- Capabilities are visible The links present on a response are the actions the caller may take, which is what a generic client, or an agent, needs to know.
It is an old idea from the REST literature, applied to a cursor API that has thousands of screens on it.