{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "Installer" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "id" : {
          "type" : "string",
          "anyOf" : [ {
            "const" : "maven-import",
            "description" : "Imports IvyProjects into your workspace without actually adding dependencies to it into your project pom.xml. This is handy to integrate large demo projects into your workspace."
          }, {
            "const" : "maven-dependency",
            "description" : "Adds Maven dependencies to an existing project pom.xml. You may use it to integrate existing frameworks and drivers from the Maven ecosystem."
          } ]
        },
        "data" : {
          "type" : "object"
        }
      },
      "allOf" : [ {
        "if" : {
          "properties" : {
            "id" : {
              "const" : "maven-import"
            }
          }
        },
        "then" : {
          "properties" : {
            "data" : {
              "$ref" : "#/$defs/MavenProjectInstaller"
            }
          }
        }
      }, {
        "if" : {
          "properties" : {
            "id" : {
              "const" : "maven-dependency"
            }
          }
        },
        "then" : {
          "properties" : {
            "data" : {
              "$ref" : "#/$defs/MavenDependencyInstaller"
            }
          }
        }
      } ]
    },
    "MavenDependencyInstaller" : {
      "type" : "object",
      "properties" : {
        "dependencies" : {
          "description" : "ivy projects as maven dependencies",
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ProjectDependency"
          }
        },
        "repositories" : {
          "description" : "maven repositories where the projects are available",
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/Repository"
          }
        }
      },
      "additionalProperties" : false
    },
    "MavenProjectInstaller" : {
      "type" : "object",
      "properties" : {
        "projects" : {
          "description" : "ivy projects as maven dependencies",
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/Project"
          }
        },
        "repositories" : {
          "description" : "maven repositories where the projects are available",
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/Repository"
          }
        }
      },
      "additionalProperties" : false
    },
    "Project" : {
      "type" : "object",
      "properties" : {
        "artifactId" : {
          "type" : "string",
          "description" : "maven artifact id"
        },
        "groupId" : {
          "type" : "string",
          "description" : "maven group id"
        },
        "importInWorkspace" : {
          "type" : "boolean",
          "description" : "wether project should be imported or not",
          "default" : "true"
        },
        "type" : {
          "type" : "string",
          "description" : "maven type",
          "default" : "iar"
        },
        "version" : {
          "type" : "string",
          "description" : "maven version"
        }
      },
      "additionalProperties" : false
    },
    "ProjectDependency" : {
      "type" : "object",
      "properties" : {
        "artifactId" : {
          "type" : "string",
          "description" : "maven artifact id"
        },
        "groupId" : {
          "type" : "string",
          "description" : "maven group id"
        },
        "optional" : {
          "type" : "boolean",
          "description" : "Hint to mark the dependency as optional",
          "default" : "false"
        },
        "requireOneOfGroup" : {
          "type" : "string",
          "description" : "Defines the depenendency group. For all dependencies with the same 'group', the installation of at least one dependency is expected."
        },
        "type" : {
          "type" : "string",
          "description" : "maven type",
          "default" : "true"
        },
        "version" : {
          "type" : "string",
          "description" : "maven version"
        }
      },
      "additionalProperties" : false
    },
    "Repository" : {
      "type" : "object",
      "properties" : {
        "id" : {
          "type" : "string"
        },
        "layout" : {
          "type" : "string"
        },
        "name" : {
          "type" : "string"
        },
        "releases" : {
          "$ref" : "#/$defs/RepositoryPolicy"
        },
        "snapshots" : {
          "$ref" : "#/$defs/RepositoryPolicy"
        },
        "url" : {
          "type" : "string"
        }
      },
      "additionalProperties" : false
    },
    "RepositoryPolicy" : {
      "type" : "object",
      "properties" : {
        "checksumPolicy" : {
          "type" : "string"
        },
        "enabled" : {
          "type" : "string"
        },
        "updatePolicy" : {
          "type" : "string"
        }
      },
      "additionalProperties" : false
    }
  },
  "type" : "object",
  "properties" : {
    "$schema" : {
      "type" : "string"
    },
    "installers" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/$defs/Installer"
      }
    },
    "minimumIvyVersion" : {
      "type" : "string",
      "description" : "The minimal version of ivy that is required to run this product.",
      "pattern" : "[0-9]\\.[0-9]\\.[0-9]"
    }
  },
  "additionalProperties" : false
}
