Files
breakpilot-compliance/admin-compliance/lib/sdk/api-docs/endpoints-go.ts
Sharang Parnerkar 58e95d5e8e refactor(admin): split 9 more oversized lib/ files into focused modules
Files split by agents before rate limit:
  - dsr/api.ts (669 → barrel + helpers)
  - einwilligungen/context.tsx (669 → barrel + hooks/reducer)
  - export.ts (753 → barrel + domain exporters)
  - incidents/api.ts (845 → barrel + api-helpers)
  - tom-generator/context.tsx (720 → barrel + hooks/reducer)
  - vendor-compliance/context.tsx (1010 → 234 provider + hooks/reducer)
  - api-docs/endpoints.ts — partially split (3 domain files created)
  - academy/api.ts — partially split (helpers extracted)
  - whistleblower/api.ts — partially split (helpers extracted)

next build passes. api-client.ts (885) deferred to next session.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 19:12:09 +02:00

384 lines
27 KiB
TypeScript

/**
* Go/Gin endpoints — AI Compliance SDK service modules
* (health, rbac, llm, go-audit, ucca, rag, roadmaps, roadmap-items,
* workshops, portfolios, academy, training, whistleblower, iace)
*/
import { ApiModule } from './types'
export const goModules: ApiModule[] = [
{
id: 'go-health',
name: 'Health — System-Status',
service: 'go',
basePath: '/sdk/v1',
exposure: 'admin',
endpoints: [
{ method: 'GET', path: '/health', description: 'API Health-Check', service: 'go', exposure: 'admin' },
],
},
{
id: 'rbac',
name: 'RBAC — Tenant, Rollen & Berechtigungen',
service: 'go',
basePath: '/sdk/v1',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/tenants', description: 'Alle Tenants auflisten', service: 'go' },
{ method: 'GET', path: '/tenants/:id', description: 'Tenant laden', service: 'go' },
{ method: 'POST', path: '/tenants', description: 'Tenant erstellen', service: 'go' },
{ method: 'PUT', path: '/tenants/:id', description: 'Tenant aktualisieren', service: 'go' },
{ method: 'GET', path: '/tenants/:id/namespaces', description: 'Namespaces auflisten', service: 'go' },
{ method: 'POST', path: '/tenants/:id/namespaces', description: 'Namespace erstellen', service: 'go' },
{ method: 'GET', path: '/namespaces/:id', description: 'Namespace laden', service: 'go' },
{ method: 'GET', path: '/roles', description: 'Rollen auflisten', service: 'go' },
{ method: 'GET', path: '/roles/system', description: 'System-Rollen auflisten', service: 'go' },
{ method: 'GET', path: '/roles/:id', description: 'Rolle laden', service: 'go' },
{ method: 'POST', path: '/roles', description: 'Rolle erstellen', service: 'go' },
{ method: 'POST', path: '/user-roles', description: 'Rolle zuweisen', service: 'go' },
{ method: 'DELETE', path: '/user-roles/:userId/:roleId', description: 'Rolle entziehen', service: 'go' },
{ method: 'GET', path: '/user-roles/:userId', description: 'Benutzer-Rollen laden', service: 'go' },
{ method: 'GET', path: '/permissions/effective', description: 'Effektive Berechtigungen laden', service: 'go' },
{ method: 'GET', path: '/permissions/context', description: 'Benutzerkontext laden', service: 'go' },
{ method: 'GET', path: '/permissions/check', description: 'Berechtigung pruefen', service: 'go' },
],
},
{
id: 'llm',
name: 'LLM — KI-Textverarbeitung & Policies',
service: 'go',
basePath: '/sdk/v1/llm',
exposure: 'partner',
endpoints: [
{ method: 'GET', path: '/policies', description: 'LLM-Policies auflisten', service: 'go' },
{ method: 'GET', path: '/policies/:id', description: 'Policy laden', service: 'go' },
{ method: 'POST', path: '/policies', description: 'Policy erstellen', service: 'go' },
{ method: 'PUT', path: '/policies/:id', description: 'Policy aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/policies/:id', description: 'Policy loeschen', service: 'go' },
{ method: 'POST', path: '/chat', description: 'Chat Completion', service: 'go' },
{ method: 'POST', path: '/complete', description: 'Text Completion', service: 'go' },
{ method: 'GET', path: '/models', description: 'Verfuegbare Modelle auflisten', service: 'go' },
{ method: 'GET', path: '/providers/status', description: 'Provider-Status laden', service: 'go' },
{ method: 'POST', path: '/analyze', description: 'Text analysieren', service: 'go' },
{ method: 'POST', path: '/redact', description: 'PII schwaerzen', service: 'go' },
],
},
{
id: 'go-audit',
name: 'Audit (Go) — LLM-Audit & Compliance-Reports',
service: 'go',
basePath: '/sdk/v1/audit',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/llm', description: 'LLM-Audit-Logs laden', service: 'go' },
{ method: 'GET', path: '/general', description: 'Allgemeine Audit-Logs laden', service: 'go' },
{ method: 'GET', path: '/llm-operations', description: 'LLM-Operationen laden (Alias)', service: 'go' },
{ method: 'GET', path: '/trail', description: 'Audit-Trail laden (Alias)', service: 'go' },
{ method: 'GET', path: '/usage', description: 'Nutzungsstatistiken laden', service: 'go' },
{ method: 'GET', path: '/compliance-report', description: 'Compliance-Report laden', service: 'go' },
{ method: 'GET', path: '/export/llm', description: 'LLM-Audit exportieren', service: 'go' },
{ method: 'GET', path: '/export/general', description: 'Allgemeines Audit exportieren', service: 'go' },
{ method: 'GET', path: '/export/compliance', description: 'Compliance-Report exportieren', service: 'go' },
],
},
{
id: 'ucca',
name: 'UCCA — Use-Case Compliance Advisor',
service: 'go',
basePath: '/sdk/v1/ucca',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/assess', description: 'Compliance-Bewertung durchfuehren', service: 'go' },
{ method: 'GET', path: '/assessments', description: 'Bewertungen auflisten', service: 'go' },
{ method: 'GET', path: '/assessments/:id', description: 'Bewertung laden', service: 'go' },
{ method: 'PUT', path: '/assessments/:id', description: 'Bewertung aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/assessments/:id', description: 'Bewertung loeschen', service: 'go' },
{ method: 'POST', path: '/assessments/:id/explain', description: 'KI-Erklaerung generieren', service: 'go' },
{ method: 'GET', path: '/patterns', description: 'Compliance-Muster laden', service: 'go' },
{ method: 'GET', path: '/examples', description: 'Beispiele laden', service: 'go' },
{ method: 'GET', path: '/rules', description: 'Compliance-Regeln laden', service: 'go' },
{ method: 'GET', path: '/controls', description: 'Controls laden', service: 'go' },
{ method: 'GET', path: '/problem-solutions', description: 'Problem-Loesungs-Paare laden', service: 'go' },
{ method: 'GET', path: '/export/:id', description: 'Bewertung exportieren', service: 'go' },
{ method: 'GET', path: '/escalations', description: 'Eskalationen auflisten', service: 'go' },
{ method: 'GET', path: '/escalations/stats', description: 'Eskalations-Statistiken laden', service: 'go' },
{ method: 'GET', path: '/escalations/:id', description: 'Eskalation laden', service: 'go' },
{ method: 'POST', path: '/escalations', description: 'Eskalation erstellen', service: 'go' },
{ method: 'POST', path: '/escalations/:id/assign', description: 'Eskalation zuweisen', service: 'go' },
{ method: 'POST', path: '/escalations/:id/review', description: 'Review starten', service: 'go' },
{ method: 'POST', path: '/escalations/:id/decide', description: 'Entscheidung treffen', service: 'go' },
{ method: 'POST', path: '/obligations/assess', description: 'Pflichten bewerten', service: 'go' },
{ method: 'GET', path: '/obligations/:assessmentId', description: 'Bewertungsergebnis laden', service: 'go' },
{ method: 'GET', path: '/obligations/:assessmentId/by-regulation', description: 'Nach Regulierung gruppiert', service: 'go' },
{ method: 'GET', path: '/obligations/:assessmentId/by-deadline', description: 'Nach Frist gruppiert', service: 'go' },
{ method: 'GET', path: '/obligations/:assessmentId/by-responsible', description: 'Nach Verantwortlichem gruppiert', service: 'go' },
{ method: 'POST', path: '/obligations/export/memo', description: 'C-Level-Memo exportieren', service: 'go' },
{ method: 'POST', path: '/obligations/export/direct', description: 'Uebersicht direkt exportieren', service: 'go' },
{ method: 'GET', path: '/obligations/regulations', description: 'Regulierungen laden', service: 'go' },
{ method: 'GET', path: '/obligations/regulations/:regulationId/decision-tree', description: 'Entscheidungsbaum laden', service: 'go' },
{ method: 'POST', path: '/obligations/quick-check', description: 'Schnell-Check durchfuehren', service: 'go' },
{ method: 'POST', path: '/obligations/assess-from-scope', description: 'Aus Scope bewerten', service: 'go' },
{ method: 'GET', path: '/obligations/tom-controls/for-obligation/:obligationId', description: 'TOM-Controls fuer Pflicht laden', service: 'go' },
{ method: 'POST', path: '/obligations/gap-analysis', description: 'TOM-Gap-Analyse durchfuehren', service: 'go' },
{ method: 'GET', path: '/obligations/tom-controls/:controlId/obligations', description: 'Pflichten fuer TOM-Control laden', service: 'go' },
],
},
{
id: 'rag',
name: 'RAG — Legal Corpus & Vektorsuche',
service: 'go',
basePath: '/sdk/v1/rag',
exposure: 'partner',
endpoints: [
{ method: 'POST', path: '/search', description: 'Rechtskorpus durchsuchen', service: 'go' },
{ method: 'GET', path: '/regulations', description: 'Regulierungen auflisten', service: 'go' },
{ method: 'GET', path: '/corpus-status', description: 'Indexierungsstatus laden', service: 'go' },
{ method: 'GET', path: '/corpus-versions/:collection', description: 'Versionshistorie laden', service: 'go' },
],
},
{
id: 'roadmaps',
name: 'Roadmaps — Compliance-Implementierungsplaene',
service: 'go',
basePath: '/sdk/v1/roadmaps',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/', description: 'Roadmap erstellen', service: 'go' },
{ method: 'GET', path: '/', description: 'Roadmaps auflisten', service: 'go' },
{ method: 'GET', path: '/:id', description: 'Roadmap laden', service: 'go' },
{ method: 'PUT', path: '/:id', description: 'Roadmap aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/:id', description: 'Roadmap loeschen', service: 'go' },
{ method: 'GET', path: '/:id/stats', description: 'Roadmap-Statistiken laden', service: 'go' },
{ method: 'POST', path: '/:id/items', description: 'Item erstellen', service: 'go' },
{ method: 'GET', path: '/:id/items', description: 'Items auflisten', service: 'go' },
{ method: 'POST', path: '/import/upload', description: 'Import hochladen', service: 'go' },
{ method: 'GET', path: '/import/:jobId', description: 'Import-Status laden', service: 'go' },
{ method: 'POST', path: '/import/:jobId/confirm', description: 'Import bestaetigen', service: 'go' },
],
},
{
id: 'roadmap-items',
name: 'Roadmap Items — Einzelne Massnahmen',
service: 'go',
basePath: '/sdk/v1/roadmap-items',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/:id', description: 'Item laden', service: 'go' },
{ method: 'PUT', path: '/:id', description: 'Item aktualisieren', service: 'go' },
{ method: 'PATCH', path: '/:id/status', description: 'Item-Status aendern', service: 'go' },
{ method: 'DELETE', path: '/:id', description: 'Item loeschen', service: 'go' },
],
},
{
id: 'workshops',
name: 'Workshops — Kollaborative Compliance-Workshops',
service: 'go',
basePath: '/sdk/v1/workshops',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/', description: 'Workshop erstellen', service: 'go' },
{ method: 'GET', path: '/', description: 'Workshops auflisten', service: 'go' },
{ method: 'GET', path: '/:id', description: 'Workshop laden', service: 'go' },
{ method: 'PUT', path: '/:id', description: 'Workshop aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/:id', description: 'Workshop loeschen', service: 'go' },
{ method: 'POST', path: '/:id/start', description: 'Workshop starten', service: 'go' },
{ method: 'POST', path: '/:id/pause', description: 'Workshop pausieren', service: 'go' },
{ method: 'POST', path: '/:id/complete', description: 'Workshop abschliessen', service: 'go' },
{ method: 'GET', path: '/:id/participants', description: 'Teilnehmer auflisten', service: 'go' },
{ method: 'PUT', path: '/:id/participants/:participantId', description: 'Teilnehmer aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/:id/participants/:participantId', description: 'Teilnehmer entfernen', service: 'go' },
{ method: 'POST', path: '/:id/responses', description: 'Antwort einreichen', service: 'go' },
{ method: 'GET', path: '/:id/responses', description: 'Antworten laden', service: 'go' },
{ method: 'POST', path: '/:id/comments', description: 'Kommentar hinzufuegen', service: 'go' },
{ method: 'GET', path: '/:id/comments', description: 'Kommentare laden', service: 'go' },
{ method: 'POST', path: '/:id/advance', description: 'Zum naechsten Schritt', service: 'go' },
{ method: 'POST', path: '/:id/goto', description: 'Zu bestimmtem Schritt springen', service: 'go' },
{ method: 'GET', path: '/:id/stats', description: 'Workshop-Statistiken laden', service: 'go' },
{ method: 'GET', path: '/:id/summary', description: 'Zusammenfassung laden', service: 'go' },
{ method: 'GET', path: '/:id/export', description: 'Workshop exportieren', service: 'go' },
{ method: 'POST', path: '/join/:code', description: 'Per Zugangscode beitreten', service: 'go' },
],
},
{
id: 'portfolios',
name: 'Portfolios — KI-Use-Case-Portfolio',
service: 'go',
basePath: '/sdk/v1/portfolios',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/', description: 'Portfolio erstellen', service: 'go' },
{ method: 'GET', path: '/', description: 'Portfolios auflisten', service: 'go' },
{ method: 'GET', path: '/:id', description: 'Portfolio laden', service: 'go' },
{ method: 'PUT', path: '/:id', description: 'Portfolio aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/:id', description: 'Portfolio loeschen', service: 'go' },
{ method: 'POST', path: '/:id/items', description: 'Item hinzufuegen', service: 'go' },
{ method: 'GET', path: '/:id/items', description: 'Items auflisten', service: 'go' },
{ method: 'POST', path: '/:id/items/bulk', description: 'Items Bulk-Import', service: 'go' },
{ method: 'DELETE', path: '/:id/items/:itemId', description: 'Item entfernen', service: 'go' },
{ method: 'PUT', path: '/:id/items/order', description: 'Items sortieren', service: 'go' },
{ method: 'GET', path: '/:id/stats', description: 'Portfolio-Statistiken laden', service: 'go' },
{ method: 'GET', path: '/:id/activity', description: 'Aktivitaets-Log laden', service: 'go' },
{ method: 'POST', path: '/:id/recalculate', description: 'Metriken neu berechnen', service: 'go' },
{ method: 'POST', path: '/:id/submit-review', description: 'Zur Pruefung einreichen', service: 'go' },
{ method: 'POST', path: '/:id/approve', description: 'Portfolio genehmigen', service: 'go' },
{ method: 'POST', path: '/merge', description: 'Portfolios zusammenfuehren', service: 'go' },
{ method: 'POST', path: '/compare', description: 'Portfolios vergleichen', service: 'go' },
],
},
{
id: 'academy',
name: 'Academy — E-Learning & Zertifikate',
service: 'go',
basePath: '/sdk/v1/academy',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/courses', description: 'Kurs erstellen', service: 'go' },
{ method: 'GET', path: '/courses', description: 'Kurse auflisten', service: 'go' },
{ method: 'GET', path: '/courses/:id', description: 'Kurs laden', service: 'go' },
{ method: 'PUT', path: '/courses/:id', description: 'Kurs aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/courses/:id', description: 'Kurs loeschen', service: 'go' },
{ method: 'POST', path: '/enrollments', description: 'Einschreibung erstellen', service: 'go' },
{ method: 'GET', path: '/enrollments', description: 'Einschreibungen auflisten', service: 'go' },
{ method: 'PUT', path: '/enrollments/:id/progress', description: 'Fortschritt aktualisieren', service: 'go' },
{ method: 'POST', path: '/enrollments/:id/complete', description: 'Einschreibung abschliessen', service: 'go' },
{ method: 'GET', path: '/certificates/:id', description: 'Zertifikat laden', service: 'go' },
{ method: 'POST', path: '/enrollments/:id/certificate', description: 'Zertifikat generieren', service: 'go' },
{ method: 'GET', path: '/certificates/:id/pdf', description: 'Zertifikat-PDF herunterladen', service: 'go' },
{ method: 'POST', path: '/courses/:id/quiz', description: 'Quiz einreichen', service: 'go' },
{ method: 'PUT', path: '/lessons/:id', description: 'Lektion aktualisieren', service: 'go' },
{ method: 'POST', path: '/lessons/:id/quiz-test', description: 'Quiz testen', service: 'go' },
{ method: 'GET', path: '/stats', description: 'Academy-Statistiken laden', service: 'go' },
{ method: 'POST', path: '/courses/generate', description: 'Kurs aus Modul generieren', service: 'go' },
{ method: 'POST', path: '/courses/generate-all', description: 'Alle Kurse generieren', service: 'go' },
],
},
{
id: 'training',
name: 'Training — Schulungsmodule & Content-Pipeline',
service: 'go',
basePath: '/sdk/v1/training',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/modules', description: 'Schulungsmodule auflisten', service: 'go' },
{ method: 'GET', path: '/modules/:id', description: 'Modul laden', service: 'go' },
{ method: 'POST', path: '/modules', description: 'Modul erstellen', service: 'go' },
{ method: 'PUT', path: '/modules/:id', description: 'Modul aktualisieren', service: 'go' },
{ method: 'GET', path: '/matrix', description: 'Schulungsmatrix laden', service: 'go' },
{ method: 'GET', path: '/matrix/:role', description: 'Matrix fuer Rolle laden', service: 'go' },
{ method: 'POST', path: '/matrix', description: 'Matrix-Eintrag setzen', service: 'go' },
{ method: 'DELETE', path: '/matrix/:role/:moduleId', description: 'Matrix-Eintrag loeschen', service: 'go' },
{ method: 'POST', path: '/assignments/compute', description: 'Zuweisungen berechnen', service: 'go' },
{ method: 'GET', path: '/assignments', description: 'Zuweisungen auflisten', service: 'go' },
{ method: 'GET', path: '/assignments/:id', description: 'Zuweisung laden', service: 'go' },
{ method: 'POST', path: '/assignments/:id/start', description: 'Zuweisung starten', service: 'go' },
{ method: 'POST', path: '/assignments/:id/progress', description: 'Fortschritt aktualisieren', service: 'go' },
{ method: 'POST', path: '/assignments/:id/complete', description: 'Zuweisung abschliessen', service: 'go' },
{ method: 'GET', path: '/quiz/:moduleId', description: 'Quiz laden', service: 'go' },
{ method: 'POST', path: '/quiz/:moduleId/submit', description: 'Quiz einreichen', service: 'go' },
{ method: 'GET', path: '/quiz/attempts/:assignmentId', description: 'Quiz-Versuche laden', service: 'go' },
{ method: 'POST', path: '/content/generate', description: 'Inhalt generieren', service: 'go' },
{ method: 'POST', path: '/content/generate-quiz', description: 'Quiz generieren', service: 'go' },
{ method: 'POST', path: '/content/generate-all', description: 'Alle Inhalte generieren', service: 'go' },
{ method: 'POST', path: '/content/generate-all-quiz', description: 'Alle Quizze generieren', service: 'go' },
{ method: 'GET', path: '/content/:moduleId', description: 'Modul-Inhalt laden', service: 'go' },
{ method: 'POST', path: '/content/:moduleId/publish', description: 'Inhalt veroeffentlichen', service: 'go' },
{ method: 'POST', path: '/content/:moduleId/generate-audio', description: 'Audio generieren', service: 'go' },
{ method: 'POST', path: '/content/:moduleId/generate-video', description: 'Video generieren', service: 'go' },
{ method: 'POST', path: '/content/:moduleId/preview-script', description: 'Video-Script Vorschau', service: 'go' },
{ method: 'GET', path: '/media/module/:moduleId', description: 'Medien fuer Modul laden', service: 'go' },
{ method: 'GET', path: '/media/:mediaId/url', description: 'Medien-URL laden', service: 'go' },
{ method: 'POST', path: '/media/:mediaId/publish', description: 'Medium veroeffentlichen', service: 'go' },
{ method: 'GET', path: '/deadlines', description: 'Fristen laden', service: 'go' },
{ method: 'GET', path: '/deadlines/overdue', description: 'Ueberfaellige Fristen laden', service: 'go' },
{ method: 'POST', path: '/escalation/check', description: 'Eskalation pruefen', service: 'go' },
{ method: 'GET', path: '/audit-log', description: 'Schulungs-Audit-Log laden', service: 'go' },
{ method: 'GET', path: '/stats', description: 'Schulungs-Statistiken laden', service: 'go' },
{ method: 'GET', path: '/certificates/:id/verify', description: 'Zertifikat verifizieren', service: 'go', exposure: 'partner' },
],
},
{
id: 'whistleblower',
name: 'Whistleblower — Hinweisgebersystem (HinSchG)',
service: 'go',
basePath: '/sdk/v1/whistleblower',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/reports/submit', description: 'Anonymen Hinweis einreichen', service: 'go', exposure: 'public' },
{ method: 'GET', path: '/reports/access/:accessKey', description: 'Hinweis per Zugangscode laden', service: 'go', exposure: 'public' },
{ method: 'POST', path: '/reports/access/:accessKey/messages', description: 'Nachricht senden (anonym)', service: 'go', exposure: 'public' },
{ method: 'GET', path: '/reports', description: 'Alle Hinweise auflisten', service: 'go' },
{ method: 'GET', path: '/reports/:id', description: 'Hinweis laden', service: 'go' },
{ method: 'PUT', path: '/reports/:id', description: 'Hinweis aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/reports/:id', description: 'Hinweis loeschen', service: 'go' },
{ method: 'POST', path: '/reports/:id/acknowledge', description: 'Eingangsbestaetigung senden', service: 'go' },
{ method: 'POST', path: '/reports/:id/investigate', description: 'Untersuchung starten', service: 'go' },
{ method: 'POST', path: '/reports/:id/measures', description: 'Abhilfemassnahme hinzufuegen', service: 'go' },
{ method: 'POST', path: '/reports/:id/close', description: 'Hinweis schliessen', service: 'go' },
{ method: 'POST', path: '/reports/:id/messages', description: 'Admin-Nachricht senden', service: 'go' },
{ method: 'GET', path: '/reports/:id/messages', description: 'Nachrichten laden', service: 'go' },
{ method: 'GET', path: '/stats', description: 'Whistleblower-Statistiken laden', service: 'go' },
],
},
{
id: 'iace',
name: 'IACE — Industrial AI / CE-Compliance Engine',
service: 'go',
basePath: '/sdk/v1/iace',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/hazard-library', description: 'Gefahrenbibliothek laden', service: 'go' },
{ method: 'GET', path: '/controls-library', description: 'Controls-Bibliothek laden', service: 'go' },
{ method: 'POST', path: '/projects', description: 'Projekt erstellen', service: 'go' },
{ method: 'GET', path: '/projects', description: 'Projekte auflisten', service: 'go' },
{ method: 'GET', path: '/projects/:id', description: 'Projekt laden', service: 'go' },
{ method: 'PUT', path: '/projects/:id', description: 'Projekt aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/projects/:id', description: 'Projekt archivieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/init-from-profile', description: 'Aus Unternehmensprofil initialisieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/completeness-check', description: 'Vollstaendigkeits-Check durchfuehren', service: 'go' },
{ method: 'POST', path: '/projects/:id/components', description: 'Komponente erstellen', service: 'go' },
{ method: 'GET', path: '/projects/:id/components', description: 'Komponenten auflisten', service: 'go' },
{ method: 'PUT', path: '/projects/:id/components/:cid', description: 'Komponente aktualisieren', service: 'go' },
{ method: 'DELETE', path: '/projects/:id/components/:cid', description: 'Komponente loeschen', service: 'go' },
{ method: 'POST', path: '/projects/:id/classify', description: 'Regulatorisch klassifizieren', service: 'go' },
{ method: 'GET', path: '/projects/:id/classifications', description: 'Klassifizierungen laden', service: 'go' },
{ method: 'POST', path: '/projects/:id/classify/:regulation', description: 'Fuer einzelne Regulierung klassifizieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/hazards', description: 'Gefaehrdung erstellen', service: 'go' },
{ method: 'GET', path: '/projects/:id/hazards', description: 'Gefaehrdungen auflisten', service: 'go' },
{ method: 'PUT', path: '/projects/:id/hazards/:hid', description: 'Gefaehrdung aktualisieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/hazards/suggest', description: 'KI-Gefaehrdungsvorschlaege generieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/hazards/:hid/assess', description: 'Risiko bewerten', service: 'go' },
{ method: 'GET', path: '/projects/:id/risk-summary', description: 'Risiko-Zusammenfassung laden', service: 'go' },
{ method: 'POST', path: '/projects/:id/hazards/:hid/reassess', description: 'Risiko neu bewerten', service: 'go' },
{ method: 'POST', path: '/projects/:id/hazards/:hid/mitigations', description: 'Risikominderung erstellen', service: 'go' },
{ method: 'PUT', path: '/mitigations/:mid', description: 'Risikominderung aktualisieren', service: 'go' },
{ method: 'POST', path: '/mitigations/:mid/verify', description: 'Risikominderung verifizieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/evidence', description: 'Nachweis hochladen', service: 'go' },
{ method: 'GET', path: '/projects/:id/evidence', description: 'Nachweise auflisten', service: 'go' },
{ method: 'POST', path: '/projects/:id/verification-plan', description: 'Verifizierungsplan erstellen', service: 'go' },
{ method: 'PUT', path: '/verification-plan/:vid', description: 'Plan aktualisieren', service: 'go' },
{ method: 'POST', path: '/verification-plan/:vid/complete', description: 'Verifizierung abschliessen', service: 'go' },
{ method: 'POST', path: '/projects/:id/tech-file/generate', description: 'Technische Akte generieren', service: 'go' },
{ method: 'GET', path: '/projects/:id/tech-file', description: 'Akte-Abschnitte laden', service: 'go' },
{ method: 'PUT', path: '/projects/:id/tech-file/:section', description: 'Abschnitt aktualisieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/tech-file/:section/approve', description: 'Abschnitt genehmigen', service: 'go' },
{ method: 'GET', path: '/projects/:id/tech-file/export', description: 'Technische Akte exportieren', service: 'go' },
{ method: 'POST', path: '/projects/:id/monitoring', description: 'Monitoring-Event erstellen', service: 'go' },
{ method: 'GET', path: '/projects/:id/monitoring', description: 'Monitoring-Events laden', service: 'go' },
{ method: 'PUT', path: '/projects/:id/monitoring/:eid', description: 'Event aktualisieren', service: 'go' },
{ method: 'GET', path: '/projects/:id/audit-trail', description: 'Projekt-Audit-Trail laden', service: 'go' },
],
},
]