Entitätsverwaltungs-API
ENTWURF — Nur für interne Entwickler
Diese API-Referenz ist für interne Entwicklungsteams bestimmt.
Übersicht
Was es ist: Die Entitätsverwaltungs-API bietet Low-Level-Zugriff auf den Entitätsindex, der alle erkannten Identitäten, Konten, Gruppen und deren Beziehungen (Kanten) verfolgt. Diese API unterstützt das Erstellen von Indexspeichern, das Abfragen indizierter Entitäten mit Filterung und Paginierung sowie die Verwaltung von Kanten zwischen Entitäten.
Quelle: src/entman/rest/rest.go
Basispfad
/internal/v1/entity/indexAuthentifizierung
Alle Endpunkte erfordern JWT-Cookie- oder API-Token-Authentifizierung.
Endpunkte
| Methode | Pfad | Beschreibung | Authentifizierung erforderlich |
|---|---|---|---|
POST | /internal/v1/entity/index/store | Einen neuen Entitätsindex-Speicher erstellen | JWT + API-Token |
POST | /internal/v1/entity/index/store/query | Entitätsindex-Einträge mit Filterung abfragen | JWT + API-Token |
POST | /internal/v1/entity/index/edge/add | Beziehungskanten hinzufügen | JWT + API-Token |
POST | /internal/v1/entity/index/edge/del | Beziehungskanten löschen | JWT + API-Token |
POST | /internal/v1/entity/index/entity/add | Entitäten zum Index hinzufügen | JWT + API-Token |
POST | /internal/v1/entity/index/entity/del | Entitäten aus dem Index löschen | JWT + API-Token |
POST /internal/v1/entity/index/store
Einen neuen Entitäts-Mapper-Speicher erstellen. Ein Speicher stellt eine indizierte Ansicht von Entitäten zu einem bestimmten Zeitpunkt dar und wird für Zuordnungsoperationen verwendet.
Anfrage:
POST /internal/v1/entity/index/store
Content-Type: application/json
Authorization: Bearer <token>{
"id": "store-uuid",
"viewTime": 1707700800000
}Anfragefelder:
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Speicherbezeichner |
viewTime | int64 | Zeitpunkt-Zeitstempel (ms) für den Entitäts-Snapshot |
Antwort (200): Gibt den erstellten MapperStore mit ausgefüllten Replikationsknoten-Metadaten zurück.
POST /internal/v1/entity/index/store/query
Entitäten im Indexspeicher mit Filterung, Paginierung und Zuordnungsstatusinformationen abfragen.
Anfrage:
POST /internal/v1/entity/index/store/query
Content-Type: application/json
Authorization: Bearer <token>{
"id": "store-uuid",
"type": "identity.user",
"skip": 0,
"limit": 100,
"filter": {
"search": "john",
"all": false,
"isMappedCurrent": true,
"isMappedOther": false,
"isUnmapped": false
},
"mappedTo": "edge.identity.account",
"tombstoned": false,
"classifications": true,
"mappingRules": false
}Abfragefelder:
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Abzufragende Speicher-ID |
type | string | Entitätstyp-Filter (z. B. identity.user, identity.group) |
skip | int64 | Anzahl der zu überspringenden Einträge (Paginierungs-Offset) |
limit | int64 | Maximale Anzahl zurückzugebender Einträge (Standard: 100) |
filter.search | string | Freitextsuche über Entitätsfelder |
filter.all | bool | Alle Entitäten unabhängig vom Zuordnungsstatus zurückgeben |
filter.isMappedCurrent | bool | Im aktuellen Speicher zugeordnete Entitäten einschließen |
filter.isMappedOther | bool | In anderen Speichern zugeordnete Entitäten einschließen |
filter.isUnmapped | bool | Nur nicht zugeordnete Entitäten einschließen |
mappedTo | string | Nach ausgehendem Kantentyp filtern |
mappedFrom | string | Nach eingehendem Kantentyp filtern |
uniqueId | string | Eine bestimmte Entität anhand der eindeutigen ID abrufen |
tombstoned | bool | Gelöschte (soft-deleted) Einträge einschließen |
tombstonedMappings | bool | Gelöschte Zuordnungen einschließen |
classifications | bool | Klassifizierungsdaten einschließen |
mappingRules | bool | Übereinstimmende Zuordnungsregeln einschließen |
Antwort (200):
{
"total": 4521,
"last": 100,
"mapped": 4200,
"unmapped": 321,
"entry": [
{
"id": 1,
"dataSourceId": "ds-uuid",
"dataSource": "Corporate AD",
"uniqueId": "acct-uuid",
"entityType": "identity.user",
"entitySearch": "john doe jdoe",
"platform": "Active Directory",
"entity": { },
"mapping": [
{
"uniqueId": "owner-uuid",
"edgeType": "edge.identity.account",
"time": 1707700800000,
"tombstoned": false
}
],
"mapped": true,
"tombstoned": false,
"time": 1707700800000,
"mappings": 1
}
]
}Antwortfelder:
| Feld | Typ | Beschreibung |
|---|---|---|
total | int64 | Gesamtzahl übereinstimmender Einträge |
last | int64 | Index des letzten zurückgegebenen Eintrags |
mapped | int64 | Anzahl zugeordneter Einträge, die dem Filter entsprechen |
unmapped | int64 | Anzahl nicht zugeordneter Einträge, die dem Filter entsprechen |
entry[].entity | object | Die vollständigen Entitätsdaten (aus Protobuf deserialisiert) |
entry[].mapping | array | Aktive Kantenzuordnungen für diese Entität |
POST /internal/v1/entity/index/edge/add
Beziehungskanten zwischen Entitäten im Index hinzufügen. Kanten repräsentieren Verbindungen wie Konto-zu-Besitzer-Zuordnungen oder Gruppenmitgliedschaften.
Anfrage:
POST /internal/v1/entity/index/edge/add
Content-Type: application/json
Authorization: Bearer <token>{
"id": "store-uuid",
"type": "edge.identity.account",
"edge": [
{ "from": "owner-uuid-1", "to": "account-uuid-1" },
{ "from": "owner-uuid-1", "to": "account-uuid-2" }
]
}Anfragefelder:
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Speicher-ID |
type | string | Kantentyp (z. B. edge.identity.account, edge.identity.manager) |
edge[].from | string | Eindeutige ID der Quellentität |
edge[].to | string | Eindeutige ID der Zielentität |
Antwort (200): Gibt die gleiche EdgeRequest-Struktur zurück und bestätigt die hinzugefügten Kanten.
POST /internal/v1/entity/index/edge/del
Beziehungskanten aus dem Entitätsindex entfernen. Verwendet die gleiche Anfragestruktur wie Kanten hinzufügen.
Anfrage:
POST /internal/v1/entity/index/edge/del
Content-Type: application/json
Authorization: Bearer <token>{
"id": "store-uuid",
"type": "edge.identity.account",
"edge": [
{ "from": "owner-uuid-1", "to": "account-uuid-1" }
]
}Antwort (200): Gibt die EdgeRequest zurück und bestätigt die gelöschten Kanten.
POST /internal/v1/entity/index/entity/add
Entitäten zum Indexspeicher hinzufügen. Entitäten werden aus ihren Protobuf-Definitionen serialisiert.
Anfrage:
POST /internal/v1/entity/index/entity/add
Content-Type: application/json
Authorization: Bearer <token>{
"id": "store-uuid",
"type": "identity.user",
"entity": [
{
"id": "entity-uuid-1",
"entity": {
"displayName": "John Doe",
"email": "john.doe@company.com"
}
}
]
}Anfragefelder:
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Speicher-ID |
type | string | Entitätstyp (wird über die Protobuf-Registry nachgeschlagen) |
entity[].id | string | Eindeutige Entitäts-ID |
entity[].entity | object | Entitätsdaten, die dem Protobuf-Schema für den Typ entsprechen |
Antwort (200): Gibt die EntityRequest zurück und bestätigt die hinzugefügten Entitäten.
POST /internal/v1/entity/index/entity/del
Entitäten aus dem Indexspeicher entfernen.
Anfrage:
POST /internal/v1/entity/index/entity/del
Content-Type: application/json
Authorization: Bearer <token>{
"id": "store-uuid",
"type": "identity.user",
"entity": [
{ "id": "entity-uuid-1" }
]
}Antwort (200): Gibt die EntityRequest zurück und bestätigt die gelöschten Entitäten.
Fehlerantworten
| Status | Beschreibung |
|---|---|
400 | Ungültiger Anfragekörper, fehlende Pflichtfelder oder unbekannter Entitätstyp |
403 | Authentifizierung fehlgeschlagen oder unzureichende Berechtigungen |
404 | Speicher oder Entität nicht gefunden |
500 | Interner Serverfehler |
Verwandte Themen
- Identitäts-Mapper-API — Identitätszuordnungsoperationen auf hoher Ebene
- Entitätsabfrage-API — Entitätsdatenspeicher mit SSRM-Filterung abfragen
- Datenspeicher-API — Low-Level-Entitäts- und Kantenspeicher
