The outcome of T359193 is to support required in JSON schemas but loosening the validation step to not take it in account for the top level properties of an schema while reading a configuration. But using it regularly on API submissions and writes in general. This is to circumvent the indirection of a configuration not being available at a given time and making the system unrecoverable from that situation.
Acceptance criteria:
- In the schema, we can define any property as required. including properties at the top-level
- The server will not write a schema where required properties are missing
- However, the server will write a required property if it is the empty string (""), null, 0, or false, if these values are compatible with its type
- The server will load a schema where a required property is missing
- In the form generated by CommunityConfiguration, required properties must have a meaningful value for the form to be submittable, that is, the empty string is not valid, whereas 0 or false might be, depending on the control
- In the form generated by CommunityConfiguration, the validation for required properties actually having a value is performed not only before submitting the form but also as the user interacts with form elements (purposefully somewhat vague: for some elements it might be better to do on each keystroke, for others only when the user moves to another element, and there might be other circumstances)