-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IS-04 Sender "manifest_href" for IS-07 Senders #38
Comments
If I am right in saying this field is used only for old IS-04 connection management, this might be discussed together with the deprecation of that feature. Unlike |
I think I agree, better not to repurpose this. One precedent we have is the issue of In our case, we really want a similar relaxation, to make |
Actually, I had forgotten that @andrewbonney has already added some good documentation to IS-04 v1.3-dev on this topic, since the problem of JSON values from v1.x that don't conform to earlier versions now includes |
I hadn't clocked that an empty string would evaluate as a schema error. That's unfortunate as whilst 'null' is certainly a better value for 'nothing', it does create a replica of the 'flow_id' issue we've previously had which Gareth mentioned. Whilst adding support for 'null' doesn't break with existing precedents, the 'flow_id' case was an accident and a similar fix here has the potential to break older clients. I'd suggest this may be a little different to the case of introducing new transports, as a well-written client may be checking the transport type already, where it may not expect a value to change type. This does all add further weight to a feeling I've had that we ought to be removing the automatic Query API key stripping functionality and depending upon the query downgrade mechanism for multi-version support instead, but that's very much an IS-04 discussion point. |
While it would be nice to solve the problem of whether Event & Tally senders automatically stripped in Query API v1.0, v1.1, v1.2 were valid according to the respective schemas, the fundamental thing is we need them to be valid according to the IS-04 v1.3 schemas. Either we need a placeholder URL (like browsers'
Since none of these would validate according to v1.2 or earlier schemas, I'd go with whichever of the above is best for v1.3, and I think that's probably
So v1.3 resources would never appear in a response to a v1.2 API? |
I agree that the 'best' choice for v1.3 is to allow 'null'.
Yes, that's the thinking. You could as a result only cause mixed version responses by using /v1.3/resources/?query.downgrade=v1.2 etc, ensuring that only clients which are explicitly written to support multiple versions are exposed to it. |
I am not even trying to add IS-07 resources if the registry isn't v1.3, so I would personally support changing the schema to allow nulls. I would also agree that IS-07 resources shouldn't be downgraded as critical information would be lost - or better said, there is no way to adjust the transports to match v1.2 schemas. |
That makes sense but loses us some of the flexibility discussed in IS-04 Upgrade Path - Performing Upgrades.
That may be true for IS-07 resources, but it's not true for IS-04 v1.3 resources in general. Good idea to take this into an IS-04 issue, and focus on the IS-04 v1.3 vs. IS-07 issue here? |
Yes, I'd suggest moving it to an IS-04 issue. |
Exactly, that's why I was referring to them as IS-07 resources rather than v1.3 resources. I would add a firm statement that those could only appear in v1.3+ responses
Yes, it would be great if an IS-04 issue could be opened and this one closed |
So... an IS-04 PR for v1.3-dev sender.json to allow |
I really don't think that logic should have to exist in a Registry. So unless/until query stripping is completely removed from IS-04, I think we are going to see stripped/downgraded resources in earlier version responses, as the IS-04 documentation makes clear. |
But how would you strip/downgrade e.g. the example sender from the IS-07 docs?: |
That's specifically covered by Version Translations and Requirements for Query API clients which says: "Implementers should be aware that when operating a client against a Query API version lower than the maximum supported version by that Query API instance, they may be exposed to resource data beyond the scope of that API version's associated schemas. Whilst the Version Translation mechanism will remove access to invalid additional keys, new values for existing keys are not excluded by this mechanism." |
OK, thanks for the clarification |
Related to #36. Like #37, possibly this is a question for IS-04.
The example in Core models - IS-04 highlights - Senders shows
"manifest_href": ""
. If JSON schema validation is applied to this example (using IS-04 schemas/sender.json), it should fail validation due to the empty string not being a validuri
.The text was updated successfully, but these errors were encountered: