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éthode | Chemin | Scope | Description |
|---|
| GET | /me | toute clé valide | Introspecte la clé présentée : { workspace{id,name}, key{id,name,alias?}, permissions[] }. |
| GET | /workspace | tenant:read | L'espace de travail auquel la clé est liée : { id, name, createdAt, currencyCode, publicLogoUrl?, wsLogoUrl?, supportUrl?, onboarding*, ki*, compliance* }. |
| PATCH | /workspace | tenant:edit | Mise à 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éthode | Chemin | Scope | Description |
|---|
| GET | /applications | applications:read | Recherche/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:read | Fiche détaillée — voir ci-dessous. |
| POST | /applications | applications:add | Création. Corps : name (obligatoire), description, categoryId (uuid), hostingType, accessUrl, iconUrl, organizationIds (uuid[]). Renvoie { id, name, description?, criticality?, logo }. |
| PATCH | /applications/{id} | applications:edit | Mise à 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}/state | applications:edit | Alias de commodité pour l'état seul. Corps : state (obligatoire, ACTIVE|ARCHIVED|DISCOVERED|REJECTED). |
| PATCH | /applications/{id}/category | applications:edit | Attribue ou retire la catégorie. Corps : { categoryId? } (validé dans l'espace de travail). Renvoie la fiche mise à jour. |
| PATCH | /applications/{id}/vendor | applications:edit | Attribue ou retire l'éditeur. Corps : { vendorId? }. Renvoie la fiche mise à jour. |
| PATCH | /applications/{id}/authentication | applications:edit | Partiel — type?, primaryFactor?, secondaryFactor?, protocol?. Renvoie la fiche mise à jour. |
| PATCH | /applications/{id}/usage-settings | applications:edit | Partiel — usageActivated?, desktopApplicationNames?. Renvoie la fiche mise à jour. |
| DELETE | /applications/{id} | applications:delete | Suppression, 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 } où type ∈ text|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éthode | Chemin | Scope | Description |
|---|
| GET | /applications/{id}/usage | applications:read | Métrique d'usage : { value?, range }. |
| GET | /applications/{id}/flows | applications:read | Flux 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}/flows | applications:edit | Cré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:edit | Mise à jour partielle du flux — seuls les champs fournis sont appliqués. |
| DELETE | /applications/{id}/flows/{flowId} | applications:delete | Supprime un flux. |
| GET | /applications/{id}/technologies | applications:read | Paginé. Éléments : { id, name, type?, versionId?, version? } (plus informations EOL/LTS/obsolescence). |
| PUT | /applications/{id}/technologies | applications:edit | Définit les technologies. |
| DELETE | /applications/{id}/technologies/{technologyId} | applications:edit | Détache une technologie. |
| GET | /applications/{id}/contracts | applications:read | Paginé. Éléments : { id, nature, startDate, endDate?, amountPerMonth, enableProjection }. |
| POST | /applications/{id}/contracts | contracts:add | Crée un contrat sur l'application. |
| PATCH | /applications/{id}/contracts/{contractId} | contracts:edit | Met à jour un contrat. |
| DELETE | /applications/{id}/contracts/{contractId} | contracts:delete | Supprime un contrat. |
| GET | /applications/{id}/documents | applications:read | Documents référencés par URL (pas de téléversement binaire). Éléments : { id, documentType, title, description?, published, url, createdAt } avec documentType ∈ data_policy|security_policy|technical_documents. |
| POST | /applications/{id}/documents | applications:edit | Crée un document. |
| PATCH | /applications/{id}/documents/{documentId} | applications:edit | Met à jour un document (url est immuable). |
| DELETE | /applications/{id}/documents/{documentId} | applications:delete | Supprime un document. |
| GET | /applications/{id}/owners | applications:read | Liste les responsables (tableau nu). |
| POST | /applications/{id}/owners | applications:edit | Ajoute un responsable. Corps : { accountId }. |
| DELETE | /applications/{id}/owners/{accountId} | applications:edit | Retire un responsable. |
| GET | /applications/{id}/tags | applications:read | Liste les tags (tableau nu). |
| PUT | /applications/{id}/tags | applications:edit | Définit les tags (ensemble complet). Corps : { tagIds[] }. |
| GET | /applications/{id}/teams | applications:read | Liste les équipes/organisations (tableau nu). |
| PUT | /applications/{id}/teams | applications:edit | Définit les équipes (ensemble complet). |
| GET | /applications/{id}/lifecycle | applications:read | Dates jalons. |
| PUT | /applications/{id}/lifecycle | applications:edit | Définit les dates jalons (phaseInDate, deployedDate, phaseOutDate, retiredDate). |
| GET | /applications/{id}/comments | applications:read | Liste les commentaires (sans auteur, tableau nu). |
| POST | /applications/{id}/comments | applications:comment | Ajoute un commentaire. |
| DELETE | /applications/{id}/comments/{commentId} | applications:comment | Supprime un commentaire. |
| GET | /applications/{id}/data | data:read | Objets de données liés à l'application, avec rôles d'accès : { data, roles[] }. |
| PUT | /applications/{id}/custom-fields/{fieldId} | applications:edit | Dé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 | /vendors | applications: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éthode | Chemin | Scope | Description |
|---|
| GET | /applications/{id}/performance/graph | applications:read | LCP quotidien : { dailyPerformance[{date, lcpP75?, lcpMin?, lcpMax?, lcpAvg?, lcpRating?}] }. |
| GET | /applications/{id}/performance/list | applications:read | LCP par équipe : { teams[{teamId, teamName, teamPath?, teamIcon?, lcpP75?, lcpRating?}] }. |
| GET | /applications/{id}/errors-incidents/graph | applications:read | Incidents quotidiens : { dailyIncidents[{date, incidentCount, errors[{errorCode, count}]}] }. |
| GET | /applications/{id}/errors-incidents/list | applications:read | Erreurs par équipe, avec détail par chemin : { teams[{…, errorCount, errorDetails[{errorCode, count, paths[{path, count}]}]}] }. |
| GET | /applications/{id}/satisfaction/graph | applications:read | Satisfaction quotidienne : { dailySatisfaction[{date, averageSatisfaction?, votersCount}] }. |
| GET | /applications/{id}/satisfaction/list | applications:read | Satisfaction par équipe. |
| GET | /applications/{id}/experience/summary | applications:read | Synthèse fixe sur 30 jours : { userExperience, errorCount, performanceRating?, hasWebUsers }. |
| GET | /applications/{id}/experience/all-indicators/graph | applications:read | Graphe quotidien combiné UX/erreurs/LCP sur ?period=. |
| GET | /applications/{id}/experience/all-indicators/list | applications:read | Indicateurs combinés par équipe sur ?period=. |
| GET | /applications/{id}/experience/export | applications:read | Lignes 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éthode | Chemin | Scope | Description |
|---|
| GET | /applications/{id}/functional-capacities | applications:read | Capacités liées à l'application (statut en minuscules). |
| PUT | /applications/{id}/functional-capacities | applications:edit | Dé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:delete | Retire une capacité de l'application. |
| POST | /applications/{id}/functional-capacities/{functionalCapacityId}/accept | applications:edit | Accepte une capacité découverte. |
| POST | /applications/{id}/functional-capacities/{functionalCapacityId}/reject | applications:edit | Rejette une capacité découverte. |
| GET | /functional-capacities | applications:read | La taxonomie des capacités de l'espace de travail. |
| POST | /functional-capacities | applications:add | Crée une capacité. |
| PATCH | /functional-capacities/{id} | applications:edit | Renomme une capacité feuille. Corps : { name }. |
| DELETE | /functional-capacities/{id} | applications:delete | Supprime une capacité feuille. |
| GET | /functional-capacities/diagram | capacity_map_diagram:read | Arbre de la carte des capacités (groupe → capacités → applications). |
| POST | /functional-capacities/groups | applications:add | Crée un groupe de capacités. Corps : { name, icon } (les deux obligatoires). |
| PATCH | /functional-capacities/groups/{groupId} | applications:edit | Mise à jour partielle : { name?, icon? }. |
| DELETE | /functional-capacities/groups/{groupId} | applications:delete | Supprime 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éthode | Chemin | Scope |
|---|
| GET | /applications/custom-fields · /servers/custom-fields · /data/custom-fields · /routers/custom-fields | tenant:read (paginé) |
| POST | mêmes chemins | tenant:edit |
| PATCH | mêmes chemins + /{id} | tenant:edit |
| DELETE | mê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éthode | Chemin | Scope | Description |
|---|
| GET | /application-catalog | applications:read | Recherche 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:read | Une entrée du catalogue (données de référence globales ; 404 si id inconnu). |
| GET | /discovered-applications | applications:read | Applications remontées par l'auto-découverte, paginé : { id, name, icon, state, description?, urls[], desktopExeNames[], usage?, deltaUsage?, lastUpdate, organizations[] }. |
Objets de données
| Méthode | Chemin | Scope | Description |
|---|
| GET | /data | data:read | Liste paginée. |
| GET | /data/{id} | data:read | Un objet de données. |
| POST | /data | data:add | Création. |
| PATCH | /data/{id} | data:edit | Mise à jour (remplacement complet du corps d'upsert). |
| DELETE | /data/{id} | data:delete | Suppression. |
| PUT | /data/{id}/applications | data:edit | Lie/délie des applications. Corps : { added?: uuid[], removed?: uuid[] }. |
| GET | /data/{id}/applications | data:read | Applications liées avec rôles d'accès : { applicationId, applicationName, roles[] }. |
| PUT | /data/{id}/applications/{applicationId}/roles | data:edit | Définit les rôles d'accès pour un lien application↔donnée. Corps : { roles[] }. Renvoie 204. |
| GET | /data/{id}/responsibles | data:read | Responsables de la donnée : { accountId, email, firstName?, lastName? }. |
| PUT | /data/{id}/custom-fields/{fieldId} | data:edit | Dé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éthode | Chemin | Scope | Description |
|---|
| GET | /servers | infrastructure:read | Recherche/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:read | Fiche détaillée — voir ci-dessous. |
| POST | /servers | infrastructure:add | Crée un serveur manuel. Corps : name, os, ipAddress (tous obligatoires) · manufacturer · type · location · description. |
| PATCH | /servers/{id} | infrastructure:edit | Mise à 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:delete | Suppression. |
| GET | /servers/{id}/owners | infrastructure:read | Liste les responsables (tableau nu). |
| POST | /servers/{id}/owners | infrastructure:edit | Ajoute un responsable. Corps : { accountId }. |
| DELETE | /servers/{id}/owners/{accountId} | infrastructure:edit | Retire un responsable. |
| GET | /servers/{id}/tags | infrastructure:read | Liste les tags (tableau nu). |
| PUT | /servers/{id}/tags | infrastructure:edit | Définit les tags (ensemble complet). Corps : { tagIds[] }. |
| GET | /servers/{id}/applications | infrastructure:read | Applications liées. |
| POST | /servers/{id}/applications | infrastructure:edit | Lie une application. Corps : { applicationId } (vérifié dans l'espace de travail). |
| DELETE | /servers/{id}/applications/{applicationId} | infrastructure:edit | Délie une application. |
| GET | /servers/{id}/interfaces | infrastructure:read | Interfaces réseau : { ipAddress, primary, network? }. |
| PUT | /servers/{id}/interfaces/{ipAddress} | infrastructure:edit | Ajoute/met à jour une interface ; renvoie la liste des interfaces recalculée. |
| DELETE | /servers/{id}/interfaces/{ipAddress} | infrastructure:delete | Retire une interface. |
| GET | /servers/{id}/network-flows | infrastructure:read | Graphe de flux réseau : { center, sources[], targets[] } avec connections[] par extrémité. |
| GET | /servers/{id}/agent | infrastructure:read | Les informations de l'agent du serveur (404 si aucun). |
| GET | /servers/{id}/schema | infrastructure:read | Le voisinage topologique du serveur. |
| GET | /servers/{id}/metrics | infrastructure:read | Historique de métriques + moyennes. Query : period, system. |
| PUT | /servers/{id}/custom-fields/{fieldId} | infrastructure:edit | Dé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éthode | Chemin | Scope | Description |
|---|
| GET | /networks | infrastructure:read | Paginé. Query : search, limit, offset. Éléments : { id, name, role, ipAddress, subnet, description?, vlanId? }. |
| GET | /networks/{id} | infrastructure:read | Détail : champs du réseau + routers[]{ id, name, type, interfaceAddress? } connectés. |
| POST | /networks | infrastructure:add | Création. Corps : name, role, ipAddress, subnet (tous obligatoires) · description · vlanId. role ∈ local|wireless|storage|vpn|data_center|edge|public|management|dmz|iot|intercommunication ; subnet est en notation CIDR (par exemple /24). |
| PATCH | /networks/{id} | infrastructure:edit | Mise à jour partielle — tous les champs facultatifs. |
| DELETE | /networks/{id} | infrastructure:delete | Suppression. |
| GET | /networks/{id}/routers | infrastructure:read | Routeurs connectés (tableau nu). |
| PUT | /networks/{id}/routers | infrastructure:edit | Définit les routeurs connectés (ensemble complet). Corps : { routerIds[] } — les ids hors de l'espace de travail sont silencieusement ignorés. |
| GET | /networks/{id}/overview | infrastructure:read | Statistiques pool d'IP / pare-feu / serveurs. |
| GET | /networks/{id}/schema | infrastructure:read | Le voisinage topologique du réseau. |
| GET | /infrastructure/schema | network_mapping_diagram:read | Arbre topologique global routeur ↔ réseau ↔ serveur. |
Routeurs
| Méthode | Chemin | Scope | Description |
|---|
| GET | /routers | infrastructure:read | Recherche/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:read | Détail : champs du routeur + criticality?, tags[]{id,name}, networks[]{ id, name, role, interfaceAddress? } connectés, customFields[]. |
| POST | /routers | infrastructure:add | Création. Corps : name, type (les deux obligatoires, type ∈ router|firewall|switch|access_point) · ipAddress · location · description · internetConnection. |
| PATCH | /routers/{id} | infrastructure:edit | Mise à jour partielle — tous les champs facultatifs. |
| DELETE | /routers/{id} | infrastructure:delete | Suppression. |
| GET | /routers/{id}/networks | infrastructure:read | Réseaux connectés (tableau nu). |
| PUT | /routers/{id}/networks | infrastructure:edit | Définit les réseaux connectés (ensemble complet). Corps : { networkIds[] } — les ids étrangers sont ignorés. |
| GET | /routers/{id}/tags | infrastructure:read | Tags (tableau nu). |
| PUT | /routers/{id}/tags | infrastructure:edit | Définit les tags (ensemble complet). Corps : { tagIds[] } — filtré selon le catalogue de l'espace de travail. |
| PUT | /routers/{id}/custom-fields/{fieldId} | infrastructure:edit | Définit la valeur d'un champ personnalisé ({ value }). |
Postes de travail, logiciels et agents
| Méthode | Chemin | Scope | Description |
|---|
| GET | /workstations | infrastructure:read | Paginé ; 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:read | Un poste de travail. |
| GET | /workstations/{id}/installed-programs | infrastructure:read | Programmes installés. Query : search, limit, offset. |
| GET | /workstations/{id}/users | infrastructure:read | Utilisateurs vus sur le poste de travail. |
| GET | /software | infrastructure:read | Inventaire logiciel de l'espace de travail, regroupé par programme. Query : search, limit, offset. |
| GET | /software/{name}/resources | infrastructure:read | Installations d'un programme sur les postes de travail/serveurs. Query : version, type. |
| GET | /agents/deployment-status | agents:read | { deploymentStatistics[], availableVersions[], deployedVersions[], activeAgents[] }. |
| Méthode | Chemin | Scope | Description |
|---|
| GET | /categories | categories:read | Paginé. Éléments : { id, name, appCount? }. |
| POST | /categories | categories:add | Création. Corps : { name } (obligatoire). |
| PATCH | /categories/{id} | categories:edit | Renommage. Corps : { name }. |
| DELETE | /categories/{id} | categories:delete | Suppression. |
| GET | /tags | tags:read | Paginé. Éléments : { id, name, countOfUse }. |
| POST | /tags | tags:add | Création. Corps : { name } (obligatoire). |
| DELETE | /tags/{id} | tags:delete | Suppression. |
Organisation et équipes
| Méthode | Chemin | Scope | Description |
|---|
| GET | /organization | organisation:read | L'arborescence complète de l'organisation : { organization, children[] }. |
| GET | /teams | organisation:read | Paginé. Éléments : { id, name, type, description?, icon?, parentOrganizationId?, createdAt, updatedAt }. |
| GET | /teams/{id} | organisation:read | Une équipe. |
| POST | /teams | organisation:add | Création. Corps : name, parentOrganizationId (les deux obligatoires) · icon. |
| PATCH | /teams/{id} | organisation:edit | Mise à jour : name?, description?, icon? (équipes de type unité métier uniquement). |
| DELETE | /teams/{id} | organisation:delete | Suppression. |
| GET | /teams/{id}/owners | organisation:read | Responsables de l'équipe : { accountId, email, firstName?, lastName? }. |
Personnes — utilisateurs suivis et membres
| Méthode | Chemin | Scope | Description |
|---|
| GET | /users | users:read | Utilisateurs finaux suivis, paginé : { userId, userRealName?, userAccount?, hostname, lastSeen, team?, teamPath?, userExperience }. |
| GET | /users/{id} | users:read | Détail : { userId, userRealName?, userAccount?, hostname, lastSeen, workstationId, health, osName, osVersion }. |
| GET | /users/{id}/experience/summary | users:read | Synthèse d'expérience pour un utilisateur suivi. |
| GET | /users/{id}/experience/all-indicators/graph · /list | users:read | Indicateurs combinés sur ?period=. |
| GET | /users/{id}/experience/errors-incidents/graph · /list | users:read | Erreurs/incidents sur ?period=. |
| GET | /users/{id}/experience/performances/graph · /list | users:read | Performance sur ?period=. |
| GET | /users/{id}/experience/export | users:read | Export par événement ; les colonnes applicationId/applicationName requièrent en plus applications:read. |
| GET | /members | members:read | Membres de l'espace de travail, paginé : { accountId, email, firstName, lastName, role?, pending, createdAt }. |
| GET | /members/{id} | members:read | Un membre. |
| PATCH | /members/{id} | members:edit | Définit le rôle du membre. Corps : { role: uuid } (validé dans l'espace de travail). |
| DELETE | /members/{id} | members:delete | Retire 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éthode | Chemin | Scope | Description |
|---|
| GET | /announcements | announces:read | Paginé. |
| POST | /announcements | announces:add | Création. |
| PATCH | /announcements/{id} | announces:edit | Mise à jour. |
| DELETE | /announcements/{id} | announces:delete | Suppression. |
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éthode | Chemin | Scope | Description |
|---|
| GET | /contracts | contracts:read | Tous les contrats de l'espace de travail, paginé : { id, applicationId, applicationName, nature, startDate, endDate?, paymentFrom, paymentTo?, amountPerMonth, enableProjection, organizationIds[], documentIds[], createdAt, updatedAt }. |
| GET | /contracts/expiring | finance_dashboard:read | Contrats bientôt expirés. Query : limit, teamId. Éléments : { applicationId, applicationName, applicationLogo, type, expiryDate, daysUntilExpiry }. |
| GET | /contracts/cost | finance_dashboard:read | Coû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éthode | Chemin | Scope | Description |
|---|
| GET | /audit-log | audit_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:read | Un événement d'audit (404 si inconnu). |
| GET | /audit-log/actors | audit_log:read | Facette 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éthode | Chemin | Scope | Description |
|---|
| GET | /dashboards/finance | finance_dashboard:read | Vue d'ensemble financière. |
| GET | /dashboards/usage | usage_dashboard:read | Vue d'ensemble des usages. |
| GET | /dashboards/operations | operations_dashboard:read | Vue d'ensemble des opérations. |
| GET | /dashboards/architecture | architecture_dashboard:read | Vue d'ensemble de l'architecture. |
| GET | /dashboards/technology | technology_dashboard:read | Vue d'ensemble technologie / obsolescence. |
| GET | /dashboards/workstations | workstations_dashboard:read | Vue d'ensemble du parc de postes de travail. |
| GET | /dashboards/health | operations_dashboard:read | Graphe de santé quotidien. Query : period. |
| GET | /dashboards/performance | operations_dashboard:read | Répartition de la performance LCP. Query : period. |
| GET | /dashboards/overlap | architecture_dashboard:read | Statistique de recouvrement applicatif. Query : costRange. |
| GET | /dashboards/documentation | architecture_dashboard:read | Statistique de complétude documentaire. |
| GET | /insights/application-health | applications:read | Insights de santé par application, paginé. |
| GET | /insights/most-impacted-apps | operations_dashboard:read | Applications classées par impact des erreurs. Query : period, limit. |
| GET | /insights/worst-performance-apps | operations_dashboard:read | Applications classées par pire LCP. Query : period, limit. |
| GET | /diagrams/flows | flow_mapping_diagram:read | Diagramme des flux applicatifs. Query : teamId répétable. |
| GET | /diagrams/matrices | application_matrix_diagram:read | Diagramme de matrice applicative. Query : teamId répétable. |
| GET | /diagrams/quadrants | application_quadrant_diagram:read | Diagramme de quadrants applicatifs. Query : teamId répétable. |
| GET | /diagrams/life-cycles | application_lifecycle_diagram:read | Diagramme 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.