I have a set of 2 properties that are always optional, but should only be allowed to be present if the value of another (always required) boolean property is true.
The properties which are always optional, but not always allowed are named: max_recurrences
and recurrence_arguments
. The boolean property whose value of true
that they depend on is named: recurring
.
I've come up with the schema below, which I think works, but I'm duplicating all of the other properties in each item of the oneOf
array. I'm looking for a way to avoid this duplication.
{
"id": "plan_schedule",
"type": "object",
"oneOf": [
{
"properties": {
"start_date": {
"type": "string",
"format": "date-time"
},
"end_date": {
"type": "string",
"format": "date-time"
},
"trigger": {
"$ref": "re_non_empty_string"
},
"arguments": {
"type": "object",
"minProperties": 1
},
"recurring": {
"type": "boolean",
"enum": [true],
},
"max_recurrences": {
"type": "integer",
"minimum": 1
},
"recurrence_arguments": {
"type": "object",
"minProperties": 1
}
}
},
{
"properties": {
"start_date": {
"type": "string",
"format": "date-time"
},
"end_date": {
"type": "string",
"format": "date-time"
},
"trigger": {
"$ref": "re_non_empty_string"
},
"arguments": {
"type": "object",
"minProperties": 1
},
"recurring": {
"type": "boolean",
"enum": [false],
},
}
}
],
"additionalProperties": false,
"required": ["start_date", "trigger", "recurring"]
}
Can anyone help me out? I'd like to use v4, but I'm open to using v5 if it helps.
To clarify further, I'm hoping to only have to list the properties: start_date
, end_date
, trigger
and arguments
one time in the entire schema.