Endpunkt-Referenz

Jeder Endpunkt der öffentlichen Kabeen-API mit dem erforderlichen Scope, seinen Ein- und Ausgaben

Jeder Endpunkt der öffentlichen Kabeen-API, gruppiert nach Ressourcenbereich, mit dem erforderlichen Berechtigungs-Scope und der Form seiner Ein- und Ausgaben.

Alle Pfade sind relativ zu https://{host}/public/v1 (Host standardmäßig app.kabeen.io). Alle Bodies sind JSON. Ids sind UUID-Strings; Datumsangaben sind ISO-8601-Strings. In den Request-Body-Beschreibungen unten müssen mit erforderlich markierte Felder vorhanden sein; jedes andere Feld ist optional. Sofern nicht anders angegeben, nutzen Listen-Endpunkte den standardmäßigen Offset-Paginierungs-Umschlag (?limit=&offset={ data, pagination }), beschrieben unter Paginierung und Fehler.

API-Schlüssel selbst werden von einem Workspace-Admin innerhalb der Kabeen-Anwendung verwaltet, nicht über die öffentliche API — siehe Authentifizierung.

Introspektion und Workspace

MethodePfadScopeBeschreibung
GET/mejeder gültige SchlüsselIntrospektion des vorgelegten Schlüssels: { workspace{id,name}, key{id,name,alias?}, permissions[] }.
GET/workspacetenant:readDer Workspace, an den der Schlüssel gebunden ist: { id, name, createdAt, currencyCode, publicLogoUrl?, wsLogoUrl?, supportUrl?, onboarding*, ki*, compliance* }.
PATCH/workspacetenant:editPartielle Aktualisierung — name?, currencyCode?, supportUrl?, Kabeen-Intelligence-Schalter (inkl. kiDefaultProvider), Compliance-Schalter. Das Logo ist ausgenommen (nur Binär-Upload). Liefert den aktualisierten Workspace.

Anwendungen

Kernressource

MethodePfadScopeBeschreibung
GET/applicationsapplications:readSuchen/Filtern/Sortieren, DB-paginiert. Query: search, categoryId, criticality, hostingType, tag, teamId, sort, direction, limit, offset. Einträge: { id, name, description?, logo, state, criticality?, hostingType, category{id,name}? }.
GET/applications/{id}applications:readAusführliches Detail — siehe unten.
POST/applicationsapplications:addAnlegen. Body: name (erforderlich), description, categoryId (uuid), hostingType, accessUrl, iconUrl, organizationIds (uuid[]). Liefert { id, name, description?, criticality?, logo }.
PATCH/applications/{id}applications:editPartielle Aktualisierung — nur vorhandene Felder werden geändert: name, description, accessUrl, iconUrl, state, criticality, hostingType, support{phone,email,url}. Liefert das aktualisierte Detail.
PATCH/applications/{id}/stateapplications:editKomfort-Alias nur für den Status. Body: state (erforderlich, ACTIVE|ARCHIVED|DISCOVERED|REJECTED).
PATCH/applications/{id}/categoryapplications:editKategorie zuweisen oder entfernen. Body: { categoryId? } (im Workspace validiert). Liefert das aktualisierte Detail.
PATCH/applications/{id}/vendorapplications:editAnbieter zuweisen oder entfernen. Body: { vendorId? }. Liefert das aktualisierte Detail.
PATCH/applications/{id}/authenticationapplications:editPartiell — type?, primaryFactor?, secondaryFactor?, protocol?. Liefert das aktualisierte Detail.
PATCH/applications/{id}/usage-settingsapplications:editPartiell — usageActivated?, desktopApplicationNames?. Liefert das aktualisierte Detail.
DELETE/applications/{id}applications:deleteLöschen, kaskadierend über Flüsse, Dokumente, Werte benutzerdefinierter Felder und das Icon.

Anwendungsdetail (GET /applications/{id}): { id, name, description?, logo, memo?, state, criticality?, hostingType, accessUrl?, usageActivated, desktopApplicationNames[], support{phone?,email?,url?}, authentication{type?,primaryFactor?,secondaryFactor?,protocol?}, category{id,name}?, vendor{id,name}?, tags[{id,name}], owners[{accountId,email,firstName,lastName,role?}], lifecycle{phaseInDate?,deployedDate?,phaseOutDate?,retiredDate?}?, customFields[], updatedAt }.

Jedes benutzerdefinierte Feld ist { id, name, type, description?, value }, wobei typetext|select|multi_select|date und value je nach Typ polymorph ist: String (text), ISO-Datum/Zeit (date), {id,value} (select), [{id,value}] (multi_select) oder null, wenn nicht gesetzt.

Unterressourcen

MethodePfadScopeBeschreibung
GET/applications/{id}/usageapplications:readNutzungsmetrik: { value?, range }.
GET/applications/{id}/flowsapplications:readDatenflüsse, paginiert. Einträge: { id, comment?, protocol?, format?, exchangeFrequency?, portType?, port?, encrypted?, source{id,name}, target{id,name}, dataCount, documentCount, middlewareCount }.
POST/applications/{id}/flowsapplications:editFluss anlegen. Body: { sourceId?, targetId?, dataIds[], comment?, protocol?, format?, exchangeFrequency?, portType?, port?, encrypted?, documentIds[], middlewares[{applicationId, position}] } — die Quelle oder das Ziel muss der Anwendung im Pfad entsprechen (sonst 400).
PATCH/applications/{id}/flows/{flowId}applications:editPartielle Fluss-Aktualisierung — nur übergebene Felder werden überlagert.
DELETE/applications/{id}/flows/{flowId}applications:deleteFluss löschen.
GET/applications/{id}/technologiesapplications:readPaginiert. Einträge: { id, name, type?, versionId?, version? } (plus EOL-/LTS-/Obsoleszenz-Informationen).
PUT/applications/{id}/technologiesapplications:editTechnologien setzen.
DELETE/applications/{id}/technologies/{technologyId}applications:editVerknüpfung einer Technologie aufheben.
GET/applications/{id}/contractsapplications:readPaginiert. Einträge: { id, nature, startDate, endDate?, amountPerMonth, enableProjection }.
POST/applications/{id}/contractscontracts:addVertrag auf der Anwendung anlegen.
PATCH/applications/{id}/contracts/{contractId}contracts:editVertrag aktualisieren.
DELETE/applications/{id}/contracts/{contractId}contracts:deleteVertrag löschen.
GET/applications/{id}/documentsapplications:readURL-basierte Dokumente (kein Binär-Upload). Einträge: { id, documentType, title, description?, published, url, createdAt } mit documentTypedata_policy|security_policy|technical_documents.
POST/applications/{id}/documentsapplications:editDokument anlegen.
PATCH/applications/{id}/documents/{documentId}applications:editDokument aktualisieren (url ist unveränderlich).
DELETE/applications/{id}/documents/{documentId}applications:deleteDokument löschen.
GET/applications/{id}/ownersapplications:readVerantwortliche auflisten (nacktes Array).
POST/applications/{id}/ownersapplications:editVerantwortlichen hinzufügen. Body: { accountId }.
DELETE/applications/{id}/owners/{accountId}applications:editVerantwortlichen entfernen.
GET/applications/{id}/tagsapplications:readTags auflisten (nacktes Array).
PUT/applications/{id}/tagsapplications:editTags setzen (vollständiger Satz). Body: { tagIds[] }.
GET/applications/{id}/teamsapplications:readTeams/Organisationen auflisten (nacktes Array).
PUT/applications/{id}/teamsapplications:editTeams setzen (vollständiger Satz).
GET/applications/{id}/lifecycleapplications:readMeilenstein-Daten.
PUT/applications/{id}/lifecycleapplications:editMeilenstein-Daten setzen (phaseInDate, deployedDate, phaseOutDate, retiredDate).
GET/applications/{id}/commentsapplications:readKommentare auflisten (ohne Autor, nacktes Array).
POST/applications/{id}/commentsapplications:commentKommentar hinzufügen.
DELETE/applications/{id}/comments/{commentId}applications:commentKommentar löschen.
GET/applications/{id}/datadata:readMit der Anwendung verknüpfte Datenobjekte, mit Zugriffsrollen: { data, roles[] }.
PUT/applications/{id}/custom-fields/{fieldId}applications:editWert eines benutzerdefinierten Felds setzen. Body: { value } — String für text/date, Options-Id für select, Options-Id-Array für multi_select, null leert das Feld. Typgeprüft.
GET/vendorsapplications:readWorkspace- + gemeinsame Anbieter, paginiert: { id, name, url?, description? }.

Experience-Metriken

Sechs Lese-Familien auf Basis der Nutzungstelemetrie. Graph-/Listen-Endpunkte akzeptieren ?period= (past_1_day | past_1_month | past_1_year, Standard past_1_month = letzte 30 Tage; unbekannte Werte → 400) und liefern 404 für eine Anwendung außerhalb des Workspace. Bewertungen sind kleingeschrieben (good | needs_improvement | poor).

MethodePfadScopeBeschreibung
GET/applications/{id}/performance/graphapplications:readTäglicher LCP: { dailyPerformance[{date, lcpP75?, lcpMin?, lcpMax?, lcpAvg?, lcpRating?}] }.
GET/applications/{id}/performance/listapplications:readLCP pro Team: { teams[{teamId, teamName, teamPath?, teamIcon?, lcpP75?, lcpRating?}] }.
GET/applications/{id}/errors-incidents/graphapplications:readTägliche Vorfälle: { dailyIncidents[{date, incidentCount, errors[{errorCode, count}]}] }.
GET/applications/{id}/errors-incidents/listapplications:readFehler pro Team, mit Detail pro Pfad: { teams[{…, errorCount, errorDetails[{errorCode, count, paths[{path, count}]}]}] }.
GET/applications/{id}/satisfaction/graphapplications:readTägliche Zufriedenheit: { dailySatisfaction[{date, averageSatisfaction?, votersCount}] }.
GET/applications/{id}/satisfaction/listapplications:readZufriedenheit pro Team.
GET/applications/{id}/experience/summaryapplications:readFester 30-Tage-Rollup: { userExperience, errorCount, performanceRating?, hasWebUsers }.
GET/applications/{id}/experience/all-indicators/graphapplications:readKombinierter UX-/Fehler-/LCP-Tagesgraph über ?period=.
GET/applications/{id}/experience/all-indicators/listapplications:readKombinierte Indikatoren pro Team über ?period=.
GET/applications/{id}/experience/exportapplications:read30 Tage Fehler- + LCP-Zeilen pro Ereignis; userId/userName sind nur mit users:read und aktiviertem User-Tracking enthalten.

Funktionale Fähigkeiten

MethodePfadScopeBeschreibung
GET/applications/{id}/functional-capacitiesapplications:readMit der Anwendung verknüpfte Fähigkeiten (Status kleingeschrieben).
PUT/applications/{id}/functional-capacitiesapplications:editFähigkeiten der Anwendung setzen (Fähigkeits-Ids werden gegen die Workspace-Taxonomie validiert).
DELETE/applications/{id}/functional-capacities/{functionalCapacityId}applications:deleteFähigkeit von der Anwendung entfernen.
POST/applications/{id}/functional-capacities/{functionalCapacityId}/acceptapplications:editEine entdeckte Fähigkeit akzeptieren.
POST/applications/{id}/functional-capacities/{functionalCapacityId}/rejectapplications:editEine entdeckte Fähigkeit ablehnen.
GET/functional-capacitiesapplications:readDie Fähigkeits-Taxonomie des Workspace.
POST/functional-capacitiesapplications:addFähigkeit anlegen.
PATCH/functional-capacities/{id}applications:editBlatt-Fähigkeit umbenennen. Body: { name }.
DELETE/functional-capacities/{id}applications:deleteBlatt-Fähigkeit entfernen.
GET/functional-capacities/diagramcapacity_map_diagram:readFähigkeits-Karten-Baum (Gruppe → Fähigkeiten → Anwendungen).
POST/functional-capacities/groupsapplications:addFähigkeits-Gruppe anlegen. Body: { name, icon } (beide erforderlich).
PATCH/functional-capacities/groups/{groupId}applications:editPartielle Aktualisierung: { name?, icon? }.
DELETE/functional-capacities/groups/{groupId}applications:deleteFähigkeits-Gruppe löschen.

Definitionen benutzerdefinierter Felder

Definitionen benutzerdefinierter Felder sind das Schema auf Workspace-Ebene (zu unterscheiden vom Wert eines Felds auf einer Ressource, der mit den ressourcenspezifischen PUT .../custom-fields/{fieldId}-Endpunkten gesetzt wird). Pro Zielressource existiert ein CRUD-Satz für Definitionen — Anwendungen, Server, Daten, Router:

MethodePfadScope
GET/applications/custom-fields · /servers/custom-fields · /data/custom-fields · /routers/custom-fieldstenant:read (paginiert)
POSTdieselben Pfadetenant:edit
PATCHdieselben Pfade + /{id}tenant:edit
DELETEdieselben Pfade + /{id}tenant:edit

Create-Body: name (erforderlich) · type (erforderlich, text|select|multi_select|date) · description · icon · options ([{value, position}], erforderlich für select/multi_select). Antwort: { id, name, type, description?, options[{id,value}] }. Ein PATCH/DELETE betrifft nur Definitionen des Zieltyps des Pfads (sonst 404).

Katalog und entdeckte Anwendungen

MethodePfadScopeBeschreibung
GET/application-catalogapplications:readDen globalen Referenzkatalog durchsuchen. Query: page (1-basiert), search, categoryId, lang. Antwort: { data[{id,name,vendor,description?,logo,categoryId?,type?}], total, page } — Seitennummern-Paginierung, feste Seitengröße.
GET/application-catalog/{id}applications:readEin Katalogeintrag (globale Referenzdaten; 404 bei unbekannter Id).
GET/discovered-applicationsapplications:readVon der Auto-Discovery gemeldete Anwendungen, paginiert: { id, name, icon, state, description?, urls[], desktopExeNames[], usage?, deltaUsage?, lastUpdate, organizations[] }.

Datenobjekte

MethodePfadScopeBeschreibung
GET/datadata:readPaginierte Liste.
GET/data/{id}data:readEin Datenobjekt.
POST/datadata:addAnlegen.
PATCH/data/{id}data:editAktualisieren (vollständiges Ersetzen des Upsert-Bodys).
DELETE/data/{id}data:deleteLöschen.
PUT/data/{id}/applicationsdata:editAnwendungen verknüpfen/entkoppeln. Body: { added?: uuid[], removed?: uuid[] }.
GET/data/{id}/applicationsdata:readVerknüpfte Anwendungen mit Zugriffsrollen: { applicationId, applicationName, roles[] }.
PUT/data/{id}/applications/{applicationId}/rolesdata:editZugriffsrollen für eine Anwendung↔Daten-Verknüpfung setzen. Body: { roles[] }. Liefert 204.
GET/data/{id}/responsiblesdata:readDatenverantwortliche: { accountId, email, firstName?, lastName? }.
PUT/data/{id}/custom-fields/{fieldId}data:editWert eines benutzerdefinierten Felds setzen ({ value }).

Upsert-Body (POST und PATCH — vollständiges Ersetzen): name (erforderlich) · types (string[]) · privacy · criticality · description · categoryId · categoryName (Id + Name zusammen, um eine Kategorie zu setzen). Antwort: { id, name, types[], privacy?, criticality?, description?, updatedAt?, category{id,name}?, customFields[] }.

Server

MethodePfadScopeBeschreibung
GET/serversinfrastructure:readSuchen/Filtern/Sortieren, DB-paginiert. Query: search, type, location, criticality, os, tag, applicationId, sort, direction, limit, offset. Einträge: { id, name, automatic, os, system, type?, location?, criticality?, dataCollectionStatus?, lastCheckTime? }.
GET/servers/{id}infrastructure:readAusführliches Detail — siehe unten.
POST/serversinfrastructure:addManuellen Server anlegen. Body: name, os, ipAddress (alle erforderlich) · manufacturer · type · location · description.
PATCH/servers/{id}infrastructure:editPartielle Aktualisierung — alle Felder optional: name/os/manufacturer (nur manuelle Server) · type/location/description (alle Server). Auf einem agentengemeldeten Server (automatic: true) wird das Schreiben von name, os oder manufacturer mit 422 abgelehnt statt stillschweigend verworfen.
DELETE/servers/{id}infrastructure:deleteLöschen.
GET/servers/{id}/ownersinfrastructure:readVerantwortliche auflisten (nacktes Array).
POST/servers/{id}/ownersinfrastructure:editVerantwortlichen hinzufügen. Body: { accountId }.
DELETE/servers/{id}/owners/{accountId}infrastructure:editVerantwortlichen entfernen.
GET/servers/{id}/tagsinfrastructure:readTags auflisten (nacktes Array).
PUT/servers/{id}/tagsinfrastructure:editTags setzen (vollständiger Satz). Body: { tagIds[] }.
GET/servers/{id}/applicationsinfrastructure:readVerknüpfte Anwendungen.
POST/servers/{id}/applicationsinfrastructure:editAnwendung verknüpfen. Body: { applicationId } (im Workspace geprüft).
DELETE/servers/{id}/applications/{applicationId}infrastructure:editVerknüpfung einer Anwendung aufheben.
GET/servers/{id}/interfacesinfrastructure:readNetzwerkschnittstellen: { ipAddress, primary, network? }.
PUT/servers/{id}/interfaces/{ipAddress}infrastructure:editSchnittstelle hinzufügen/aktualisieren; liefert die neu aufgelisteten Schnittstellen.
DELETE/servers/{id}/interfaces/{ipAddress}infrastructure:deleteSchnittstelle entfernen.
GET/servers/{id}/network-flowsinfrastructure:readNetzwerkfluss-Graph: { center, sources[], targets[] } mit connections[] pro Endpunkt.
GET/servers/{id}/agentinfrastructure:readAgent-Informationen des Servers (404, wenn keiner vorhanden).
GET/servers/{id}/schemainfrastructure:readDie Topologie-Nachbarschaft des Servers.
GET/servers/{id}/metricsinfrastructure:readMetrik-Verlauf + Durchschnittswerte. Query: period, system.
PUT/servers/{id}/custom-fields/{fieldId}infrastructure:editWert eines benutzerdefinierten Felds setzen ({ value }).

Serverdetail: { id, name, automatic, system, os, description?, criticality?, model?, serialNumber?, manufacturer?, type?, location?, dataCollectionStatus?, lastCheckTime?, uptime?, domain?, fqdn?, cpu{model?,count?,coreCount?}, memorySize?, disks[], metrics{cpu?,load?,memory?,storage?,storageTotal?}, owners[], tags[], linkedApplications[], interfaces[], customFields[] }.

Netzwerke

MethodePfadScopeBeschreibung
GET/networksinfrastructure:readPaginiert. Query: search, limit, offset. Einträge: { id, name, role, ipAddress, subnet, description?, vlanId? }.
GET/networks/{id}infrastructure:readDetail: Netzwerkfelder + verbundene routers[]{ id, name, type, interfaceAddress? }.
POST/networksinfrastructure:addAnlegen. Body: name, role, ipAddress, subnet (alle erforderlich) · description · vlanId. rolelocal|wireless|storage|vpn|data_center|edge|public|management|dmz|iot|intercommunication; subnet ist CIDR-Notation (z. B. /24).
PATCH/networks/{id}infrastructure:editPartielle Aktualisierung — alle Felder optional.
DELETE/networks/{id}infrastructure:deleteLöschen.
GET/networks/{id}/routersinfrastructure:readVerbundene Router (nacktes Array).
PUT/networks/{id}/routersinfrastructure:editVerbundene Router setzen (vollständiger Satz). Body: { routerIds[] } — Ids außerhalb des Workspace werden stillschweigend ignoriert.
GET/networks/{id}/overviewinfrastructure:readIP-Pool-/Firewall-/Server-Statistiken.
GET/networks/{id}/schemainfrastructure:readDie Topologie-Nachbarschaft des Netzwerks.
GET/infrastructure/schemanetwork_mapping_diagram:readGlobaler Topologie-Baum Router ↔ Netzwerk ↔ Server.

Router

MethodePfadScopeBeschreibung
GET/routersinfrastructure:readSuchen/Filtern/Sortieren, DB-paginiert. Query: search, type, location, criticality, sort, direction, limit, offset. Einträge: { id, name, type, ipAddress?, location?, internetConnection?, criticality? }.
GET/routers/{id}infrastructure:readDetail: Routerfelder + criticality?, tags[]{id,name}, verbundene networks[]{ id, name, role, interfaceAddress? }, customFields[].
POST/routersinfrastructure:addAnlegen. Body: name, type (beide erforderlich, typerouter|firewall|switch|access_point) · ipAddress · location · description · internetConnection.
PATCH/routers/{id}infrastructure:editPartielle Aktualisierung — alle Felder optional.
DELETE/routers/{id}infrastructure:deleteLöschen.
GET/routers/{id}/networksinfrastructure:readVerbundene Netzwerke (nacktes Array).
PUT/routers/{id}/networksinfrastructure:editVerbundene Netzwerke setzen (vollständiger Satz). Body: { networkIds[] } — fremde Ids werden ignoriert.
GET/routers/{id}/tagsinfrastructure:readTags (nacktes Array).
PUT/routers/{id}/tagsinfrastructure:editTags setzen (vollständiger Satz). Body: { tagIds[] } — gefiltert auf den Workspace-Katalog.
PUT/routers/{id}/custom-fields/{fieldId}infrastructure:editWert eines benutzerdefinierten Felds setzen ({ value }).

Arbeitsplatzrechner, Software und Agenten

MethodePfadScopeBeschreibung
GET/workstationsinfrastructure:readPaginiert; wiederholbarer ?teamId=-Filter. Einträge umfassen Hostname, Health, Nutzerinformationen, Laptop-Flag, Hardware, OS, genutzte CPU/RAM/Speicher, Uptime, Collect-Status und Compliance-Flags.
GET/workstations/{id}infrastructure:readEin Arbeitsplatzrechner.
GET/workstations/{id}/installed-programsinfrastructure:readInstallierte Programme. Query: search, limit, offset.
GET/workstations/{id}/usersinfrastructure:readAuf dem Arbeitsplatzrechner gesehene Nutzer.
GET/softwareinfrastructure:readSoftware-Inventar des Workspace, nach Programm gruppiert. Query: search, limit, offset.
GET/software/{name}/resourcesinfrastructure:readInstallationen eines Programms über Arbeitsplatzrechner/Server hinweg. Query: version, type.
GET/agents/deployment-statusagents:read{ deploymentStatistics[], availableVersions[], deployedVersions[], activeAgents[] }.

Taxonomie — Kategorien und Tags

MethodePfadScopeBeschreibung
GET/categoriescategories:readPaginiert. Einträge: { id, name, appCount? }.
POST/categoriescategories:addAnlegen. Body: { name } (erforderlich).
PATCH/categories/{id}categories:editUmbenennen. Body: { name }.
DELETE/categories/{id}categories:deleteLöschen.
GET/tagstags:readPaginiert. Einträge: { id, name, countOfUse }.
POST/tagstags:addAnlegen. Body: { name } (erforderlich).
DELETE/tags/{id}tags:deleteLöschen.

Organisation und Teams

MethodePfadScopeBeschreibung
GET/organizationorganisation:readDer vollständige Organisationsbaum: { organization, children[] }.
GET/teamsorganisation:readPaginiert. Einträge: { id, name, type, description?, icon?, parentOrganizationId?, createdAt, updatedAt }.
GET/teams/{id}organisation:readEin Team.
POST/teamsorganisation:addAnlegen. Body: name, parentOrganizationId (beide erforderlich) · icon.
PATCH/teams/{id}organisation:editAktualisieren: name?, description?, icon? (nur Geschäftseinheits-Teams).
DELETE/teams/{id}organisation:deleteLöschen.
GET/teams/{id}/ownersorganisation:readTeam-Verantwortliche: { accountId, email, firstName?, lastName? }.

Personen — erfasste Nutzer und Mitglieder

MethodePfadScopeBeschreibung
GET/usersusers:readErfasste Endnutzer, paginiert: { userId, userRealName?, userAccount?, hostname, lastSeen, team?, teamPath?, userExperience }.
GET/users/{id}users:readDetail: { userId, userRealName?, userAccount?, hostname, lastSeen, workstationId, health, osName, osVersion }.
GET/users/{id}/experience/summaryusers:readExperience-Rollup für einen erfassten Nutzer.
GET/users/{id}/experience/all-indicators/graph · /listusers:readKombinierte Indikatoren über ?period=.
GET/users/{id}/experience/errors-incidents/graph · /listusers:readFehler/Vorfälle über ?period=.
GET/users/{id}/experience/performances/graph · /listusers:readPerformance über ?period=.
GET/users/{id}/experience/exportusers:readExport pro Ereignis; die Spalten applicationId/applicationName erfordern zusätzlich applications:read.
GET/membersmembers:readWorkspace-Mitglieder, paginiert: { accountId, email, firstName, lastName, role?, pending, createdAt }.
GET/members/{id}members:readEin Mitglied.
PATCH/members/{id}members:editRolle des Mitglieds setzen. Body: { role: uuid } (im Workspace validiert).
DELETE/members/{id}members:deleteMitglied aus dem Workspace entfernen.

Erfasste Nutzer stammen aus der Nutzungstelemetrie — sie sind schreibgeschützt (kein Anlegen/Aktualisieren/Löschen). Das Einladen von Mitgliedern ist über die öffentliche API nicht verfügbar.

Ankündigungen

MethodePfadScopeBeschreibung
GET/announcementsannounces:readPaginiert.
POST/announcementsannounces:addAnlegen.
PATCH/announcements/{id}announces:editAktualisieren.
DELETE/announcements/{id}announces:deleteLöschen.

Create-/Update-Body: title, content, type, startDate (ISO) — alle erforderlich · teams (uuid[]) · app (uuid) · endDate (ISO). Antwort: { id, title, content, type, teams[]?, app?, startDate, endDate?, createdAt, updatedAt, seenCount, likeCount, dislikeCount, likeRatio? }.

Verträge

MethodePfadScopeBeschreibung
GET/contractscontracts:readAlle Verträge des Workspace, paginiert: { id, applicationId, applicationName, nature, startDate, endDate?, paymentFrom, paymentTo?, amountPerMonth, enableProjection, organizationIds[], documentIds[], createdAt, updatedAt }.
GET/contracts/expiringfinance_dashboard:readBald ablaufende Verträge. Query: limit, teamId. Einträge: { applicationId, applicationName, applicationLogo, type, expiryDate, daysUntilExpiry }.
GET/contracts/costfinance_dashboard:readGesamtkosten der Verträge des Workspace. Query: range. Antwort: { value?, queryType }.

