Grupos de propiedad mutuamente excluyentes

Supongamos que tengo un objeto con cuatro propiedades posibles: a, b, c, d. ayb solo pueden aparecer juntos (es decir, a aparece si y solo si aparece b). Si aparecen ayb, cno puedo aparecer (es decir, a / byc son mutuamente excluyentes). Si ayb no aparecen, puede aparecer c (pero no es obligatorio que lo haga). d puede aparecer en cualquier combinación con a / b, c o solo. No pueden aparecer propiedades distintas de a, b, c o d.

¿Cómo expreso esto como un jsonschema? Sospecho que podría usar alguna combinación deoneOf yrequired, pero no puedo entender el encantamiento adecuado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta