1. Zielbild
Die Integration verbindet ein externes Quellsystem mit der Public REST API, um asset-bezogene Stammdaten zu synchronisieren.
Der grundlegende Datenfluss ist:
Externes Quellsystem des Kunden
→ Integrationskomponente / Middleware des Kunden
→ caralegal Public REST API
Das externe Quellsystem bleibt das führende System für die synchronisierten Stammdaten. caralegal empfängt diese Informationen als Assets und verwendet sie in Datenschutz-, Compliance- und Governance-Prozessen.
Weitere Quellsysteme können später angebunden werden, sind jedoch nicht Teil des initialen Integrationsumfangs.
2. Verantwortlichkeiten
Die Public REST API stellt Endpunkte zum Lesen, Erstellen und Aktualisieren von Assets und Referenzdaten bereit.
Link zur Public REST API OpenAPI-Dokumentation: https://public-api.caralegal.de/swagger/#/
Zugangsdaten (Login und Passwort) für die Dokumentation erhalten Sie von Ihrem caralegal CS / Tech-Support.
Die Implementierung der Synchronisationslogik oder Middleware liegt außerhalb des Verantwortungsbereichs von caralegal. Der Integrationsverantwortliche oder Implementierungspartner ist zuständig für:
Abruf relevanter Daten aus dem Quellsystem
Mapping der Quelldaten auf das Asset-Modell
Erkennung neuer oder geänderter Datensätze
Aufruf der Public REST API
Fehlerbehandlung und Wiederholungslogik
Definition der Synchronisationsintervalle
Umgang mit deaktivierten oder gelöschten Quellsystem-Datensätzen
3. Asset Identification via externalId
Jedes aus dem Quellsystem importierte Objekt sollte den stabilen Quellsystem-Bezeichner als externalId speichern.
Beispiel:
{
"name": "SAP HCM",
"externalId": "source-12345"
}
Die externalId dient als eindeutige technische Referenz zwischen dem Quellsystem und caralegal.
Empfohlene Vorgehensweise:
Das Quellsystem liefert ein Objekt mit einem stabilen Bezeichner.
Dieser Bezeichner wird als externalId gespeichert
Existiert das Asset noch nicht, wird es angelegt.
Existiert das Asset bereits, wird es aktualisiert.
So werden Duplikate vermieden und bestehende Verknüpfungen in caralegal bleiben erhalten. Bestehende Assets sollten grundsätzlich aktualisiert und nicht gelöscht und neu angelegt werden.
4. Using externalId in API Calls
Die externalId kann direkt in REST-API-Aufrufen verwendet werden, indem das Präfix ext:: vorangestellt wird.
Beispiele:
GET /api/assets/ext::source-12345
PATCH /api/assets/ext::source-12345
DELETE /api/assets/ext::source-12345
Die Integration muss daher keine internen System-IDs speichern.
Empfohlene Vorgehensweise:
Stabile Quellsystem-Bezeichner als externalId. speichern.
Folgeoperationen über ext::<externalId> durchführen
Interne UUIDs nur speichern, wenn dies ausdrücklich erforderlich ist.
Dasselbe Prinzip gilt für andere Objekttypen, die externalId unterstützen, wie z. B.:
Organisationseinheiten
Ressourcen
Datenstandorte
Externe Empfänger
5. Teilaktualisierungen und Dateneigentümerschaft
Die Public REST API unterstützt Teilaktualisierungen über PATCH.
Es müssen nur die Felder übermittelt werden, die geändert werden sollen.
Beispiel:
{
"name": "SAP HCM Cloud",
"lastSyncedAt": "2026-08-19T10:00:00.000Z"
}
Alle nicht im Request enthaltenen Attribute bleiben unverändert.
So können Stammdaten aus dem Quellsystem synchronisiert werden, während datenschutz- oder compliance-spezifische Informationen weiterhin direkt in caralegal gepflegt werden.
Beispiel für ein Eigentümerschaftsmodell:
Quellsystem pflegt:
name
Beschreibung
status
Asset-Typ
Organisationseinheit
Asset-Verantwortlicher
caralegal pflegt:
Verarbeitungstätigkeiten
Risiken
Technische und organisatorische Maßnahmen
Datenschutzinformationen
Compliance-Verknüpfungen
6. Manuelle Änderungen
Für jedes synchronisierte Feld sollte klar definiert sein, welches System führend ist.
Wird beispielsweise der Asset-Name aus dem Quellsystem synchronisiert, kann eine manuelle Änderung dieses Namens in caralegal beim nächsten Synchronisationslauf überschrieben werden.
Felder, die ausschließlich in caralegal gepflegt werden, sind davon nicht betroffen, da sie durch die Middleware nicht aktualisiert werden.
7. lastSyncedAt
Jede erfolgreiche Anlage- oder Aktualisierungsoperation kann enthalten lastSyncedAt.
Beispiel:
{
"lastSyncedAt": "2026-08-19T10:00:00.000Z"
}
Dieses Feld dokumentiert den Zeitstempel der letzten erfolgreichen Synchronisation und unterstützt:
Nachvollziehbarkeit
Support
Fehleranalyse
Überwachung des Synchronisationsprozesses
Die Delta-Erkennung und Zeitstempelverwaltung erfolgen durch die Integrationskomponente.
8. Labels
Assets können kategorisiert werden über labelIds.
Beispiele für Labels:
SOURCE_SYSTEM
IMPORTED_FROM_EXTERNAL_SOURCE
TO_BE_REVIEWED
MIGRATION_PHASE_1
Labels unterstützen Klassifizierung, Filterung und Nachvollziehbarkeit. Die technische Asset-Identifikation sollte weiterhin über externalId erfolgen. externalId.
9. Beispiel-Asset-Request
{
"name": "SAP HCM",
"status": "ACTIVE",
"externalId": "source-12345",
"lastSyncedAt": "2026-08-19T10:00:00.000Z",
"resourceAssetTypeId": "...",
"assetOwnerId": "...",
"riskOwnerId": "...",
"mainOrgUnitId": "...",
"orgUnitIds": ["..."],
"labelIds": ["..."],
"dataLocationIds": ["..."],
"externalRecipientIds": ["..."]
}
Nicht alle Felder müssen in der initialen Integrationsphase verwendet werden. Das konkrete Mapping hängt von den im Quellsystem verfügbaren Informationen und dem geplanten Integrationsumfang ab.
10. Relevante API-Endpunkte
Assets:
/api/assets
Benutzer:
/api/users
Verwendet für:
assetOwnerId
riskOwnerId
Organisationseinheiten:
/api/org-units
Verwendet für:
mainOrgUnitId
orgUnitIds
Labels:
/api/Ressourcen/label
Asset-Typen:
/api/Ressourcen/asset-type
Datenstandorte:
/api/data-locations
Externe Empfänger:
/api/external-recipients
Weitere Referenzdaten sind allgemein verfügbar über:
/api/Ressourcen
/api/Ressourcen/{resourceType}
Risiken und Maßnahmen sind je nach aktuellem API-Umfang nicht über die Public API verfügbar.
11. Authentifizierung
Für technische Integrationen kann ein Refresh Token bereitgestellt und als Bearer Token für API-Aufrufe verwendet werden.
Beispiel:
Authorization: Bearer <refresh-token>
Content-Type: application/json
Accept: application/json
Das Refresh Token ist für die langfristige Nutzung innerhalb der Integration vorgesehen und sollte sicher gespeichert werden, z. B. in einem Secret-Management-System.
Alternativ kann ein Access-Token-Flow verwendet werden, wenn dies besser zur Integrationsarchitektur passt. In diesem Fall wird auf Basis des Refresh Tokens und der Client Credentials ein Access Token generiert und für API-Aufrufe verwendet.
12. Anlegen und Aktualisieren
Neue Assets werden über die API angelegt.
Nach einer erfolgreichen Anlage kann die neu erstellte interne Ressourcen-ID im HTTP-Header x-resource-id zurückgegeben werden.
Die Integration muss diese interne ID jedoch nicht dauerhaft speichern. Der empfohlene Ansatz ist, den Quellsystem-Bezeichner als externalId zu verwenden.
Bestehende Assets werden über PATCH aktualisiert. Da Teilaktualisierungen unterstützt werden, müssen nur die Felder übermittelt werden, die tatsächlich geändert werden sollen. Bestehende Verknüpfungen und nicht enthaltene Attribute bleiben unverändert.
13. Paging
Viele GET-Endpunkte unterstützen cursor-basiertes Paging.
Beispiel:
GET /api/assets?limit=100
Typische Antwort:
{
"items": [],
"cursors": {
"current": null,
"next": "..."
}
}
Ist cursors.next vorhanden, wird die nächste Seite wie folgt abgerufen:
GET /api/assets?limit=100&cursor=<next>
Dieser Vorgang wird wiederholt, bis kein weiterer Cursor mehr zurückgegeben wird.
Bei einigen Endpunkten kann der Name der Ergebnisliste abweichen, z. B users statt items.
Zusammenfassung
Die Integration nutzt ein externes Quellsystem als führendes System für ausgewählte Asset-Stammdaten.
Die Public REST API unterstützt:
Stabile Identifikation über externalId
Direkter API-Zugriff über ext::<externalId>
Teilaktualisierungen über PATCH
Asset-Klassifizierung über Labels
nchronisationsnachverfolgung über lastSyncedAt
Authentifizierung via Refresh Token oder Access-Token-Flow
Synchronisationslogik, Mapping, Betrieb, Monitoring und Fehlerbehandlung werden durch den Integrationsverantwortlichen oder Implementierungspartner umgesetzt.
This approach keeps the integration lightweight, avoids the need to persist internal target-system IDs, and preserves existing privacy and Compliance-Verknüpfungen when asset master data is updated.
