A provider SHOULD consider metadata support in its payloads. This has the advantage of supporting for more dynamic/flexible clients that usually rely on metadata to interact with users. However, if the particular use case does not require metadata and its support would burden the development effort, a provider need not implement it.
If a prototype for the targeted resource exists, the provider MUST return it in the payload for a GET request with the '?includePrototype=true' specification; if no prototype exists, the specification has no effect.
The amount of metadata returned is a provider specific decision. A reasonable expectation is that, if prototypes are supported, the embedded metadata would consist only of overrides to the prototype.
A consumer MAY leverage the metadata existent in a response. If it does so then, unless otherwise specified in the underlying contract:
- If a prototype exists, then this MUST be retrieved and the merge process MUST be applied.
- The substitution process MUST be applied.