We use the "patternProperties" term to allow for payload annotations so we don't have to explicitly call out every variant of a payload annotation per property in the schema file. As far as I know, even though additionalProperties is false, you can still add more properties that match the patternProperties term. So, as long as the property is explicitly called out, or matches the additionalProperties term, then the property in the response is valid.
Yes, in JSON schema, "patternProperties" is evaluated separately before "additionalProperties". You can think of those as a decreasing level of property name specificity. First, properties with specific names, then properties-that-match-a-specific-pattern, then anything-else. The Redfish schemas don't allow "anything else" (with some exceptions), and that pattern only allows property-level annotations (e.g. "[email protected]") that might be inserted by a service. You'll see in the pattern that there must be an "@" along with the annotation namespaces we support (Redfish, OData and Message).
""" The additionalProperties keyword is used to control the handling of extra stuff, that is, properties whose names are not listed in the properties keyword. By default any additional properties are allowed.
The additionalProperties keyword may be either a boolean or an object. If additionalProperties is a boolean and set to false, no additional properties will be allowed. """
It doesn't conflict to add patternProperties when the additionalProperties is false. Just want to make sure we are on the same page.