I think you need to flatten your structure
At this time strapi doesn’t have “conditional” fields and you can’t change set of input fields based on previous input.
That’s why you need to open all fields to input
Maybe your next question will be about validation.
I don’t try validation myself - but strapi have beforeCreate hook - if a set of data don’t pass validation - you can set draft/publish property to draft - or add validated field to collection and set it to true or false according to validation result
