I was reading the GH discussion on the
revision member, and there was debate about whether a MUST clause would break compatibility with 1.0 clients, since they would be unaware of said requirement.
Since this is a feature targeted for the v1.1 spec, I would read a “MUST” here as not binding for 1.0 clients.
If a MUST clause in a post-1.0 spec were considered binding for 1.0 implementations, then, obviously, no new MUSTs could ever again be added without making them expressly conditional:
A client implementing such and such feature MUST blah blah…
Is this the intent?
Considering that optional features may be further expanded in future JSON API revisions, how about some sort of uniform notation to indicate the JSON API versions that a requirement applies to? This would eliminate the need to qualify each statement separately.
For example, the section about the
revision member would be tagged with “1.1”, indicating to readers that the feature was not present in JSON API 1.0., and any MUST clauses within the section need to be interpreted in that context.