Vertrags-Schreibvorgänge sind anwendungsbezogen — siehe POST/PATCH/DELETE unter /applications/{id}/contracts oben.

Audit-Log

MethodePfadScopeBeschreibung
GET/audit-logaudit_log:readWorkspace-Audit-Ereignisse, neueste zuerst, cursor-paginiert: { data[], total, nextCursor?, hasMore }. Query: from/to (ISO-Zeitpunkte), actorId, category, actions (wiederholbar), resourceType, resourceId, query (Freitext), limit (max. 200), cursor.
GET/audit-log/{id}audit_log:readEin Audit-Ereignis (404, falls unbekannt).
GET/audit-log/actorsaudit_log:readFacette der verschiedenen Akteure: { id, displayName }.

Ein Audit-Ereignis sieht aus wie { id, timestamp, intent, action, category, actor{type,id,displayName}, resourceType, resourceId, resourceName, correlationId, message? }. Öffentliche API-Aufrufe erscheinen mit dem API-Schlüssel als service-Akteur.

Dashboards, Insights und Diagramme

Jedes Dashboard liefert ein eigenes aggregiertes Statistikobjekt; die meisten akzeptieren einen range- oder period-Query-Parameter.

MethodePfadScopeBeschreibung
GET/dashboards/financefinance_dashboard:readFinanzüberblick.
GET/dashboards/usageusage_dashboard:readNutzungsüberblick.
GET/dashboards/operationsoperations_dashboard:readBetriebsüberblick.
GET/dashboards/architecturearchitecture_dashboard:readArchitekturüberblick.
GET/dashboards/technologytechnology_dashboard:readTechnologie-/Obsoleszenzüberblick.
GET/dashboards/workstationsworkstations_dashboard:readÜberblick über die Arbeitsplatzrechner-Flotte.
GET/dashboards/healthoperations_dashboard:readTäglicher Health-Graph. Query: period.
GET/dashboards/performanceoperations_dashboard:readLCP-Performance-Verteilung. Query: period.
GET/dashboards/overlaparchitecture_dashboard:readAnwendungs-Überschneidungsstatistik. Query: costRange.
GET/dashboards/documentationarchitecture_dashboard:readStatistik zur Dokumentationsvollständigkeit.
GET/insights/application-healthapplications:readHealth-Insights pro Anwendung, paginiert.
GET/insights/most-impacted-appsoperations_dashboard:readAnwendungen nach Fehlerauswirkung sortiert. Query: period, limit.
GET/insights/worst-performance-appsoperations_dashboard:readAnwendungen nach schlechtestem LCP sortiert. Query: period, limit.
GET/diagrams/flowsflow_mapping_diagram:readAnwendungsfluss-Diagramm. Query: wiederholbares teamId.
GET/diagrams/matricesapplication_matrix_diagram:readAnwendungsmatrix-Diagramm. Query: wiederholbares teamId.
GET/diagrams/quadrantsapplication_quadrant_diagram:readAnwendungsquadranten-Diagramm. Query: wiederholbares teamId.
GET/diagrams/life-cyclesapplication_lifecycle_diagram:readAnwendungs-Lebenszyklus-Diagramm. Query: wiederholbares teamId.

Diagramm-Endpunkte liefern dieselben Knotenformen, die auch die Architekturdiagramme im Produkt verwenden.

In dieser Version nicht verfügbar

  • Webhooks / Event-Push — die API ist ausschließlich Polling-basiert. Die empfohlenen Polling-Muster stehen unter Paginierung und Fehler.
  • Rate-Limiting — der Status 429 ist vom Fehlervertrag reserviert, aber es wird noch kein Rate-Limiting pro Schlüssel durchgesetzt.
  • Einladen von Mitgliedern und Schreibvorgänge auf erfassten Nutzern.
  • Binär-Uploads — Anwendungsdokumente sind URL-basiert; Workspace-/Anwendungslogos können nicht über die API hochgeladen werden.