🚀 Jetzt neu: FlowAI! Ein revolutionärer Chat mit personalisierten AI-Agenten. 🌟

Team Management API - nur lesend

Sechs lesende Endpunkte rund um das Team, zu dem Ihr API-Schlüssel gehört. Damit lassen sich Mitgliederlisten, Berechtigungsmatrizen und Sitzplatzanzeigen aufbauen, ohne die Weboberfläche auszulesen. Verändert wird über diese API nichts: Mitglieder aufnehmen, Einladungen versenden oder widerrufen und Modulrechte setzen bleiben der Weboberfläche vorbehalten.

🚀 Schnellstart

Basis-URL: https://creativeskyline.de/api/team https://creativeskyline.de/api/team/members https://creativeskyline.de/api/team/modules https://creativeskyline.de/api/team/invitations https://creativeskyline.de/api/team/licenses
Keine Schreibzugriffe
Diese API liest ausschließlich. Jede schreibende HTTP-Methode unter /api/team antwortet mit HTTP 404, auch auf den lesbaren Pfaden. Mitglieder aufnehmen oder entfernen, Einladungen versenden und widerrufen, Modulrechte setzen und Sitzplätze zubuchen: All das erfolgt in der Weboberfläche unter Team.
Immer das eigene Team
Das Team ergibt sich aus dem Schlüssel, nicht aus der Anfrage. Es gibt keinen Parameter, mit dem ein anderes Team gelesen werden könnte, und die UUID eines Mitglieds aus einem fremden Team antwortet mit HTTP 404, nicht mit HTTP 403.
Berechtigung zur Teamverwaltung erforderlich
Diese Endpunkte setzen kein gebuchtes Modul voraus. Zugriff haben die Inhaberin oder der Inhaber, Mitglieder mit dem Recht zur Teamverwaltung, Personen mit Team- oder globalem Vollzugriff sowie Plattformadministratoren. Die Berechtigung wird für das Team des API-Schlüssels geprüft. Gewöhnliche Mitglieder erhalten HTTP 403.

1. API-Zugangsdaten abrufen

Melden Sie sich an, öffnen Sie Profil → API-Zugang und kopieren Sie Ihren persönlichen API-Key (pk_...).

2. Authentifizierung

Alle Anfragen benötigen diese HTTP-Header:

Authorization: Bearer pk_dein_api_key
Accept: application/json

3. Einstieg

Beginnen Sie mit GET /api/team. Die Antwort nennt Name und UUID des Teams, das wirksame Paket, den Zustand der Testphase und die Kurzkennungen der aktiven Module. GET /api/team/modules übersetzt diese Kurzkennungen in Anzeigenamen und nennt zu jedem Modul, ob das Paket es enthält, ob das Team es eingeschaltet hat und ob der eigene Schlüssel darauf zugreifen darf.

4. Kennungen

Ein Mitglied wird über die UUID der Person angesprochen, nicht über die der Mitgliedschaftszeile. Ein Modul wird über seine Kurzkennung angesprochen, also die Spalte in team_users (cm, tt, fa und so weiter) — dieselbe Kennung, die auch die Modul-Berechtigung der übrigen APIs trägt.

5. Antwortformat

Erfolgreiche Anfragen antworten mit {"success": true, "data": ...}. Listen tragen zusätzlich meta mit current_page, per_page, total und last_page. Fehler antworten mit {"success": false, "error": "...", "message": "..."}.

🏢 Team und Module

Gebucht ist nicht dasselbe wie eingeschaltet
Ein Modul ist nur dann nutzbar, wenn das Paket es enthält (package_granted) und das Team es nicht abgeschaltet hat (team_active). Beide Angaben werden getrennt geliefert, weil ein gebuchtes, aber abgeschaltetes Modul eine andere Antwort verlangt als ein nie gebuchtes. available ist die Verknüpfung beider.

Eigenes Team abrufen

GET /api/team

