HATEOAS embeds action links in responses so clients discover available operations without hard-coded URLs.
HATEOAS
# Standard REST response
{"id":1,"name":"Alice"}
# HATEOAS response (self-describing)
{
"id": 1,
"name": "Alice",
"_links": {
"self": {"href":"/users/1","method":"GET"},
"update": {"href":"/users/1","method":"PUT"},
"delete": {"href":"/users/1","method":"DELETE"},
"posts": {"href":"/users/1/posts","method":"GET"}
}
}
# Benefits:
# - Clients discover actions at runtime
# - No hard-coded URLs in clients
# - API is self-documenting
# Formats: HAL, JSON:API, Siren