{
    "schemes": [
        "http",
        "https"
    ],
    "swagger": "2.0",
    "info": {
        "description": "OpenAPI documentation for karte.bayern.\n\nIncludes Concept APIs (/api/places, /api/locations, /api/routes), legacy APIs marked as deprecated,\ninfrastructure endpoints for vector tiles and satellite imagery, and ANNA preparation endpoints.\n\nTile loading: /tiles/{z}/{x}/{y}.mvt (gzipped MVT from the configured tile reader).\nAir imagery: /sat/{z}/{x}/{y} (approved DACH source proxy with local, source-isolated cache/conversion).",
        "title": "karte.bayern API",
        "contact": {},
        "version": "1.0"
    },
    "basePath": "/",
    "paths": {
        "/admin/api/warnings/status": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Local public warning collector status",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/ab/event": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/ab/event",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/admin/poi/normalize": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Auto-generated stub for /api/admin/poi/normalize",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/admin/poi/normalize/status": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Auto-generated stub for /api/admin/poi/normalize/status",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/admin/reports": {
            "get": {
                "security": [
                    {
                        "ReportAdmin": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports-admin"
                ],
                "summary": "Geschützte Moderationsqueue abrufen",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Statusfilter",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "1 bis 100",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "0 bis 10000",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/reports/{id}": {
            "get": {
                "security": [
                    {
                        "ReportAdmin": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports-admin"
                ],
                "summary": "Meldungsdetails und interne Prüfgeschichte abrufen",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Meldungs-ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/mapreports.Report"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/reports/{id}/decision": {
            "post": {
                "security": [
                    {
                        "ReportAdmin": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports-admin"
                ],
                "summary": "Meldung begründet moderieren",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Meldungs-ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Aktuelle Revision in Anführungszeichen",
                        "name": "If-Match",
                        "in": "header",
                        "required": true
                    },
                    {
                        "description": "Geprüfte Entscheidung",
                        "name": "decision",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/mapreports.Decision"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/mapreports.Report"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "428": {
                        "description": "Precondition Required",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/reports/{id}/publish-note": {
            "post": {
                "security": [
                    {
                        "ReportAdmin": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports-admin"
                ],
                "summary": "Geprüften Text ausdrücklich als öffentliche OSM-Note veröffentlichen",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Meldungs-ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Aktuelle Revision in Anführungszeichen",
                        "name": "If-Match",
                        "in": "header",
                        "required": true
                    },
                    {
                        "description": "Ausdrückliche Bestätigung",
                        "name": "confirmation",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/main.mapReportPublishRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/mapreports.Report"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "428": {
                        "description": "Precondition Required",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "429": {
                        "description": "Too Many Requests",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "502": {
                        "description": "Bad Gateway",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/airquality/nearby": {
            "get": {
                "description": "Optional read-only station data, no street-level exposure estimate. Includes source, units, measured time, explicit time basis and separate cache age.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "environmental-data"
                ],
                "summary": "Nearby UBA air-quality stations and last available observations",
                "parameters": [
                    {
                        "maximum": 90,
                        "minimum": -90,
                        "type": "number",
                        "description": "Latitude in WGS84",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 180,
                        "minimum": -180,
                        "type": "number",
                        "description": "Longitude in WGS84",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "number",
                        "default": 25,
                        "description": "Search radius in km",
                        "name": "radius_km",
                        "in": "query"
                    },
                    {
                        "maximum": 50,
                        "minimum": 1,
                        "type": "integer",
                        "default": 10,
                        "description": "Maximum stations",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/anna/capabilities": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/capabilities",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/chat": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/chat",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/einsatz/structure": {
            "post": {
                "description": "Ordnet nur ausdrücklich übermittelte Stichpunkte. Maximal 24 eindeutige IDs mit 1–32 ASCII-Buchstaben/Ziffern/_/-, je Text höchstens 300 und insgesamt höchstens 3000 Unicode-Zeichen; JSON-Body maximal 16 KiB. Das Modell liefert nur ID/Kategorie, alle Antworttexte stammen unverändert aus der Eingabe. Kategorien: meldender, ort, lage, massnahmen, kraefte, bedarf, sonstiges. Fehlende Zuordnungen landen in sonstiges; Providerfehler, ungültige Modellausgabe und Zeitüberschreitung nach spätestens acht Sekunden liefern die Originalpunkte als Fallback. Keine Chat-Tools, Aktenabrufe oder Dokumentänderungen. Bestehende ANNA-Authentifizierung und Providerkonfiguration einschließlich möglichem externen Fallback; private, no-store und gleicher Ursprung.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ANNA"
                ],
                "summary": "Eingegebene Einsatzstichpunkte nach MELDEN ordnen",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ANNA-Zugangscode, sofern kein öffentlicher lokaler KI-Zugang aktiv ist",
                        "name": "X-ANNA-Code",
                        "in": "header"
                    },
                    {
                        "description": "Ausschließlich selbst eingegebene Stichpunkte; keine automatische lokale Akte oder Position",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/main.annaEinsatzStructureRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.annaEinsatzStructureResponse"
                        }
                    },
                    "400": {
                        "description": "Ungültige Stichpunkte oder JSON-Struktur",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "401": {
                        "description": "ANNA-Zugang erforderlich",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "402": {
                        "description": "Bestehende Partnerquota überschritten",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "403": {
                        "description": "Fremder Ursprung",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "POST erforderlich",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "413": {
                        "description": "JSON-Body größer als 16 KiB",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "415": {
                        "description": "application/json erforderlich",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "429": {
                        "description": "Bestehendes Anfragelimit überschritten",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/anna/execute": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/execute",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/explain": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/explain",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/plan": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/plan",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/resolve": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/resolve",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/route/plan": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/route/plan",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/search/nearby": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/search/nearby",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/status": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/status",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/tools": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/tools",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/anna/trace": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/anna/trace",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/charging-register/bbox": {
            "get": {
                "description": "Local snapshot only. Each bbox side may span at most two degrees.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "environmental-data"
                ],
                "summary": "BNetzA charging register locations in a bounded viewport",
                "parameters": [
                    {
                        "type": "string",
                        "description": "west,south,east,north; maximum two degrees per side",
                        "name": "bbox",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 100,
                        "minimum": 1,
                        "type": "integer",
                        "default": 20,
                        "description": "Maximum stations",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/charging-register/nearby": {
            "get": {
                "description": "Uses only a locally imported CC BY 4.0 snapshot. No live availability or prices.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "environmental-data"
                ],
                "summary": "Nearby BNetzA charging register locations",
                "parameters": [
                    {
                        "maximum": 90,
                        "minimum": -90,
                        "type": "number",
                        "description": "Latitude in WGS84",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 180,
                        "minimum": -180,
                        "type": "number",
                        "description": "Longitude in WGS84",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "number",
                        "default": 25,
                        "description": "Radius in km",
                        "name": "radius_km",
                        "in": "query"
                    },
                    {
                        "maximum": 100,
                        "minimum": 1,
                        "type": "integer",
                        "default": 20,
                        "description": "Maximum stations",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/data-sources": {
            "get": {
                "description": "Returns the versioned source inventory. This is policy metadata, not runtime freshness.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metadata"
                ],
                "summary": "List data sources and license policies",
                "parameters": [
                    {
                        "enum": [
                            "active",
                            "optional",
                            "import_only",
                            "planned"
                        ],
                        "type": "string",
                        "description": "Filter by lifecycle status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "manual_import",
                            "on_demand",
                            "polling",
                            "scheduled_import",
                            "startup_fetch",
                            "user_input"
                        ],
                        "type": "string",
                        "description": "Filter by access mode",
                        "name": "access",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        },
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected catalog representation"
                            }
                        }
                    },
                    "304": {
                        "description": "Catalog unchanged; no response body",
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected catalog representation"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            },
            "head": {
                "description": "Returns the versioned source inventory. This is policy metadata, not runtime freshness.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metadata"
                ],
                "summary": "List data sources and license policies",
                "parameters": [
                    {
                        "enum": [
                            "active",
                            "optional",
                            "import_only",
                            "planned"
                        ],
                        "type": "string",
                        "description": "Filter by lifecycle status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "manual_import",
                            "on_demand",
                            "polling",
                            "scheduled_import",
                            "startup_fetch",
                            "user_input"
                        ],
                        "type": "string",
                        "description": "Filter by access mode",
                        "name": "access",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        },
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected catalog representation"
                            }
                        }
                    },
                    "304": {
                        "description": "Catalog unchanged; no response body",
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected catalog representation"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/data-sources/runtime": {
            "get": {
                "description": "Reads in-memory metadata only; does not check upstream availability or expose records. Availability permits optional requests; readiness describes an existing usable cache.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metadata"
                ],
                "summary": "Runtime availability of optional public data sources",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.dataSourcesRuntimeResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            },
            "head": {
                "description": "Reads in-memory metadata only; does not check upstream availability or expose records. Availability permits optional requests; readiness describes an existing usable cache.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metadata"
                ],
                "summary": "Runtime availability of optional public data sources",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.dataSourcesRuntimeResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/debug/cache": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "debug"
                ],
                "summary": "Auto-generated stub for /api/debug/cache",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/drive/tiles/{z}/{x}/{y}": {
            "get": {
                "description": "Gerichtete Straßengeometrie, Quellattribute und Abbiegeverbote; keine Position, Route oder Verlaufsdaten. Zoom 12 für PWA-Freifahrt, Zoom 14 für kleine native Offline-Umleitungen.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "navigation"
                ],
                "summary": "Öffentliche Straßenkachel für lokale Freifahrt",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Zoom (12 oder 14)",
                        "name": "z",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "XYZ column (0..2^z-1)",
                        "name": "x",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "XYZ row (0..2^z-1)",
                        "name": "y",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.driveTileResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/dwd/warnings": {
            "get": {
                "description": "Disabled by default. Returns validity, checked time, cache state, provenance and warning polygons; no routing effects.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "environmental-data"
                ],
                "summary": "DWD weather warnings intersecting a viewport",
                "parameters": [
                    {
                        "type": "string",
                        "description": "west,south,east,north in WGS84; maximum 8 by 5 degrees",
                        "name": "bbox",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 100,
                        "minimum": 1,
                        "type": "integer",
                        "default": 100,
                        "description": "Maximum warnings",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/elevation": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "terrain"
                ],
                "summary": "Get optional official terrain elevations",
                "parameters": [
                    {
                        "description": "WGS84 coordinates as [longitude, latitude]",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/main.elevationRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.elevationResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "502": {
                        "description": "Bad Gateway",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/extras/hydrants": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/extras/hydrants",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/flood/situation": {
            "get": {
                "description": "Disabled by default. Includes original official classification, color, source update time and attribution; no routing effects or water-level observations.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "environmental-data"
                ],
                "summary": "LHP flood situation at Bavarian gauges in a viewport",
                "parameters": [
                    {
                        "type": "string",
                        "description": "west,south,east,north; maximum 8 by 5 degrees",
                        "name": "bbox",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 500,
                        "minimum": 1,
                        "type": "integer",
                        "default": 100,
                        "description": "Maximum stations",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/kmlsearch": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/kmlsearch",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/markt/bestand": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/markt/bestand",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/markt/eintragen": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/markt/eintragen",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/markt/kategorien": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/markt/kategorien",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/markt/nearby": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/markt/nearby",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/markt/suche": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/markt/suche",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/navigation/landmarks": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/navigation/landmarks",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/navigation/story": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/navigation/story",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/navigation/zoom": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/navigation/zoom",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/offline/datasets/build": {
            "post": {
                "description": "native-bundle-v1 liefert einen vollständigen begrenzten Routenkorridor als ZIP (Zoom 6–14), lokale Glyphen und öffentlichen OSM-POI-Ausschnitt; include_routing=false ist erforderlich. Fehlende Kacheln und überschrittene Budgets führen zum Jobfehler.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Offline"
                ],
                "summary": "Begrenztes Offline-Dataset oder natives Routenbundle erstellen",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dataset-Protokollclient",
                        "name": "X-KB-Dataset-Client",
                        "in": "header",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Unixzeit in Sekunden",
                        "name": "X-KB-Dataset-Timestamp",
                        "in": "header",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Einmaliger Nonce",
                        "name": "X-KB-Dataset-Nonce",
                        "in": "header",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "SHA-256 des Requestbodys",
                        "name": "X-KB-Dataset-Body-SHA256",
                        "in": "header",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Bestehende HMAC-SHA256-Requestsignatur",
                        "name": "X-KB-Dataset-Signature",
                        "in": "header",
                        "required": true
                    },
                    {
                        "description": "Dataset-Auswahl",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/main.offlineDatasetBuildRequest"
                        }
                    }
                ],
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "schema": {
                            "$ref": "#/definitions/main.offlineDatasetBuildResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/open-content/panoramax": {
            "get": {
                "description": "Optional, read-only metadata for one known public UUID. No coordinate/bbox search and no image proxy or embedding.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "open-content"
                ],
                "summary": "License-checked metadata of an explicitly referenced Panoramax picture",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Public Panoramax picture UUID",
                        "name": "id",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/open-content/wikivoyage": {
            "get": {
                "description": "Optional, read-only, CC BY-SA 4.0 with exact revision, authors/history link and modification notice. No geographic search or guessed article titles.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "open-content"
                ],
                "summary": "Introduction of an explicitly referenced German Wikivoyage article",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Exact https://de.wikivoyage.org/wiki/ article URL",
                        "name": "article",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/orthophoto/sources": {
            "get": {
                "description": "Returns display-ready provider, attribution, licence and product URLs. scope=runtime returns every reviewed provider selectable by /sat; scope=dach returns legal DACH source contracts and scope=available only locally installed KBRA archives. Every individual /sat response identifies its exact source in HTTP headers.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "Orthophoto source and licence metadata",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Optional source scope: runtime, catalog, dach, available, or coverage",
                        "name": "scope",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        },
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected source catalog"
                            }
                        }
                    },
                    "304": {
                        "description": "Source metadata unchanged; no response body",
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected source catalog"
                            }
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            },
            "head": {
                "description": "Returns display-ready provider, attribution, licence and product URLs. scope=runtime returns every reviewed provider selectable by /sat; scope=dach returns legal DACH source contracts and scope=available only locally installed KBRA archives. Every individual /sat response identifies its exact source in HTTP headers.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "Orthophoto source and licence metadata",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Optional source scope: runtime, catalog, dach, available, or coverage",
                        "name": "scope",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        },
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected source catalog"
                            }
                        }
                    },
                    "304": {
                        "description": "Source metadata unchanged; no response body",
                        "headers": {
                            "ETag": {
                                "type": "string",
                                "description": "Validator for the selected source catalog"
                            }
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/pegelonline/nearby": {
            "get": {
                "description": "Disabled by default. Includes units, observation time, age, cache status and provenance; no danger or road-access assessment.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "environmental-data"
                ],
                "summary": "Nearby PEGELONLINE stations and last available raw water levels",
                "parameters": [
                    {
                        "maximum": 90,
                        "minimum": -90,
                        "type": "number",
                        "description": "Latitude in WGS84",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 180,
                        "minimum": -180,
                        "type": "number",
                        "description": "Longitude in WGS84",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 100,
                        "minimum": 0,
                        "type": "number",
                        "default": 25,
                        "description": "Search radius in km",
                        "name": "radius_km",
                        "in": "query"
                    },
                    {
                        "maximum": 50,
                        "minimum": 1,
                        "type": "integer",
                        "default": 10,
                        "description": "Maximum stations",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/places/aed": {
            "get": {
                "description": "Lokale OSM-Standorte mit öffentlichen Zugangshinweisen. Entfernung ist Luftlinie; kein Nachweis aktueller Zugänglichkeit oder Betriebsbereitschaft. GET und HEAD werden unterstützt.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Gesundheit"
                ],
                "summary": "AEDs im Umkreis suchen",
                "parameters": [
                    {
                        "type": "number",
                        "description": "Breitengrad (-90 bis 90)",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Längengrad (-180 bis 180)",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "default": 5000,
                        "description": "Radius in Metern (\u003e0 bis 50000)",
                        "name": "radius",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Trefferlimit (1 bis 100)",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Namens-/Adressfilter, maximal 160 Unicode-Zeichen",
                        "name": "q",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareSearchResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    }
                }
            }
        },
        "/api/places/doctors": {
            "get": {
                "description": "Lokale OSM-Praxen für Menschen mit kartierten Kontaktdaten. Keine Termin-/Aufnahmezusage und kein Bereitschaftsdienstverzeichnis. Entfernung ist Luftlinie. GET und HEAD werden unterstützt.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Gesundheit"
                ],
                "summary": "Arztpraxen im Umkreis suchen",
                "parameters": [
                    {
                        "type": "number",
                        "description": "Breitengrad (-90 bis 90)",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Längengrad (-180 bis 180)",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "default": 5000,
                        "description": "Radius in Metern (\u003e0 bis 50000)",
                        "name": "radius",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Trefferlimit (1 bis 100)",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Namens-/Adressfilter, maximal 160 Unicode-Zeichen",
                        "name": "q",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareSearchResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    }
                }
            }
        },
        "/api/places/pharmacies": {
            "get": {
                "description": "Lokale OSM-Standorte mit regulären Öffnungszeiten, soweit kartiert. Kein Apotheken-Notdienstplan. Entfernung ist Luftlinie. GET und HEAD werden unterstützt.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Gesundheit"
                ],
                "summary": "Apotheken im Umkreis suchen",
                "parameters": [
                    {
                        "type": "number",
                        "description": "Breitengrad (-90 bis 90)",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Längengrad (-180 bis 180)",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "default": 5000,
                        "description": "Radius in Metern (\u003e0 bis 50000)",
                        "name": "radius",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Trefferlimit (1 bis 100)",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Namens-/Adressfilter, maximal 160 Unicode-Zeichen",
                        "name": "q",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareSearchResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    }
                }
            }
        },
        "/api/places/toilets": {
            "get": {
                "description": "Offene Standortdaten mit optionalem Namens-/Adressfilter und Öffnungszeitfilter. Entfernung ist Luftlinie. open_now=1 berücksichtigt nur auswertbare hinterlegte Öffnungszeiten und bestätigt keine aktuelle Zugänglichkeit. GET und HEAD werden unterstützt.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Orte"
                ],
                "summary": "Toiletten im Umkreis suchen",
                "parameters": [
                    {
                        "maximum": 90,
                        "minimum": -90,
                        "type": "number",
                        "description": "Breitengrad (-90 bis 90)",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 180,
                        "minimum": -180,
                        "type": "number",
                        "description": "Längengrad (-180 bis 180)",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 50000,
                        "minimum": 0,
                        "type": "number",
                        "default": 5000,
                        "description": "Radius in Metern (\u003e0 bis 50000)",
                        "name": "radius",
                        "in": "query"
                    },
                    {
                        "maximum": 100,
                        "minimum": 1,
                        "type": "integer",
                        "default": 20,
                        "description": "Trefferlimit (1 bis 100)",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Namens-/Adressfilter, maximal 160 Unicode-Zeichen",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "enum": [
                            0,
                            1
                        ],
                        "type": "integer",
                        "default": 0,
                        "description": "Nur nach hinterlegten Zeiten geöffnete Standorte; unbekannte Zeiten werden bei 1 ausgeschlossen",
                        "name": "open_now",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.ToiletsSearchResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "$ref": "#/definitions/main.HealthcareError"
                        }
                    }
                }
            }
        },
        "/api/poi/categories": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/categories",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/poi/export/light": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/export/light",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.POIList"
                        }
                    }
                }
            }
        },
        "/api/poi/extended": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/extended",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/poi/master": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/master",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.MasterCreateResp"
                        }
                    }
                }
            }
        },
        "/api/poi/menu": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/menu",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/poi/nearby": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/nearby",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.POIList"
                        }
                    }
                }
            }
        },
        "/api/poi/photos": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/photos",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/poi/search": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/search",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/poi/search/unified": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/poi/search/unified",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.POIList"
                        }
                    }
                }
            }
        },
        "/api/reports": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports"
                ],
                "summary": "Kartenhinweis intern einreichen",
                "parameters": [
                    {
                        "description": "Hinweis mit einmaligem zufälligen Zugriffsschlüssel",
                        "name": "report",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/main.mapReportCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Idempotente Wiederholung",
                        "schema": {
                            "$ref": "#/definitions/mapreports.Receipt"
                        }
                    },
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/mapreports.Receipt"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "413": {
                        "description": "Request Entity Too Large",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "429": {
                        "description": "Too Many Requests",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/reports/config": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports"
                ],
                "summary": "Verfügbarkeit des Meldewegs und Aufbewahrungsdauer",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/reports/{id}/status": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "reports"
                ],
                "summary": "Minimalen Meldungsstatus mit Zugriffsschlüssel abrufen",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Meldungs-ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Zugriffsschlüssel; niemals als URL-Parameter",
                        "name": "X-KB-Report-Token",
                        "in": "header",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/mapreports.Receipt"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "429": {
                        "description": "Too Many Requests",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/reverse": {
            "get": {
                "description": "DEPRECATED: Use /api/locations/reverse.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy reverse (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "type": "number",
                        "description": "Latitude",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Longitude",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/route": {
            "get": {
                "description": "DEPRECATED: Use /api/routes for new integrations.\nSupported OSM time limits and barrier access use a departure-minute snapshot in Europe/Berlin. Unknown gates remain passable with a warning; routing_conditions reports coverage and uncertainty. Metadata requires a coherent new import.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy route (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "type": "string",
                        "description": "start lat,lon",
                        "name": "start",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "end lat,lon",
                        "name": "end",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "car|bike|foot|delivery|truck|emergency",
                        "name": "profile",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "return up to three distinct routes",
                        "name": "alternatives",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "3 (default), 4 or 5: up to three full routes plus compact cached-guidance reserves",
                        "name": "candidateLimit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "fast,balanced,short; optional alternative enables a second diverse-path search",
                        "name": "alternativesRequested",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "car soft preference: default|motorway|main-roads|less-motorway",
                        "name": "roadPreference",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "P0|P1|P2|P3|P4",
                        "name": "priority",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "allow low-priority refresh to be deferred",
                        "name": "mayDefer",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "active route identifier for optional refresh",
                        "name": "activeRouteId",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "routing|street|landmark|full",
                        "name": "guidance",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "404": {
                        "description": "No route under applicable access and traffic rules",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/route/fleet": {
            "post": {
                "description": "DEPRECATED: Use /api/routes/fleet.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy route fleet (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "description": "Fleet request",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/route/matrix": {
            "post": {
                "description": "DEPRECATED: Use /api/routes/matrix.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy route matrix (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "description": "Matrix request",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/route/optimize": {
            "post": {
                "description": "DEPRECATED: Use /api/routes/optimize.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy route optimize (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "description": "Optimization request",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/routes/capabilities": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "routes"
                ],
                "summary": "Discover TSP, matrix, fleet and carpool planning contracts",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/routes/carpool": {
            "post": {
                "description": "Minimizes cars then total duration, respecting total seats and per-person extra ride time. Exact only for the directed time matrix; no time windows or transfers. Stateless/private response. See docs/CARPOOL_API.md.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "routes"
                ],
                "summary": "Assign up to 15 people to optional drivers and a common destination",
                "parameters": [
                    {
                        "description": "People, coordinates or addresses, destination and ride constraints",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/main.carpoolRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main.carpoolResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "413": {
                        "description": "Request Entity Too Large",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "504": {
                        "description": "Gateway Timeout",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/routes/fleet": {
            "post": {
                "description": "Heuristic fleet allocation with unassigned stops; not an exact passenger pickup optimizer. Use /api/routes/carpool for optional drivers with a shared destination.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "routes"
                ],
                "summary": "Assign stops to several vehicles and optimize each tour",
                "parameters": [
                    {
                        "description": "Vehicles and stops",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/routes/matrix": {
            "post": {
                "description": "2–100 coordinates or addresses. Use objective=time for travel-time costs; -1 durations indicate unreachable stops. Cost matrix entries are milliseconds for objective=time; other objectives are cost weights. See docs/ROUTE_OPTIMIZATION_API.md.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "routes"
                ],
                "summary": "Compute a directed stop cost matrix",
                "parameters": [
                    {
                        "description": "Stops, profile and objective",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "413": {
                        "description": "Request Entity Too Large",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/routes/optimize": {
            "post": {
                "description": "Directed road costs; 2–100 stops including endpoints, exact Held-Karp up to18 stops for the ordinary matrix objective and nearest-neighbor/2-opt above. Fixed endpoints, round trips, priorities, evaluated service/time windows. Time windows are not hard VRPTW constraints. See docs/ROUTE_OPTIMIZATION_API.md.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "routes"
                ],
                "summary": "Optimize one multi-stop trip (TSP)",
                "parameters": [
                    {
                        "description": "Stops, profile, objective, fixed_start, fixed_end, round_trip and optional service/priority settings",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "413": {
                        "description": "Request Entity Too Large",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/search": {
            "get": {
                "description": "DEPRECATED: Use /api/places/search and /api/locations/reverse instead.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy search (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Latitude for ranking",
                        "name": "lat",
                        "in": "query"
                    },
                    {
                        "type": "number",
                        "description": "Longitude for ranking",
                        "name": "lon",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/snap": {
            "get": {
                "description": "DEPRECATED: Use /api/locations/snap.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "legacy"
                ],
                "summary": "Legacy snap (deprecated)",
                "deprecated": true,
                "parameters": [
                    {
                        "type": "number",
                        "description": "Latitude",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Longitude",
                        "name": "lon",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/status": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "api"
                ],
                "summary": "Auto-generated stub for /api/status",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/main._swaggerAutoResp"
                        }
                    }
                }
            }
        },
        "/api/warnings": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "warnings"
                ],
                "summary": "Public warning cache for a bounded map viewport",
                "parameters": [
                    {
                        "type": "string",
                        "description": "west,south,east,north; maximum span 8 by 5 degrees",
                        "name": "bbox",
                        "in": "query",
                        "required": true
                    },
                    {
                        "maximum": 100,
                        "minimum": 1,
                        "type": "integer",
                        "default": 50,
                        "description": "Maximum warnings",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "405": {
                        "description": "Method Not Allowed",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/openapi.json": {
            "get": {
                "description": "Permanent redirect to /swagger/doc.json for tooling compatibility.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "OpenAPI JSON alias",
                "responses": {
                    "301": {
                        "description": "Moved Permanently",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/orthophoto/{source_id}/{z}/{x}/{y}": {
            "get": {
                "description": "Reads a locally installed and provenance-validated KBRA shard. This endpoint never proxies a provider; the legacy Bayern WMS path remains /sat.",
                "produces": [
                    "image/webp",
                    "image/jpeg",
                    "image/png"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "Serve an installed DACH orthophoto archive tile",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Approved DACH source ID",
                        "name": "source_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Zoom",
                        "name": "z",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Tile X",
                        "name": "x",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Tile Y",
                        "name": "y",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Orthophoto archive tile",
                        "schema": {
                            "type": "file"
                        }
                    },
                    "204": {
                        "description": "No tile in an installed archive shard",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Unknown or not installed source",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "Archive unavailable",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/sat/{z}/{x}/{y}": {
            "get": {
                "description": "Selects an approved official source by polygon coverage (Bayern DOP20, Austria basemap.at, Switzerland SWISSIMAGE, or Baden-Württemberg LGL), caches it on disk per source, and serves WebP/JPEG. Outside configured coverage or in local-only mode (DISABLE_EXTERNAL_DATA=1), only already cached tiles are served; missing tiles return 204 for the vector fallback.",
                "produces": [
                    "image/webp",
                    "image/jpeg"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "Satellite tile proxy",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Zoom",
                        "name": "z",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Tile X",
                        "name": "x",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Tile Y",
                        "name": "y",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Optional output format hint (e.g. webp)",
                        "name": "fmt",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Satellite tile image",
                        "schema": {
                            "type": "file"
                        }
                    },
                    "204": {
                        "description": "No content (local-only mode or missing tile)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "502": {
                        "description": "Bad Gateway",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/swagger/": {
            "get": {
                "description": "Serves the interactive Swagger UI frontend.",
                "produces": [
                    "text/html"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "Swagger UI",
                "responses": {
                    "200": {
                        "description": "Swagger UI HTML",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/swagger/doc.json": {
            "get": {
                "description": "Serves the generated OpenAPI document used by Swagger UI.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "OpenAPI spec JSON",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/tilejson.json": {
            "get": {
                "description": "Returns TileJSON including a revisioned tile URL template, bounds, attribution, vector layer field schema and dataset metadata.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "TileJSON metadata",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/tiles/{z}/{x}/{y}.mvt": {
            "get": {
                "description": "Loads gzipped Mapbox Vector Tiles from MBTiles. Successful responses include ETag; a current TileJSON revision (`kb_tile_rev`) enables immutable HTTP caching. Path format: /tiles/{z}/{x}/{y}.mvt",
                "produces": [
                    "application/vnd.mapbox-vector-tile"
                ],
                "tags": [
                    "infra"
                ],
                "summary": "Vector tile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Zoom",
                        "name": "z",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Tile X",
                        "name": "x",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Tile Y",
                        "name": "y",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Gzipped MVT tile",
                        "schema": {
                            "type": "file"
                        }
                    },
                    "204": {
                        "description": "No content (tile missing)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/v1/einsatz/assembly_points": {
            "get": {
                "description": "Räumlich begrenztes GeoJSON aus dem BOS-v2-Layer. Keine Bestätigung der Eignung oder Freigabe für die aktuelle Lage; keine geschützten Einsatzobjekte.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "einsatz"
                ],
                "summary": "Öffentliche OSM-Sammelplätze",
                "parameters": [
                    {
                        "type": "string",
                        "description": "minLon,minLat,maxLon,maxLat; alternativ lat/lon/radius",
                        "name": "bbox",
                        "in": "query"
                    },
                    {
                        "type": "number",
                        "description": "Breitengrad",
                        "name": "lat",
                        "in": "query"
                    },
                    {
                        "type": "number",
                        "description": "Längengrad",
                        "name": "lon",
                        "in": "query"
                    },
                    {
                        "type": "number",
                        "description": "Radius in Metern, maximal 50000",
                        "name": "radius",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Ungültiger Suchbereich",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "503": {
                        "description": "BOS-v2-Layer fehlt",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "aed.Details": {
            "type": "object",
            "properties": {
                "access": {
                    "type": "string"
                },
                "check_date": {
                    "type": "string"
                },
                "indoor": {
                    "type": "string"
                },
                "level": {
                    "type": "string"
                },
                "level_ref": {
                    "type": "string"
                },
                "location": {
                    "type": "string"
                },
                "opening_hours": {
                    "type": "string"
                },
                "operator": {
                    "type": "string"
                },
                "osm_node_id": {
                    "description": "set from the typed source reference by the API",
                    "type": "integer"
                },
                "phone": {
                    "type": "string"
                }
            }
        },
        "carpool.Rider": {
            "type": "object",
            "properties": {
                "departure_after_sec": {
                    "type": "number"
                },
                "direct_duration_sec": {
                    "type": "number"
                },
                "extra_duration_sec": {
                    "type": "number"
                },
                "participant_index": {
                    "type": "integer"
                },
                "pickup_after_sec": {
                    "type": "number"
                },
                "ride_duration_sec": {
                    "type": "number"
                }
            }
        },
        "carpool.Vehicle": {
            "type": "object",
            "properties": {
                "driver_id": {
                    "type": "string"
                },
                "driver_index": {
                    "type": "integer"
                },
                "duration_sec": {
                    "type": "number"
                },
                "riders": {
                    "description": "includes the driver",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/carpool.Rider"
                    }
                },
                "stop_indices": {
                    "description": "driver, pickups, destination (index n)",
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                }
            }
        },
        "conditions.Notice": {
            "type": "object",
            "properties": {
                "barriers": {
                    "type": "integer"
                },
                "basis": {
                    "type": "string"
                },
                "evaluated_at": {
                    "type": "string"
                },
                "metadata_available": {
                    "type": "boolean"
                },
                "time_limited_edges": {
                    "type": "integer"
                },
                "timezone": {
                    "type": "string"
                },
                "unknown_barriers": {
                    "type": "integer"
                },
                "unknown_conditions": {
                    "type": "integer"
                }
            }
        },
        "main.HealthcareError": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "string"
                },
                "error": {
                    "type": "string"
                }
            }
        },
        "main.HealthcareMetadata": {
            "type": "object",
            "properties": {
                "attribution": {
                    "type": "string"
                },
                "degraded": {
                    "type": "boolean"
                },
                "distance_kind": {
                    "type": "string"
                },
                "export_policy": {
                    "type": "string"
                },
                "license": {
                    "type": "string"
                },
                "license_url": {
                    "type": "string"
                },
                "note": {
                    "type": "string"
                },
                "truncated": {
                    "type": "boolean"
                }
            }
        },
        "main.HealthcarePlace": {
            "type": "object",
            "properties": {
                "address": {
                    "type": "string"
                },
                "aed": {
                    "$ref": "#/definitions/aed.Details"
                },
                "attribution": {
                    "type": "string"
                },
                "category": {
                    "type": "string"
                },
                "city": {
                    "type": "string"
                },
                "detail_url": {
                    "type": "string"
                },
                "distance_m": {
                    "type": "number"
                },
                "id": {
                    "type": "string"
                },
                "lat": {
                    "type": "number"
                },
                "license": {
                    "type": "string"
                },
                "license_url": {
                    "type": "string"
                },
                "lon": {
                    "type": "number"
                },
                "name": {
                    "type": "string"
                },
                "open_status": {
                    "$ref": "#/definitions/main.annaOpeningStatus"
                },
                "opening_hours": {
                    "type": "string"
                },
                "osm_id": {
                    "type": "integer"
                },
                "osm_type": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "source_system": {
                    "type": "string"
                },
                "source_url": {
                    "type": "string"
                },
                "street": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "integer"
                },
                "website": {
                    "type": "string"
                },
                "zipcode": {
                    "type": "string"
                }
            }
        },
        "main.HealthcareSearchResponse": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "count": {
                    "type": "integer"
                },
                "lat": {
                    "type": "number"
                },
                "limit": {
                    "type": "integer"
                },
                "lon": {
                    "type": "number"
                },
                "metadata": {
                    "$ref": "#/definitions/main.HealthcareMetadata"
                },
                "radius_m": {
                    "type": "number"
                },
                "results": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.HealthcarePlace"
                    }
                }
            }
        },
        "main.MasterCreateResp": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "main.POI": {
            "type": "object",
            "properties": {
                "address": {
                    "type": "string"
                },
                "city": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "lat": {
                    "type": "number"
                },
                "lon": {
                    "type": "number"
                },
                "name": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "subcategory": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "integer"
                },
                "website": {
                    "type": "string"
                },
                "wikidata_id": {
                    "type": "string"
                },
                "zipcode": {
                    "type": "string"
                }
            }
        },
        "main.POIList": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.POI"
                    }
                }
            }
        },
        "main.RouteResp": {
            "type": "object",
            "properties": {
                "algo": {
                    "type": "string"
                },
                "cost": {
                    "type": "integer"
                },
                "distance": {
                    "type": "number"
                },
                "duration": {
                    "type": "integer"
                },
                "nodes": {
                    "type": "integer"
                },
                "objective": {
                    "type": "string"
                },
                "routing_conditions": {
                    "$ref": "#/definitions/conditions.Notice"
                },
                "status": {
                    "type": "string"
                },
                "steps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.RouteStep"
                    }
                },
                "tradeoff": {
                    "type": "number"
                }
            }
        },
        "main.RouteStep": {
            "type": "object",
            "properties": {
                "distance": {
                    "type": "number"
                },
                "duration": {
                    "type": "integer"
                },
                "end": {
                    "type": "array",
                    "items": {
                        "type": "number"
                    }
                },
                "exitNumber": {
                    "type": "integer"
                },
                "index": {
                    "type": "integer"
                },
                "instruction": {
                    "type": "string"
                },
                "landmark_expires_at": {
                    "type": "integer"
                },
                "landmark_phrase": {
                    "type": "string"
                },
                "landmark_phrase_short": {
                    "type": "string"
                },
                "landmark_requires_verification": {
                    "type": "boolean"
                },
                "maneuver": {
                    "type": "string"
                },
                "road_end": {
                    "type": "boolean"
                },
                "stop_sign": {
                    "type": "boolean"
                },
                "traffic_signal": {
                    "type": "boolean"
                },
                "use_landmark": {
                    "type": "boolean"
                }
            }
        },
        "main.ToiletsSearchResponse": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "count": {
                    "type": "integer"
                },
                "lat": {
                    "type": "number"
                },
                "limit": {
                    "type": "integer"
                },
                "lon": {
                    "type": "number"
                },
                "metadata": {
                    "$ref": "#/definitions/main.HealthcareMetadata"
                },
                "radius_m": {
                    "type": "number"
                },
                "results": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.HealthcarePlace"
                    }
                }
            }
        },
        "main._swaggerAutoResp": {
            "type": "object",
            "additionalProperties": true
        },
        "main.annaEinsatzGroup": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.annaEinsatzPoint"
                    }
                }
            }
        },
        "main.annaEinsatzPoint": {
            "type": "object",
            "properties": {
                "id": {
                    "description": "1–32 ASCII letters, digits, underscores or hyphens.",
                    "type": "string"
                },
                "text": {
                    "description": "Original single line; at most 300 Unicode characters.",
                    "type": "string"
                }
            }
        },
        "main.annaEinsatzStructureRequest": {
            "type": "object",
            "properties": {
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.annaEinsatzPoint"
                    }
                }
            }
        },
        "main.annaEinsatzStructureResponse": {
            "type": "object",
            "properties": {
                "fallback": {
                    "type": "boolean"
                },
                "groups": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.annaEinsatzGroup"
                    }
                },
                "provider": {
                    "type": "string"
                },
                "reason": {
                    "type": "string"
                }
            }
        },
        "main.annaOpeningStatus": {
            "type": "object",
            "properties": {
                "basis": {
                    "type": "string"
                },
                "label": {
                    "type": "string"
                },
                "next": {
                    "type": "string"
                },
                "state": {
                    "description": "open, closed, unknown",
                    "type": "string"
                },
                "until": {
                    "type": "string"
                }
            }
        },
        "main.carpoolLocation": {
            "type": "object",
            "properties": {
                "address": {
                    "type": "string",
                    "maxLength": 1000
                },
                "lat": {
                    "type": "number",
                    "maximum": 90,
                    "minimum": -90
                },
                "lon": {
                    "type": "number",
                    "maximum": 180,
                    "minimum": -180
                }
            }
        },
        "main.carpoolParticipant": {
            "type": "object",
            "required": [
                "id",
                "location"
            ],
            "properties": {
                "can_drive": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 1
                },
                "location": {
                    "$ref": "#/definitions/main.carpoolLocation"
                },
                "max_extra_duration_sec": {
                    "type": "integer",
                    "maximum": 86400,
                    "minimum": 0
                },
                "required_driver": {
                    "type": "boolean"
                },
                "seats": {
                    "type": "integer",
                    "maximum": 9,
                    "minimum": 0
                }
            }
        },
        "main.carpoolRequest": {
            "type": "object",
            "required": [
                "destination",
                "participants"
            ],
            "properties": {
                "destination": {
                    "$ref": "#/definitions/main.carpoolLocation"
                },
                "max_extra_duration_sec": {
                    "description": "Default: 15 minutes.",
                    "type": "integer",
                    "default": 900,
                    "maximum": 86400,
                    "minimum": 0
                },
                "participants": {
                    "type": "array",
                    "maxItems": 15,
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/main.carpoolParticipant"
                    }
                },
                "pickup_service_sec": {
                    "description": "Default: 60 seconds.",
                    "type": "integer",
                    "default": 60,
                    "maximum": 600,
                    "minimum": 0
                }
            }
        },
        "main.carpoolResolvedLocation": {
            "type": "object",
            "properties": {
                "index": {
                    "type": "integer"
                },
                "lat": {
                    "type": "number"
                },
                "lon": {
                    "type": "number"
                },
                "participant_id": {
                    "type": "string"
                },
                "snap_dist_m": {
                    "type": "number"
                }
            }
        },
        "main.carpoolResponse": {
            "type": "object",
            "properties": {
                "algorithm": {
                    "type": "string"
                },
                "destination_index": {
                    "type": "integer"
                },
                "locations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.carpoolResolvedLocation"
                    }
                },
                "objective": {
                    "type": "string"
                },
                "optimal": {
                    "type": "boolean"
                },
                "optimal_for": {
                    "type": "string"
                },
                "pickup_service_sec": {
                    "type": "integer"
                },
                "profile": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "total_duration_sec": {
                    "type": "number"
                },
                "vehicle_count": {
                    "type": "integer"
                },
                "vehicles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/carpool.Vehicle"
                    }
                }
            }
        },
        "main.dataSourcesRuntimeResponse": {
            "type": "object",
            "properties": {
                "as_of": {
                    "type": "string"
                },
                "schema_version": {
                    "type": "integer"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/sourcestatus.Status"
                    }
                }
            }
        },
        "main.driveTileEdge": {
            "type": "object",
            "properties": {
                "coordinates": {
                    "type": "array",
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "number",
                            "format": "float64"
                        }
                    }
                },
                "direction": {
                    "type": "string"
                },
                "from": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "outgoingCount": {
                    "type": "integer"
                },
                "ref": {
                    "type": "string"
                },
                "roadClass": {
                    "type": "string"
                },
                "routingConditions": {
                    "type": "object"
                },
                "routingWeightMs": {
                    "type": "integer"
                },
                "source": {
                    "type": "string"
                },
                "sourceId": {
                    "type": "string"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "to": {
                    "type": "string"
                }
            }
        },
        "main.driveTileResponse": {
            "type": "object",
            "properties": {
                "attribution": {
                    "type": "string"
                },
                "edges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.driveTileEdge"
                    }
                },
                "forbiddenTurns": {
                    "type": "array",
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "generation": {
                    "type": "string"
                },
                "schema": {
                    "type": "integer"
                },
                "source": {
                    "type": "string"
                },
                "tile": {
                    "type": "string"
                }
            }
        },
        "main.elevationRequest": {
            "type": "object",
            "properties": {
                "coordinates": {
                    "type": "array",
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "number",
                            "format": "float64"
                        }
                    }
                }
            }
        },
        "main.elevationResponse": {
            "type": "object",
            "properties": {
                "results": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/main.elevationResult"
                    }
                },
                "source": {
                    "type": "string"
                },
                "vertical_datum": {
                    "type": "string"
                }
            }
        },
        "main.elevationResult": {
            "type": "object",
            "properties": {
                "elevation": {
                    "type": "number"
                },
                "lat": {
                    "type": "number"
                },
                "lon": {
                    "type": "number"
                }
            }
        },
        "main.mapReportCreateRequest": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "evidence": {
                    "$ref": "#/definitions/mapreports.Evidence"
                },
                "location": {
                    "$ref": "#/definitions/mapreports.Location"
                },
                "name": {
                    "type": "string"
                },
                "proposed_change": {
                    "$ref": "#/definitions/mapreports.ProposedChange"
                },
                "receipt_token": {
                    "type": "string"
                },
                "report_type": {
                    "type": "string"
                },
                "target": {
                    "$ref": "#/definitions/mapreports.Target"
                }
            }
        },
        "main.mapReportPublishRequest": {
            "type": "object",
            "properties": {
                "confirm_publication": {
                    "type": "boolean"
                }
            }
        },
        "main.offlineDatasetBuildRequest": {
            "type": "object",
            "properties": {
                "center_lat": {
                    "type": "number"
                },
                "center_lon": {
                    "type": "number"
                },
                "download_mode": {
                    "type": "string"
                },
                "include_archive": {
                    "type": "boolean"
                },
                "include_poi": {
                    "type": "boolean"
                },
                "include_routing": {
                    "type": "boolean"
                },
                "include_tiles": {
                    "type": "boolean"
                },
                "map_profile": {
                    "type": "string"
                },
                "max_tiles": {
                    "type": "integer"
                },
                "max_zoom": {
                    "type": "integer"
                },
                "min_zoom": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "profile": {
                    "type": "string"
                },
                "purpose": {
                    "type": "string"
                },
                "radius_km": {
                    "type": "number"
                },
                "route_coordinates": {
                    "description": "RouteCoordinates use GeoJSON order: [lon, lat].",
                    "type": "array",
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "number",
                            "format": "float64"
                        }
                    }
                },
                "routing_mode": {
                    "type": "string"
                },
                "scope": {
                    "type": "string"
                }
            }
        },
        "main.offlineDatasetBuildResponse": {
            "type": "object",
            "properties": {
                "download_url": {
                    "type": "string"
                },
                "job_id": {
                    "type": "string"
                },
                "manifest_url": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "status_url": {
                    "type": "string"
                }
            }
        },
        "mapreports.AuditEntry": {
            "type": "object",
            "properties": {
                "action": {
                    "type": "string"
                },
                "actor": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "from_status": {
                    "type": "string"
                },
                "reason": {
                    "type": "string"
                },
                "revision": {
                    "type": "integer"
                },
                "to_status": {
                    "type": "string"
                }
            }
        },
        "mapreports.Decision": {
            "type": "object",
            "properties": {
                "action": {
                    "type": "string"
                },
                "duplicates_checked": {
                    "type": "boolean"
                },
                "existing_note_id": {
                    "type": "integer"
                },
                "note_text": {
                    "type": "string"
                },
                "privacy_checked": {
                    "type": "boolean"
                },
                "reason": {
                    "type": "string"
                },
                "source_checked": {
                    "type": "boolean"
                }
            }
        },
        "mapreports.Evidence": {
            "type": "object",
            "properties": {
                "kind": {
                    "type": "string"
                },
                "observed_at": {
                    "type": "string"
                },
                "reference_url": {
                    "type": "string"
                }
            }
        },
        "mapreports.Input": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "evidence": {
                    "$ref": "#/definitions/mapreports.Evidence"
                },
                "location": {
                    "$ref": "#/definitions/mapreports.Location"
                },
                "name": {
                    "type": "string"
                },
                "proposed_change": {
                    "$ref": "#/definitions/mapreports.ProposedChange"
                },
                "report_type": {
                    "type": "string"
                },
                "target": {
                    "$ref": "#/definitions/mapreports.Target"
                }
            }
        },
        "mapreports.Location": {
            "type": "object",
            "properties": {
                "lat": {
                    "type": "number"
                },
                "lon": {
                    "type": "number"
                }
            }
        },
        "mapreports.ProposedChange": {
            "type": "object",
            "properties": {
                "field": {
                    "type": "string"
                },
                "new_value": {
                    "type": "string"
                },
                "old_value": {
                    "type": "string"
                }
            }
        },
        "mapreports.Receipt": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "note_id": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "mapreports.Report": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "duplicate_of_id": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "history": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/mapreports.AuditEntry"
                    }
                },
                "id": {
                    "type": "string"
                },
                "input": {
                    "$ref": "#/definitions/mapreports.Input"
                },
                "note_id": {
                    "type": "integer"
                },
                "note_text": {
                    "type": "string"
                },
                "retry_not_before": {
                    "type": "string"
                },
                "revision": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "mapreports.Target": {
            "type": "object",
            "properties": {
                "field": {
                    "type": "string"
                },
                "object_id": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "version": {
                    "type": "integer"
                }
            }
        },
        "sourcestatus.Status": {
            "type": "object",
            "properties": {
                "age_basis": {
                    "description": "checked_at or updated_at",
                    "type": "string",
                    "enum": [
                        "checked_at",
                        "updated_at"
                    ]
                },
                "age_seconds": {
                    "type": "integer"
                },
                "available": {
                    "type": "boolean"
                },
                "checked_at": {
                    "type": "string"
                },
                "enabled": {
                    "type": "boolean"
                },
                "error_code": {
                    "type": "string"
                },
                "ready": {
                    "type": "boolean"
                },
                "records": {
                    "type": "integer"
                },
                "refreshing": {
                    "type": "boolean"
                },
                "retry_at": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "stale": {
                    "type": "boolean"
                },
                "state": {
                    "type": "string",
                    "enum": [
                        "disabled",
                        "missing_data",
                        "idle",
                        "ready",
                        "stale",
                        "unavailable"
                    ]
                },
                "updated_at": {
                    "type": "string"
                }
            }
        }
    },
    "securityDefinitions": {
        "ReportAdmin": {
            "type": "basic"
        }
    }
}