{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "XPlanManagerAPI",
    "description" : "XPlanManager 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-manager-api/api/v2"
  } ],
  "security" : [ {
    "Bearer" : [ ]
  } ],
  "tags" : [ {
    "name" : "manage",
    "description" : "Manage XPlanGML documents",
    "externalDocs" : {
      "description" : "xPlanBox",
      "url" : ""
    }
  }, {
    "name" : "search",
    "description" : "Search for XPlanGML documents",
    "externalDocs" : {
      "description" : "xPlanBox",
      "url" : ""
    }
  } ],
  "paths" : {
    "/plan/{planId}/aenderungen" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getAenderung",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Aenderungen"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "operationId" : "replaceAenderung",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Aenderungen"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Aenderungen"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value. Request body contains invalid content."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "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"
          }
        }
      }
    },
    "/plan/{planId}/text" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getTexte",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Text"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "post" : {
        "tags" : [ "edit" ],
        "operationId" : "addText",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to add text",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "textmodel" ],
                "type" : "object",
                "properties" : {
                  "textmodel" : {
                    "$ref" : "#/components/schemas/Text"
                  },
                  "datei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "datei" : {
                  "contentType" : "application/pdf, application/msword, application/odt"
                },
                "textmodel" : {
                  "contentType" : "application/json"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Text"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or textmodel is missing or planID is not a valid int value. Request body contains invalid content. Text with the same textmodel already exists. Name of the datei does not match the refText/referenzURL in the textmodel."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      }
    },
    "/plans" : {
      "get" : {
        "tags" : [ "search" ],
        "summary" : "Search for plans",
        "description" : "Returns a list of plans where the plan matches the passed query parameter",
        "operationId" : "searchPlans",
        "parameters" : [ {
          "name" : "planName",
          "in" : "query",
          "description" : "The name of the plan to search for",
          "schema" : {
            "type" : "string"
          },
          "example" : "bplan_123"
        }, {
          "name" : "internalId",
          "in" : "query",
          "description" : "The internalId of the plan to search for",
          "schema" : {
            "type" : "string"
          },
          "example" : "ID_8ee57554-5f58-42ea-86a4-e9f4acd9d3c1"
        }, {
          "name" : "planStatus",
          "in" : "query",
          "description" : "The planStatuses of the plan to search for",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "FESTGESTELLT", "IN_AUFSTELLUNG", "ARCHIVIERT" ]
            }
          }
        }, {
          "name" : "planId",
          "in" : "query",
          "description" : "The ID of the plan to search for",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "example" : [ 1 ]
        }, {
          "name" : "includeGeltungsbereich",
          "in" : "query",
          "description" : "true if the geltungsbereichWGS84 should be included in the response, false otherwise (default: false).",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Number of plans to skip (not applied for search with internalId)",
          "schema" : {
            "minimum" : 0,
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Number of plans to return (not applied for search with internalId)",
          "schema" : {
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32",
            "default" : 10
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/PlanInfo"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported query parameter"
          },
          "404" : {
            "description" : "Invalid offset or limit parameter"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan" : {
      "post" : {
        "tags" : [ "manage" ],
        "summary" : "Import a XPlanGML or XPlanArchive",
        "description" : "Imports a XPlanGML or XPlanArchive",
        "operationId" : "import",
        "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" : "skipSemantisch",
          "in" : "query",
          "description" : "skip semantische 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"
            }
          }
        }, {
          "name" : "internalId",
          "in" : "query",
          "description" : "internalId links to VerfahrensId",
          "schema" : {
            "pattern" : "^[A-Za-z0-9\\-_]*$",
            "type" : "string"
          }
        }, {
          "name" : "planStatus",
          "in" : "query",
          "description" : "target for data storage, overrides the default derived from xplan:rechtsstand",
          "schema" : {
            "type" : "string",
            "example" : "FESTGESTELLT",
            "enum" : [ "IN_AUFSTELLUNG", "FESTGESTELLT", "ARCHIVIERT" ]
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/octet-stream" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "application/zip" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "application/x-zip" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "application/x-zip-compressed" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanArchive (application/zip) file to upload",
                "format" : "binary"
              }
            },
            "text/xml" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML file to upload",
                "format" : "binary"
              }
            },
            "application/gml+xml" : {
              "schema" : {
                "type" : "string",
                "description" : "XPlanGML file to upload",
                "format" : "binary"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "ImportReceipt with uuid of the import",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ImportReceipt"
                }
              }
            }
          },
          "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"
          }
        }
      }
    },
    "/plan/{planId}/basisdaten" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getBasisdaten",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan basisdaten to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Basisdaten"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "operationId" : "replaceBasisdaten",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Basisdaten"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Basisdaten"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value. Request body contains invalid content."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan/{planId}" : {
      "get" : {
        "tags" : [ "manage", "search" ],
        "summary" : "Get plan identified by the given planID",
        "description" : "Returns an existing plan identified by the given planID",
        "operationId" : "getById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanInfo"
                }
              }
            }
          },
          "400" : {
            "description" : "PlanID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "delete" : {
        "tags" : [ "manage" ],
        "summary" : "Delete plan identified by the given planID",
        "description" : "Deletes an existing plan identified by the given planID",
        "operationId" : "delete",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be removed",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatusMessage"
                }
              }
            }
          },
          "400" : {
            "description" : "PlanID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan/{planId}/archive" : {
      "get" : {
        "tags" : [ "manage", "search" ],
        "summary" : "Get plan as XPlanArchive identified by the given planID",
        "description" : "Returns the XPlanArchive of an existing plan identified by the given planID",
        "operationId" : "getArchiveById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "relativeRefs",
          "in" : "query",
          "description" : "Export XPlanArchive with relative references and attachments (true) or absolute references and without attachments (false)",
          "schema" : {
            "type" : "boolean",
            "default" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/zip" : {
                "schema" : {
                  "type" : "string",
                  "format" : "binary"
                }
              }
            }
          },
          "400" : {
            "description" : "PlanID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "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/ManagerSystemConfig"
                }
              }
            }
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan/{planId}/gemeinde/{id}" : {
      "get" : {
        "tags" : [ "edit" ],
        "description" : "Retrieve Gemeinde to edit, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "getGemeindeById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the gemeinde to be returned (GML-Id of the feature)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GML_ID_123"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value."
          },
          "404" : {
            "description" : "Invalid planID or gemeinde ID, plan or gemeinde not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "description" : "Edit existing Gemeinde, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "replaceGemeindeById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be updated",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the gemeinde to be updated (GML-Id of the feature)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GML_ID_123"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Gemeinde"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value. Request body contains invalid content. Gemeinde the same gemeindemodel already exists. "
          },
          "404" : {
            "description" : "Invalid planID or gemeinde ID, plan or Gemeinde not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      },
      "delete" : {
        "tags" : [ "edit" ],
        "description" : "Remove Gemeinden, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "deleteGemeindeById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to delete gemeinde",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the gemeinde to be deleted",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 2
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid planID or plan type or gemeinde ID, plan or gemeinde not found"
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/plan/{planId}/rasterbasis" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getRasterBasis",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Rasterbasis"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "post" : {
        "tags" : [ "edit" ],
        "operationId" : "addRasterBasis",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to add rasterbasis",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "rasterbasismodel" ],
                "type" : "object",
                "properties" : {
                  "rasterbasismodel" : {
                    "$ref" : "#/components/schemas/Rasterbasis"
                  },
                  "rasterdatei" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "georeferenzdatei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "rasterdatei" : {
                  "contentType" : "image/tiff, image/png"
                },
                "georeferenzdatei" : {
                  "contentType" : "text/plain"
                },
                "rasterbasismodel" : {
                  "contentType" : "application/json"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Rasterbasis"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan type or version, missing bereich nummer or rasterbasismodel or planID is not a valid int value. Request body contains invalid content. Rasterbasis with the same rasterbasismodel already exists. Rasterbasis type TEXT or LEGEND is used for plans in XPlanGML >= 5.1. Name of the rasterdatei or georeferenzdatei does not match the referenzURL or georefURL in the rasterbasismodel."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      }
    },
    "/plan/{planId}/text/{id}" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getTextById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the text to be returned (GML-Id of the feature)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GML_ID_123"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Text"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value."
          },
          "404" : {
            "description" : "Invalid planID or text ID, plan or text not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "operationId" : "replaceTextById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be updated",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the text to be updated (GML-Id of the feature)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GML_ID_123"
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "textmodel" ],
                "type" : "object",
                "properties" : {
                  "textmodel" : {
                    "$ref" : "#/components/schemas/Text"
                  },
                  "datei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "datei" : {
                  "contentType" : "application/pdf, application/msword, application/odt"
                },
                "textmodel" : {
                  "contentType" : "application/json"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Text"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or textmodel is missing or planID is not a valid int value. Request body contains invalid content. Text with the same textmodel already exists. Name of the datei does not match the refText/referenzURL in the textmodel."
          },
          "404" : {
            "description" : "Invalid planID or text ID, plan or Text not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      }
    },
    "/plan/{planId}/gemeinde" : {
      "get" : {
        "tags" : [ "edit" ],
        "description" : "Retrieve Gemeinden to edit, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "getGemeinden",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Gemeinde"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "post" : {
        "tags" : [ "edit" ],
        "description" : "Add new Gemeinde, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "addGemeinde",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to add gemeinde",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Gemeinde"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value. Request body contains invalid content. Gemeinde with the same gemeindemodel already exists."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      }
    },
    "/plan/{planId}/dokument" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getDokumente",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to return dokumente",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Dokument"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "post" : {
        "tags" : [ "edit" ],
        "operationId" : "addDokument",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to add a dokument",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "dokumentmodel" ],
                "type" : "object",
                "properties" : {
                  "dokumentmodel" : {
                    "$ref" : "#/components/schemas/Dokument"
                  },
                  "datei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "datei" : {
                  "contentType" : "application/pdf, application/msword, application/odt"
                },
                "dokumentmodel" : {
                  "contentType" : "application/json"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Dokument"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or dokumentmodel is missing or planID is not a valid int value. Request body contains invalid content. Dokument with the same dokumentmodel already exists. Name of the datei does not match the referenzURL in the dokumentmodel."
          },
          "404" : {
            "description" : "Invalid planID or dokument ID, plan or dokument not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      }
    },
    "/plan/{planId}/gml" : {
      "get" : {
        "tags" : [ "manage", "search" ],
        "summary" : "Get XPlanGML identified by the given planId",
        "description" : "Returns the XPlanGML of an existing plan identified by the given planId",
        "operationId" : "planGml",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/status/{uuid}" : {
      "get" : {
        "tags" : [ "status" ],
        "summary" : "Status of a import",
        "description" : "Returns the status of the import",
        "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/ManagerStatusNotification"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid uuid, no validation with the passed uuid found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/planslog" : {
      "get" : {
        "summary" : "Get planslog",
        "description" : "Returns the planslog describing imported/edited/deleted plans",
        "operationId" : "planslog",
        "parameters" : [ {
          "name" : "offset",
          "in" : "query",
          "description" : "Number of entries to skip",
          "schema" : {
            "minimum" : 0,
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Number of entries to return",
          "schema" : {
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        }, {
          "name" : "days",
          "in" : "query",
          "description" : "Filters the entries by the last update date beginning now",
          "schema" : {
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/PlanLog"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported query parameter"
          },
          "404" : {
            "description" : "Invalid offset, limit or days parameter"
          },
          "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"
          }
        }
      }
    },
    "/plan/{planId}/veraenderungssperre" : {
      "get" : {
        "tags" : [ "edit" ],
        "description" : "Retrieve Veraenderungssperre to edit, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "getVeraenderungssperre",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan veraenderungssperre to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Veraenderungssperre"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "description" : "Edit Veraenderungssperre, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "replaceVeraenderungssperre",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to add/replace veraenderungssperre",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "veraenderungssperremodel" ],
                "type" : "object",
                "properties" : {
                  "veraenderungssperremodel" : {
                    "$ref" : "#/components/schemas/Veraenderungssperre"
                  },
                  "datei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "datei" : {
                  "contentType" : "application/pdf, application/msword, application/odt"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Veraenderungssperre"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or veraenderungssperre is missing or planID is not a valid int value. Request body contains invalid content."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      },
      "delete" : {
        "tags" : [ "edit" ],
        "description" : "Remove Veraenderungssperre, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "deleteVeraenderungssperre",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Veraenderungssperre"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan/{planId}/planaufstellendegemeinde" : {
      "get" : {
        "tags" : [ "edit" ],
        "description" : "Retrieve PlanaufstellendeGemeinden to edit, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "getPlanaufstellendeGemeinden",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Gemeinde"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "post" : {
        "tags" : [ "edit" ],
        "description" : "Add new PlanaufstellendeGemeinden, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "addPlanaufstellendeGemeinde",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to add PlanaufstellendeGemeinde",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Gemeinde"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value. Request body contains invalid content. Request body contains invalid content. PlanaufstellendeGemeinde with the same planaufstellendegemeindemodel already exists."
          },
          "404" : {
            "description" : "Invalid planID, plan not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      }
    },
    "/plan/{planId}/rasterbasis/{id}" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getRasterbasisById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the rasterbasis to be returned (Pattern of the ID: referenzName-referenzURL, other characters than [a-z,A-Z,0-9,_,-] are removed",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Referenz123-"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Rasterbasis"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID or rasterbasis ID, plan or rasterbasis not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "operationId" : "replaceRasterbasisById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be updated",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the rasterbasis to be updated (Pattern of the ID: referenzName-referenzURL, other characters than [a-z,A-Z,0-9,_,-] are removed",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Referenz123-"
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "rasterbasismodel" ],
                "type" : "object",
                "properties" : {
                  "rasterbasismodel" : {
                    "$ref" : "#/components/schemas/Rasterbasis"
                  },
                  "rasterdatei" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "georeferenzdatei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "rasterdatei" : {
                  "contentType" : "image/tiff, image/png"
                },
                "georeferenzdatei" : {
                  "contentType" : "text/plain"
                },
                "rasterbasismodel" : {
                  "contentType" : "application/json"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Rasterbasis"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan type or version, missing bereich nummer or rasterbasismodel or planID is not a valid int value. Request body contains invalid content. Rasterbasis with the same rasterbasismodel already exists. Rasterbasis type TEXT or LEGEND is used for plans in XPlanGML >= 5.1. Name of the rasterdatei or georeferenzdatei does not match the referenzURL or georefURL in the rasterbasismodel."
          },
          "404" : {
            "description" : "Invalid planID or rasterbasis ID, plan or rasterbasis not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      },
      "delete" : {
        "tags" : [ "edit" ],
        "operationId" : "deleteRasterbasisById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be deleted",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the rasterbasis to be deleted (Pattern of the ID: referenzName-referenzURL, other characters than [a-z,A-Z,0-9,_,-] are removed",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Referenz123-"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Rasterbasis"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID or rasterbasis ID, plan or rasterbasis not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan/{planId}/planaufstellendegemeinde/{id}" : {
      "get" : {
        "tags" : [ "edit" ],
        "description" : "Retrieve PlanaufstellendeGemeinden to edit, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "getPlanaufstellendeGemeindeById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be returned",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the PlanaufstellendeGemeinde to be returned (GML-Id of the feature)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GML_ID_123"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value."
          },
          "404" : {
            "description" : "Invalid planID or PlanaufstellendeGemeinde ID, plan or PlanaufstellendeGemeinde not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "description" : "Edit existing PlanaufstellendeGemeinden, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "replacePlanaufstellendeGemeindeById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to be updated",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the PlanaufstellendeGemeinde to be updated (GML-Id of the feature)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "GML_ID_123"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Gemeinde"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or plan type or planID is not a valid int value. Request body contains invalid content. PlanaufstellendeGemeinde the same planaufstellendegemeindemodel already exists. "
          },
          "404" : {
            "description" : "Invalid planID or PlanaufstellendeGemeinde ID, plan or PlanaufstellendeGemeinde not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      },
      "delete" : {
        "tags" : [ "edit" ],
        "description" : "Remove PlanaufstellendeGemeinden, only BPlan in XPlanGML 6.0 are supported.",
        "operationId" : "deletePlanaufstellendeGemeindeById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to delete PlanaufstellendeGemeinde",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the PlanaufstellendeGemeinde to be deleted",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 2
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Gemeinde"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid planID or plan type or PlanaufstellendeGemeinde ID, plan or PlanaufstellendeGemeinde not found"
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/plan/{planId}/dokument/{id}" : {
      "get" : {
        "tags" : [ "edit" ],
        "operationId" : "getDokumentById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to get dokument",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the dokument to be returned (Pattern of the ID: referenzName-referenzURL, other characters than [a-z,A-Z,0-9,_,-] are removed)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Legende123-"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Dokument"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "404" : {
            "description" : "Invalid planID or dokument ID, plan or dokument not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      },
      "put" : {
        "tags" : [ "edit" ],
        "operationId" : "replaceDokumentById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to replace dokument",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the dokument to be updated (Pattern of the ID: referenzName-referenzURL, other characters than [a-z,A-Z,0-9,_,-] are removed)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Legende123-"
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "required" : [ "dokumentmodel" ],
                "type" : "object",
                "properties" : {
                  "dokumentmodel" : {
                    "$ref" : "#/components/schemas/Dokument"
                  },
                  "datei" : {
                    "type" : "string",
                    "format" : "binary"
                  }
                }
              },
              "encoding" : {
                "datei" : {
                  "contentType" : "application/pdf, application/msword, application/odt"
                },
                "dokumentmodel" : {
                  "contentType" : "application/json"
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Dokument"
                }
              }
            }
          },
          "400" : {
            "description" : "Unsupported plan version or dokumentmodel is missing or planID is not a valid int value. Request body contains invalid content. Dokument with the same dokumentmodel already exists. Name of the datei does not match the referenzURL in the dokumentmodel."
          },
          "404" : {
            "description" : "Invalid planID or dokument ID, plan or dokument not found"
          },
          "406" : {
            "description" : "Requested format is not available"
          },
          "415" : {
            "description" : "Unsupported media type"
          }
        }
      },
      "delete" : {
        "tags" : [ "edit" ],
        "operationId" : "deleteDokumentById",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "description" : "ID of the plan to delete dokument",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 123
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the dokument to be deleted (Pattern of the ID: referenzName-referenzURL, other characters than [a-z,A-Z,0-9,_,-] are removed)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Legende123-"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Dokument"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid planID or dokument ID, plan or dokument not found"
          },
          "400" : {
            "description" : "Unsupported plan version or planID is not a valid int value"
          },
          "406" : {
            "description" : "Requested format is not available"
          }
        }
      }
    },
    "/" : {
      "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" : {
      "ManagerSystemConfig" : {
        "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" ]
            }
          },
          "rasterCrs" : {
            "type" : "string",
            "description" : "Konfiguriertes CRS für die Rasterdatenhaltung",
            "example" : "epsg:28352"
          },
          "skipSemantisch" : {
            "type" : "boolean",
            "description" : "Semantische Validierung bei Import ueberspringen"
          },
          "skipGeometrisch" : {
            "type" : "boolean",
            "description" : "Geometrische Validierung bei Import ueberspringen"
          },
          "skipFlaechenschluss" : {
            "type" : "boolean",
            "description" : "Ueberpruefung des Flaechenschluss bei Import ueberspringen"
          },
          "skipGeltungsbereich" : {
            "type" : "boolean",
            "description" : "Ueberpruefung des Geltungsbereich bei Import ueberspringen"
          },
          "skipLaufrichtung" : {
            "type" : "boolean",
            "description" : "Ueberpruefung der Laufrichtung bei Import ueberspringen"
          },
          "documentUrl" : {
            "type" : "string",
            "description" : "URL ueber die alle Anlagen zu einem Plan heruntergeladen werden koennen",
            "example" : "http://example.org/xdokumente/api/v1/dokument/{planId}/{fileName}"
          }
        }
      },
      "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. "
        }
      },
      "Aenderung" : {
        "required" : [ "planName", "rechtscharakter" ],
        "type" : "object",
        "properties" : {
          "planName" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "rechtscharakter" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          },
          "nummer" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          }
        }
      },
      "Aenderungen" : {
        "type" : "object",
        "properties" : {
          "aendert" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Aenderung"
            }
          },
          "wurdeGeaendertVon" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Aenderung"
            }
          }
        }
      },
      "ImportReceipt" : {
        "type" : "object",
        "properties" : {
          "uuid" : {
            "type" : "string"
          },
          "statusLink" : {
            "$ref" : "#/components/schemas/ResponseLink"
          }
        }
      },
      "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)"
      },
      "StatusMessage" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string",
            "example" : "Plan mit ID 123 entfernt"
          }
        }
      },
      "Bereich" : {
        "type" : "object",
        "properties" : {
          "nummer" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string",
            "description" : "Number of the Bereich",
            "example" : "0"
          },
          "name" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string",
            "description" : "Name of the Bereich"
          }
        },
        "description" : "Bereich of a plan"
      },
      "Gemeinde" : {
        "type" : "object",
        "properties" : {
          "ags" : {
            "type" : "string",
            "example" : "02000000"
          },
          "rs" : {
            "type" : "string",
            "example" : "123765305201"
          },
          "gemeindeName" : {
            "type" : "string",
            "example" : "Gemeindename"
          },
          "ortsteilName" : {
            "type" : "string",
            "example" : "Ortsteilname"
          }
        },
        "description" : "Gemeinden related to the Plan"
      },
      "Link" : {
        "required" : [ "href" ],
        "type" : "object",
        "properties" : {
          "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"
          },
          "rel" : {
            "type" : "string",
            "example" : "self",
            "enum" : [ "self", "alternate", "planwerkwms", "gml" ]
          }
        },
        "description" : "Link to a resource related to the resource such as XPlanWerkWMS or the resource itself",
        "example" : {
          "href" : "https://xplanbox.lat-lon.de/xplan-wms/services/planwerkwms/planname/<PLANNAME>?",
          "rel" : "planwerkwms",
          "type" : "image/png",
          "hreflang" : "de",
          "title" : "Othmarschen 3"
        }
      },
      "PlanInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "internal unique manager identifier, generated at import time",
            "format" : "int32",
            "example" : 123
          },
          "type" : {
            "type" : "string",
            "example" : "BP_Plan"
          },
          "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" ]
          },
          "planStatus" : {
            "type" : "string",
            "example" : "Festgestellt",
            "enum" : [ "FESTGESTELLT", "IN_AUFSTELLUNG", "ARCHIVIERT" ]
          },
          "raster" : {
            "type" : "boolean",
            "example" : true
          },
          "importDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "inspirePublished" : {
            "type" : "boolean",
            "example" : false
          },
          "bbox" : {
            "$ref" : "#/components/schemas/PlanInfoBbox"
          },
          "geltungsbereichWGS84" : {
            "$ref" : "#/components/schemas/Geometry"
          },
          "xplanModelData" : {
            "$ref" : "#/components/schemas/PlanInfoXplanModelData"
          },
          "links" : {
            "type" : "array",
            "description" : "Links related to the resource such as XPlanWerkWMS or self link",
            "example" : {
              "href" : "https://xplanbox.lat-lon.de/xplan-wms/services/planwerkwms/planname/<PLANNAME>?",
              "rel" : "planwerkwms",
              "type" : "image/png",
              "hreflang" : "de",
              "title" : "Othmarschen 3"
            },
            "items" : {
              "$ref" : "#/components/schemas/Link"
            }
          }
        }
      },
      "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"
          }
        }
      },
      "PlanInfoXplanModelData" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "example" : "Othmarschen3"
          },
          "nummer" : {
            "type" : "string",
            "example" : "-"
          },
          "internalId" : {
            "type" : "string",
            "example" : "12341"
          },
          "gemeinden" : {
            "type" : "array",
            "description" : "Gemeinden related to the Plan",
            "items" : {
              "$ref" : "#/components/schemas/Gemeinde"
            }
          },
          "rechtsstand" : {
            "type" : "string",
            "description" : "translation of code list value of xplan:rechtsstand",
            "example" : "Satzung"
          },
          "inkrafttretensDatum" : {
            "type" : "string",
            "format" : "date"
          },
          "bereiche" : {
            "type" : "array",
            "description" : "Bereiche related to the Plan",
            "items" : {
              "$ref" : "#/components/schemas/Bereich"
            }
          }
        },
        "description" : "attributes derived from XPlanGML data model"
      },
      "Basisdaten" : {
        "required" : [ "planArt" ],
        "type" : "object",
        "properties" : {
          "satzungsbeschlussDatum" : {
            "type" : "string",
            "description" : "Supported only by BPlan in XPlanGML 6.0",
            "format" : "date"
          },
          "inkrafttretensDatum" : {
            "type" : "string",
            "description" : "Supported only by BPlan in XPlanGML 6.0",
            "format" : "date"
          },
          "durchfuehrungsVertrag" : {
            "type" : "boolean",
            "description" : "Supported only by BPlan in XPlanGML 6.0"
          },
          "erschliessungsVertrag" : {
            "type" : "boolean",
            "description" : "Supported only by BPlan in XPlanGML 6.0"
          },
          "staedtebaulicherVertrag" : {
            "type" : "boolean",
            "description" : "Supported only by BPlan in XPlanGML 6.0"
          },
          "name" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "beschreibung" : {
            "maxLength" : 1000,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "planArt" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          },
          "verfahren" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          },
          "rechtsstand" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          },
          "rechtsverordnungsDatum" : {
            "type" : "string",
            "format" : "date"
          },
          "technHerstellDatum" : {
            "type" : "string",
            "format" : "date"
          },
          "untergangsDatum" : {
            "type" : "string",
            "format" : "date"
          }
        }
      },
      "Dokument" : {
        "required" : [ "typ" ],
        "type" : "object",
        "properties" : {
          "nummer" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string",
            "description" : "Available since XPlanGML 6.1"
          },
          "seitenangabe" : {
            "type" : "integer",
            "description" : "Available since XPlanGML 6.1",
            "format" : "int32"
          },
          "georefURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "georefMimeType" : {
            "type" : "string"
          },
          "art" : {
            "type" : "string"
          },
          "informationssystemURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "referenzName" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "referenzURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "referenzMimeType" : {
            "type" : "string"
          },
          "beschreibung" : {
            "maxLength" : 1000,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "datum" : {
            "type" : "string",
            "format" : "date"
          },
          "id" : {
            "type" : "string"
          },
          "typ" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "Rasterbasis" : {
        "type" : "object",
        "properties" : {
          "nummer" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string",
            "description" : "Available since XPlanGML 6.1"
          },
          "seitenangabe" : {
            "type" : "integer",
            "description" : "Available since XPlanGML 6.1",
            "format" : "int32"
          },
          "georefURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "georefMimeType" : {
            "type" : "string"
          },
          "art" : {
            "type" : "string"
          },
          "informationssystemURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "referenzName" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "referenzURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "referenzMimeType" : {
            "type" : "string"
          },
          "beschreibung" : {
            "maxLength" : 1000,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "datum" : {
            "type" : "string",
            "format" : "date"
          },
          "id" : {
            "type" : "string"
          },
          "bereichNummer" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.()_\\-]*$",
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "description" : "Discriminates between different Rasterbasis types, required for XPlanGML 4.x and 5.x.",
            "example" : "SCAN",
            "enum" : [ "SCAN", "TEXT", "LEGEND" ],
            "default" : "SCAN"
          }
        }
      },
      "Referenz" : {
        "type" : "object",
        "properties" : {
          "nummer" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string",
            "description" : "Available since XPlanGML 6.1"
          },
          "seitenangabe" : {
            "type" : "integer",
            "description" : "Available since XPlanGML 6.1",
            "format" : "int32"
          },
          "georefURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "georefMimeType" : {
            "type" : "string"
          },
          "art" : {
            "type" : "string"
          },
          "informationssystemURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "referenzName" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "referenzURL" : {
            "maxLength" : 250,
            "minLength" : 0,
            "pattern" : "^[A-Za-z0-9.@:%_\\+.~#?&//=\\-]*$",
            "type" : "string"
          },
          "referenzMimeType" : {
            "type" : "string"
          },
          "beschreibung" : {
            "maxLength" : 1000,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "datum" : {
            "type" : "string",
            "format" : "date"
          }
        }
      },
      "Text" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "schluessel" : {
            "maxLength" : 50,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "gesetzlicheGrundlage" : {
            "maxLength" : 100,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "text" : {
            "maxLength" : 10000,
            "minLength" : 0,
            "pattern" : "^[\\u0030-\\u0039\\u0021-\\u0026\\u0028-\\u002F\\u003A-\\u0084\\u0086-\\u009F\\u00A1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\s]*$",
            "type" : "string"
          },
          "refText" : {
            "$ref" : "#/components/schemas/Referenz"
          },
          "rechtscharakter" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "Veraenderungssperre" : {
        "required" : [ "endDatum", "startDatum", "verlaengerung" ],
        "type" : "object",
        "properties" : {
          "verlaengerung" : {
            "maximum" : 99999,
            "exclusiveMaximum" : false,
            "minimum" : 1000,
            "exclusiveMinimum" : false,
            "type" : "integer",
            "format" : "int32"
          },
          "beschlussDatum" : {
            "type" : "string",
            "format" : "date"
          },
          "startDatum" : {
            "type" : "string",
            "format" : "date"
          },
          "endDatum" : {
            "type" : "string",
            "format" : "date"
          },
          "refBeschluss" : {
            "$ref" : "#/components/schemas/Referenz"
          }
        }
      },
      "PlanLog" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "internal unique identifier of the log entry",
            "format" : "int32",
            "example" : 123
          },
          "planId" : {
            "type" : "integer",
            "description" : "internal unique manager identifier",
            "format" : "int32",
            "example" : 123
          },
          "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", "XPLAN_SYN" ]
          },
          "type" : {
            "type" : "string",
            "example" : "BP_Plan",
            "enum" : [ "BP_Plan", "FP_Plan", "RP_Plan", "LP_Plan", "SO_Plan" ]
          },
          "bbox" : {
            "$ref" : "#/components/schemas/PlanInfoBbox"
          },
          "planstatusNew" : {
            "type" : "string",
            "example" : "Festgestellt",
            "enum" : [ "FESTGESTELLT", "IN_AUFSTELLUNG", "ARCHIVIERT" ]
          },
          "planstatusOld" : {
            "type" : "string",
            "example" : "Festgestellt",
            "enum" : [ "FESTGESTELLT", "IN_AUFSTELLUNG", "ARCHIVIERT" ]
          },
          "operation" : {
            "type" : "string",
            "example" : "Insert",
            "enum" : [ "INSERT", "UPDATE", "DELETE" ]
          },
          "lastUpdateDate" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "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" ]
          }
        }
      },
      "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"
            }
          }
        }
      },
      "ManagerStatusNotification" : {
        "type" : "object",
        "properties" : {
          "errorMsg" : {
            "type" : "string"
          },
          "links" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ResponseLink"
            }
          },
          "status" : {
            "type" : "string",
            "enum" : [ "IMPORT_REQUESTED", "VALIDATION_STARTED", "VALIDATION_FAILED", "VALIDATION_FINISHED", "IMPORT_STARTED", "IMPORT_ABORTED", "IMPORT_FAILED", "IMPORT_FINISHED" ]
          },
          "importedPlanIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            }
          }
        }
      }
    },
    "securitySchemes" : {
      "Bearer" : {
        "type" : "http",
        "scheme" : "bearer",
        "bearerFormat" : "JWT"
      }
    }
  }
}