A resource: a fixed uri: or a template with {name} placeholders, and
read/2. A template resource may implement list/1 to enumerate concrete
resources. subscribe: true lets clients subscribe to updates, which the
host announces with Sake.Server.resource_updated/2.
Summary
Callbacks
@callback list(ctx :: Sake.Context.t()) :: [String.t() | map()]
@callback read(params :: map(), ctx :: Sake.Context.t()) :: {:ok, term()} | {:error, :not_found} | {:error, String.t()}
@callback spec() :: Sake.Resource.Spec.t()