iam service api dokumentation - smart-village-solutions/sva-studio GitHub Wiki
Diese Anleitung beschreibt die aktuell stabilen IAM-v1-Endpunkte, Response-Envelopes und Fehlercodes für Benutzer-, Rollen-, Gruppen- und Organisationsverwaltung.
- Prefix:
/api/v1/iam - Authentifizierung: Session-Cookie
- Mutierende Requests (
POST,PATCH,DELETE) benötigen Header:X-Requested-With: XMLHttpRequest
- Idempotente Create-/Bulk-Endpunkte benötigen zusätzlich:
Idempotency-Key
{
"data": {},
"requestId": "optional-request-id"
}{
"data": [],
"pagination": {
"page": 1,
"pageSize": 25,
"total": 123
},
"requestId": "optional-request-id"
}{
"error": {
"code": "forbidden",
"message": "missing_admin_role",
"details": {}
},
"requestId": "optional-request-id"
}-
GET /api/v1/iam/users- Query:
page,pageSize,status,role,search - Tenant-Scope lädt die Benutzer führend aus dem Tenant-Realm in Keycloak. Fehlende Studio-Read-Model-Zuordnungen bleiben sichtbar und werden nicht herausgefiltert.
- Listeneinträge können additiv
mappingStatus,editabilityunddiagnostics[]enthalten.
- Query:
-
GET /api/v1/iam/users/{userId}- enthält additiv
groups[]mitgroupId,groupKey,displayName,groupType,origin,validFrom,validTo
- enthält additiv
POST /api/v1/iam/users-
PATCH /api/v1/iam/users/{userId}- akzeptiert additiv
groupIds: string[]
- akzeptiert additiv
DELETE /api/v1/iam/users/{userId}POST /api/v1/iam/users/bulk-deactivateGET /api/v1/iam/users/me/profilePATCH /api/v1/iam/users/me/profile
-
GET /api/v1/iam/roles- Rollenlisten verwenden Keycloak-Pagination und Keycloak-Count, wenn der aktive Scope das unterstützt.
- Keycloak-Built-in-Rollen bleiben sichtbar, werden aber als Rollenobjekte read-only markiert.
- Listeneinträge können additiv
editabilityunddiagnostics[]enthalten.
POST /api/v1/iam/rolesPATCH /api/v1/iam/roles/{roleId}DELETE /api/v1/iam/roles/{roleId}
GET /api/v1/iam/groups-
POST /api/v1/iam/groups- benötigt
Idempotency-Key
- benötigt
GET /api/v1/iam/groups/{groupId}PATCH /api/v1/iam/groups/{groupId}DELETE /api/v1/iam/groups/{groupId}
GET /api/v1/iam/legal-textsPOST /api/v1/iam/legal-textsPATCH /api/v1/iam/legal-texts/{legalTextVersionId}
-
POST /api/v1/iam/admin/reconcile(Platzhalter,501)
GET /health/liveGET /health/ready
unauthorizedforbiddennot_foundinvalid_requestrate_limitedcsrf_validation_failedidempotency_key_requiredidempotency_key_reuseidempotency_in_progressinvalid_instance_idkeycloak_unavailabledatabase_unavailablelast_admin_protectionself_protectionfeature_disabledconflicttenant_admin_client_not_configuredinternal_error
- Keycloak ist für Benutzer, Realm-Rollen und Rollenzuordnungen die führende Quelle. Studio mutiert zuerst Keycloak und synchronisiert danach die Studio-Read-Models.
- Root-/Platform-Scope nutzt ausschließlich den Platform-Admin-Keycloak-Client. Tenant-Scope nutzt ausschließlich den Tenant-Admin-Keycloak-Client der Instanz; ein Fallback auf Platform- oder globale Admin-Credentials ist nicht zulässig.
-
user === nullim Frontend ist ein Loading-/Unknown-Zustand und darf keinen Platform-Scope auslösen. -
mappingStatushat die stabilen Wertemapped,unmappedundmanual_review. -
editabilityhat die stabilen Werteeditable,read_onlyundblocked. - Objektbezogene Diagnosen werden als stabile Codes übertragen, zum Beispiel
missing_instance_attribute,mapping_missing,forbidden_role_mapping,read_only_federated_fieldundidp_forbidden. - Sync- und Reconcile-Reports verwenden die Abschlusszustände
success,partial_failure,blockedundfailedund dürfen betroffene Objektlisten sowie Zähler additiv enthalten. - Keycloak-Fehler werden differenziert gemappt; insbesondere
403aus Keycloak wird als IdP-Berechtigungsproblem (IDP_FORBIDDENbeziehungsweise API-Diagnoseidp_forbidden) sichtbar.
- Gruppen sind instanzgebundene Rollenbündel mit
groupType = role_bundle. -
GET /api/v1/iam/groupsliefert je EintragmemberCountund gebündelte Rollen (roles[]mitroleId,roleKey,roleName). -
GET /api/v1/iam/groups/{groupId}liefert additivmembers[]mit Herkunft und Gültigkeitsfenstern. -
DELETE /api/v1/iam/groups/{groupId}deaktiviert die Gruppe (isActive = false) statt einen Hard-Delete zu garantieren. -
PATCH /api/v1/iam/users/{userId}ersetzt die aktiven Gruppenmitgliedschaften deterministisch anhand vongroupIds; unbekannte oder instanzfremde Gruppen führen zuinvalid_request.
docs/api/iam-v1.yamlpackages/core/src/iam/account-management-contract.tspackages/auth-runtime/src/iam-account-management/platform-handlers.tspackages/iam-admin/src/group-mutation-handlers.ts