{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "XPlanValidatorAPI",
    "description" : "XPlanValidator REST API v2",
    "termsOfService" : "",
    "contact" : {
      "email" : ""
    },
    "license" : {
      "name" : "Apache 2.0",
      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
    },
    "version" : "2.3.0"
  },
  "servers" : [ {
    "url" : "/xplan-validator-api/api/v2"
  } ],
  "security" : [ {
    "Bearer" : [ ]
  } ],
  "tags" : [ {
    "name" : "validate",
    "description" : "Validate XPlanGML documents",
    "externalDocs" : {
      "description" : "xPlanBox",
      "url" : ""
    }
  } ],
  "paths" : {
    "/report/{uuid}/geomfindings" : {
      "get" : {
        "tags" : [ "report" ],
        "summary" : "Return ValidationReport",
        "description" : "Returns the findings of the geometrical validation with {uuid} as GeoJSON",
        "operationId" : "geomfindingsByUuid",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "UUID of the validation to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uuid"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/geo+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FeatureCollection"
                }
              }
            }
          },
          "404" : {
            "description" : "Findings of the geometrical validation with {uuid} is not available or is expired"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/items/{uuid}" : {
      "get" : {
        "tags" : [ "data" ],
        "summary" : "Validated plan as JSON-FG",
        "description" : "Returns the XPlanSyn features of the validated plan as JSON-FG",
        "operationId" : "getItems",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "UUID of the validation",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "0a0cedbc-bf3f-4f1f-bdaf-ea0e52075540"
        } ],
        "responses" : {
          "200" : {
            "description" : "XPlanSyn features of the validated plan as JSON-FG",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JsonFGFeatureCollection"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid uuid, no validation with the passed uuid found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/status/{uuid}" : {
      "get" : {
        "tags" : [ "status" ],
        "summary" : "Status of a validation",
        "description" : "Returns the status of a validation",
        "operationId" : "status",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "UUID of the validation",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "0a0cedbc-bf3f-4f1f-bdaf-ea0e52075540"
        } ],
        "responses" : {
          "200" : {
            "description" : "StatusNotification",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationStatusNotification"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid uuid, no validation with the passed uuid found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/report/{uuid}/geomfindings.json" : {
      "get" : {
        "tags" : [ "report" ],
        "summary" : "Return ValidationReport",
        "description" : "Returns the findings of the geometrical validation with {uuid} as GeoJSON",
        "operationId" : "geomfindingsJsonByUuid",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "UUID of the validation to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uuid"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/geo+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FeatureCollection"
                }
              }
            }
          },
          "404" : {
            "description" : "Findings of the geometrical validation with {uuid} is not available or is expired"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/info" : {
      "get" : {
        "summary" : "Show system and application configuration",
        "description" : "Returns the system and application configuration",
        "operationId" : "showConfig",
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SystemConfig"
                }
              }
            }
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/report/{uuid}" : {
      "get" : {
        "tags" : [ "report" ],
        "summary" : "Return ValidationReport",
        "description" : "Returns the ValidationReport of the validation with {uuid}",
        "operationId" : "reportByUuid",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "UUID of the validation to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uuid"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationReport"
                }
              },
              "application/pdf" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationReport"
                }
              }
            }
          },
          "404" : {
            "description" : "ValidationReport of the validation with {uuid} is not available or is expired"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/validate" : {
      "post" : {
        "tags" : [ "validate" ],
        "summary" : "Validate XPlanGML or XPlanArchive",
        "description" : "Validates XPlanGML or XPlanArchive file",
        "operationId" : "validate",
        "parameters" : [ {
          "name" : "X-Filename",
          "in" : "header",
          "description" : "Name of the file to be uploaded",
          "schema" : {
            "pattern" : "^[A-Za-z0-9.()_\\-]*$",
            "type" : "string"
          },
          "example" : "File names such as xplan.gml, xplan.xml, xplan.zip"
        }, {
          "name" : "name",
          "in" : "query",
          "description" : "Name of the validation",
          "schema" : {
            "pattern" : "^[A-Za-z0-9.()_\\-]*$",
            "type" : "string"
          },
          "example" : "xplan-1Pruefbericht_Torstrasse_10_report-4223"
        }, {
          "name" : "skipSemantisch",
          "in" : "query",
          "description" : "skip semantische Validierung",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "skipGeometrisch",
          "in" : "query",
          "description" : "skip geometrische Validierung",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "skipFlaechenschluss",
          "in" : "query",
          "description" : "skip Flaechenschluss Ueberpruefung",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "skipGeltungsbereich",
          "in" : "query",
          "description" : "skip Geltungsbereich Ueberpruefung",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "skipLaufrichtung",
          "in" : "query",
          "description" : "skip Laufrichtung Ueberpruefung",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "profiles",
          "in" : "query",
          "description" : "Names of profiles which shall be additionally used for validation",
          "explode" : false,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/octet-stream" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML or XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "application/zip" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML or XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "application/x-zip" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML or XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "application/x-zip-compressed" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML or XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "text/xml" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML to upload",
                "format" : "binary"
              }
            },
            "application/gml+xml" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML to upload",
                "format" : "binary"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "ValidationReceipt with uuid of the validation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationReceipt"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid input"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type or content - only xml/gml, zip are accepted; all zip files entries must also match the supported content types for XPlanArchives"
          }
        }
      }
    },
    "/" : {
      "get" : {
        "summary" : "OpenAPI document",
        "description" : "API documentation",
        "operationId" : "openApi",
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object"
                }
              }
            }
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "SystemConfig" : {
        "type" : "object",
        "properties" : {
          "skipRasterEvaluation" : {
            "type" : "boolean"
          },
          "version" : {
            "type" : "string",
            "description" : "Version der xPlanBox",
            "example" : "v3.4.0"
          },
          "profiles" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "description" : "Supported validation profiles"
            }
          },
          "supportedXPlanGmlVersions" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "example" : "XPLAN_51",
              "enum" : [ "XPLAN_40", "XPLAN_41", "XPLAN_50", "XPLAN_51", "XPLAN_52", "XPLAN_53", "XPLAN_54", "XPLAN_60", "XPLAN_61" ]
            }
          }
        }
      },
      "Geometry" : {
        "required" : [ "bbox", "type" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string"
          },
          "bbox" : {
            "type" : "array",
            "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
            "items" : {
              "type" : "number",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
            }
          }
        },
        "description" : "Abstract type for all GeoJSon object except Feature and FeatureCollection ",
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "GeometryCollection" : "#/components/schemas/GeometryCollection",
            "Polygon" : "#/components/schemas/Polygon",
            "LineString" : "#/components/schemas/LineString",
            "Point" : "#/components/schemas/Point",
            "MultiPolygon" : "#/components/schemas/MultiPolygon",
            "MultiLineString" : "#/components/schemas/MultiLineString",
            "MultiPoint" : "#/components/schemas/MultiPoint"
          }
        }
      },
      "GeometryBase" : {
        "required" : [ "bbox", "type" ],
        "type" : "object",
        "description" : "Abstract type for all GeoJSon geometries",
        "allOf" : [ {
          "$ref" : "#/components/schemas/Geometry"
        } ]
      },
      "GeometryCollection" : {
        "required" : [ "bbox", "geometries" ],
        "type" : "object",
        "description" : "GeoJSon geometry collection GeometryCollections composed of a single part or a number of parts of a single type SHOULD be avoided when that single part or a single object of multipart type (MultiPoint, MultiLineString, or MultiPolygon) could be used instead. ",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryBase"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "geometries" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/components/schemas/GeometryElement"
              }
            }
          }
        } ]
      },
      "GeometryElement" : {
        "required" : [ "bbox", "type" ],
        "type" : "object",
        "description" : "Abstract type for all GeoJSon 'Geometry' object the type of which is not 'GeometryCollection' ",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryBase"
        }, {
          "type" : "object",
          "properties" : {
            "type" : {
              "type" : "string"
            },
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            }
          }
        } ]
      },
      "JsonFGFeature" : {
        "required" : [ "bbox", "geometry", "id", "properties" ],
        "type" : "object",
        "properties" : {
          "bbox" : {
            "type" : "array",
            "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
            "items" : {
              "type" : "number",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
            }
          },
          "geometry" : {
            "$ref" : "#/components/schemas/Geometry"
          },
          "properties" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object"
            }
          },
          "id" : {
            "type" : "object"
          },
          "featureType" : {
            "type" : "string"
          }
        },
        "description" : "JSON-FG 'Feature' object"
      },
      "JsonFGFeatureCollection" : {
        "required" : [ "bbox", "features" ],
        "type" : "object",
        "properties" : {
          "bbox" : {
            "type" : "array",
            "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
            "items" : {
              "type" : "number",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
            }
          },
          "features" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JsonFGFeature"
            }
          }
        },
        "description" : "JSON-FG 'FeatureCollection' object"
      },
      "LineString" : {
        "required" : [ "bbox", "coordinates" ],
        "type" : "object",
        "description" : "GeoJSon geometry",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryElement"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "coordinates" : {
              "minItems" : 2,
              "type" : "array",
              "items" : {
                "maxItems" : 3,
                "minItems" : 2,
                "type" : "array",
                "items" : {
                  "type" : "number",
                  "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
                }
              }
            }
          }
        } ]
      },
      "LineStringCoordinates" : {
        "minItems" : 2,
        "type" : "array",
        "items" : {
          "maxItems" : 3,
          "minItems" : 2,
          "type" : "array",
          "items" : {
            "type" : "number",
            "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
          }
        }
      },
      "LinearRing" : {
        "minItems" : 4,
        "type" : "array",
        "items" : {
          "maxItems" : 3,
          "minItems" : 2,
          "type" : "array",
          "items" : {
            "type" : "number",
            "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
          }
        }
      },
      "MultiLineString" : {
        "required" : [ "bbox", "coordinates" ],
        "type" : "object",
        "description" : "GeoJSon geometry",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryElement"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "coordinates" : {
              "type" : "array",
              "items" : {
                "minItems" : 2,
                "type" : "array",
                "items" : {
                  "maxItems" : 3,
                  "minItems" : 2,
                  "type" : "array",
                  "items" : {
                    "type" : "number",
                    "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
                  }
                }
              }
            }
          }
        } ]
      },
      "MultiPoint" : {
        "required" : [ "bbox", "coordinates" ],
        "type" : "object",
        "description" : "GeoJSon geometry",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryElement"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "coordinates" : {
              "type" : "array",
              "items" : {
                "maxItems" : 3,
                "minItems" : 2,
                "type" : "array",
                "items" : {
                  "type" : "number",
                  "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
                }
              }
            }
          }
        } ]
      },
      "MultiPolygon" : {
        "required" : [ "bbox", "coordinates" ],
        "type" : "object",
        "description" : "GeoJSon geometry",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryElement"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "coordinates" : {
              "type" : "array",
              "items" : {
                "type" : "array",
                "items" : {
                  "minItems" : 4,
                  "type" : "array",
                  "items" : {
                    "maxItems" : 3,
                    "minItems" : 2,
                    "type" : "array",
                    "items" : {
                      "type" : "number",
                      "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
                    }
                  }
                }
              }
            }
          }
        } ]
      },
      "Point" : {
        "required" : [ "bbox", "coordinates" ],
        "type" : "object",
        "description" : "GeoJSon geometry",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryElement"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "coordinates" : {
              "maxItems" : 3,
              "minItems" : 2,
              "type" : "array",
              "items" : {
                "type" : "number",
                "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
              }
            }
          }
        } ]
      },
      "Polygon" : {
        "required" : [ "bbox", "coordinates" ],
        "type" : "object",
        "description" : "GeoJSon geometry",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeometryElement"
        }, {
          "type" : "object",
          "properties" : {
            "bbox" : {
              "type" : "array",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
              "items" : {
                "type" : "number",
                "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
              }
            },
            "coordinates" : {
              "type" : "array",
              "items" : {
                "minItems" : 4,
                "type" : "array",
                "items" : {
                  "maxItems" : 3,
                  "minItems" : 2,
                  "type" : "array",
                  "items" : {
                    "type" : "number",
                    "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
                  }
                }
              }
            }
          }
        } ]
      },
      "Position" : {
        "maxItems" : 3,
        "minItems" : 2,
        "type" : "array",
        "items" : {
          "type" : "number",
          "description" : "GeoJSon fundamental geometry construct. A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as \"M\") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers. "
        }
      },
      "Feature" : {
        "required" : [ "bbox", "geometry", "id", "properties" ],
        "type" : "object",
        "properties" : {
          "bbox" : {
            "type" : "array",
            "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
            "items" : {
              "type" : "number",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
            }
          },
          "geometry" : {
            "$ref" : "#/components/schemas/Geometry"
          },
          "properties" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object"
            }
          },
          "id" : {
            "type" : "object"
          }
        },
        "description" : "GeoJSon 'Feature' object"
      },
      "FeatureCollection" : {
        "required" : [ "bbox", "features" ],
        "type" : "object",
        "properties" : {
          "bbox" : {
            "type" : "array",
            "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. ",
            "items" : {
              "type" : "number",
              "description" : "A GeoJSON object MAY have a member named \"bbox\" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, with all axes of the most southwesterly point followed by all axes of the more northeasterly point. The axes order of a bbox follows the axes order of geometries. "
            }
          },
          "features" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Feature"
            }
          }
        },
        "description" : "GeoJSon 'FeatureCollection' object"
      },
      "Bbox" : {
        "type" : "object",
        "properties" : {
          "minX" : {
            "type" : "number",
            "format" : "double",
            "example" : 9.880772
          },
          "minY" : {
            "type" : "number",
            "format" : "double",
            "example" : 53.544973
          },
          "maxX" : {
            "type" : "number",
            "format" : "double",
            "example" : 9.890302
          },
          "maxY" : {
            "type" : "number",
            "format" : "double",
            "example" : 53.546704
          },
          "crs" : {
            "type" : "string",
            "example" : "epsg:4326"
          }
        },
        "description" : "The bounding box of the geometry identifying the failure. Fallback if the markerGeom cannot be created."
      },
      "ExternalReferenceResult" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "example" : "stelling.png"
          },
          "status" : {
            "type" : "string",
            "example" : "AVAILABLE",
            "enum" : [ "AVAILABLE", "MISSING", "UNCHECKED", "UNREFERENCED" ]
          }
        }
      },
      "PlanInfoBbox" : {
        "type" : "object",
        "properties" : {
          "minX" : {
            "type" : "number",
            "format" : "double",
            "example" : 9.880772
          },
          "minY" : {
            "type" : "number",
            "format" : "double",
            "example" : 53.544973
          },
          "maxX" : {
            "type" : "number",
            "format" : "double",
            "example" : 9.890302
          },
          "maxY" : {
            "type" : "number",
            "format" : "double",
            "example" : 53.546704
          },
          "crs" : {
            "type" : "string",
            "example" : "epsg:4326"
          }
        }
      },
      "RasterEvaluationResult" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "example" : "stelling.png"
          },
          "crsStatus" : {
            "type" : "string",
            "example" : "SUPPORTED",
            "enum" : [ "SUPPORTED", "UNSUPPORTED", "INVALID", "MISSING" ]
          },
          "imageFormatStatus" : {
            "type" : "string",
            "example" : "SUPPORTED",
            "enum" : [ "SUPPORTED", "UNSUPPORTED", "MISSING" ]
          }
        }
      },
      "RulesMetadata" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "example" : "profil1"
          },
          "name" : {
            "type" : "string",
            "example" : "GemeindeMusterdorf"
          },
          "description" : {
            "type" : "string",
            "example" : "Beschreibung des Profils der Gemeinde Musterdorf"
          },
          "version" : {
            "type" : "string",
            "example" : "0.9.14"
          },
          "source" : {
            "type" : "string",
            "example" : "https://bitbucket.org/geowerkstatt-hamburg/xplanung/get/v0.9.14.zip"
          }
        }
      },
      "ValidationReport" : {
        "type" : "object",
        "properties" : {
          "filename" : {
            "type" : "string",
            "example" : "xplan52-test.gml"
          },
          "validationName" : {
            "type" : "string",
            "example" : "xplan52-test"
          },
          "date" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "TERMINATED_WITH_ERRORS", "TERMINATED_REASON_UNKNOWN", "COMPLETED", "RUNNING", "SKIPPED" ]
          },
          "wmsUrl" : {
            "type" : "string",
            "description" : "deprecated: XPlanValidatorWMS will be removed in a future version",
            "format" : "uri",
            "example" : "https://xplanbox.lat-lon.de/xplan-validator-wms/services/wms?PLANWERK_MANAGERID=13",
            "deprecated" : true
          },
          "links" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportLink"
            }
          },
          "syntaktisch" : {
            "$ref" : "#/components/schemas/ValidationReportValidationResultSyntaktisch"
          },
          "plans" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportPlan"
            }
          },
          "geomfindings" : {
            "$ref" : "#/components/schemas/FeatureCollection"
          }
        }
      },
      "ValidationReportLink" : {
        "required" : [ "href", "schema" ],
        "type" : "object",
        "properties" : {
          "expirationTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "href" : {
            "type" : "string",
            "format" : "uri",
            "example" : "https://xplanbox.lat-lon.de/xmanager/api/v1/plan/123"
          },
          "type" : {
            "type" : "string",
            "example" : "application/json"
          },
          "hreflang" : {
            "type" : "string",
            "example" : "en"
          },
          "title" : {
            "type" : "string",
            "example" : "Othmarschen 3, Hamburg"
          },
          "length" : {
            "type" : "integer",
            "format" : "int32"
          },
          "schema" : {
            "type" : "string",
            "format" : "uri",
            "example" : "https://xplanbox.lat-lon.de/xmanager/api/v1#/components/schemas/ValidationReport"
          },
          "rel" : {
            "type" : "string",
            "example" : "self",
            "enum" : [ "items" ]
          }
        },
        "description" : "Link to a resource related to the validated plan such as the JSON-FG items"
      },
      "ValidationReportPlan" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "string",
            "example" : "XPLAN_51",
            "enum" : [ "XPLAN_40", "XPLAN_41", "XPLAN_50", "XPLAN_51", "XPLAN_52", "XPLAN_53", "XPLAN_54", "XPLAN_60", "XPLAN_61" ]
          },
          "bbox" : {
            "$ref" : "#/components/schemas/PlanInfoBbox"
          },
          "valid" : {
            "type" : "boolean",
            "example" : false
          },
          "status" : {
            "type" : "string",
            "description" : "The status of the validation. If missing the validation is not started yet.",
            "example" : "COMPLETED",
            "enum" : [ "TERMINATED_WITH_ERRORS", "TERMINATED_REASON_UNKNOWN", "COMPLETED", "RUNNING", "SKIPPED" ]
          },
          "externalReferencesResult" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ExternalReferenceResult"
            }
          },
          "rasterEvaluationResult" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RasterEvaluationResult"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/ValidationReportValidationResult"
          },
          "name" : {
            "type" : "string",
            "example" : "Othmarschen3"
          },
          "type" : {
            "type" : "string",
            "example" : "BP_Plan"
          }
        }
      },
      "ValidationReportValidationResult" : {
        "type" : "object",
        "properties" : {
          "semantisch" : {
            "$ref" : "#/components/schemas/ValidationReportValidationResultSemantischWithRulesMetadata"
          },
          "geometrisch" : {
            "$ref" : "#/components/schemas/ValidationReportValidationResultGeometrisch"
          },
          "profile" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportValidationResultProfil"
            }
          }
        }
      },
      "ValidationReportValidationResultGeometrisch" : {
        "type" : "object",
        "properties" : {
          "valid" : {
            "type" : "boolean",
            "example" : false
          },
          "status" : {
            "type" : "string",
            "description" : "The status of the validation. If missing the validation is not started yet.",
            "example" : "COMPLETED",
            "enum" : [ "TERMINATED_WITH_ERRORS", "TERMINATED_REASON_UNKNOWN", "COMPLETED", "RUNNING", "SKIPPED" ]
          },
          "rules" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportValidationResultGeometrischRule"
            }
          }
        }
      },
      "ValidationReportValidationResultGeometrischRule" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "findings" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportValidationResultGeometrischRuleFinding"
            }
          }
        }
      },
      "ValidationReportValidationResultGeometrischRuleFinding" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          },
          "level" : {
            "type" : "string",
            "enum" : [ "VALID", "SKIPPED", "RECOMMENDATION", "WARNING", "ERROR" ]
          },
          "gmlIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "markerGeom" : {
            "$ref" : "#/components/schemas/Geometry"
          },
          "markerBbox" : {
            "$ref" : "#/components/schemas/Bbox"
          }
        }
      },
      "ValidationReportValidationResultProfil" : {
        "type" : "object",
        "properties" : {
          "rulesMetadata" : {
            "$ref" : "#/components/schemas/RulesMetadata"
          },
          "ergebnis" : {
            "$ref" : "#/components/schemas/ValidationReportValidationResultSemantisch"
          }
        }
      },
      "ValidationReportValidationResultSemantisch" : {
        "type" : "object",
        "properties" : {
          "valid" : {
            "type" : "boolean",
            "example" : false
          },
          "status" : {
            "type" : "string",
            "description" : "The status of the validation. If missing the validation is not started yet.",
            "example" : "COMPLETED",
            "enum" : [ "TERMINATED_WITH_ERRORS", "TERMINATED_REASON_UNKNOWN", "COMPLETED", "RUNNING", "SKIPPED" ]
          },
          "rules" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportValidationResultSemantischRule"
            }
          }
        }
      },
      "ValidationReportValidationResultSemantischRule" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "findings" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportValidationResultSemantischRuleFinding"
            }
          }
        }
      },
      "ValidationReportValidationResultSemantischRuleFinding" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          },
          "level" : {
            "type" : "string",
            "enum" : [ "VALID", "SKIPPED", "RECOMMENDATION", "WARNING", "ERROR" ]
          },
          "gmlIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "ValidationReportValidationResultSemantischWithRulesMetadata" : {
        "type" : "object",
        "properties" : {
          "valid" : {
            "type" : "boolean",
            "example" : false
          },
          "status" : {
            "type" : "string",
            "description" : "The status of the validation. If missing the validation is not started yet.",
            "example" : "COMPLETED",
            "enum" : [ "TERMINATED_WITH_ERRORS", "TERMINATED_REASON_UNKNOWN", "COMPLETED", "RUNNING", "SKIPPED" ]
          },
          "rules" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ValidationReportValidationResultSemantischRule"
            }
          },
          "rulesMetadata" : {
            "$ref" : "#/components/schemas/RulesMetadata"
          }
        }
      },
      "ValidationReportValidationResultSyntaktisch" : {
        "type" : "object",
        "properties" : {
          "valid" : {
            "type" : "boolean",
            "example" : false
          },
          "status" : {
            "type" : "string",
            "description" : "The status of the validation. If missing the validation is not started yet.",
            "example" : "COMPLETED",
            "enum" : [ "TERMINATED_WITH_ERRORS", "TERMINATED_REASON_UNKNOWN", "COMPLETED", "RUNNING", "SKIPPED" ]
          },
          "errors" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "ResponseLink" : {
        "required" : [ "href", "schema" ],
        "type" : "object",
        "properties" : {
          "expirationTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "href" : {
            "type" : "string",
            "format" : "uri",
            "example" : "https://xplanbox.lat-lon.de/xmanager/api/v1/plan/123"
          },
          "type" : {
            "type" : "string",
            "example" : "application/json"
          },
          "hreflang" : {
            "type" : "string",
            "example" : "en"
          },
          "title" : {
            "type" : "string",
            "example" : "Othmarschen 3, Hamburg"
          },
          "length" : {
            "type" : "integer",
            "format" : "int32"
          },
          "schema" : {
            "type" : "string",
            "format" : "uri",
            "example" : "https://xplanbox.lat-lon.de/xmanager/api/v1#/components/schemas/ValidationReport"
          },
          "rel" : {
            "type" : "string",
            "example" : "self",
            "enum" : [ "status", "report", "planinfo" ]
          }
        },
        "description" : "Link to a resource related to the resource such as ValidationReport (as described ind #/components/schemas/ValidationReport) or PlanInfo (as described ind #/components/schemas/PlanInfo)"
      },
      "ValidationStatusNotification" : {
        "type" : "object",
        "properties" : {
          "errorMsg" : {
            "type" : "string"
          },
          "links" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ResponseLink"
            }
          },
          "status" : {
            "type" : "string",
            "enum" : [ "VALIDATION_REQUESTED", "VALIDATION_STARTED", "VALIDATION_FAILED", "VALIDATION_FINISHED" ]
          }
        }
      },
      "ValidationReceipt" : {
        "type" : "object",
        "properties" : {
          "uuid" : {
            "type" : "string"
          },
          "statusLink" : {
            "$ref" : "#/components/schemas/ResponseLink"
          }
        }
      }
    },
    "securitySchemes" : {
      "Bearer" : {
        "type" : "http",
        "scheme" : "bearer",
        "bearerFormat" : "JWT"
      }
    }
  }
}