Public API Reference
Dieses Dokument beschreibt die REST-API-Endpunkte, die zur Verwaltung von Organizations und den zugehörigen Resource Groups und Mitgliedern zur Verfügung stehen.
Alle verfügbaren API-Endpunkte können direkt auf der eigenen Codesphere-Instanz interaktiv erkundet und getestet werden – über folgenden Pfad:
https://[your_instance_URL]/api/swagger-ui/
Cluster-Administration
Die folgenden Endpunkte arbeiten auf Cluster-Ebene und sind für Plattformbetreiber gedacht. Im Gegensatz zu den weiter unten beschriebenen Organization-Endpunkten (die auf die Organizations beschränkt sind, denen man angehört), bieten diese einen clusterweiten Überblick und ermöglichen das Anlegen neuer Organizations und Administratoren.
Um diese Endpunkte nutzen zu können, müssen folgende Voraussetzungen erfüllt sein:
-
Flag
cluster-adminaktiviert — Die Endpunkte sind hinter dem Flagcluster-adminabgesichert und werden nur registriert, wenn dieses aktiviert ist; andernfalls liefern Anfragen404 Not Found. Die Cluster-Admin-Autorisierung basiert auf OpenFGA, daher muss zusätzlich das Preview-Flagopenfga-authzaktiviert werden (ansonsten startet der Team-Service nicht). Beide Flags lassen sich in derconfig.yamlaktivieren:codesphere:experiments:- cluster-adminpreview:openfga-authz: trueWeitere Informationen zur Konfiguration von Flags finden sich unter Feature Flags.
-
Cluster-Admin-Rechte — Der authentifizierte Benutzer muss ein Cluster-Admin sein; Anfragen anderer Benutzer werden mit dem Fehler
NotAuthorizedabgelehnt. Cluster-Admin wird man entweder durch Zuweisung während der Installation des Clusters oder durch Beförderung durch einen bestehenden Cluster-Admin über den Endpunkt Add Cluster Admin.
List All Organizations
Ruft alle Organizations im Cluster ab, beginnend mit der neuesten. Dies unterscheidet sich von List Organizations, das nur die Organizations zurückgibt, denen der authentifizierte Benutzer angehört.
- URL:
GET /clusters/organizations - Parameter: Keine.
Create Organization
Erstellt eine neue Organization zusammen mit ihrem initialen Administrator. Falls für die angegebene Admin-E-Mail-Adresse noch kein Codesphere-Konto existiert, wird für diese E-Mail-Adresse ein ausstehender (nicht registrierter) Benutzer angelegt. Sobald sich ein Benutzer mit dieser E-Mail-Adresse registriert, wird er automatisch zum Administrator der Organization.
- URL:
POST /clusters/organizations - Parameter:
- Body:
name(String): Der Name der neuen Organization.adminEmail(String): Die E-Mail-Adresse des Benutzers, der als initialer Administrator der Organization festgelegt werden soll.
- Body:
- Fehler:
InvalidArgument- Wird zurückgegeben, wenn ein bestehendes Konto füradminEmaildeaktiviert ist.
Add Cluster Admin
Gewährt einem Benutzer Cluster-Admin-Rechte. Falls für die angegebene E-Mail-Adresse noch kein Codesphere-Konto existiert, wird ein ausstehender (nicht registrierter) Benutzer angelegt.
- URL:
POST /clusters/admins - Parameter:
- Body:
email(String): Die E-Mail-Adresse des Benutzers, dem Cluster-Admin-Rechte gewährt werden sollen.
- Body:
- Fehler:
InvalidArgument- Wird zurückgegeben, wenn ein bestehendes Konto füremaildeaktiviert ist.
Organization-Verwaltung
List Organizations
Ruft eine Liste aller Organizations ab, denen der authentifizierte Benutzer angehört.
- URL:
GET /organizations - Parameter: Keine.
List Organization Resource Groups
Ruft alle Resource Groups ab, die offiziell einer bestimmten Organization zugeordnet sind.
- URL:
GET /organizations/{organizationId}/resource-groups - Parameter:
- Path:
organizationId(UUID) - Die eindeutige ID der Organization.
- Path:
Mitgliederverwaltung
List Organization Members
Ruft eine Liste aller Benutzer ab, die Teil der angegebenen Organization sind, einschließlich ihrer aktuellen Rollen und ihres Status.
- URL:
GET /organizations/{organizationId}/members - Parameter:
- Path:
organizationId(UUID) - Die eindeutige ID der Organization.
- Path:
Add Organization Member
Fügt einen bestehenden Benutzer einer Organization hinzu. Zu beachten ist, dass das Hinzufügen eines Benutzers zu einer Organization Voraussetzung dafür ist, dass er anschließend zu einer Resource Group innerhalb dieser Organization hinzugefügt werden kann.
- URL:
POST /organizations/{organizationId}/members - Parameter:
- Path:
organizationId(UUID)
- Body:
email(String): Die gültige E-Mail-Adresse des hinzuzufügenden Benutzers.role(String): Die zuzuweisende Rolle ('admin'oder'member').
- Path:
Change Organization Role
Aktualisiert die organisatorische Rolle eines bestehenden Mitglieds (z. B. die Beförderung eines Mitglieds zum Administrator).
- URL:
PUT /organizations/{organizationId}/members/{userId}/role - Parameter:
- Path:
organizationId(UUID)userId(Number) - Die Benutzer-ID des Mitglieds.
- Body:
role(String): Die neue Rolle ('admin'oder'member').
- Path:
Remove Organization Member
Entfernt einen Benutzer aus der Organization.
- URL:
DELETE /organizations/{organizationId}/members/{userId} - Parameter:
- Path:
organizationId(UUID)userId(Number) - Die Benutzer-ID des zu entfernenden Mitglieds.
Resource-Group-Integration
Create Resource Group
Erstellt eine neue kollaborative Resource Group. Je nach standalone-teams-Konfiguration der Umgebung müssen Resource Groups unter Umständen zwingend an eine Organization gebunden sein.
- URL:
POST /resource-groups - Parameter:
- Body:
name(String): Der Name der neuen Resource Group.dc(Integer): Die ID des Rechenzentrums, in dem die Resource Group gehostet wird.organizationId(UUID, bedingt erforderlich): Die ID der Organization, zu der diese Resource Group gehört.- Hinweis: Ist das Feature-Flag
standalone-teamsauf der eigenen Instanz deaktiviert, ist dieser Parameter zwingend erforderlich, und der anfragende Benutzer muss Mitglied dieser Organization sein.
- Hinweis: Ist das Feature-Flag
- Body:
Migrate Resource Group to Organization
Migriert eine bestehende, eigenständige Resource Group in eine Organization oder eine Resource Group, die bereits Teil einer Organization ist, in eine andere Organization. Dies dient vor allem dazu, bestehende (Legacy-)Resource Groups in die neue einheitliche Governance-Struktur zu überführen.
- URL:
POST /resource-groups/{resourceGroupId}/migrate - Parameter:
- Path:
resourceGroupId(Integer)
- Body:
organizationId(UUID): Die Ziel-Organization.force(Boolean, optional): Da eine Resource Group innerhalb einer Organization nur Mitglieder dieser Organization enthalten darf, kann die Migration einer Resource Group zu Konflikten führen, wenn einige Mitglieder der Resource Group nicht Mitglied der Ziel-Organization sind.- Bei
force: truewerden diese Nicht-Organization-Mitglieder während der Migration automatisch aus der Resource Group entfernt. - Bei
force: false(oder wenn weggelassen) bricht die API die Migration ab und gibt einen Fehler (TeamMigrationFailed) zurück, falls Nicht-Mitglieder erkannt werden.
- Bei
- Path: