{
  "openapi": "3.1.0",
  "info": {
    "title": "Postleitzahlen.online Static Data API",
    "version": "20260528a",
    "description": "Static JSON, CSV and Excel-compatible data files for the DACH postal-code atlas."
  },
  "servers": [
    {
      "url": "https://postleitzahlen.online"
    }
  ],
  "paths": {
    "/daten/postal-index.json": {
      "get": {
        "summary": "Kompakter PLZ-Index mit Orten, Regionen, Prefix und Schwerpunkt-Koordinaten.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/postal-suggest.min.json": {
      "get": {
        "summary": "Leichter Lookup-Index für exakte PLZ, Top-Vorschläge und Deep-Link-Antworten.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/search-index.min.json": {
      "get": {
        "summary": "Browser-Suchindex für DACH.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/search-index-de.min.json": {
      "get": {
        "summary": "Browser-Suchindex Deutschland.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/search-index-at.min.json": {
      "get": {
        "summary": "Browser-Suchindex Österreich.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/search-index-ch.min.json": {
      "get": {
        "summary": "Browser-Suchindex Schweiz.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/plz-de.json": {
      "get": {
        "summary": "PLZ-Index Deutschland.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/plz-at.json": {
      "get": {
        "summary": "PLZ-Index Österreich.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/plz-ch.json": {
      "get": {
        "summary": "PLZ-Index Schweiz.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/plz-intelligence.json": {
      "get": {
        "summary": "Nachbarschaft, Mehrdeutigkeit, Versandprofil und CRM-Keys pro PLZ.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/intelligence-dictionary.json": {
      "get": {
        "summary": "Codebuch für PLZ-Intelligence-Felder, Mehrdeutigkeitscodes, Warnungen und CRM-Keys.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/ambiguity-ledger.json": {
      "get": {
        "summary": "DACH-Übersicht für gleiche PLZ, Mehrfachorte und gleichnamige Orte.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/route-zones.json": {
      "get": {
        "summary": "Präfixrouten für Versand- und CRM-Zonierung.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/postal-index.csv": {
      "get": {
        "summary": "Semikolon-CSV für Tabellen, Versandlisten und CRM-Importe.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "text/csv",
            "content": {
              "text/csv": {}
            }
          }
        }
      }
    },
    "/daten/postal-index.xls": {
      "get": {
        "summary": "Excel-kompatible HTML-Tabelle für PLZ, Orte, Regionen und Koordinatenfelder.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/vnd.ms-excel",
            "content": {
              "application/vnd.ms-excel": {}
            }
          }
        }
      }
    },
    "/daten/plz-map-points.json": {
      "get": {
        "summary": "Koordinaten-Schwerpunkte für Karte, Entfernung, Radius und Vergleich.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/population-sources.json": {
      "get": {
        "summary": "Quellenstatus und Methodik für mögliche PLZ-Bevölkerungsdaten.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/source-manifest.json": {
      "get": {
        "summary": "Importierte Quelle, Referenzlinks, Lizenzhinweise, Datenstand und bekannte Grenzen.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/api-openapi.json": {
      "get": {
        "summary": "Strukturierte Beschreibung der statischen Daten-API.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/address-quality.json": {
      "get": {
        "summary": "Adressqualitäts-Prüfpunkte.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/data-quality-report.json": {
      "get": {
        "summary": "Datenqualitätsbericht mit Counts, Mehrdeutigkeit, Koordinatenabdeckung und QA-Regeln.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/daten/intent-index.json": {
      "get": {
        "summary": "Suchintent- und Tool-Deep-Link-Index für Nutzer und Assistenzsysteme.",
        "tags": [
          "static-data"
        ],
        "responses": {
          "200": {
            "description": "application/json",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PostalIndexEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "country": {
            "type": "string",
            "enum": [
              "DE",
              "AT",
              "CH"
            ]
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code as text; leading zeros are preserved."
          },
          "places": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "prefix": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "geo": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "lat": {
                    "type": "number"
                  },
                  "lon": {
                    "type": "number"
                  }
                }
              }
            ],
            "description": "Source centroid or null; not an exact delivery point."
          }
        }
      },
      "SourceManifest": {
        "type": "object",
        "properties": {
          "importedDataset": {
            "type": "object"
          },
          "referenceLinksOnly": {
            "type": "array"
          },
          "limits": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ErrorNote": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "remediation": {
            "type": "string"
          }
        }
      }
    }
  },
  "examples": {
    "searchIndex": "/daten/search-index.min.json",
    "mapPoints": "/daten/plz-map-points.json",
    "intelligence": "/daten/plz-intelligence.json",
    "routeZones": "/daten/route-zones.json",
    "populationSources": "/daten/population-sources.json",
    "sourceManifest": "/daten/source-manifest.json",
    "leadingZero": "04109 must remain text; 4109 is not equivalent for Germany."
  }
}