/**
 * Python/FastAPI endpoints — GDPR, DSR, consent, and data-subject modules
 * (banner, consent-templates, dsfa, dsr, einwilligungen, loeschfristen,
 *  consent-user, consent-admin, dsr-user, dsr-admin, gdpr)
 */
import { ApiModule } from './types'

export const pythonGdprModules: ApiModule[] = [
  {
    id: 'banner',
    name: 'Cookie-Banner & Consent Management',
    service: 'python',
    basePath: '/api/compliance/consent',
    exposure: 'internal',
    endpoints: [
      { method: 'POST', path: '/consent', description: 'Einwilligung erfassen', service: 'python', exposure: 'public' },
      { method: 'GET', path: '/consent', description: 'Einwilligungen auflisten', service: 'python' },
      { method: 'DELETE', path: '/consent/{consent_id}', description: 'Einwilligung loeschen', service: 'python' },
      { method: 'GET', path: '/consent/export', description: 'Einwilligungsdaten exportieren', service: 'python' },
      { method: 'GET', path: '/config/{site_id}', description: 'Seitenkonfiguration laden', service: 'python', exposure: 'public' },
      { method: 'GET', path: '/admin/sites', description: 'Alle Seiten auflisten', service: 'python' },
      { method: 'POST', path: '/admin/sites', description: 'Seite erstellen', service: 'python' },
      { method: 'PUT', path: '/admin/sites/{site_id}', description: 'Seite aktualisieren', service: 'python' },
      { method: 'DELETE', path: '/admin/sites/{site_id}', description: 'Seite loeschen', service: 'python' },
      { method: 'GET', path: '/admin/sites/{site_id}/categories', description: 'Cookie-Kategorien auflisten', service: 'python' },
      { method: 'POST', path: '/admin/sites/{site_id}/categories', description: 'Cookie-Kategorie erstellen', service: 'python' },
      { method: 'DELETE', path: '/admin/categories/{category_id}', description: 'Cookie-Kategorie loeschen', service: 'python' },
      { method: 'GET', path: '/admin/sites/{site_id}/vendors', description: 'Anbieter auflisten', service: 'python' },
      { method: 'POST', path: '/admin/sites/{site_id}/vendors', description: 'Anbieter hinzufuegen', service: 'python' },
      { method: 'DELETE', path: '/admin/vendors/{vendor_id}', description: 'Anbieter loeschen', service: 'python' },
      { method: 'GET', path: '/admin/stats/{site_id}', description: 'Seiten-Statistiken laden', service: 'python' },
    ],
  },

  {
    id: 'consent-templates',
    name: 'Einwilligungsvorlagen — Consent Templates',
    service: 'python',
    basePath: '/api/compliance/consent-templates',
    exposure: 'internal',
    endpoints: [
      { method: 'GET', path: '/consent-templates', description: 'Vorlagen auflisten', service: 'python' },
      { method: 'POST', path: '/consent-templates', description: 'Vorlage erstellen', service: 'python' },
      { method: 'PUT', path: '/consent-templates/{template_id}', description: 'Vorlage aktualisieren', service: 'python' },
      { method: 'DELETE', path: '/consent-templates/{template_id}', description: 'Vorlage loeschen', service: 'python' },
      { method: 'GET', path: '/gdpr-processes', description: 'DSGVO-Prozesse auflisten', service: 'python' },
      { method: 'PUT', path: '/gdpr-processes/{process_id}', description: 'DSGVO-Prozess aktualisieren', service: 'python' },
    ],
  },

  {
    id: 'dsfa',
    name: 'DSFA — Datenschutz-Folgenabschaetzung',
    service: 'python',
    basePath: '/api/compliance/dsfa',
    exposure: 'internal',
    endpoints: [
      { method: 'GET', path: '/', description: 'DSFAs auflisten', service: 'python' },
      { method: 'POST', path: '/', description: 'DSFA erstellen', service: 'python' },
      { method: 'GET', path: '/{dsfa_id}', description: 'DSFA laden', service: 'python' },
      { method: 'PUT', path: '/{dsfa_id}', description: 'DSFA aktualisieren', service: 'python' },
      { method: 'DELETE', path: '/{dsfa_id}', description: 'DSFA loeschen', service: 'python' },
      { method: 'PATCH', path: '/{dsfa_id}/status', description: 'DSFA-Status aendern', service: 'python' },
      { method: 'PUT', path: '/{dsfa_id}/sections/{section_number}', description: 'DSFA-Abschnitt aktualisieren', service: 'python' },
      { method: 'POST', path: '/{dsfa_id}/submit-for-review', description: 'Zur Pruefung einreichen', service: 'python' },
      { method: 'POST', path: '/{dsfa_id}/approve', description: 'DSFA genehmigen', service: 'python' },
      { method: 'GET', path: '/{dsfa_id}/export', description: 'DSFA als JSON exportieren', service: 'python' },
      { method: 'GET', path: '/{dsfa_id}/versions', description: 'Versionshistorie laden', service: 'python' },
      { method: 'GET', path: '/{dsfa_id}/versions/{version_number}', description: 'Bestimmte Version laden', service: 'python' },
      { method: 'GET', path: '/stats', description: 'DSFA-Statistiken laden', service: 'python' },
      { method: 'GET', path: '/audit-log', description: 'DSFA-Audit-Log laden', service: 'python' },
      { method: 'GET', path: '/export/csv', description: 'Alle DSFAs als CSV exportieren', service: 'python' },
    ],
  },

  {
    id: 'dsr',
    name: 'DSR — Betroffenenrechte (Admin)',
    service: 'python',
    basePath: '/api/compliance/dsr',
    exposure: 'internal',
    endpoints: [
      { method: 'POST', path: '/', description: 'DSR erstellen', service: 'python' },
      { method: 'GET', path: '/', description: 'DSRs auflisten', service: 'python' },
      { method: 'GET', path: '/{dsr_id}', description: 'DSR laden', service: 'python' },
      { method: 'PUT', path: '/{dsr_id}', description: 'DSR aktualisieren', service: 'python' },
      { method: 'DELETE', path: '/{dsr_id}', description: 'DSR loeschen', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/status', description: 'Status aendern', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/verify-identity', description: 'Identitaet verifizieren', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/assign', description: 'DSR zuweisen', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/extend', description: 'Frist verlaengern', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/complete', description: 'DSR abschliessen', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/reject', description: 'DSR ablehnen', service: 'python' },
      { method: 'GET', path: '/{dsr_id}/history', description: 'Antragshistorie laden', service: 'python' },
      { method: 'GET', path: '/{dsr_id}/communications', description: 'Kommunikation laden', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/communicate', description: 'Nachricht senden', service: 'python' },
      { method: 'GET', path: '/{dsr_id}/exception-checks', description: 'Ausnahme-Checks laden', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/exception-checks/init', description: 'Ausnahme-Checks initialisieren', service: 'python' },
      { method: 'PUT', path: '/{dsr_id}/exception-checks/{check_id}', description: 'Ausnahme-Check aktualisieren', service: 'python' },
      { method: 'GET', path: '/stats', description: 'DSR-Statistiken laden', service: 'python' },
      { method: 'GET', path: '/export', description: 'DSRs exportieren', service: 'python' },
      { method: 'POST', path: '/deadlines/process', description: 'Fristen verarbeiten', service: 'python' },
      { method: 'GET', path: '/templates', description: 'DSR-Vorlagen laden', service: 'python' },
      { method: 'GET', path: '/templates/published', description: 'Veroeffentlichte Vorlagen laden', service: 'python' },
      { method: 'GET', path: '/templates/{template_id}/versions', description: 'Vorlagen-Versionen laden', service: 'python' },
      { method: 'POST', path: '/templates/{template_id}/versions', description: 'Vorlagen-Version erstellen', service: 'python' },
      { method: 'PUT', path: '/template-versions/{version_id}/publish', description: 'Vorlagen-Version veroeffentlichen', service: 'python' },
    ],
  },

  {
    id: 'einwilligungen',
    name: 'Einwilligungen — DSGVO-Einwilligungsverwaltung',
    service: 'python',
    basePath: '/api/compliance/einwilligungen',
    exposure: 'internal',
    endpoints: [
      { method: 'GET', path: '/catalog', description: 'Einwilligungskatalog laden', service: 'python' },
      { method: 'PUT', path: '/catalog', description: 'Katalog aktualisieren', service: 'python' },
      { method: 'GET', path: '/company', description: 'Unternehmens-Consent-Einstellungen laden', service: 'python' },
      { method: 'PUT', path: '/company', description: 'Einstellungen aktualisieren', service: 'python' },
      { method: 'GET', path: '/cookies', description: 'Cookie-Einwilligungen laden', service: 'python' },
      { method: 'PUT', path: '/cookies', description: 'Cookie-Einwilligungen aktualisieren', service: 'python' },
      { method: 'GET', path: '/consents/stats', description: 'Statistiken laden', service: 'python' },
      { method: 'GET', path: '/consents', description: 'Einwilligungen auflisten (paginiert)', service: 'python' },
      { method: 'POST', path: '/consents', description: 'Einwilligung erstellen', service: 'python' },
      { method: 'GET', path: '/consents/{consent_id}/history', description: 'Einwilligungshistorie laden', service: 'python' },
      { method: 'PUT', path: '/consents/{consent_id}/revoke', description: 'Einwilligung widerrufen', service: 'python' },
    ],
  },

  {
    id: 'loeschfristen',
    name: 'Loeschfristen — Aufbewahrung & Loeschung',
    service: 'python',
    basePath: '/api/compliance/loeschfristen',
    exposure: 'internal',
    endpoints: [
      { method: 'GET', path: '/', description: 'Loeschrichtlinien auflisten', service: 'python' },
      { method: 'POST', path: '/', description: 'Richtlinie erstellen', service: 'python' },
      { method: 'GET', path: '/stats', description: 'Loeschfristen-Statistiken laden', service: 'python' },
      { method: 'GET', path: '/{policy_id}', description: 'Richtlinie laden', service: 'python' },
      { method: 'PUT', path: '/{policy_id}', description: 'Richtlinie aktualisieren', service: 'python' },
      { method: 'PUT', path: '/{policy_id}/status', description: 'Richtlinien-Status aendern', service: 'python' },
      { method: 'DELETE', path: '/{policy_id}', description: 'Richtlinie loeschen', service: 'python' },
      { method: 'GET', path: '/{policy_id}/versions', description: 'Versionshistorie laden', service: 'python' },
      { method: 'GET', path: '/{policy_id}/versions/{version_number}', description: 'Bestimmte Version laden', service: 'python' },
    ],
  },

  {
    id: 'consent-user',
    name: 'Consent API — Nutzer-Einwilligungen',
    service: 'python',
    basePath: '/api/consents',
    exposure: 'public',
    endpoints: [
      { method: 'GET', path: '/token/demo', description: 'Demo-Token laden', service: 'python' },
      { method: 'GET', path: '/check/{document_type}', description: 'Einwilligungsstatus pruefen', service: 'python' },
      { method: 'GET', path: '/pending', description: 'Offene Einwilligungen laden', service: 'python' },
      { method: 'GET', path: '/documents/{document_type}/latest', description: 'Aktuellstes Dokument laden', service: 'python' },
      { method: 'POST', path: '/give', description: 'Einwilligung erteilen', service: 'python' },
      { method: 'GET', path: '/cookies/categories', description: 'Cookie-Kategorien laden', service: 'python' },
      { method: 'POST', path: '/cookies', description: 'Cookie-Einwilligung setzen', service: 'python' },
      { method: 'GET', path: '/privacy/my-data', description: 'Eigene Daten laden', service: 'python' },
      { method: 'POST', path: '/privacy/export', description: 'Datenexport anfordern', service: 'python' },
      { method: 'POST', path: '/privacy/delete', description: 'Datenlöschung anfordern', service: 'python' },
      { method: 'GET', path: '/health', description: 'Health-Check', service: 'python' },
    ],
  },

  {
    id: 'consent-admin',
    name: 'Consent Admin — Dokumenten- & Versionsverwaltung',
    service: 'python',
    basePath: '/api/admin/consents',
    exposure: 'internal',
    endpoints: [
      { method: 'GET', path: '/documents', description: 'Dokumente auflisten', service: 'python' },
      { method: 'POST', path: '/documents', description: 'Dokument erstellen', service: 'python' },
      { method: 'PUT', path: '/documents/{doc_id}', description: 'Dokument aktualisieren', service: 'python' },
      { method: 'DELETE', path: '/documents/{doc_id}', description: 'Dokument loeschen', service: 'python' },
      { method: 'GET', path: '/documents/{doc_id}/versions', description: 'Versionen laden', service: 'python' },
      { method: 'POST', path: '/versions', description: 'Version erstellen', service: 'python' },
      { method: 'PUT', path: '/versions/{version_id}', description: 'Version aktualisieren', service: 'python' },
      { method: 'POST', path: '/versions/{version_id}/publish', description: 'Version veroeffentlichen', service: 'python' },
      { method: 'POST', path: '/versions/{version_id}/archive', description: 'Version archivieren', service: 'python' },
      { method: 'DELETE', path: '/versions/{version_id}', description: 'Version loeschen', service: 'python' },
      { method: 'POST', path: '/versions/{version_id}/submit-review', description: 'Zur Pruefung einreichen', service: 'python' },
      { method: 'POST', path: '/versions/{version_id}/approve', description: 'Version genehmigen', service: 'python' },
      { method: 'POST', path: '/versions/{version_id}/reject', description: 'Version ablehnen', service: 'python' },
      { method: 'GET', path: '/versions/{version_id}/compare', description: 'Versionen vergleichen', service: 'python' },
      { method: 'GET', path: '/versions/{version_id}/approval-history', description: 'Genehmigungshistorie laden', service: 'python' },
      { method: 'POST', path: '/versions/upload-word', description: 'Word-Dokument hochladen', service: 'python' },
      { method: 'GET', path: '/scheduled-versions', description: 'Geplante Versionen laden', service: 'python' },
      { method: 'POST', path: '/scheduled-publishing/process', description: 'Geplante Veroeffentlichungen verarbeiten', service: 'python' },
      { method: 'GET', path: '/cookies/categories', description: 'Cookie-Kategorien laden', service: 'python' },
      { method: 'POST', path: '/cookies/categories', description: 'Kategorie erstellen', service: 'python' },
      { method: 'PUT', path: '/cookies/categories/{cat_id}', description: 'Kategorie aktualisieren', service: 'python' },
      { method: 'DELETE', path: '/cookies/categories/{cat_id}', description: 'Kategorie loeschen', service: 'python' },
      { method: 'GET', path: '/statistics', description: 'Admin-Statistiken laden', service: 'python' },
      { method: 'GET', path: '/audit-log', description: 'Audit-Log laden', service: 'python' },
    ],
  },

  {
    id: 'dsr-user',
    name: 'DSR API — Nutzer-Betroffenenrechte',
    service: 'python',
    basePath: '/api/dsr',
    exposure: 'public',
    endpoints: [
      { method: 'POST', path: '/', description: 'Antrag stellen', service: 'python' },
      { method: 'GET', path: '/', description: 'Eigene Antraege laden', service: 'python' },
      { method: 'GET', path: '/{dsr_id}', description: 'Antrag laden', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/cancel', description: 'Antrag stornieren', service: 'python' },
    ],
  },

  {
    id: 'dsr-admin',
    name: 'DSR Admin — Antrags-Verwaltung',
    service: 'python',
    basePath: '/api/admin/dsr',
    exposure: 'internal',
    endpoints: [
      { method: 'GET', path: '/', description: 'Alle Antraege laden', service: 'python' },
      { method: 'GET', path: '/stats', description: 'DSR-Statistiken laden', service: 'python' },
      { method: 'GET', path: '/{dsr_id}', description: 'Antrag laden', service: 'python' },
      { method: 'POST', path: '/', description: 'Antrag erstellen', service: 'python' },
      { method: 'PUT', path: '/{dsr_id}', description: 'Antrag aktualisieren', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/status', description: 'Status aendern', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/verify-identity', description: 'Identitaet verifizieren', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/assign', description: 'Zuweisen', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/extend', description: 'Frist verlaengern', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/complete', description: 'Abschliessen', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/reject', description: 'Ablehnen', service: 'python' },
      { method: 'GET', path: '/{dsr_id}/history', description: 'Historie laden', service: 'python' },
      { method: 'GET', path: '/{dsr_id}/communications', description: 'Kommunikation laden', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/communicate', description: 'Nachricht senden', service: 'python' },
      { method: 'GET', path: '/{dsr_id}/exception-checks', description: 'Ausnahme-Checks laden', service: 'python' },
      { method: 'POST', path: '/{dsr_id}/exception-checks/init', description: 'Checks initialisieren', service: 'python' },
      { method: 'PUT', path: '/{dsr_id}/exception-checks/{check_id}', description: 'Check aktualisieren', service: 'python' },
      { method: 'POST', path: '/deadlines/process', description: 'Fristen verarbeiten', service: 'python' },
    ],
  },

  {
    id: 'gdpr',
    name: 'GDPR / Datenschutz — Nutzerdaten & Export',
    service: 'python',
    basePath: '/api/gdpr',
    exposure: 'public',
    endpoints: [
      { method: 'POST', path: '/export-pdf', description: 'Nutzerdaten als PDF exportieren', service: 'python' },
      { method: 'GET', path: '/export-html', description: 'Nutzerdaten als HTML exportieren', service: 'python' },
      { method: 'GET', path: '/data-categories', description: 'Datenkategorien laden', service: 'python' },
      { method: 'GET', path: '/data-categories/{category}', description: 'Kategorie-Details laden', service: 'python' },
      { method: 'POST', path: '/request-deletion', description: 'Datenlöschung beantragen', service: 'python' },
    ],
  },
]