Liefert UUID und Name des Teams, die UUID der Inhaberin oder des Inhabers, das wirksame Paket, den Zustand der Testphase und die Kurzkennungen der aktiven Module. Während einer laufenden Testphase ist das genannte Paket das Leistungspaket der Testphase, nicht das gebuchte; der Block trial weist das aus.

Modulkatalog mit eigenen Rechten abrufen

GET /api/team/modules

Liefert jedes Modul mit Kurzkennung, langer Kennung und Anzeigenamen, dazu ob das Paket es enthält, ob das Team es eingeschaltet hat, ob es damit nutzbar ist, und ob der aufrufende Schlüssel selbst darauf zugreifen darf. own_sub_access nennt die eigenen Unterzugriffe des Moduls. Bei Modulen außerhalb der Pakete, etwa Hosting oder Teamverwaltung, ist package_granted null.

👤 Mitglieder

role und role_label sind zwei verschiedene Dinge
role ist abgeleitet und trägt die Berechtigung: owner für die Inhaberschaft, manager für das Recht zur Teamverwaltung oder einen übertragenen Team-Vollzugriff, sonst member. role_label ist die frei eingetragene Bezeichnung aus der Mitgliederverwaltung („Buchhaltung“, „CEO“) und berechtigt zu nichts. Berechtigungsentscheidungen gehören an role, nie an role_label.

Mitglieder auflisten

GET /api/team/members

Liefert die Mitglieder des eigenen Teams mit UUID, Name, E-Mail-Adresse, abgeleiteter Rolle, freier Bezeichnung, den Modulrechten als Wahrheitswerte je Kurzkennung, den gespeicherten Unterzugriffen je Modul und den Vollzugriffsbereichen. Die Modulrechte berücksichtigen, dass die Inhaberin oder der Inhaber jedes angebotene Modul hält, auch ohne gesetztes Kennzeichen.

Query-Parameter:

per_page integer Einträge pro Seite, 1 bis 200, Standard 50.
page integer Seitenzahl, Standard 1.

Einzelnes Mitglied abrufen

GET /api/team/members/{userUuid}

Liefert ein einzelnes Mitglied in derselben Form wie die Liste. Angesprochen wird die UUID der Person. Eine UUID, die zu niemandem gehört, und eine aus einem fremden Team antworten beide mit HTTP 404.

✉️ Einladungen und Sitzplätze

Vier bindende Zustände, nur einer ist annehmbar
Nur pending kann gerade angenommen werden. pending_payment und processing_link_approval sind Sitzplätze in Abwicklung, pending_link_approval wartet auf die Freigabe der Inhaberschaft. Alle vier binden die Adresse an dieses Team; abgelaufene Einladungen werden nicht geliefert.
In der Testphase gibt es keine Sitzplatzgrenze
Während einer laufenden Testphase ist can_invite wahr, obwohl purchased bei 0 steht. Die beiden Zahlen allein ergäben das Gegenteil, deshalb sollte stets can_invite ausgewertet werden und nicht der Vergleich der Zahlen.

Offene Einladungen auflisten

GET /api/team/invitations

Liefert die Einladungen, die eine Adresse noch an dieses Team binden, mit UUID, Adresse, freier Bezeichnung, Zustand, Ablaufzeitpunkt und Anlagezeitpunkt. Abgelaufene und bereits angenommene Einladungen erscheinen nicht.

Query-Parameter:

per_page integer Einträge pro Seite, 1 bis 200, Standard 50.
page integer Seitenzahl, Standard 1.

Sitzplätze abrufen

GET /api/team/licenses

Liefert die Sitzplatzlage des Teams: gebuchte Plätze, belegte Plätze, offene Einladungen, ob eine weitere Einladung möglich ist, und bei einem Enterprise-Vertrag dessen Mitgliedergrenze. state ist active_subscription, trialing oder no_subscription. Die Auskunft stammt aus derselben Prüfung, die auch in der Weboberfläche über eine weitere Einladung entscheidet.