{
    "schema": "https://saferpage.de/schemas/trust-viewer-privacy.v1",
    "generated_at": "2026-06-10T09:37:21+00:00",
    "domain": "gemspec.gematik.de",
    "available": true,
    "scan": {
        "id": "1ca61d25-ea2f-4c34-916e-c3c50bdcff27",
        "checked_at": "2026-06-10 04:29:40.760353+02"
    },
    "status": "viewer_privacy_review_required",
    "summary": "Trust-Viewer-Privacy für gemspec.gematik.de: 6 Datensatzklasse(n), 6 mit Personenbezug, 5 verbundene Systeme, Readiness 70.",
    "metrics": {
        "viewer_record_class_count": 6,
        "personal_data_class_count": 6,
        "connected_system_count": 5,
        "workflow_step_count": 6,
        "access_request_journey_step_count": 6,
        "viewer_self_service_control_count": 5,
        "access_decision_matrix_count": 4,
        "abuse_control_count": 5,
        "evidence_receipt_count": 4,
        "vendor_count": 1,
        "retention_score": 69,
        "readiness_score": 70
    },
    "viewer_record_classes": [
        {
            "id": "viewer_profile",
            "label": "Viewer-Profil",
            "contains_personal_data": true,
            "fields": [
                "name",
                "email",
                "company_domain",
                "role"
            ],
            "retention": "Zweckbindung; nach Ablauf oder Löschanfrage de-identifizieren.",
            "delete_action": "Name und E-Mail entfernen, Viewer-ID rotieren, Zugriff widerrufen.",
            "audit_policy": "Strukturdaten ohne Identifikator erhalten."
        },
        {
            "id": "access_requests",
            "label": "Access Requests",
            "contains_personal_data": true,
            "fields": [
                "requester_email",
                "company",
                "requested_resources",
                "decision",
                "approver"
            ],
            "retention": "Historie für Missbrauchs- und Auditnachweis minimiert aufbewahren.",
            "delete_action": "Pending Requests ablehnen, Identifikatoren de-identifizieren.",
            "audit_policy": "Entscheidung, Ressourcenscope und Zeitstempel pseudonymisiert behalten."
        },
        {
            "id": "download_events",
            "label": "Download- und View-Events",
            "contains_personal_data": true,
            "fields": [
                "viewer_id",
                "resource_id",
                "timestamp",
                "ip_hint",
                "user_agent_hint"
            ],
            "retention": "Kurzfristig für Security/Audit; danach aggregieren.",
            "delete_action": "Viewer-Referenz redigieren, Roh-IP/User-Agent nicht exportieren.",
            "audit_policy": "Aggregierte Ereigniszähler behalten."
        },
        {
            "id": "update_subscriptions",
            "label": "Update-Abos",
            "contains_personal_data": true,
            "fields": [
                "email",
                "segments",
                "subscription_status"
            ],
            "retention": "Bis Abmeldung, Zweckende oder Löschanfrage.",
            "delete_action": "Abmelden, E-Mail de-identifizieren, Bounce-/Suppression-Minimaldaten prüfen.",
            "audit_policy": "Opt-out-Nachweis minimal und zweckgebunden speichern."
        },
        {
            "id": "ai_questions",
            "label": "AI-/FAQ-Fragen",
            "contains_personal_data": true,
            "fields": [
                "requester_reference",
                "question_text",
                "source_refs",
                "review_status"
            ],
            "retention": "Fragen nur mit Datenminimierung und Review; sensible Inhalte nicht öffentlich speichern.",
            "delete_action": "Requester-Referenz entfernen; manuelle Prüfung für Freitext mit Personenbezug.",
            "audit_policy": "Quellen-/Reviewstatus ohne Freitext-Personenbezug behalten."
        },
        {
            "id": "crm_sync_events",
            "label": "CRM-/Webhook-Sync",
            "contains_personal_data": true,
            "fields": [
                "account_id",
                "contact_id",
                "activity_type",
                "resource_refs"
            ],
            "retention": "Nach CRM-Rechtsgrundlage und Feldallowlist.",
            "delete_action": "Downstream-Löschung oder De-Identifizierung in CRM/Slack/DocuSign separat anstoßen.",
            "audit_policy": "Sync-Job-ID, Zielsystem und Ergebnis ohne Kontaktidentität behalten."
        }
    ],
    "deletion_workflow": [
        {
            "step": "intake",
            "label": "Viewer-Löschanfrage erfassen",
            "owner": "Datenschutz/Support",
            "sla_hours": 24,
            "evidence": "Anfrage-ID, Authentizität, Kontaktweg, betroffene E-Mail/Domain."
        },
        {
            "step": "scope",
            "label": "Trust-Center-Datenscope bestimmen",
            "owner": "Compliance/IT",
            "sla_hours": 48,
            "evidence": "Viewer, Access Requests, Downloads, Abos, CRM Sync und Chat/FAQ prüfen."
        },
        {
            "step": "revoke",
            "label": "Zugriff und Links widerrufen",
            "owner": "Platform/IT",
            "sla_hours": 72,
            "evidence": "Access revoked, signed links expired, pending requests denied."
        },
        {
            "step": "deidentify",
            "label": "Personenbezug entfernen",
            "owner": "Datenschutz/IT",
            "sla_hours": 120,
            "evidence": "Name/E-Mail/Kontakt-IDs entfernt, Auditstruktur minimal erhalten."
        },
        {
            "step": "downstream",
            "label": "Verbundene Systeme nachziehen",
            "owner": "CRM/Legal/IT",
            "sla_hours": 168,
            "evidence": "CRM, Slack/Teams, eSignature, Webhooks und Logs separat bestätigt."
        },
        {
            "step": "receipt",
            "label": "Abschluss und Nachweis dokumentieren",
            "owner": "Datenschutz",
            "sla_hours": 720,
            "evidence": "Abschlusszeitpunkt, Ausnahmen, Rechtsgrund für Restdaten, Hash-/Auditbeleg."
        }
    ],
    "access_request_journey": [
        {
            "step": "request",
            "label": "Zugriff anfragen",
            "viewer_text": "Besucher geben geschäftlichen Zweck, Unternehmensdomain und gewünschte Nachweise an.",
            "operator_gate": "Zweck, Domain und Ressourcenscope prüfen.",
            "receipt": "Request-ID, Zweck und Ressourcenscope."
        },
        {
            "step": "verify_domain",
            "label": "Unternehmensbezug prüfen",
            "viewer_text": "Freigaben werden nicht allein an private oder Wegwerf-Adressen gebunden.",
            "operator_gate": "Domain, Kunde/Interessent, Partnerstatus oder Auditorrolle verifizieren.",
            "receipt": "Verifikationsmethode und Entscheidung."
        },
        {
            "step": "nda_or_terms",
            "label": "NDA oder Nutzungsbedingungen bestätigen",
            "viewer_text": "Private Nachweise werden erst nach passender Vertraulichkeitsstufe geöffnet.",
            "operator_gate": "NDA-Version, Rechtsraum, Dokumentklasse und Ablaufdatum zuordnen.",
            "receipt": "Agreement-Version, Status und Ablauf."
        },
        {
            "step": "approve_scope",
            "label": "Ressourcen begrenzt freigeben",
            "viewer_text": "Viewer erhalten nur die Nachweise, die zum Zweck passen.",
            "operator_gate": "Access Group, Dokumentliste, Wasserzeichen und Downloadregel setzen.",
            "receipt": "Access Group, Dokumentklasse und Ablaufzeit."
        },
        {
            "step": "expire_or_revoke",
            "label": "Ablauf und Widerruf sichtbar halten",
            "viewer_text": "Zugriffe laufen automatisch ab und können vorzeitig widerrufen werden.",
            "operator_gate": "Expiry, Revocation und Re-Approval als Pflichtfelder führen.",
            "receipt": "Expiry-Zeitpunkt, Widerrufsgrund und Bearbeiterrolle."
        },
        {
            "step": "renew_or_delete",
            "label": "Verlängern oder Viewer-Daten löschen",
            "viewer_text": "Nach Zweckende wird Zugriff beendet oder fachlich verlängert.",
            "operator_gate": "Renewal-Entscheidung, Lösch-/De-Identifizierungsworkflow und Downstream-Aufgaben starten.",
            "receipt": "Renewal-Entscheidung oder Löschabschluss."
        }
    ],
    "viewer_self_service_controls": [
        {
            "id": "view_access_status",
            "label": "Zugriffsstatus und Ablaufdatum anzeigen",
            "viewer_action": "Viewer sieht, welche Freigabe aktiv, abgelaufen oder widerrufen ist.",
            "privacy_note": "Keine öffentliche Anzeige anderer Viewer oder Accounts."
        },
        {
            "id": "update_business_purpose",
            "label": "Zweck oder Rolle aktualisieren",
            "viewer_action": "Viewer kann Zweckänderung einreichen, ohne neue Magic Links zu erzeugen.",
            "privacy_note": "Änderung bleibt bis Operator-Review begrenzt."
        },
        {
            "id": "download_viewer_receipt",
            "label": "Eigenen Nachweis herunterladen",
            "viewer_action": "Viewer erhält sanitisierte Request-/Access-Receipt ohne interne Notizen.",
            "privacy_note": "Keine IPs, Roh-User-Agents, andere Kontakte oder private Dokument-URLs."
        },
        {
            "id": "unsubscribe_updates",
            "label": "Trust-Updates abbestellen",
            "viewer_action": "Viewer beendet Update-Abo für Subprozessoren, Security oder Statusmeldungen.",
            "privacy_note": "Suppression minimal speichern und nicht öffentlich exportieren."
        },
        {
            "id": "request_deletion_or_revocation",
            "label": "Löschung oder Widerruf anfordern",
            "viewer_action": "Viewer kann Access-Revocation, De-Identifizierung oder DSAR-Routing starten.",
            "privacy_note": "Identitätsprüfung und Downstream-Löschung bleiben Betreiberaufgabe."
        }
    ],
    "access_decision_matrix": [
        {
            "level": "public",
            "label": "Öffentlich",
            "allowed": "Methodik, Status, Subprozessor-Auszug, Zertifikatsnamen, Public FAQs.",
            "blocked": "Private Berichte, Kundennamen, interne Findings.",
            "review": "Automatisch veröffentlichbar, wenn No-Secret-Check grün ist."
        },
        {
            "level": "gated_standard",
            "label": "Gated Standard",
            "allowed": "Security-Fragebogen, DPA-Auszüge, technische Nachweise mit Wasserzeichen.",
            "blocked": "Rohlogs, vollständige Pen-Test-Berichte, personenbezogene Viewer-Daten.",
            "review": "Domain- und Zweckprüfung durch Trust Owner."
        },
        {
            "level": "nda_private",
            "label": "NDA / Private",
            "allowed": "Private Dokumente mit Ablauf, Wasserzeichen und Audit-Receipt.",
            "blocked": "Unreviewed Uploads, private Download-Tokens im Export.",
            "review": "Legal/Compliance-Freigabe und Agreement-Version erforderlich."
        },
        {
            "level": "denied_expired",
            "label": "Abgelehnt oder abgelaufen",
            "allowed": "Status, Grundklasse und erneuter Anfrageweg.",
            "blocked": "Dokumentzugriff, Downloads, Update-Abos ohne neue Freigabe.",
            "review": "Re-Request oder Lösch-/De-Identifizierungsworkflow."
        }
    ],
    "abuse_and_fraud_controls": [
        {
            "id": "domain_verification",
            "label": "Unternehmensdomain und Rolle prüfen",
            "signal": "Freemailer, Wegwerf-Mail, Rollenadresse oder Domain-Mismatch.",
            "action": "Manuelle Prüfung oder Ablehnung."
        },
        {
            "id": "rate_limit_requests",
            "label": "Request- und Download-Limits setzen",
            "signal": "Viele Anfragen, wiederholte Downloads oder ungewöhnliche Ressourcenmuster.",
            "action": "Temporär drosseln, Access Group verkleinern oder Security-Review."
        },
        {
            "id": "sensitive_document_escalation",
            "label": "Sensible Dokumentklassen eskalieren",
            "signal": "Pen-Test, Architektur, Incident- oder Kundennachweis angefragt.",
            "action": "Legal/Compliance-Approval statt automatischer Freigabe."
        },
        {
            "id": "geo_and_org_mismatch",
            "label": "Region und Organisation abgleichen",
            "signal": "Rechtsraum, Kunde oder Auditorrolle passt nicht zum angefragten Zweck.",
            "action": "Zusatznachweis oder begrenzte Public-Alternative anbieten."
        },
        {
            "id": "watermark_and_revocation",
            "label": "Wasserzeichen und Widerruf koppeln",
            "signal": "Private Downloads oder Re-Share-Risiko.",
            "action": "Wasserzeichen, Ablaufdatum, Revocation und Receipt erzwingen."
        }
    ],
    "evidence_receipts": [
        {
            "id": "request_receipt",
            "label": "Anfragebeleg",
            "fields": [
                "request_id",
                "purpose",
                "resource_scope",
                "submitted_at"
            ],
            "redaction": "Keine internen Notizen oder andere Viewer."
        },
        {
            "id": "decision_receipt",
            "label": "Entscheidungsbeleg",
            "fields": [
                "decision",
                "decision_class",
                "reviewer_role",
                "decided_at"
            ],
            "redaction": "Reviewer-Identität rollenbasiert statt namentlich."
        },
        {
            "id": "access_receipt",
            "label": "Access-Beleg",
            "fields": [
                "access_group",
                "document_classes",
                "expires_at",
                "watermark_policy"
            ],
            "redaction": "Keine privaten Download-URLs oder Tokens."
        },
        {
            "id": "revocation_receipt",
            "label": "Widerrufs-/Löschbeleg",
            "fields": [
                "revoked_at",
                "reason_class",
                "deidentification_status",
                "downstream_tasks"
            ],
            "redaction": "Keine Rohlogs, IPs oder User-Agent-Werte."
        }
    ],
    "connected_systems": [
        {
            "system": "Trust Center",
            "data_scope": "Viewer, Access Requests, Downloads, Update-Abos",
            "action": "Zugriff widerrufen und Viewer-Daten de-identifizieren.",
            "status": "Blueprint"
        },
        {
            "system": "Datenraum / Dokumentzustellung",
            "data_scope": "Gated Ressourcen, signed Links, Wasserzeichen-Referenzen",
            "action": "Links widerrufen, Ablauf setzen, Download-Audit minimieren.",
            "status": "Blueprint"
        },
        {
            "system": "CRM",
            "data_scope": "Account, Opportunity, Kontakt, Aktivität",
            "action": "Kontakt- oder Aktivitätsdaten nach Feldallowlist löschen/de-identifizieren.",
            "status": "externe Aktion erforderlich"
        },
        {
            "system": "Slack/Teams/Webhooks",
            "data_scope": "Benachrichtigungen und Approve/Deny-Aktionen",
            "action": "Nachrichten, Payloads und personenbezogene Felder nach Zielsystem-Policy prüfen.",
            "status": "externe Aktion erforderlich"
        },
        {
            "system": "AI Assistant / FAQ",
            "data_scope": "Fragen, Quellen, Reviewstatus",
            "action": "Requester entfernen; Freitexte mit Personenbezug manuell redigieren.",
            "status": "Review erforderlich"
        }
    ],
    "guardrails": [
        {
            "id": "no_public_identity",
            "label": "Keine Viewer-Namen, E-Mails, CRM-IDs oder Chat-Freitexte öffentlich exportieren.",
            "owner": "Platform/Datenschutz"
        },
        {
            "id": "preserve_audit_structure",
            "label": "Auditstruktur und Sicherheitsnachweis erhalten, aber direkte Identifikatoren entfernen.",
            "owner": "Compliance"
        },
        {
            "id": "manual_chat_review",
            "label": "Freitext aus AI-/FAQ-Fragen manuell auf Personenbezug prüfen.",
            "owner": "Datenschutz/Support"
        },
        {
            "id": "downstream_not_automatic",
            "label": "CRM, Slack/Teams, eSignature und Webhooks separat löschen oder de-identifizieren.",
            "owner": "IT/Revenue Ops"
        }
    ],
    "links": {
        "html": "https://saferpage.de/trust/gemspec.gematik.de/viewer-datenschutz",
        "json": "https://saferpage.de/trust/gemspec.gematik.de/viewer-datenschutz-json",
        "csv": "https://saferpage.de/trust/gemspec.gematik.de/viewer-datenschutz-csv",
        "markdown": "https://saferpage.de/trust/gemspec.gematik.de/viewer-datenschutz-md",
        "trust_center": "https://saferpage.de/trust/gemspec.gematik.de",
        "access_requests": "https://saferpage.de/datenraum/gemspec.gematik.de/zugriffe",
        "data_room": "https://saferpage.de/datenraum/gemspec.gematik.de",
        "document_delivery": "https://saferpage.de/datenraum/gemspec.gematik.de/zustellung",
        "trust_analytics": "https://saferpage.de/trust-analytics/gemspec.gematik.de",
        "crm_sync": "https://saferpage.de/trust-analytics/gemspec.gematik.de/crm-sync",
        "trust_updates": "https://saferpage.de/trust-updates/gemspec.gematik.de",
        "team_permissions": "https://saferpage.de/trust/gemspec.gematik.de/team-rollen",
        "retention_center": "https://saferpage.de/loeschung/gemspec.gematik.de",
        "rights_intake": "https://saferpage.de/rechte/gemspec.gematik.de/intake"
    },
    "does_not_delete_live_data": true,
    "does_not_export_viewer_identity": true,
    "disclaimer": "Viewer-Privacy ist ein Betreiber-Blueprint. Diese öffentliche Seite löscht keine echten Trust-Center-Daten und exportiert keine Viewer-Identitäten."
}
