{
    "schema": "https://saferpage.de/schemas/security-feed-schedule.v1",
    "generated_at": "2026-06-09T22:57:35+00:00",
    "domain": "info.wuv.de",
    "available": true,
    "ready_for_schedule": false,
    "summary": "info.wuv.de: Security-Feed-Schedule mit 2 Connector-Job(s), 0 bereit, 2 Secret-Luecke(n).",
    "metrics": {
        "job_count": 2,
        "configured_connector_count": 0,
        "missing_secret_count": 2,
        "daily_run_count": 0
    },
    "schedule": {
        "timezone": "Europe/Berlin",
        "cadence": "daily",
        "next_planned_run_at": "2026-06-11T03:20:00+02:00",
        "jitter_minutes": 20,
        "run_gate": "run=yes",
        "does_not_store_by_default": true,
        "store_policy": "Produktive Speicherung erst nach Betreiberfreigabe, Secret-Konfiguration und Review der Treffer-Pipeline."
    },
    "jobs": [
        {
            "id": "security_feed_urlhaus_host",
            "connector_id": "urlhaus_host",
            "label": "URLhaus Host API",
            "cadence": "taeglich",
            "run_window": "03:20-04:10 Europe/Berlin",
            "configured": false,
            "status": "missing_secret",
            "required_secret_ref": "SAFERPAGE_URLHAUS_AUTH_KEY",
            "rate_limit": "max 1 Host-Abfrage je Connector und Domain pro Tag; Backoff bei 429/5xx.",
            "timeout_seconds": 10,
            "run_url": "https://saferpage.de/sicherheit/info.wuv.de/feed-live-json?run=yes",
            "operator_action": "Secret serverseitig setzen, FPM/Worker neu laden und Dry-Run erneut prüfen."
        },
        {
            "id": "security_feed_google_safe_browsing",
            "connector_id": "google_safe_browsing",
            "label": "Google Safe Browsing threatMatches.find",
            "cadence": "taeglich",
            "run_window": "03:20-04:10 Europe/Berlin",
            "configured": false,
            "status": "missing_secret",
            "required_secret_ref": "SAFERPAGE_GOOGLE_SAFE_BROWSING_API_KEY",
            "rate_limit": "max 1 Host-Abfrage je Connector und Domain pro Tag; Backoff bei 429/5xx.",
            "timeout_seconds": 10,
            "run_url": "https://saferpage.de/sicherheit/info.wuv.de/feed-live-json?run=yes",
            "operator_action": "Secret serverseitig setzen, FPM/Worker neu laden und Dry-Run erneut prüfen."
        }
    ],
    "preflight_checks": [
        {
            "id": "secrets_present",
            "label": "Feed-Secrets gesetzt",
            "status": "missing",
            "evidence": "0/2 Connector(en) konfiguriert."
        },
        {
            "id": "run_gate_active",
            "label": "Run-Gate aktiv",
            "status": "passed",
            "evidence": "Live-Connector fragt externe Feeds nur mit run=yes ab."
        },
        {
            "id": "no_secret_export",
            "label": "Keine Secret-Ausgabe",
            "status": "passed",
            "evidence": "Exports enthalten nur Secret-Referenznamen, keine Werte."
        },
        {
            "id": "operator_review",
            "label": "Operator-Review vor Veröffentlichung",
            "status": "passed",
            "evidence": "Treffer werden in Import-Preview und Alert-Routing überführt."
        }
    ],
    "failure_policy": {
        "missing_secret": "Job nicht ausführen; Integrations-Setup und Betreiber-Owner informieren.",
        "request_error": "Bis zu 3 Wiederholungen mit Backoff; danach inconclusive Nachweis und Security-Review.",
        "hit": "Import-Preview erzeugen, Ticketpflicht prüfen, Betreiberfreigabe vor Veröffentlichung.",
        "clean": "Als private Momentaufnahme archivieren; nicht als Zertifikat darstellen."
    },
    "operator_runbook": [
        "Secret im Server-Environment setzen: SAFERPAGE_URLHAUS_AUTH_KEY und/oder SAFERPAGE_GOOGLE_SAFE_BROWSING_API_KEY.",
        "PHP-FPM/Worker neu laden, damit die Environment-Variablen verfügbar sind.",
        "Einzeltest aufrufen: https://saferpage.de/sicherheit/info.wuv.de/feed-live-json?run=yes",
        "Bei Treffer Import-Preview öffnen und Ticket/Owner/SLA prüfen.",
        "Nach Freigabe täglichen Timer oder Worker-Queue mit Rate-Limit aktivieren."
    ],
    "links": {
        "json": "https://saferpage.de/sicherheit/info.wuv.de/feed-schedule-json",
        "csv": "https://saferpage.de/sicherheit/info.wuv.de/feed-schedule-csv",
        "markdown": "https://saferpage.de/sicherheit/info.wuv.de/feed-schedule-md",
        "live_connector": "https://saferpage.de/sicherheit/info.wuv.de/feed-live-json",
        "import_preview": "https://saferpage.de/sicherheit/info.wuv.de/feed-import-json",
        "runner_state": "https://saferpage.de/sicherheit/feed-runner-json",
        "integration_setup": "https://saferpage.de/integrationen/setup-json",
        "security_profile": "https://saferpage.de/sicherheit/info.wuv.de"
    },
    "disclaimer": "Dieses Schedule-Paket plant und kontrolliert die Ausführung. Es aktiviert ohne Betreiberfreigabe keinen Server-Timer und speichert keine Feedtreffer."
}
