Universal API

Die Universal API ist eine Abstraktionsschicht über verschiedene Speicher-Backends, auch Persistenzen genannt. Diese Abstraktion unterstützt juristische 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 Tenant kann jeder Persistenztyp nur einmal verwendet werden.

Eine Tenant-weite Standardeinstellung legt fest, welche Persistenz genutzt wird. Anwendungen können pro Anfrage explizit auf unterschiedliche Persistenzen zugreifen.

Nicht alle Persistenzen unterstützen die gleichen Funktionen. Die folgende Tabelle zeigt, welche Fähigkeiten die einzelnen Persistenzen bieten.

Capability CloudStore OnPremise
Installierbare Voraussetzungen - STP.Documents.OnPremise + STP.Documents.OnPremiseAgent (gilt auch für Mobile DESK)
Benutzerauthentifizierung ✅ Zugriffstoken der anfragenden Partei wird wie bei direktem Zugriff auf den CloudStore übergeben und validiert ⚠️ Nur Benutzer mit XID (aus OnPremise UM synchronisiert) und aktiviertem Geräteschlüssel können Anfragen stellen; Zugriffstoken der anfragenden Partei wird wie bei direktem Zugriff auf Channel.OnPremise übergeben und validiert
Anfragen ohne Benutzer ⚠️ Nur Get Contexts, Resolve by Context, Get Metadata, Download Renditions, Upload Renditions ✅ über Agent-Benutzer (seit Agent v1.10.10)
Verfügbarkeit bestimmen
Sende NewDocumentEvent ✅ (seit Agent v1.10.8; ⚠️ ohne UserId)
Sende NewDocumentVersionEvent ✅ (seit Agent v1.10.8)
Sende DocumentMetadataChangedEvent ✅ (seit Agent v1.10.8)
Sende DocumentPermanentlyDeletedEvent ✅ (seit Agent v1.12.0)
Neues Dokument hochladen
Maximale Uploadgröße 1TB 50MB
Upload mit externer ID
Neue Version hochladen
Eigene Rendition hochladen ✅ (seit Agent v1.10.32 und DMS OnPremise v8.4.31)
Minimale Größe für eigene Rendition 0B 0B
Dokument-Metadaten abrufen ✅ (⚠️ ohne UserId)
Versions-Metadaten abrufen ✅ (⚠️ ohne UserId)
Versionshistorie auflisten ✅ (⚠️ ohne UserId)
Neueste Version herunterladen
Bestimmte Version herunterladen
Versionsnummer int32 int16
Renditionen auflisten
Rendition herunterladen
Maximale Downloadgröß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)
Nach Titel suchen
Nach externer ID suchen
Nach Inhalt suchen
Kontexte finden
Kontexte beim Hochladen verbinden
Mehrere Kontexte desselben Typs verbinden
Kontexte nach dem Hochladen verbinden
Kontexte setzen (überschreibt nicht-spezifizierte)
Kontexte trennen
Unterstützte Kontexttypen
Auflösung nach Kontext
Auflösung nach kombiniertem Kontext (VEREINIGUNG/SCHNITTMEGE mehrerer Kontexte) ⚠️ Die folgenden Kombinationen werden derzeit nicht unterstützt:
Kontext erstellen
Kontext lesen
Kontext aktualisieren
Kontext löschen
Dokument mit Named Value kennzeichnen ⚠️ keine Konkurrenzprüfung, letzter Schreibvorgang gewinnt; stp.doc.class wird seit Agent v1.11.1 und DMS OnPremise v8.5.7 unterstützt; nur stp.doc.class löst ein Metadaten-Änderungsereignis aus
Posteingang (cursor-basiertes Laden)

Die Universal API stellt Dokumentenfunktionen über alle unterstützten Archive bzw. Persistenzen hinweg bereit. Nicht alle Persistenzen sind gleich – es gibt sowohl schematische als auch verhaltensbezogene Unterschiede. Manche sind geringfügig (z. B. unterschiedliche Länge der Versionsnummern), andere gravierend (z. B. Kategorien haben keine ID, sondern nur einen Namen). Die Universal API verfolgt das Ziel, trotz dieser Unterschiede eine harmonisierte Fassade für alle unterstützten Persistenzen zu bieten.

Wir streben an, den größtmöglichen gemeinsamen Nenner zu unterstützen, wo dies sinnvoll ist. Wir lassen uns nicht von Ausreißern im Funktionsumfang einzelner Persistenzen 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 dort, wo dies nicht möglich ist, Ausnahmen werfen. Wir akzeptieren, dass sich Persistenzen zur Laufzeit unterschiedlich verhalten können.

Das erleichtert es,

  • einen Standard für Dokumentenfunktionen zu etablieren, da wir uns nicht am schwächsten Glied orientieren müssen,
  • Best Practices zu nutzen, da diese der Mehrheit der Persistenzen zugutekommen.

Es wird jedoch schwieriger,

  • das Laufzeitverhalten vorherzusagen, da sich die API je nach gewählter Persistenz unterschiedlich verhalten kann (dies könnte zukünftig durch eine Limitations-API abgemildert werden),
  • universellen Code zu schreiben, da mehr Ausnahmebehandlungen implementiert werden müssen.

Kontexts

Kontexte bieten eine metadatenbasierte Gruppierung von Dokumenten. Dokumente können einem Kontext zugeordnet werden. Kontexte sind zum Beispiel Akte/Mandat, 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 bereitstellen, der mit einer “Akte” (stp.doc.matter) vergleichbar ist.

Universal Object Model

Versionen

Jedes Dokument führt eine Versionshistorie. Eine Version hält den Zustand des Dokuments (einschließlich der Renditionen) zu einem bestimmten Zeitpunkt fest.

Die neueste Version spiegelt den aktuellsten Stand wider.

Alle Versionen sind chronologisch geordnet.

Renditionen

Eine Rendition ist eine alternative Representation einer Dokumentenversion, zum Beispiel:

stp.doc.original – der Originalinhalt

stp.doc.preview – eine anzeigefertige Vorschau

Anwendungen können eigene Renditionen definieren. Diese können von allen Anwendungen gelesen, aber nur von der erstellenden Anwendung geschrieben und gelöscht werden.

Named Values

Named Values fügen entweder dem gesamten Dokument oder einer bestimmten Version zusätzliche Metadaten hinzu. Diese Werte können als benutzerdefinierte Anmerkungen, Kennzeichnungen oder Hilfsdaten verwendet werden.

Ereignisse

Änderungen in den Persistenzen können über Ereignisse beobachtet werden (z.B. Dokument hochgeladen, Version aktualisiert, etc.). Andere STP-Anwendungen können diese Ereignisse abonnieren.

APIs

Die Universal API besteht aus mehreren APIs. Details zu deren Endpunkten finden Sie in diesen OpenAPI-Spezifikationen:

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 Aktualisierungstoken erhalten, um im Namen Ihrer Nutzer auf die STP Cloud APIs zuzugreifen.

Bitte kontaktieren Sie uns unter , um die Registrierung Ihrer Anwendung zu starten. Geben Sie dabei bitte an, welche Art von Anwendung Sie entwickeln und wie diese die juristische Arbeit Ihrer Nutzer vereinfacht. Im Rahmen des Onboardings müssen Sie außerdem unsere Technologiepartnervereinbarung akzeptieren.

Anschließend erhalten Sie Zugang zu unserem privaten Technology Partner NuGet-Feed unter STP.TechnologyPartner, wo Sie alle unsere Pakete finden.

Bitte beachten Sie, dass Documents-Kunden zunächst freigeschaltet werden müssen 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 im Rahmen einer Kooperationsvereinbarung allen Documents-Kunden zur Verfügung stellen.