Référence des endpoints

Chaque endpoint de l'API publique Kabeen avec son scope requis, ses entrées et ses sorties

Chaque endpoint de l'API publique Kabeen, regroupé par domaine de ressources, avec le scope de permission qu'il requiert et la forme de ses entrées et sorties.

Tous les chemins sont relatifs à https://{host}/public/v1 (hôte app.kabeen.io par défaut). Tous les corps sont en JSON. Les identifiants sont des chaînes UUID ; les dates sont des chaînes ISO-8601. Dans les descriptions de corps de requête ci-dessous, les champs marqués obligatoire doivent être présents ; tous les autres champs sont facultatifs. Sauf indication contraire, les endpoints de liste utilisent l'enveloppe standard de pagination par offset (?limit=&offset={ data, pagination }) décrite dans Pagination et erreurs.

Les clés d'API elles-mêmes sont gérées par un administrateur de l'espace de travail depuis l'application Kabeen, pas via l'API publique — voir Authentification.

Introspection et espace de travail

MéthodeCheminScopeDescription
GET/metoute clé valideIntrospecte la clé présentée : { workspace{id,name}, key{id,name,alias?}, permissions[] }.
GET/workspacetenant:readL'espace de travail auquel la clé est liée : { id, name, createdAt, currencyCode, publicLogoUrl?, wsLogoUrl?, supportUrl?, onboarding*, ki*, compliance* }.
PATCH/workspacetenant:editMise à jour partielle — name?, currencyCode?, supportUrl?, bascules Kabeen Intelligence (dont kiDefaultProvider), bascules de conformité. Le logo est exclu (téléversement binaire uniquement). Renvoie l'espace de travail mis à jour.

Applications

Ressource principale

