{
  "openapi": "3.0.3",
  "info": {
    "title": "Lenzerheide Public API",
    "version": "1.9.1",
    "description": "Oeffentlich freigegebene API-Endpunkte der world of wonders Lenzerheide. Diese Endpunkte koennen ohne API-Key genutzt werden."
  },
  "servers": [
    {
      "url": "https://api.lenzerheide.swiss",
      "description": "Produktive API"
    }
  ],
  "tags": [
    {
      "name": "API Root",
      "description": "Einstiegspunkt und API-Uebersicht."
    },
    {
      "name": "Status",
      "description": "Technischer API-Status."
    },
    {
      "name": "Destination Context",
      "description": "Kanalneutrales Public Data Product fuer datumsbezogene Gaesteinformationen der Destination."
    },
    {
      "name": "Traffic",
      "description": "Oeffentlich freigegebene Verkehrsdaten."
    },
    {
      "name": "Weather",
      "description": "Oeffentlich freigegebene Wetter-Tageswerte und Prognosen. Source of Truth ist MeteoSwiss OGD Local Forecast fuer den freigegebenen Punkt 707800 Lenzerheide/Lai."
    },
    {
      "name": "Lifts",
      "description": "Oeffentlich freigegebener Status, Betriebszeiten und historische Betriebsperioden der Bergbahnen in Lenzerheide."
    },
    {
      "name": "Cross Country",
      "description": "Deterministische, wetterbasierte Gaesteinformationen fuer Langlauf. Empfehlungen bleiben source-transparent und vermeiden marken- oder produktspezifische Annahmen."
    },
    {
      "name": "Infosnow Planned Schedule",
      "description": "Oeffentlich freigegebene geplante Zeitfenster fuer ausgewaehlte Erlebnisse; keine Durchfuehrungsbestaetigung."
    },
    {
      "name": "Infosnow Public Widget V2",
      "description": "Explizit freigegebene geplante Zeitfenster; keine Durchfuehrungsbestaetigung."
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "API Root"
        ],
        "summary": "API Root",
        "operationId": "getApiRoot",
        "responses": {
          "200": {
            "description": "API Root erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RootResponse"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/status.php": {
      "get": {
        "tags": [
          "Status"
        ],
        "summary": "API Status",
        "operationId": "getApiStatus",
        "responses": {
          "200": {
            "description": "API ist erreichbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/destination/context.php": {
      "get": {
        "tags": [
          "Destination Context"
        ],
        "summary": "Destination Context API V1",
        "description": "Aggregiert freigegebene Guest-Read-Models fuer Betriebszeiten, Wetter und Verkehr. Einzelne Quellenausfaelle werden als partial ausgegeben; nicht anwendbare Module wie Verkehr fuer ein Zukunftsdatum gelten nicht als Fehler.",
        "operationId": "getDestinationContextV1",
        "parameters": [
          {
            "$ref": "#/components/parameters/DateParam"
          },
          {
            "$ref": "#/components/parameters/DestinationAreaParam"
          },
          {
            "$ref": "#/components/parameters/LanguageParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Destination Context vollstaendig oder teilweise verfuegbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DestinationContextResponse"
                },
                "example": {
                  "meta": {
                    "apiVersion": "v1",
                    "generatedAt": "2026-09-15T12:30:00+02:00",
                    "source": "lenzerheide_data_layer",
                    "visibility": "public",
                    "module": "destination-context",
                    "resource": "context-v1",
                    "date": "2026-09-15",
                    "area": "lenzerheide",
                    "language": "de",
                    "timezone": "Europe/Zurich",
                    "status": "complete"
                  },
                  "data": {
                    "status": "complete",
                    "date": "2026-09-15",
                    "area": "lenzerheide",
                    "language": "de",
                    "operations": {
                      "available": true,
                      "applicable": true,
                      "reason": null,
                      "season": "summer",
                      "sourceMode": "current",
                      "liveStatusIncluded": true,
                      "lifts": []
                    },
                    "weather": {
                      "available": true,
                      "applicable": true,
                      "reason": null,
                      "date": "2026-09-15",
                      "locationKey": "lenzerheide",
                      "locationName": "Lenzerheide",
                      "dataType": "forecast",
                      "status": "good",
                      "summary": "Gutes Outdoor-Wetter.",
                      "temperature": {
                        "valleyMin": 8,
                        "valleyMax": 17,
                        "mountainMin": null,
                        "mountainMax": null
                      },
                      "sunshineHours": null,
                      "precipitationMm": 0,
                      "windGustsKmh": null,
                      "weatherIcon": "3",
                      "capturedAt": "2026-09-15T08:10:00+02:00",
                      "updatedAt": "2026-09-15T08:10:00+02:00"
                    },
                    "mobility": {
                      "traffic": {
                        "available": true,
                        "applicable": true,
                        "reason": null,
                        "status": "free",
                        "summary": "Ruhige Verkehrslage rund um Lenzerheide. Aktuell gibt es keine relevanten Verzögerungen.",
                        "maxDelayMinutes": 0,
                        "avgDelayMinutes": 0,
                        "routeCount": 3,
                        "latestObservedAt": "2026-09-15T12:25:00+02:00",
                        "dominantRoute": null,
                        "routes": []
                      }
                    },
                    "sources": {
                      "operations": {
                        "source": "infosnow",
                        "status": "available",
                        "observedAt": "2026-09-15T12:28:00+02:00",
                        "freshness": "fresh",
                        "maxAgeMinutes": 5
                      },
                      "weather": {
                        "source": "meteoswiss",
                        "status": "available",
                        "observedAt": "2026-09-15T08:10:00+02:00",
                        "freshness": "fresh",
                        "maxAgeMinutes": 1440
                      },
                      "traffic": {
                        "source": "traffic_observations",
                        "status": "available",
                        "observedAt": "2026-09-15T12:25:00+02:00",
                        "freshness": "fresh",
                        "maxAgeMinutes": 120
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/traffic/status.php": {
      "get": {
        "tags": [
          "Traffic"
        ],
        "summary": "Public Traffic Status",
        "description": "Liefert einen oeffentlich freigegebenen Near-Live-Verkehrstatus fuer Gaeste-Informationen und Widgets. Wenn fuer die freigegebenen Korridore keine aktuelle Messung mit Beobachtungszeit vorhanden ist, antwortet die API mit HTTP 503 statt einer erfundenen freien Verkehrslage.",
        "operationId": "getPublicTrafficStatus",
        "responses": {
          "200": {
            "description": "Verkehrstatus erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrafficPublicResponse"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/PublicTrafficMaxAgeMinutesParam"
          }
        ]
      }
    },
    "/v1/public/weather/current.php": {
      "get": {
        "tags": [
          "Weather"
        ],
        "summary": "Public Weather Daily",
        "description": "Liefert den kanonischen Wetter-Tageswert fuer das angefragte Datum. Seit 18. August 2026 ist MeteoSwiss OGD Local Forecast fuer Punkt 707800 Lenzerheide/Lai die Weather Source of Truth.",
        "operationId": "getPublicWeatherCurrent",
        "parameters": [
          {
            "$ref": "#/components/parameters/DateParam"
          },
          {
            "$ref": "#/components/parameters/LocationKeyParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Wetter-Tageswert erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherPublicResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/weather/forecast.php": {
      "get": {
        "tags": [
          "Weather"
        ],
        "summary": "Public Weather Forecast",
        "description": "Liefert bis zu sieben Wettertage ab dem aktuellen lokalen Datum aus dem kanonischen MeteoSwiss OGD Local Forecast.",
        "operationId": "getPublicWeatherForecast",
        "parameters": [
          {
            "$ref": "#/components/parameters/DaysParam"
          },
          {
            "$ref": "#/components/parameters/LocationKeyParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Wetterprognose erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherForecastPublicResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/lifts/current.php": {
      "get": {
        "tags": [
          "Lifts"
        ],
        "summary": "Public Lift Status Current",
        "description": "Liefert den reduzierten Near-Live-Betriebsstatus der Infosnow-Anlagen fuer Lenzerheide.",
        "operationId": "getPublicLiftStatusCurrent",
        "responses": {
          "200": {
            "description": "Bergbahnstatus erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiftsPublicResponse"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/lifts/periods.php": {
      "get": {
        "tags": [
          "Lifts"
        ],
        "summary": "Historical Lift Operating Periods",
        "description": "Liefert ausschliesslich vollstaendig vergangene Infosnow-Betriebsperioden aus der Data-Layer-Historie. Aktuelle und zukuenftige Betriebszeiten werden nicht aus der Historie beantwortet. Die bestehende historische Ausgabe umfasst die Infosnow-Resorts 57 (Lenzerheide) und 67 (Arosa); Consumer muessen das Feld region beachten. Ohne valide First-Seen-Provenienz ist coverageFrom null.",
        "operationId": "getPublicLiftOperatingPeriodHistory",
        "parameters": [
          {
            "$ref": "#/components/parameters/SeasonParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Historische Betriebsperioden erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiftPeriodsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/lifts/operating-hours.php": {
      "get": {
        "tags": [
          "Lifts"
        ],
        "summary": "Lift Operating Hours by Date",
        "description": "Kanonischer Public Read Endpoint fuer Betriebszeiten nach Datum. Vergangenheit wird aus der Historie gelesen, heute und Zukunft aus dem aktuellen Infosnow-Fahrplan. Nur fuer heute wird Near-Live-Status hinzugefuegt.",
        "operationId": "getPublicLiftOperatingHours",
        "parameters": [
          {
            "$ref": "#/components/parameters/DateParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Betriebszeiten erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiftOperatingHoursResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/weather/hourly.php": {
      "get": {
        "tags": [
          "Weather"
        ],
        "summary": "Public Weather Hourly",
        "description": "Liefert einen reduzierten zukuenftigen MeteoSwiss-Stundenverlauf fuer Lenzerheide/Lai. Der Vertrag gibt weder Rohpayloads noch interne Quality-Felder aus.",
        "operationId": "getPublicWeatherHourly",
        "parameters": [
          {
            "$ref": "#/components/parameters/HoursParam"
          },
          {
            "$ref": "#/components/parameters/LocationKeyParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Stundenprognose erfolgreich geladen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherHourlyPublicResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/cross-country/wax.php": {
      "get": {
        "tags": [
          "Cross Country"
        ],
        "summary": "Cross Country Glide Wax Tip V1",
        "description": "Liefert eine wetterbasierte Gleitwachs-Orientierung fuer den verbleibenden heutigen MeteoSwiss-Stundenkorridor in Lenzerheide. Es wird keine Marke, Farbe, Produktfamilie, Schneetemperatur, Schneeart, Steigwachs- oder Klisterempfehlung erfunden.",
        "operationId": "getCrossCountryWaxTip",
        "parameters": [
          {
            "$ref": "#/components/parameters/LocationKeyParam"
          }
        ],
        "responses": {
          "200": {
            "description": "Wachstipp verfuegbar oder fuer den verbleibenden heutigen Forecast nicht ausreichend ableitbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrossCountryWaxTipResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/v1/public/infosnow/planned-schedule.php": {
      "get": {
        "tags": [
          "Infosnow Planned Schedule"
        ],
        "summary": "Freigegebene geplante LIGHT-RIDE-Zeitfenster",
        "operationId": "getInfosnowPlannedSchedule",
        "parameters": [
          {
            "name": "widget",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "light-ride"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Freigegebener, minimierter Infosnow-Plan (observed import freshness)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfosnowPlannedSchedulePublicResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ungueltige Query"
          },
          "404": {
            "description": "Widget nicht freigegeben"
          },
          "503": {
            "description": "Source unavailable, missing or stale"
          }
        }
      }
    },
    "/v1/public/infosnow/widget-v2.php": {
      "get": {
        "tags": [
          "Infosnow Public Widget V2"
        ],
        "summary": "Minimierter freigegebener Infosnow Public Widget V2 Kalender",
        "operationId": "getInfosnowPublicWidgetV2",
        "parameters": [
          {
            "name": "widget",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "light-ride"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Freigegebene Kalenderdaten",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfosnowPublicWidgetV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "description": "Unbekannter Slug"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "DateParam": {
        "name": "date",
        "in": "query",
        "required": false,
        "description": "Datum im Format YYYY-MM-DD. Standard ist das aktuelle lokale Datum in Europe/Zurich.",
        "schema": {
          "type": "string",
          "format": "date",
          "example": "2026-09-15"
        }
      },
      "DaysParam": {
        "name": "days",
        "in": "query",
        "required": false,
        "description": "Anzahl Wettertage ab heute. Erlaubt sind ganzzahlige Werte von 1 bis 7. Standard ist 7.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 7,
          "default": 7,
          "example": 7
        }
      },
      "LocationKeyParam": {
        "name": "location_key",
        "in": "query",
        "required": false,
        "description": "Produktiv freigegebener Standortschluessel.",
        "schema": {
          "type": "string",
          "enum": [
            "lenzerheide"
          ],
          "example": "lenzerheide"
        }
      },
      "SeasonParam": {
        "name": "season",
        "in": "query",
        "required": true,
        "description": "Infosnow-Saison fuer historische Betriebsperioden.",
        "schema": {
          "type": "string",
          "enum": [
            "summer",
            "winter"
          ]
        }
      },
      "DestinationAreaParam": {
        "name": "area",
        "in": "query",
        "required": false,
        "description": "Destinationsbereich. V1.0 gibt ausschliesslich Lenzerheide frei.",
        "schema": {
          "type": "string",
          "enum": [
            "lenzerheide"
          ],
          "default": "lenzerheide"
        }
      },
      "LanguageParam": {
        "name": "lang",
        "in": "query",
        "required": false,
        "description": "Sprache fuer kuratierte Kurztexte.",
        "schema": {
          "type": "string",
          "enum": [
            "de",
            "en"
          ],
          "default": "de"
        }
      },
      "HoursParam": {
        "name": "hours",
        "in": "query",
        "required": false,
        "description": "Zukuenftiger MeteoSwiss-Stundenhorizont. Erlaubt sind 6, 12, 18 oder 24 Stunden; Standard ist 12.",
        "schema": {
          "type": "integer",
          "enum": [
            6,
            12,
            18,
            24
          ],
          "default": 12,
          "example": 12
        }
      },
      "PublicTrafficMaxAgeMinutesParam": {
        "name": "max_age_minutes",
        "in": "query",
        "required": false,
        "description": "Maximales Alter der Verkehrsbeobachtungen in Minuten. Standard 120; Eingaben werden serverseitig auf 1 bis 240 begrenzt.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 240,
          "default": 120
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Ungueltige Anfrage oder ungueltige Parameter.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "Rate Limit erreicht.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "ServerError": {
        "description": "Unerwarteter Serverfehler.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "ServiceUnavailable": {
        "description": "Service oder Datenquelle temporaer nicht verfuegbar.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "schemas": {
      "Meta": {
        "type": "object",
        "additionalProperties": true
      },
      "RootResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "StatusResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "TrafficPublicResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "WeatherTemperature": {
        "type": "object",
        "properties": {
          "valleyMin": {
            "type": "integer",
            "nullable": true
          },
          "valleyMax": {
            "type": "integer",
            "nullable": true
          },
          "mountainMin": {
            "type": "integer",
            "nullable": true
          },
          "mountainMax": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "WeatherCurrentData": {
        "type": "object",
        "required": [
          "module",
          "date",
          "locationKey",
          "hasWeatherData",
          "dataType",
          "isForecast",
          "source",
          "status",
          "level",
          "score",
          "summary",
          "temperature",
          "sunshineHours",
          "precipitationMm",
          "windGustsKmh",
          "weatherIcon",
          "sourceCreatedAt",
          "capturedAt",
          "observedAt",
          "updatedAt"
        ],
        "properties": {
          "module": {
            "type": "string",
            "enum": [
              "weather"
            ]
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "locationKey": {
            "type": "string",
            "enum": [
              "lenzerheide"
            ]
          },
          "locationName": {
            "type": "string",
            "nullable": true
          },
          "hasWeatherData": {
            "type": "boolean"
          },
          "dataType": {
            "type": "string",
            "enum": [
              "forecast",
              "observation",
              "unknown"
            ]
          },
          "isForecast": {
            "type": "boolean",
            "nullable": true
          },
          "source": {
            "type": "string",
            "enum": [
              "meteoswiss",
              "legacy_weather_csv",
              "unknown"
            ]
          },
          "sourceProduct": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "good",
              "changeable",
              "limited"
            ]
          },
          "level": {
            "type": "string",
            "nullable": true,
            "enum": [
              "excellent",
              "good",
              "medium",
              "poor"
            ]
          },
          "score": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "maximum": 100
          },
          "summary": {
            "type": "string"
          },
          "temperature": {
            "$ref": "#/components/schemas/WeatherTemperature"
          },
          "sunshineHours": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "precipitationMm": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "windGustsKmh": {
            "type": "integer",
            "nullable": true
          },
          "weatherIcon": {
            "type": "string",
            "nullable": true
          },
          "sourceCreatedAt": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9]{12}$"
          },
          "capturedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "deprecated": true,
            "description": "Legacy-Alias fuer capturedAt. Keine Stationsmesszeit."
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "WeatherPublicResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "$ref": "#/components/schemas/WeatherCurrentData"
          }
        }
      },
      "WeatherForecastDay": {
        "type": "object",
        "required": [
          "date",
          "dataType",
          "isForecast",
          "weatherIcon",
          "temperature",
          "sunshineHours",
          "precipitationMm",
          "windGustsKmh",
          "sourceCreatedAt",
          "capturedAt",
          "observedAt",
          "updatedAt"
        ],
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "dataType": {
            "type": "string",
            "enum": [
              "forecast",
              "observation",
              "unknown"
            ]
          },
          "isForecast": {
            "type": "boolean",
            "nullable": true
          },
          "weatherIcon": {
            "type": "string",
            "nullable": true
          },
          "temperature": {
            "$ref": "#/components/schemas/WeatherTemperature"
          },
          "sunshineHours": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "precipitationMm": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "windGustsKmh": {
            "type": "integer",
            "nullable": true
          },
          "sourceCreatedAt": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9]{12}$"
          },
          "capturedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "deprecated": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "WeatherForecastData": {
        "type": "object",
        "required": [
          "module",
          "locationKey",
          "locationName",
          "source",
          "sourceProduct",
          "startDate",
          "requestedDays",
          "availableDays",
          "days"
        ],
        "properties": {
          "module": {
            "type": "string",
            "enum": [
              "weather"
            ]
          },
          "locationKey": {
            "type": "string",
            "enum": [
              "lenzerheide"
            ]
          },
          "locationName": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "enum": [
              "meteoswiss",
              "legacy_weather_csv",
              "unknown"
            ]
          },
          "sourceProduct": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "requestedDays": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7
          },
          "availableDays": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7
          },
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeatherForecastDay"
            }
          }
        }
      },
      "WeatherForecastPublicResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "$ref": "#/components/schemas/WeatherForecastData"
          }
        }
      },
      "LiftPublic": {
        "type": "object",
        "required": [
          "id",
          "name",
          "typeId",
          "status",
          "freshness",
          "observedAt"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "typeId": {
            "type": "integer",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "preparing",
              "closed",
              "unknown"
            ]
          },
          "freshness": {
            "type": "string",
            "enum": [
              "fresh",
              "stale",
              "unknown"
            ]
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "LiftsPublicResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "required": [
              "area",
              "season",
              "source",
              "freshness",
              "freshnessLimitMinutes",
              "latestObservedAt",
              "lifts"
            ],
            "properties": {
              "area": {
                "type": "string",
                "enum": [
                  "lenzerheide"
                ]
              },
              "season": {
                "type": "string",
                "enum": [
                  "summer",
                  "winter"
                ]
              },
              "source": {
                "type": "string",
                "enum": [
                  "infosnow"
                ]
              },
              "freshness": {
                "type": "string",
                "enum": [
                  "fresh",
                  "stale",
                  "unknown"
                ]
              },
              "freshnessLimitMinutes": {
                "type": "integer",
                "example": 5
              },
              "latestObservedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "lifts": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LiftPublic"
                }
              }
            }
          }
        }
      },
      "LiftPeriod": {
        "type": "object",
        "required": [
          "from",
          "to",
          "days",
          "times",
          "uphillOnly",
          "downhillOnly"
        ],
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "days": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 7
            }
          },
          "times": {
            "type": "string"
          },
          "uphillOnly": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "downhillOnly": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "LiftPeriodFacility": {
        "type": "object",
        "required": [
          "id",
          "name",
          "region",
          "periods"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LiftPeriod"
            }
          }
        }
      },
      "LiftPeriodsResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "required": [
              "season",
              "source",
              "coverageFrom",
              "cutoffDate",
              "facilities"
            ],
            "properties": {
              "season": {
                "type": "string",
                "enum": [
                  "summer",
                  "winter"
                ]
              },
              "source": {
                "type": "string",
                "enum": [
                  "infosnow_history"
                ]
              },
              "coverageFrom": {
                "type": "string",
                "format": "date",
                "nullable": true
              },
              "cutoffDate": {
                "type": "string",
                "format": "date"
              },
              "facilities": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LiftPeriodFacility"
                }
              }
            }
          }
        }
      },
      "LiftOperatingHoursItem": {
        "type": "object",
        "required": [
          "id",
          "name",
          "typeId",
          "hasScheduleData",
          "plannedOpen",
          "times",
          "firstAscent",
          "lastAscent",
          "lastDescent",
          "uphillOnly",
          "downhillOnly",
          "scheduleNames",
          "status",
          "statusFreshness",
          "statusObservedAt",
          "scheduleObservedAt"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "typeId": {
            "type": "integer",
            "nullable": true
          },
          "hasScheduleData": {
            "type": "boolean"
          },
          "plannedOpen": {
            "type": "boolean",
            "nullable": true,
            "description": "null bedeutet, dass keine belastbaren Fahrplandaten vorliegen."
          },
          "times": {
            "type": "string"
          },
          "firstAscent": {
            "type": "string",
            "nullable": true
          },
          "lastAscent": {
            "type": "string",
            "nullable": true
          },
          "lastDescent": {
            "type": "string",
            "nullable": true
          },
          "uphillOnly": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "downhillOnly": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "scheduleNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "open",
              "preparing",
              "closed",
              "unknown"
            ]
          },
          "statusFreshness": {
            "type": "string",
            "nullable": true,
            "enum": [
              "fresh",
              "stale",
              "unknown"
            ]
          },
          "statusObservedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "scheduleObservedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "LiftOperatingHoursResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "required": [
              "area",
              "season",
              "date",
              "source",
              "sourceMode",
              "liveStatusIncluded",
              "freshnessLimitMinutes",
              "lifts"
            ],
            "properties": {
              "area": {
                "type": "string",
                "enum": [
                  "lenzerheide"
                ]
              },
              "season": {
                "type": "string",
                "enum": [
                  "summer",
                  "winter"
                ]
              },
              "date": {
                "type": "string",
                "format": "date"
              },
              "source": {
                "type": "string",
                "enum": [
                  "infosnow",
                  "infosnow_history"
                ]
              },
              "sourceMode": {
                "type": "string",
                "enum": [
                  "current",
                  "history"
                ]
              },
              "liveStatusIncluded": {
                "type": "boolean"
              },
              "freshnessLimitMinutes": {
                "type": "integer",
                "nullable": true
              },
              "lifts": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LiftOperatingHoursItem"
                }
              }
            }
          }
        }
      },
      "DestinationModuleAvailability": {
        "type": "object",
        "required": [
          "available",
          "applicable",
          "reason"
        ],
        "properties": {
          "available": {
            "type": "boolean"
          },
          "applicable": {
            "type": "boolean"
          },
          "reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "no_data",
              "source_unavailable",
              "not_applicable_for_date"
            ]
          }
        }
      },
      "DestinationSource": {
        "type": "object",
        "required": [
          "source",
          "status",
          "observedAt",
          "freshness",
          "maxAgeMinutes"
        ],
        "properties": {
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "missing",
              "unavailable",
              "not_applicable"
            ]
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freshness": {
            "type": "string",
            "enum": [
              "fresh",
              "stale",
              "unknown",
              "not_applicable"
            ]
          },
          "maxAgeMinutes": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "DestinationOperations": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DestinationModuleAvailability"
          },
          {
            "type": "object",
            "properties": {
              "season": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "summer",
                  "winter"
                ]
              },
              "sourceMode": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "current",
                  "history"
                ]
              },
              "liveStatusIncluded": {
                "type": "boolean"
              },
              "lifts": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LiftOperatingHoursItem"
                }
              }
            }
          }
        ]
      },
      "DestinationWeather": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DestinationModuleAvailability"
          },
          {
            "type": "object",
            "properties": {
              "date": {
                "type": "string",
                "format": "date",
                "nullable": true
              },
              "locationKey": {
                "type": "string",
                "nullable": true
              },
              "locationName": {
                "type": "string",
                "nullable": true
              },
              "dataType": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "forecast",
                  "observation",
                  "unknown"
                ]
              },
              "status": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "good",
                  "changeable",
                  "limited"
                ]
              },
              "summary": {
                "type": "string",
                "nullable": true
              },
              "temperature": {
                "$ref": "#/components/schemas/WeatherTemperature"
              },
              "sunshineHours": {
                "type": "number",
                "format": "float",
                "nullable": true
              },
              "precipitationMm": {
                "type": "number",
                "format": "float",
                "nullable": true
              },
              "windGustsKmh": {
                "type": "integer",
                "nullable": true
              },
              "weatherIcon": {
                "type": "string",
                "nullable": true
              },
              "capturedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "DestinationTraffic": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DestinationModuleAvailability"
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "free",
                  "busy",
                  "incident"
                ]
              },
              "summary": {
                "type": "string",
                "nullable": true
              },
              "maxDelayMinutes": {
                "type": "integer",
                "nullable": true
              },
              "avgDelayMinutes": {
                "type": "integer",
                "nullable": true
              },
              "routeCount": {
                "type": "integer",
                "nullable": true
              },
              "latestObservedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "dominantRoute": {
                "type": "object",
                "nullable": true,
                "additionalProperties": true
              },
              "routes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        ]
      },
      "DestinationContextData": {
        "type": "object",
        "required": [
          "status",
          "date",
          "area",
          "language",
          "operations",
          "weather",
          "mobility",
          "sources"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "complete",
              "partial"
            ]
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "area": {
            "type": "string",
            "enum": [
              "lenzerheide"
            ]
          },
          "language": {
            "type": "string",
            "enum": [
              "de",
              "en"
            ]
          },
          "operations": {
            "$ref": "#/components/schemas/DestinationOperations"
          },
          "weather": {
            "$ref": "#/components/schemas/DestinationWeather"
          },
          "mobility": {
            "type": "object",
            "required": [
              "traffic"
            ],
            "properties": {
              "traffic": {
                "$ref": "#/components/schemas/DestinationTraffic"
              }
            }
          },
          "sources": {
            "type": "object",
            "required": [
              "operations",
              "weather",
              "traffic"
            ],
            "properties": {
              "operations": {
                "$ref": "#/components/schemas/DestinationSource"
              },
              "weather": {
                "$ref": "#/components/schemas/DestinationSource"
              },
              "traffic": {
                "$ref": "#/components/schemas/DestinationSource"
              }
            }
          }
        }
      },
      "DestinationContextResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "$ref": "#/components/schemas/DestinationContextData"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "WeatherHourlyPoint": {
        "type": "object",
        "required": [
          "validAt",
          "temperatureC",
          "precipitationMm",
          "precipitationProbabilityPct",
          "windGustKmh"
        ],
        "properties": {
          "validAt": {
            "type": "string",
            "format": "date-time"
          },
          "temperatureC": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "precipitationMm": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "precipitationProbabilityPct": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "minimum": 0,
            "maximum": 100
          },
          "windGustKmh": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "minimum": 0
          }
        }
      },
      "WeatherHourlyData": {
        "type": "object",
        "required": [
          "module",
          "resource",
          "locationKey",
          "locationName",
          "source",
          "sourceProduct",
          "requestedHours",
          "availableHours",
          "sourceCreatedAt",
          "hours"
        ],
        "properties": {
          "module": {
            "type": "string",
            "enum": [
              "weather"
            ]
          },
          "resource": {
            "type": "string",
            "enum": [
              "hourly"
            ]
          },
          "locationKey": {
            "type": "string",
            "enum": [
              "lenzerheide"
            ]
          },
          "locationName": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "enum": [
              "meteoswiss"
            ]
          },
          "sourceProduct": {
            "type": "string",
            "enum": [
              "meteoswiss-local-forecast-hourly"
            ]
          },
          "requestedHours": {
            "type": "integer",
            "enum": [
              6,
              12,
              18,
              24
            ]
          },
          "availableHours": {
            "type": "integer",
            "minimum": 0,
            "maximum": 24
          },
          "sourceCreatedAt": {
            "type": "string",
            "pattern": "^[0-9]{12}$"
          },
          "hours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WeatherHourlyPoint"
            }
          }
        }
      },
      "WeatherHourlyPublicResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "$ref": "#/components/schemas/WeatherHourlyData"
          }
        }
      },
      "CrossCountryWaxTipData": {
        "type": "object",
        "required": [
          "module",
          "resource",
          "available",
          "reason",
          "date",
          "locationKey",
          "locationName",
          "scope",
          "source",
          "sourceProduct",
          "sourceCreatedAt"
        ],
        "properties": {
          "module": {
            "type": "string",
            "enum": [
              "cross-country"
            ]
          },
          "resource": {
            "type": "string",
            "enum": [
              "wax-tip"
            ]
          },
          "available": {
            "type": "boolean"
          },
          "reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "insufficient_remaining_forecast_today",
              null
            ]
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "locationKey": {
            "type": "string",
            "enum": [
              "lenzerheide"
            ]
          },
          "locationName": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "enum": [
              "glide_wax_only"
            ]
          },
          "recommendationCode": {
            "type": "string",
            "nullable": true,
            "enum": [
              "match_manufacturer_range_to_air_temperature_corridor",
              null
            ]
          },
          "airTemperatureRangeC": {
            "type": "object",
            "nullable": true,
            "properties": {
              "min": {
                "type": "number",
                "format": "float"
              },
              "max": {
                "type": "number",
                "format": "float"
              }
            }
          },
          "recommendedRangeC": {
            "type": "object",
            "nullable": true,
            "properties": {
              "min": {
                "type": "integer"
              },
              "max": {
                "type": "integer"
              }
            }
          },
          "precipitationProbabilityMaxPct": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "minimum": 0,
            "maximum": 100
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "validUntil": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "hoursUsed": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "maximum": 12
          },
          "coverage": {
            "type": "string",
            "nullable": true,
            "enum": [
              "good",
              "limited",
              null
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "meteoswiss"
            ]
          },
          "sourceProduct": {
            "type": "string",
            "enum": [
              "meteoswiss-local-forecast-hourly"
            ]
          },
          "sourceCreatedAt": {
            "type": "string",
            "pattern": "^[0-9]{12}$"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CrossCountryWaxTipResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "$ref": "#/components/schemas/CrossCountryWaxTipData"
          }
        }
      },
      "InfosnowPlannedSchedulePublicResponse": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "required": [
              "contractVersion",
              "visibility",
              "publicationState",
              "slug",
              "sourceDate",
              "freshnessBasis",
              "validUntil",
              "plannedDays"
            ],
            "properties": {
              "contractVersion": {
                "type": "string",
                "enum": [
                  "infosnow_planned_schedule_public_v1"
                ]
              },
              "visibility": {
                "type": "string",
                "enum": [
                  "public"
                ]
              },
              "publicationState": {
                "type": "string",
                "enum": [
                  "approved"
                ]
              },
              "slug": {
                "type": "string",
                "enum": [
                  "light-ride"
                ]
              },
              "sourceDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "freshnessBasis": {
                "type": "string",
                "enum": [
                  "full_import_observation"
                ]
              },
              "validUntil": {
                "type": "string",
                "format": "date-time"
              },
              "plannedDays": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "date",
                    "timeWindows"
                  ],
                  "properties": {
                    "date": {
                      "type": "string",
                      "format": "date"
                    },
                    "timeWindows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "start",
                          "end"
                        ],
                        "properties": {
                          "start": {
                            "type": "string"
                          },
                          "end": {
                            "type": "string"
                          },
                          "endDayOffset": {
                            "type": "integer",
                            "enum": [
                              1
                            ],
                            "description": "Optional; 1 means the source-planned end time belongs to the next local calendar day."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "InfosnowPublicWidgetV2Response": {
        "type": "object",
        "required": [
          "meta",
          "data"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "required": [
              "contractVersion",
              "visibility",
              "slug",
              "title",
              "brandId",
              "defaultLocale",
              "defaultView",
              "timezone",
              "scheduleKind",
              "eventConfirmation",
              "sourceTimestampVerified",
              "freshnessBasis",
              "validUntil",
              "plannedDays",
              "statusRemarks"
            ],
            "properties": {
              "contractVersion": {
                "type": "string",
                "enum": [
                  "infosnow_public_widget_v2"
                ]
              },
              "visibility": {
                "type": "string",
                "enum": [
                  "public"
                ]
              },
              "slug": {
                "type": "string",
                "enum": [
                  "light-ride"
                ]
              },
              "title": {
                "type": "string"
              },
              "brandId": {
                "type": "string"
              },
              "defaultLocale": {
                "type": "string",
                "enum": [
                  "de-CH",
                  "en"
                ]
              },
              "defaultView": {
                "type": "string",
                "enum": [
                  "calendar",
                  "list"
                ]
              },
              "timezone": {
                "type": "string",
                "enum": [
                  "Europe/Zurich"
                ]
              },
              "scheduleKind": {
                "type": "string"
              },
              "eventConfirmation": {
                "type": "string"
              },
              "sourceTimestampVerified": {
                "type": "boolean",
                "enum": [
                  false
                ]
              },
              "freshnessBasis": {
                "type": "string",
                "enum": [
                  "full_import_observation"
                ]
              },
              "validUntil": {
                "type": "string",
                "format": "date-time"
              },
              "statusRemarks": {
                "type": "object",
                "nullable": true
              },
              "plannedDays": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "date",
                    "timeWindows"
                  ],
                  "properties": {
                    "date": {
                      "type": "string",
                      "format": "date"
                    },
                    "timeWindows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "start",
                          "end"
                        ],
                        "properties": {
                          "start": {
                            "type": "string"
                          },
                          "end": {
                            "type": "string"
                          },
                          "endDayOffset": {
                            "type": "integer",
                            "enum": [
                              1
                            ],
                            "description": "Optional; 1 means the source-planned end time belongs to the next local calendar day."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
