{ "name": "example", "version": "1.0.0", "resources": { "example:index:ExampleServer": { "properties":{ "name": { "type": "string" } }, "inputProperties": { "propertiesCollection": { "type": "array", "items": { "oneOf": [ { "type": "object", "$ref": "#/types/example:index:ServerPropertiesForReplica" }, { "type": "object", "$ref": "#/types/example:index:ServerPropertiesForRestore" } ], "discriminator": { "propertyName": "createMode", "mapping": { "PointInTimeRestore": "#/types/example:index:ServerPropertiesForRestore", "Replica": "#/types/example:index:ServerPropertiesForReplica" } } } } } } }, "types":{ "example:index:ServerPropertiesForReplica": { "properties": { "createMode": { "type": "string", "const": "Replica" }, "version": { "type": "string" } }, "type": "object", "required": [ "createMode" ] }, "example:index:ServerPropertiesForRestore": { "properties": { "createMode": { "type": "string", "const": "PointInTimeRestore" }, "restorePointInTime": { "type": "string" } }, "type": "object", "required": [ "createMode", "restorePointInTime" ] } }, "language": { "go": { "importBasePath": "unions-inside-arrays/example", "generics": "side-by-side" } } }