MéthodeCheminScopeDescription
GET/applicationsapplications:readRecherche/filtre/tri, paginé en base. Query : search, categoryId, criticality, hostingType, tag, teamId, sort, direction, limit, offset. Éléments : { id, name, description?, logo, state, criticality?, hostingType, category{id,name}? }.
GET/applications/{id}applications:readFiche détaillée — voir ci-dessous.
POST/applicationsapplications:addCréation. Corps : name (obligatoire), description, categoryId (uuid), hostingType, accessUrl, iconUrl, organizationIds (uuid[]). Renvoie { id, name, description?, criticality?, logo }.
PATCH/applications/{id}applications:editMise à jour partielle — seuls les champs présents sont modifiés : name, description, accessUrl, iconUrl, state, criticality, hostingType, support{phone,email,url}. Renvoie la fiche mise à jour.
PATCH/applications/{id}/stateapplications:editAlias de commodité pour l'état seul. Corps : state (obligatoire, ACTIVE|ARCHIVED|DISCOVERED|REJECTED).
PATCH/applications/{id}/categoryapplications:editAttribue ou retire la catégorie. Corps : { categoryId? } (validé dans l'espace de travail). Renvoie la fiche mise à jour.
PATCH/applications/{id}/vendorapplications:editAttribue ou retire l'éditeur. Corps : { vendorId? }. Renvoie la fiche mise à jour.
PATCH/applications/{id}/authenticationapplications:editPartiel — type?, primaryFactor?, secondaryFactor?, protocol?. Renvoie la fiche mise à jour.
PATCH/applications/{id}/usage-settingsapplications:editPartiel — usageActivated?, desktopApplicationNames?. Renvoie la fiche mise à jour.
DELETE/applications/{id}applications:deleteSuppression, en cascade sur les flux, les documents, les valeurs de champs personnalisés et l'icône.

Fiche application (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 }.

Chaque champ personnalisé est { id, name, type, description?, value }typetext|select|multi_select|date et value est polymorphe selon le type : chaîne (text), date-heure ISO (date), {id,value} (select), [{id,value}] (multi_select), ou null si non renseigné.

Sous-ressources

MéthodeCheminScopeDescription
GET/applications/{id}/usageapplications:readMétrique d'usage : { value?, range }.
GET/applications/{id}/flowsapplications:readFlux de données, paginés. Éléments : { id, comment?, protocol?, format?, exchangeFrequency?, portType?, port?, encrypted?, source{id,name}, target{id,name}, dataCount, documentCount, middlewareCount }.
POST/applications/{id}/flowsapplications:editCrée un flux. Corps : { sourceId?, targetId?, dataIds[], comment?, protocol?, format?, exchangeFrequency?, portType?, port?, encrypted?, documentIds[], middlewares[{applicationId, position}] } — la source ou la cible doit être égale à l'application du chemin (400 sinon).
PATCH/applications/{id}/flows/{flowId}applications:editMise à jour partielle du flux — seuls les champs fournis sont appliqués.
DELETE/applications/{id}/flows/{flowId}applications:deleteSupprime un flux.
GET/applications/{id}/technologiesapplications:readPaginé. Éléments : { id, name, type?, versionId?, version? } (plus informations EOL/LTS/obsolescence).
PUT/applications/{id}/technologiesapplications:editDéfinit les technologies.
DELETE/applications/{id}/technologies/{technologyId}applications:editDétache une technologie.
GET/applications/{id}/contractsapplications:readPaginé. Éléments : { id, nature, startDate, endDate?, amountPerMonth, enableProjection }.
POST/applications/{id}/contractscontracts:addCrée un contrat sur l'application.
PATCH/applications/{id}/contracts/{contractId}contracts:editMet à jour un contrat.
DELETE/applications/{id}/contracts/{contractId}contracts:deleteSupprime un contrat.
GET/applications/{id}/documentsapplications:readDocuments référencés par URL (pas de téléversement binaire). Éléments : { id, documentType, title, description?, published, url, createdAt } avec documentTypedata_policy|security_policy|technical_documents.
POST/applications/{id}/documentsapplications:editCrée un document.
PATCH/applications/{id}/documents/{documentId}applications:editMet à jour un document (url est immuable).
DELETE/applications/{id}/documents/{documentId}applications:deleteSupprime un document.
GET/applications/{id}/ownersapplications:readListe les responsables (tableau nu).
POST/applications/{id}/ownersapplications:editAjoute un responsable. Corps : { accountId }.
DELETE/applications/{id}/owners/{accountId}applications:editRetire un responsable.
GET/applications/{id}/tagsapplications:readListe les tags (tableau nu).
PUT/applications/{id}/tagsapplications:editDéfinit les tags (ensemble complet). Corps : { tagIds[] }.
GET/applications/{id}/teamsapplications:readListe les équipes/organisations (tableau nu).
PUT/applications/{id}/teamsapplications:editDéfinit les équipes (ensemble complet).
GET/applications/{id}/lifecycleapplications:readDates jalons.
PUT/applications/{id}/lifecycleapplications:editDéfinit les dates jalons (phaseInDate, deployedDate, phaseOutDate, retiredDate).
GET/applications/{id}/commentsapplications:readListe les commentaires (sans auteur, tableau nu).
POST/applications/{id}/commentsapplications:commentAjoute un commentaire.
DELETE/applications/{id}/comments/{commentId}applications:commentSupprime un commentaire.
GET/applications/{id}/datadata:readObjets de données liés à l'application, avec rôles d'accès : { data, roles[] }.
PUT/applications/{id}/custom-fields/{fieldId}applications:editDéfinit la valeur d'un champ personnalisé. Corps : { value } — chaîne pour text/date, id d'option pour select, tableau d'ids d'options pour multi_select, null pour vider. Vérifié par type.
GET/vendorsapplications:readÉditeurs de l'espace de travail + partagés, paginé : { id, name, url?, description? }.

Métriques d'expérience

Six familles de lecture adossées à la télémétrie d'usage. Les endpoints de graphes/listes prennent ?period= (past_1_day | past_1_month | past_1_year, défaut past_1_month = 30 derniers jours ; valeurs inconnues → 400) et renvoient 404 pour une application hors de l'espace de travail. Les notes sont en minuscules (good | needs_improvement | poor).

MéthodeCheminScopeDescription
GET/applications/{id}/performance/graphapplications:readLCP quotidien : { dailyPerformance[{date, lcpP75?, lcpMin?, lcpMax?, lcpAvg?, lcpRating?}] }.
GET/applications/{id}/performance/listapplications:readLCP par équipe : { teams[{teamId, teamName, teamPath?, teamIcon?, lcpP75?, lcpRating?}] }.
GET/applications/{id}/errors-incidents/graphapplications:readIncidents quotidiens : { dailyIncidents[{date, incidentCount, errors[{errorCode, count}]}] }.
GET/applications/{id}/errors-incidents/listapplications:readErreurs par équipe, avec détail par chemin : { teams[{…, errorCount, errorDetails[{errorCode, count, paths[{path, count}]}]}] }.
GET/applications/{id}/satisfaction/graphapplications:readSatisfaction quotidienne : { dailySatisfaction[{date, averageSatisfaction?, votersCount}] }.
GET/applications/{id}/satisfaction/listapplications:readSatisfaction par équipe.
GET/applications/{id}/experience/summaryapplications:readSynthèse fixe sur 30 jours : { userExperience, errorCount, performanceRating?, hasWebUsers }.
GET/applications/{id}/experience/all-indicators/graphapplications:readGraphe quotidien combiné UX/erreurs/LCP sur ?period=.
GET/applications/{id}/experience/all-indicators/listapplications:readIndicateurs combinés par équipe sur ?period=.
GET/applications/{id}/experience/exportapplications:readLignes erreurs + LCP par événement sur 30 jours ; userId/userName ne sont inclus qu'avec users:read et le suivi des utilisateurs activé.

Capacités fonctionnelles

MéthodeCheminScopeDescription
GET/applications/{id}/functional-capacitiesapplications:readCapacités liées à l'application (statut en minuscules).
PUT/applications/{id}/functional-capacitiesapplications:editDéfinit les capacités de l'application (ids de capacités validés contre la taxonomie de l'espace de travail).
DELETE/applications/{id}/functional-capacities/{functionalCapacityId}applications:deleteRetire une capacité de l'application.
POST/applications/{id}/functional-capacities/{functionalCapacityId}/acceptapplications:editAccepte une capacité découverte.
POST/applications/{id}/functional-capacities/{functionalCapacityId}/rejectapplications:editRejette une capacité découverte.
GET/functional-capacitiesapplications:readLa taxonomie des capacités de l'espace de travail.
POST/functional-capacitiesapplications:addCrée une capacité.
PATCH/functional-capacities/{id}applications:editRenomme une capacité feuille. Corps : { name }.
DELETE/functional-capacities/{id}applications:deleteSupprime une capacité feuille.
GET/functional-capacities/diagramcapacity_map_diagram:readArbre de la carte des capacités (groupe → capacités → applications).
POST/functional-capacities/groupsapplications:addCrée un groupe de capacités. Corps : { name, icon } (les deux obligatoires).
PATCH/functional-capacities/groups/{groupId}applications:editMise à jour partielle : { name?, icon? }.
DELETE/functional-capacities/groups/{groupId}applications:deleteSupprime un groupe de capacités.

