CQRS
Die Schnittstellenarchitektur von etg24 basiert konsequent auf dem Prinzip der Command Query Responsibility Segregation (CQRS). Anstelle überladener REST-Endpunkte, bei denen Seiteneffekte oft unklar sind, ist jede Operation eindeutig als reine Leseoperation (Query) oder zustandsändernde Schreiboperation (Command) definiert.
Queries versus Commands
- Queries lesen Daten aus dem System, ohne den Zustand zu verändern. Sie sind idempotent, fehlertolerant beliebig oft wiederholbar und können gefahrlos mit reinen Lese-Schlüsseln (Read-only) ausgeführt werden.
- Commands verändern den Systemzustand – sie legen Datensätze an, bearbeiten oder archivieren sie. Commands führen Validierungen durch, lösen Domänen-Events aus und schreiben lückenlose Einträge in das Audit-Log.
In der REST-API wird diese Trennung unmittelbar im URL-Pfad sichtbar:
GET /propertymanagement/v2/query/contacts Paginierte Kontaktliste abrufenGET /propertymanagement/v2/query/contacts.show Einzelnen Kontakt anhand der ID ladenPOST /propertymanagement/v2/command/contacts.create Neuen Kontakt anlegenPOST /propertymanagement/v2/command/contacts.update Bestehenden Kontakt aktualisierenAuch der MCP-Server setzt dieses Paradigma nahtlos fort: Jedes Werkzeug im Tool-Katalog ist als Query- oder Command-Tool gekennzeichnet. Ein autonomer Agent kann Query-Tools gefahrlos zur Kontextgewinnung nutzen, während schreibende Commands nur gezielt ausgeführt werden.
Praktische Vorteile für deine Integration
- Eindeutige Sicherheitsgrenzen: Read-only-Scopes greifen exklusiv auf Queries zu. Ein Schlüssel mit reinem Lesezugriff kann systemweit alle berechtigten Daten abrufen, schreibende Commands werden bereits am API-Gateway blockiert. Siehe Berechtigungs-Scopes.
- Revisionssichere Nachvollziehbarkeit: Jeder Command wird mit Akteur-ID, Eingabeparametern und Ergebnisänderung unveränderlich erfasst. Siehe Audit-Trail & Änderungszuordnung.
- Reversibilität im Fehlerfall: Da Commands gezielte Fachoperationen abbilden und Löschvorgänge als Soft Deletes ausgeführt werden, können unerwünschte Änderungen strukturiert rückgängig gemacht werden. Siehe Soft Delete & Rollback.
Best Practice für Agenten und Integrationen
Für Entwickler und Prompts gilt eine einfache Faustformel:
- Queries nutzen, um Kontext zu laden, Status abzufragen und Informationen zusammenzutragen – völlig risikofrei und retry-sicher.
- Commands nutzen, sobald Daten verbindlich gespeichert oder Folgeprozesse angestoßen werden sollen (z. B. das Anlegen eines Vorgangs oder das Buchen einer Rechnung). Parameter sollten vor dem Command-Aufruf stets validiert werden.