{
    "name": "example",
    "version": "1.0.0",
    "resources": {
        "example:index:ExampleServer": {
            "properties":{
                "name": {
                    "type": "string"
                }
            },
            "inputProperties": {
                "properties": {
                    "oneOf": [
                      {
                        "$ref": "#/types/example:index:ServerPropertiesForReplica"
                      },
                      {
                        "$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-inline/example",
          "generateExtraInputTypes": true,
          "generics": "side-by-side"
        }
    }
}