Définitions de champs personnalisés

Les définitions de champs personnalisés constituent le schéma au niveau de l'espace de travail (distinct de la valeur d'un champ sur une ressource, définie avec les endpoints PUT .../custom-fields/{fieldId} par ressource). Un jeu CRUD de définitions existe par type de ressource cible — applications, serveurs, données, routeurs :

MéthodeCheminScope
GET/applications/custom-fields · /servers/custom-fields · /data/custom-fields · /routers/custom-fieldstenant:read (paginé)
POSTmêmes cheminstenant:edit
PATCHmêmes chemins + /{id}tenant:edit
DELETEmêmes chemins + /{id}tenant:edit

Corps de création : name (obligatoire) · type (obligatoire, text|select|multi_select|date) · description · icon · options ([{value, position}], obligatoire pour select/multi_select). Réponse : { id, name, type, description?, options[{id,value}] }. Un PATCH/DELETE n'affecte que les définitions du type cible du chemin (404 sinon).

Catalogue et applications découvertes

MéthodeCheminScopeDescription
GET/application-catalogapplications:readRecherche dans le catalogue de référence global. Query : page (base 1), search, categoryId, lang. Réponse : { data[{id,name,vendor,description?,logo,categoryId?,type?}], total, page } — pagination par numéro de page, taille de page fixe.
GET/application-catalog/{id}applications:readUne entrée du catalogue (données de référence globales ; 404 si id inconnu).
GET/discovered-applicationsapplications:readApplications remontées par l'auto-découverte, paginé : { id, name, icon, state, description?, urls[], desktopExeNames[], usage?, deltaUsage?, lastUpdate, organizations[] }.

