Die Universal API ist eine Abstraktionsschicht über verschiedene Speicher-Backends, auch Persistenzen genannt. Diese Abstraktion unterstützt rechtliche und geschäftliche Prozesse mit Dokumentenfunktionen, unabhängig davon, wo oder wie das Dokument tatsächlich gespeichert ist.
Persistenzen
Eine Persistenz ist das Speicher-Backend für Dokumente. Sie ermöglicht speicherunabhängige Prozesse und Integrationen.
In einem Mandanten kann jeder Persistenztyp nur einmal verwendet werden.
Eine mandantenweite Standardeinstellung legt fest, welche Persistenz verwendet wird. Anwendungen können pro Anfrage explizit auf verschiedene Persistenzen zugreifen.
Nicht alle Persistenzen unterstützen die gleichen Funktionen. Die folgende Tabelle zeigt, welche Funktionen für jede Persistenz verfügbar sind. Falls eine Funktion noch nicht von der Universal API unterstützt wird, kann sie möglicherweise dennoch über die eigene API der Persistenz verfügbar sein.
| Funktion | CloudStore | OnPremise |
|---|---|---|
| Installierbare Voraussetzungen | - | STP.Documents.OnPremise + STP.Documents.OnPremiseAgent (gleiches gilt für Mobile DESK) |
| Benutzerauthentifizierung | ✅ Access Token der anfragenden Partei wird weitergegeben und validiert, als würde der Anfragende direkt auf den CloudStore zugreifen | ⚠️ Nur Benutzer mit XID (aus OnPremise UM synchronisiert) und aktiviertem Geräteschlüssel können Anfragen stellen; Access Token der anfragenden Partei wird weitergegeben und validiert, als würde der Anfragende direkt auf Channel.OnPremise zugreifen |
| Anfragen ohne Benutzer | ⚠️ Nur Kontext abfragen, nach Kontext auflösen, Metadaten abrufen, Renditions herunterladen, Renditions hochladen | ✅ Über Agent-Benutzer (seit Agent v1.10.10) |
| Verfügbarkeit bestimmen | ✅ | ✅ |
| Broadcast NewDocumentEvent | ✅ | ✅ (seit Agent v1.10.8; ⚠️ ohne UserId) |
| Broadcast NewDocumentVersionEvent | ✅ | ✅ (seit Agent v1.10.8) |
| Broadcast DocumentMetadataChangedEvent | ✅ | ✅ (seit Agent v1.10.8) |
| Broadcast DocumentPermanentlyDeletedEvent | ✅ | ✅ (seit Agent v1.12.0) |
| Neues Dokument hochladen | ✅ | ✅ |
| Maximale Upload-Größe | 1TB | 50MB |
| Upload mit externer ID | ✅ | ⛔ |
| Neue Version hochladen | ⛔ | ⛔ |
| Benutzerdefinierte Rendition hochladen | ✅ | ✅ (seit Agent v1.10.32 und DMS onpremise v8.4.31) |
| Minimale Größe für benutzerdefinierte Rendition | 0B | 0B |
| Dokumenten-Metadaten abrufen | ✅ | ✅ (⚠️ ohne UserId) |
| Versions-Metadaten abrufen | ✅ | ✅ (⚠️ ohne UserId) |
| Versionshistorie auflisten | ✅ | ✅ (⚠️ ohne UserId) |
| Neueste Version herunterladen | ✅ | ✅ |
| Bestimmte Version herunterladen | ✅ | ✅ |
| Versionsnummer | int32 | int16 |
| Renditions auflisten | ✅ | ✅ |
| Rendition herunterladen | ✅ | ✅ |
| Maximale Download-Größe | unbegrenzt | 100MB |
| Dokument löschen (Soft Delete) | ✅ | ✅ (seit Agent v1.12.0) |
| Dokument endgültig löschen | ⛔ | ⛔ |
| Version löschen | ⛔ | ⛔ |
| Rendition löschen (endgültig) | ✅ | ✅ |
| Dokument nach Titel suchen | ⛔ | ⛔ |
| Dokument nach externer ID suchen | ✅ (Metadaten light) | ⛔ |
| Dokument nach Inhalt suchen | ⛔ | ⛔ |
| Kontexte finden | ✅ | ✅ |
| Kontexte beim Upload verbinden | ✅ | ✅ |
| Mehrere Kontexte desselben Typs verbinden | ✅ | ⛔ |
| Kontexte nach dem Upload verbinden | ✅ | ✅ |
| Kontexte setzen (nicht angegebene werden überschrieben) | ✅ | ✅ |
| Kontexte trennen | ⛔ | ⛔ |
| Unterstützte Kontexttypen | stp.doc.matter, stp.doc.category, stp.doc.contact, stp.wza.claim, stp.wza.participant, stp.wza.proceeding, stp.wza.addressee | stp.doc.matter, stp.doc.category (⚠️ nur Name), stp.wza.proceeding (winsolvenz-Thema; seit Agent v1.10.8), stp.wza.participant (⚠️ abhängig von proceeding; winsolvenz-Thema; seit Agent v1.10.20), stp.wza.addressee (⚠️ abhängig von participant; winsolvenz-Thema; seit Agent v1.10.20) |
| Nach Kontext auflösen | ✅ | ✅ |
| Nach zusammengesetztem Kontext auflösen (UNION/SCHNITT von mehreren Kontexten) | ✅ | ⚠️ Folgende Kombinationen werden derzeit nicht unterstützt: SCHNITT von mehreren stp.doc.matter-Kontexten oder ein einzelner stp.doc.matter mit stp.wza.proceeding oder stp.wza.participant, UNION von stp.doc.category und stp.wza.participant ohne mindestens einen stp.doc.matter- oder stp.wza.proceeding-Kontext, mehrere stp.doc.category-Kontexte |
| Kontext erstellen | ✅ | ⛔ |
| Kontext lesen | ✅ | ✅ |
| Kontext aktualisieren | ⛔ | ⛔ |
| Kontext löschen | ⛔ | ⛔ |
| Dokument mit benanntem Wert kennzeichnen | ✅ | ⚠️ Keine Prüfung auf gleichzeitige Änderungen, letzter Schreiber gewinnt; stp.doc.class unterstützt seit Agent v1.11.1 und DMS onpremise v8.5.7; nur stp.doc.class löst ein Metadaten-Änderungsereignis aus |
| Posteingang (Cursor-basiertes Laden) | ✅ | ⛔ |
Die Universal API stellt Dokumentenfunktionen über unterstützte Archive oder Persistenzen hinweg bereit. Nicht alle Persistenzen sind gleich. Es gibt schematische und verhaltensbezogene Unterschiede zwischen ihnen. Einige sind geringfügig (unterschiedliche Länge der Versionsnummern), andere sind gravierend (z. B. haben Kategorien keine ID, sondern nur einen Namen). Angesichts dieser Unterschiede bemüht sich die Universal API, eine harmonisierte Fassade für alle unterstützten Persistenzen zu bieten.
Wir streben an, den größtmöglichen gemeinsamen Nenner zu unterstützen, wo es sinnvoll ist. Wir lassen uns nicht von Ausreißern den Standard der Universal API diktieren. Wir akzeptieren, dass bestimmte Persistenzen nicht alle Funktionen vollständig unterstützen. Wir erwarten, dass die Adapter dieser Persistenzen Unterschiede bestmöglich ausgleichen und Ausnahmen werfen, wo dies nicht möglich ist. Wir akzeptieren, dass sich diese Persistenzen zur Laufzeit unterschiedlich verhalten.
Es wird einfacher,
- einen Standard für Dokumentenfunktionen zu etablieren, da wir nicht durch die schwächste unterstützte Persistenz eingeschränkt sind
- Best Practices zu nutzen, da sie der Mehrheit der Persistenzen zugutekommen.
Es wird schwieriger,
- das Laufzeitverhalten vorherzusagen, da sich die APIs je nach konfigurierte Persistenz unterschiedlich verhalten können (wir könnten dies zukünftig mit einer Limitations-API abmildern)
- universellen Code zu schreiben, da mehr Fehlerbehandlung implementiert werden muss.
Kontexte
Kontexte ermöglichen eine metadatenbasierte Gruppierung von Dokumenten. Dokumente können einem Kontext zugeordnet werden. Kontexte sind zum Beispiel Akte/Sache, Rechtskategorie oder Beteiligter.
Andere Anwendungen, die mit Dokumenten arbeiten, sind dafür verantwortlich, Kontextrepräsentationen ihrer Containerobjekte innerhalb von STP.Documents zu pflegen.
Die Verfügbarkeit von Kontexttypen wird durch die verwendete Persistenz bestimmt. Wir gehen davon aus, dass alle unterstützten Persistenzen mindestens einen Kontexttyp haben, der mit einer „Sache“ (stp.doc.matter) vergleichbar ist.
Versionen
Jedes Dokument führt eine Versionshistorie. Eine Version hält den Zustand des Dokumenteninhalts (einschließlich Renditions) zu einem bestimmten Zeitpunkt fest.
Die neueste Version spiegelt den aktuellsten Stand wider.
Alle Versionen sind chronologisch geordnet.
Renditions
Eine Rendition ist eine Darstellung einer Dokumentenversion, zum Beispiel:
stp.doc.original – der Originalinhalt
stp.doc.preview – eine anzeigefertige Vorschau
Anwendungen können eigene Renditions definieren. Sie können von allen Anwendungen gelesen, aber nur von der erstellenden Anwendung geschrieben oder gelöscht werden.
Benannte Werte
Benannte Werte fügen entweder dem gesamten Dokument oder einer bestimmten Version zusätzliche Metadaten hinzu. Diese Werte können als individuelle Anmerkungen, Flags oder Hilfsdaten verwendet werden.
Ereignisse
Änderungen in den Persistenzen können über Ereignisse beobachtet werden (z. B. Dokument hochgeladen, Version aktualisiert usw.). Andere STP-Anwendungen können diese Ereignisse abonnieren.
APIs
Die Universal API besteht aus mehreren APIs. Details zu deren Endpunkten finden Sie in diesen Open API Spezifikationen:
Darüber hinaus gibt es weitere APIs, die auf der Universal API aufsetzen und Funktionen für alle Persistenzen bereitstellen:
Für dotnet stellen wir außerdem das STP.Documents.Client Nuget-Paket über unseren privaten Technology Partner Nuget-Feed unter STP.TechnologyPartner bereit. Mehr Informationen zum Arbeiten mit dem NuGet-Registry.
Beispielcode finden Sie unter STP.Documents.Example.
Wie starte ich mit der Entwicklung?
Um auf die STP Cloud APIs zuzugreifen, müssen Sie Ihre Anwendung bei uns registrieren. Dadurch kann Ihre Anwendung Zugriffs- und Refresh-Tokens erhalten, um im Namen Ihrer Nutzer auf die STP Cloud APIs zuzugreifen.
Bitte kontaktieren Sie uns unter support@stp.one, um die Registrierung Ihrer Anwendung zu starten. Bitte geben Sie an, welche Art von Anwendung Sie entwickeln und wie diese die juristische Arbeit Ihrer Nutzer vereinfacht. Während des Onboarding-Prozesses müssen Sie außerdem unsere Technology Partner Vereinbarung akzeptieren.
Anschließend erhalten Sie Zugriff auf unseren privaten Technology Partner Nuget-Feed unter STP.TechnologyPartner, wo Sie alle unsere Pakete finden.
Bitte beachten Sie, dass Documents-Kunden zunächst aktiviert werden und eine zusätzliche Lizenz- und Nutzungsvereinbarung abschließen müssen, bevor sie die API mit Ihrem Produkt nutzen können. Alternativ können Sie sich als Marketplace Partner bewerben und Ihre Lösung allen Documents-Kunden im Rahmen einer Kooperationsvereinbarung zur Verfügung stellen.
Dieser Artikel wurde automatisch von einer KI übersetzt und kann daher Fehler enthalten.
Verknüpfung mit