Есть JSON схема с таким фрагментом:
{
"required": [
"label",
"resource_type",
"category"
],
"properties": {
...
},
"anyOf": [
{
"properties": {
"resource_type": { "enum": ["phone"] },
"phone": {
"minLength": 1
}
},
"required": ["phone"]
},
{
"properties": {
"resource_type": {
"enum": [
"audio", "pdf", "url", "video"
]
},
"url": {
"minLength": 1
}
},
"required": ["url"]
},
{
"properties": {
"resource_type": { "enum": ["html"] },
"html_content": {
"minLength": 1
}
},
"required": ["html_content"]
},
{
"properties": {
"resource_type": { "enum": ["media_resource"] },
"media_resource_uuid": {
"minLength": 1
}
},
"required": ["media_resource_uuid"]
}
]
}
}
Смысл в том, чтобы задавать конкретное поле из properties схемы в качестве обязательного в зависимости от значения поля resource_type. Например, если resource_type: "phone", то поле phone из properties обязательно. Пример валидного объекта:
{
"label" : "Test label",
"phone" : "112",
"resource_type" : "phone",
"description" : "Test desc",
"category" : "Test category"
}
Если сделать поле "phone" пустым, появится ошибка, затрагивающая все поля из anyOf:
Message:
String '' is less than minimum length of 1.
Schema path:
#/anyOf/0/properties/phone/minLength
Message:
Value "phone" is not defined in enum.
Schema path:
#/anyOf/3/properties/resource_type/enum
Message:
Required properties are missing from object: media_resource_uuid.
Schema path:
#/anyOf/3/required
Message:
Required properties are missing from object: html_content.
Schema path:
#/anyOf/2/required
Message:
Required properties are missing from object: url.
Schema path:
#/anyOf/1/required
Как можно обновить схему, чтобы в ошибке выводилась информация только о конкретном anyOf (в данном случае с полем "phone"), а не для всех полей сразу ?