Objets de données

MéthodeCheminScopeDescription
GET/datadata:readListe paginée.
GET/data/{id}data:readUn objet de données.
POST/datadata:addCréation.
PATCH/data/{id}data:editMise à jour (remplacement complet du corps d'upsert).
DELETE/data/{id}data:deleteSuppression.
PUT/data/{id}/applicationsdata:editLie/délie des applications. Corps : { added?: uuid[], removed?: uuid[] }.
GET/data/{id}/applicationsdata:readApplications liées avec rôles d'accès : { applicationId, applicationName, roles[] }.
PUT/data/{id}/applications/{applicationId}/rolesdata:editDéfinit les rôles d'accès pour un lien application↔donnée. Corps : { roles[] }. Renvoie 204.
GET/data/{id}/responsiblesdata:readResponsables de la donnée : { accountId, email, firstName?, lastName? }.
PUT/data/{id}/custom-fields/{fieldId}data:editDéfinit la valeur d'un champ personnalisé ({ value }).

Corps d'upsert (POST et PATCH — remplacement complet) : name (obligatoire) · types (string[]) · privacy · criticality · description · categoryId · categoryName (id + nom ensemble pour définir une catégorie). Réponse : { id, name, types[], privacy?, criticality?, description?, updatedAt?, category{id,name}?, customFields[] }.

Serveurs

MéthodeCheminScopeDescription
GET/serversinfrastructure:readRecherche/filtre/tri, paginé en base. Query : search, type, location, criticality, os, tag, applicationId, sort, direction, limit, offset. Éléments : { id, name, automatic, os, system, type?, location?, criticality?, dataCollectionStatus?, lastCheckTime? }.
GET/servers/{id}infrastructure:readFiche détaillée — voir ci-dessous.
POST/serversinfrastructure:addCrée un serveur manuel. Corps : name, os, ipAddress (tous obligatoires) · manufacturer · type · location · description.
PATCH/servers/{id}infrastructure:editMise à jour partielle — tous les champs facultatifs : name/os/manufacturer (serveurs manuels uniquement) · type/location/description (tous les serveurs). Sur un serveur remonté par un agent (automatic: true), écrire name, os ou manufacturer est rejeté avec 422 plutôt que silencieusement ignoré.
DELETE/servers/{id}infrastructure:deleteSuppression.
GET/servers/{id}/ownersinfrastructure:readListe les responsables (tableau nu).
POST/servers/{id}/ownersinfrastructure:editAjoute un responsable. Corps : { accountId }.
DELETE/servers/{id}/owners/{accountId}infrastructure:editRetire un responsable.
GET/servers/{id}/tagsinfrastructure:readListe les tags (tableau nu).
PUT/servers/{id}/tagsinfrastructure:editDéfinit les tags (ensemble complet). Corps : { tagIds[] }.
GET/servers/{id}/applicationsinfrastructure:readApplications liées.
POST/servers/{id}/applicationsinfrastructure:editLie une application. Corps : { applicationId } (vérifié dans l'espace de travail).
DELETE/servers/{id}/applications/{applicationId}infrastructure:editDélie une application.
GET/servers/{id}/interfacesinfrastructure:readInterfaces réseau : { ipAddress, primary, network? }.
PUT/servers/{id}/interfaces/{ipAddress}infrastructure:editAjoute/met à jour une interface ; renvoie la liste des interfaces recalculée.
DELETE/servers/{id}/interfaces/{ipAddress}infrastructure:deleteRetire une interface.
GET/servers/{id}/network-flowsinfrastructure:readGraphe de flux réseau : { center, sources[], targets[] } avec connections[] par extrémité.
GET/servers/{id}/agentinfrastructure:readLes informations de l'agent du serveur (404 si aucun).
GET/servers/{id}/schemainfrastructure:readLe voisinage topologique du serveur.
GET/servers/{id}/metricsinfrastructure:readHistorique de métriques + moyennes. Query : period, system.
PUT/servers/{id}/custom-fields/{fieldId}infrastructure:editDéfinit la valeur d'un champ personnalisé ({ value }).

Fiche serveur : { 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[] }.

Réseaux

MéthodeCheminScopeDescription
GET/networksinfrastructure:readPaginé. Query : search, limit, offset. Éléments : { id, name, role, ipAddress, subnet, description?, vlanId? }.
GET/networks/{id}infrastructure:readDétail : champs du réseau + routers[]{ id, name, type, interfaceAddress? } connectés.
POST/networksinfrastructure:addCréation. Corps : name, role, ipAddress, subnet (tous obligatoires) · description · vlanId. rolelocal|wireless|storage|vpn|data_center|edge|public|management|dmz|iot|intercommunication ; subnet est en notation CIDR (par exemple /24).
PATCH/networks/{id}infrastructure:editMise à jour partielle — tous les champs facultatifs.
DELETE/networks/{id}infrastructure:deleteSuppression.
GET/networks/{id}/routersinfrastructure:readRouteurs connectés (tableau nu).
PUT/networks/{id}/routersinfrastructure:editDéfinit les routeurs connectés (ensemble complet). Corps : { routerIds[] } — les ids hors de l'espace de travail sont silencieusement ignorés.
GET/networks/{id}/overviewinfrastructure:readStatistiques pool d'IP / pare-feu / serveurs.
GET/networks/{id}/schemainfrastructure:readLe voisinage topologique du réseau.
GET/infrastructure/schemanetwork_mapping_diagram:readArbre topologique global routeur ↔ réseau ↔ serveur.

Routeurs

MéthodeCheminScopeDescription
GET/routersinfrastructure:readRecherche/filtre/tri, paginé en base. Query : search, type, location, criticality, sort, direction, limit, offset. Éléments : { id, name, type, ipAddress?, location?, internetConnection?, criticality? }.
GET/routers/{id}infrastructure:readDétail : champs du routeur + criticality?, tags[]{id,name}, networks[]{ id, name, role, interfaceAddress? } connectés, customFields[].
POST/routersinfrastructure:addCréation. Corps : name, type (les deux obligatoires, typerouter|firewall|switch|access_point) · ipAddress · location · description · internetConnection.
PATCH/routers/{id}infrastructure:editMise à jour partielle — tous les champs facultatifs.
DELETE/routers/{id}infrastructure:deleteSuppression.
GET/routers/{id}/networksinfrastructure:readRéseaux connectés (tableau nu).
PUT/routers/{id}/networksinfrastructure:editDéfinit les réseaux connectés (ensemble complet). Corps : { networkIds[] } — les ids étrangers sont ignorés.
GET/routers/{id}/tagsinfrastructure:readTags (tableau nu).
PUT/routers/{id}/tagsinfrastructure:editDéfinit les tags (ensemble complet). Corps : { tagIds[] } — filtré selon le catalogue de l'espace de travail.
PUT/routers/{id}/custom-fields/{fieldId}infrastructure:editDéfinit la valeur d'un champ personnalisé ({ value }).

Postes de travail, logiciels et agents

MéthodeCheminScopeDescription
GET/workstationsinfrastructure:readPaginé ; filtre ?teamId= répétable. Les éléments incluent le nom d'hôte, la santé, les informations utilisateur, l'indicateur portable, le matériel, l'OS, le CPU/la RAM/le stockage utilisés, l'uptime, le statut de collecte et les indicateurs de conformité.
GET/workstations/{id}infrastructure:readUn poste de travail.
GET/workstations/{id}/installed-programsinfrastructure:readProgrammes installés. Query : search, limit, offset.
GET/workstations/{id}/usersinfrastructure:readUtilisateurs vus sur le poste de travail.
GET/softwareinfrastructure:readInventaire logiciel de l'espace de travail, regroupé par programme. Query : search, limit, offset.
GET/software/{name}/resourcesinfrastructure:readInstallations d'un programme sur les postes de travail/serveurs. Query : version, type.
GET/agents/deployment-statusagents:read{ deploymentStatistics[], availableVersions[], deployedVersions[], activeAgents[] }.

Taxonomie — catégories et tags

MéthodeCheminScopeDescription
GET/categoriescategories:readPaginé. Éléments : { id, name, appCount? }.
POST/categoriescategories:addCréation. Corps : { name } (obligatoire).
PATCH/categories/{id}categories:editRenommage. Corps : { name }.
DELETE/categories/{id}categories:deleteSuppression.
GET/tagstags:readPaginé. Éléments : { id, name, countOfUse }.
POST/tagstags:addCréation. Corps : { name } (obligatoire).
DELETE/tags/{id}tags:deleteSuppression.

Organisation et équipes

MéthodeCheminScopeDescription
GET/organizationorganisation:readL'arborescence complète de l'organisation : { organization, children[] }.
GET/teamsorganisation:readPaginé. Éléments : { id, name, type, description?, icon?, parentOrganizationId?, createdAt, updatedAt }.
GET/teams/{id}organisation:readUne équipe.
POST/teamsorganisation:addCréation. Corps : name, parentOrganizationId (les deux obligatoires) · icon.
PATCH/teams/{id}organisation:editMise à jour : name?, description?, icon? (équipes de type unité métier uniquement).
DELETE/teams/{id}organisation:deleteSuppression.
GET/teams/{id}/ownersorganisation:readResponsables de l'équipe : { accountId, email, firstName?, lastName? }.

Personnes — utilisateurs suivis et membres

MéthodeCheminScopeDescription
GET/usersusers:readUtilisateurs finaux suivis, paginé : { userId, userRealName?, userAccount?, hostname, lastSeen, team?, teamPath?, userExperience }.
GET/users/{id}users:readDétail : { userId, userRealName?, userAccount?, hostname, lastSeen, workstationId, health, osName, osVersion }.
GET/users/{id}/experience/summaryusers:readSynthèse d'expérience pour un utilisateur suivi.
GET/users/{id}/experience/all-indicators/graph · /listusers:readIndicateurs combinés sur ?period=.
GET/users/{id}/experience/errors-incidents/graph · /listusers:readErreurs/incidents sur ?period=.
GET/users/{id}/experience/performances/graph · /listusers:readPerformance sur ?period=.
GET/users/{id}/experience/exportusers:readExport par événement ; les colonnes applicationId/applicationName requièrent en plus applications:read.
GET/membersmembers:readMembres de l'espace de travail, paginé : { accountId, email, firstName, lastName, role?, pending, createdAt }.
GET/members/{id}members:readUn membre.
PATCH/members/{id}members:editDéfinit le rôle du membre. Corps : { role: uuid } (validé dans l'espace de travail).
DELETE/members/{id}members:deleteRetire le membre de l'espace de travail.

Les utilisateurs suivis sont dérivés de la télémétrie d'usage — ils sont en lecture seule (pas de création/mise à jour/suppression). L'invitation de membres n'est pas disponible via l'API publique.

Annonces

MéthodeCheminScopeDescription
GET/announcementsannounces:readPaginé.
POST/announcementsannounces:addCréation.
PATCH/announcements/{id}announces:editMise à jour.
DELETE/announcements/{id}announces:deleteSuppression.

Corps de création/mise à jour : title, content, type, startDate (ISO) — tous obligatoires · teams (uuid[]) · app (uuid) · endDate (ISO). Réponse : { id, title, content, type, teams[]?, app?, startDate, endDate?, createdAt, updatedAt, seenCount, likeCount, dislikeCount, likeRatio? }.

Contrats

MéthodeCheminScopeDescription
GET/contractscontracts:readTous les contrats de l'espace de travail, paginé : { id, applicationId, applicationName, nature, startDate, endDate?, paymentFrom, paymentTo?, amountPerMonth, enableProjection, organizationIds[], documentIds[], createdAt, updatedAt }.
GET/contracts/expiringfinance_dashboard:readContrats bientôt expirés. Query : limit, teamId. Éléments : { applicationId, applicationName, applicationLogo, type, expiryDate, daysUntilExpiry }.
GET/contracts/costfinance_dashboard:readCoût total des contrats de l'espace de travail. Query : range. Réponse : { value?, queryType }.

Les écritures de contrats se font au niveau de l'application — voir POST/PATCH/DELETE sous /applications/{id}/contracts ci-dessus.

Journal d'audit

MéthodeCheminScopeDescription
GET/audit-logaudit_log:readÉvénements d'audit de l'espace de travail, du plus récent au plus ancien, paginé par curseur : { data[], total, nextCursor?, hasMore }. Query : from/to (instants ISO), actorId, category, actions (répétable), resourceType, resourceId, query (texte libre), limit (max 200), cursor.
GET/audit-log/{id}audit_log:readUn événement d'audit (404 si inconnu).
GET/audit-log/actorsaudit_log:readFacette des acteurs distincts : { id, displayName }.

Un événement d'audit ressemble à { id, timestamp, intent, action, category, actor{type,id,displayName}, resourceType, resourceId, resourceName, correlationId, message? }. Les appels de l'API publique apparaissent avec la clé d'API comme acteur de type service.

Tableaux de bord, insights et diagrammes

Chaque tableau de bord renvoie un objet de statistiques agrégées dédié ; la plupart acceptent un paramètre de requête range ou period.

MéthodeCheminScopeDescription
GET/dashboards/financefinance_dashboard:readVue d'ensemble financière.
GET/dashboards/usageusage_dashboard:readVue d'ensemble des usages.
GET/dashboards/operationsoperations_dashboard:readVue d'ensemble des opérations.
GET/dashboards/architecturearchitecture_dashboard:readVue d'ensemble de l'architecture.
GET/dashboards/technologytechnology_dashboard:readVue d'ensemble technologie / obsolescence.
GET/dashboards/workstationsworkstations_dashboard:readVue d'ensemble du parc de postes de travail.
GET/dashboards/healthoperations_dashboard:readGraphe de santé quotidien. Query : period.
GET/dashboards/performanceoperations_dashboard:readRépartition de la performance LCP. Query : period.
GET/dashboards/overlaparchitecture_dashboard:readStatistique de recouvrement applicatif. Query : costRange.
GET/dashboards/documentationarchitecture_dashboard:readStatistique de complétude documentaire.
GET/insights/application-healthapplications:readInsights de santé par application, paginé.
GET/insights/most-impacted-appsoperations_dashboard:readApplications classées par impact des erreurs. Query : period, limit.
GET/insights/worst-performance-appsoperations_dashboard:readApplications classées par pire LCP. Query : period, limit.
GET/diagrams/flowsflow_mapping_diagram:readDiagramme des flux applicatifs. Query : teamId répétable.
GET/diagrams/matricesapplication_matrix_diagram:readDiagramme de matrice applicative. Query : teamId répétable.
GET/diagrams/quadrantsapplication_quadrant_diagram:readDiagramme de quadrants applicatifs. Query : teamId répétable.
GET/diagrams/life-cyclesapplication_lifecycle_diagram:readDiagramme de cycle de vie applicatif. Query : teamId répétable.

Les endpoints de diagrammes renvoient les mêmes formes de nœuds que les diagrammes d'architecture du produit.

Non disponible dans cette version

  • Webhooks / push d'événements — l'API fonctionne uniquement par polling. Voir Pagination et erreurs pour les schémas de polling recommandés.
  • Limitation de débit — le statut 429 est réservé par le contrat d'erreur, mais aucune limitation de débit par clé n'est encore appliquée.
  • Invitation de membres et écritures sur les utilisateurs suivis.
  • Téléversements binaires — les documents d'application sont référencés par URL ; les logos d'espace de travail/d'application ne peuvent pas être téléversés via l'API.