Todos los endpoints de la API pública de Kabeen, agrupados por área de recursos, con el scope de permiso que requieren y la forma de sus entradas y salidas.
Todas las rutas son relativas a https://{host}/public/v1 (host por defecto: app.kabeen.io). Todos los cuerpos son JSON. Los ids son cadenas UUID; las fechas son cadenas ISO-8601. En las descripciones de cuerpos de petición siguientes, los campos marcados como obligatorio deben estar presentes; el resto de campos son opcionales. Salvo indicación contraria, los endpoints de listado usan el sobre de paginación por offset estándar (?limit=&offset= → { data, pagination }) descrito en Paginación y errores.
Las propias claves de API las gestiona un administrador del espacio de trabajo desde la aplicación Kabeen, no a través de la API pública — consulte Autenticación.
Introspección y espacio de trabajo
| Método | Ruta | Scope | Descripción |
|---|
| GET | /me | cualquier clave válida | Introspecciona la clave presentada: { workspace{id,name}, key{id,name,alias?}, permissions[] }. |
| GET | /workspace | tenant:read | El espacio de trabajo al que está vinculada la clave: { id, name, createdAt, currencyCode, publicLogoUrl?, wsLogoUrl?, supportUrl?, onboarding*, ki*, compliance* }. |
| PATCH | /workspace | tenant:edit | Actualización parcial — name?, currencyCode?, supportUrl?, conmutadores de Kabeen Intelligence (incl. kiDefaultProvider), conmutadores de cumplimiento. El logo queda excluido (solo carga binaria). Devuelve el espacio de trabajo actualizado. |
Aplicaciones
Recurso principal
| Método | Ruta | Scope | Descripción |
|---|
| GET | /applications | applications:read | Búsqueda/filtro/orden, paginado en BD. Consulta: search, categoryId, criticality, hostingType, tag, teamId, sort, direction, limit, offset. Elementos: { id, name, description?, logo, state, criticality?, hostingType, category{id,name}? }. |
| GET | /applications/{id} | applications:read | Detalle enriquecido — vea más abajo. |
| POST | /applications | applications:add | Crear. Cuerpo: name (obligatorio), description, categoryId (uuid), hostingType, accessUrl, iconUrl, organizationIds (uuid[]). Devuelve { id, name, description?, criticality?, logo }. |
| PATCH | /applications/{id} | applications:edit | Actualización parcial — solo se modifican los campos presentes: name, description, accessUrl, iconUrl, state, criticality, hostingType, support{phone,email,url}. Devuelve el detalle actualizado. |
| PATCH | /applications/{id}/state | applications:edit | Alias de conveniencia solo para el estado. Cuerpo: state (obligatorio, ACTIVE|ARCHIVED|DISCOVERED|REJECTED). |
| PATCH | /applications/{id}/category | applications:edit | Asigna o vacía la categoría. Cuerpo: { categoryId? } (validado en el espacio de trabajo). Devuelve el detalle actualizado. |
| PATCH | /applications/{id}/vendor | applications:edit | Asigna o vacía el proveedor. Cuerpo: { vendorId? }. Devuelve el detalle actualizado. |
| PATCH | /applications/{id}/authentication | applications:edit | Parcial — type?, primaryFactor?, secondaryFactor?, protocol?. Devuelve el detalle actualizado. |
| PATCH | /applications/{id}/usage-settings | applications:edit | Parcial — usageActivated?, desktopApplicationNames?. Devuelve el detalle actualizado. |
| DELETE | /applications/{id} | applications:delete | Elimina, en cascada sobre flujos, documentos, valores de campos personalizados y el icono. |
Detalle de aplicación (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 }.
Cada campo personalizado es { id, name, type, description?, value } donde type ∈ text|select|multi_select|date y value es polimórfico según el tipo: cadena (text), fecha-hora ISO (date), {id,value} (select), [{id,value}] (multi_select), o null cuando no está definido.
Sub-recursos
| Método | Ruta | Scope | Descripción |
|---|
| GET | /applications/{id}/usage | applications:read | Métrica de uso: { value?, range }. |
| GET | /applications/{id}/flows | applications:read | Flujos de datos, paginados. Elementos: { id, comment?, protocol?, format?, exchangeFrequency?, portType?, port?, encrypted?, source{id,name}, target{id,name}, dataCount, documentCount, middlewareCount }. |
| POST | /applications/{id}/flows | applications:edit | Crea un flujo. Cuerpo: { sourceId?, targetId?, dataIds[], comment?, protocol?, format?, exchangeFrequency?, portType?, port?, encrypted?, documentIds[], middlewares[{applicationId, position}] } — el origen o el destino debe ser igual a la aplicación de la ruta (400 en caso contrario). |
| PATCH | /applications/{id}/flows/{flowId} | applications:edit | Actualización parcial del flujo — solo se aplican los campos proporcionados. |
| DELETE | /applications/{id}/flows/{flowId} | applications:delete | Elimina un flujo. |
| GET | /applications/{id}/technologies | applications:read | Paginado. Elementos: { id, name, type?, versionId?, version? } (más información de EOL/LTS/obsolescencia). |
| PUT | /applications/{id}/technologies | applications:edit | Define las tecnologías. |
| DELETE | /applications/{id}/technologies/{technologyId} | applications:edit | Desvincula una tecnología. |
| GET | /applications/{id}/contracts | applications:read | Paginado. Elementos: { id, nature, startDate, endDate?, amountPerMonth, enableProjection }. |
| POST | /applications/{id}/contracts | contracts:add | Crea un contrato en la aplicación. |
| PATCH | /applications/{id}/contracts/{contractId} | contracts:edit | Actualiza un contrato. |
| DELETE | /applications/{id}/contracts/{contractId} | contracts:delete | Elimina un contrato. |
| GET | /applications/{id}/documents | applications:read | Documentos respaldados por URL (sin carga binaria). Elementos: { id, documentType, title, description?, published, url, createdAt } con documentType ∈ data_policy|security_policy|technical_documents. |
| POST | /applications/{id}/documents | applications:edit | Crea un documento. |
| PATCH | /applications/{id}/documents/{documentId} | applications:edit | Actualiza un documento (url es inmutable). |
| DELETE | /applications/{id}/documents/{documentId} | applications:delete | Elimina un documento. |
| GET | /applications/{id}/owners | applications:read | Lista los responsables (array sin sobre). |
| POST | /applications/{id}/owners | applications:edit | Añade un responsable. Cuerpo: { accountId }. |
| DELETE | /applications/{id}/owners/{accountId} | applications:edit | Retira un responsable. |
| GET | /applications/{id}/tags | applications:read | Lista las etiquetas (array sin sobre). |
| PUT | /applications/{id}/tags | applications:edit | Define las etiquetas (conjunto completo). Cuerpo: { tagIds[] }. |
| GET | /applications/{id}/teams | applications:read | Lista los equipos/organizaciones (array sin sobre). |
| PUT | /applications/{id}/teams | applications:edit | Define los equipos (conjunto completo). |
| GET | /applications/{id}/lifecycle | applications:read | Fechas de hitos. |
| PUT | /applications/{id}/lifecycle | applications:edit | Define las fechas de hitos (phaseInDate, deployedDate, phaseOutDate, retiredDate). |
| GET | /applications/{id}/comments | applications:read | Lista los comentarios (sin autor, array sin sobre). |
| POST | /applications/{id}/comments | applications:comment | Añade un comentario. |
| DELETE | /applications/{id}/comments/{commentId} | applications:comment | Elimina un comentario. |
| GET | /applications/{id}/data | data:read | Objetos de datos vinculados a la aplicación, con roles de acceso: { data, roles[] }. |
| PUT | /applications/{id}/custom-fields/{fieldId} | applications:edit | Define el valor de un campo personalizado. Cuerpo: { value } — cadena para text/date, id de opción para select, array de ids de opción para multi_select, null lo vacía. Verificado por tipo. |
| GET | /vendors | applications:read | Proveedores del espacio de trabajo + compartidos, paginado: { id, name, url?, description? }. |
Métricas de experiencia
Seis familias de lectura respaldadas por la telemetría de uso. Los endpoints de gráfico/lista aceptan ?period= (past_1_day | past_1_month | past_1_year, por defecto past_1_month = últimos 30 días; valores desconocidos → 400) y devuelven 404 sobre una aplicación fuera del espacio de trabajo. Las calificaciones van en minúsculas (good | needs_improvement | poor).
| Método | Ruta | Scope | Descripción |
|---|
| GET | /applications/{id}/performance/graph | applications:read | LCP diario: { dailyPerformance[{date, lcpP75?, lcpMin?, lcpMax?, lcpAvg?, lcpRating?}] }. |
| GET | /applications/{id}/performance/list | applications:read | LCP por equipo: { teams[{teamId, teamName, teamPath?, teamIcon?, lcpP75?, lcpRating?}] }. |
| GET | /applications/{id}/errors-incidents/graph | applications:read | Incidentes diarios: { dailyIncidents[{date, incidentCount, errors[{errorCode, count}]}] }. |
| GET | /applications/{id}/errors-incidents/list | applications:read | Errores por equipo, con detalle por ruta: { teams[{…, errorCount, errorDetails[{errorCode, count, paths[{path, count}]}]}] }. |
| GET | /applications/{id}/satisfaction/graph | applications:read | Satisfacción diaria: { dailySatisfaction[{date, averageSatisfaction?, votersCount}] }. |
| GET | /applications/{id}/satisfaction/list | applications:read | Satisfacción por equipo. |
| GET | /applications/{id}/experience/summary | applications:read | Consolidado fijo de 30 días: { userExperience, errorCount, performanceRating?, hasWebUsers }. |
| GET | /applications/{id}/experience/all-indicators/graph | applications:read | Gráfico diario combinado UX/errores/LCP sobre ?period=. |
| GET | /applications/{id}/experience/all-indicators/list | applications:read | Indicadores combinados por equipo sobre ?period=. |
| GET | /applications/{id}/experience/export | applications:read | Filas de errores + LCP por evento en 30 días; userId/userName solo se incluyen con users:read y el seguimiento de usuarios activado. |
Capacidades funcionales
| Método | Ruta | Scope | Descripción |
|---|
| GET | /applications/{id}/functional-capacities | applications:read | Capacidades vinculadas a la aplicación (estado en minúsculas). |
| PUT | /applications/{id}/functional-capacities | applications:edit | Define las capacidades de la aplicación (los ids de capacidad se validan contra la taxonomía del espacio de trabajo). |
| DELETE | /applications/{id}/functional-capacities/{functionalCapacityId} | applications:delete | Retira una capacidad de la aplicación. |
| POST | /applications/{id}/functional-capacities/{functionalCapacityId}/accept | applications:edit | Acepta una capacidad descubierta. |
| POST | /applications/{id}/functional-capacities/{functionalCapacityId}/reject | applications:edit | Rechaza una capacidad descubierta. |
| GET | /functional-capacities | applications:read | La taxonomía de capacidades del espacio de trabajo. |
| POST | /functional-capacities | applications:add | Crea una capacidad. |
| PATCH | /functional-capacities/{id} | applications:edit | Renombra una capacidad hoja. Cuerpo: { name }. |
| DELETE | /functional-capacities/{id} | applications:delete | Elimina una capacidad hoja. |
| GET | /functional-capacities/diagram | capacity_map_diagram:read | Árbol del mapa de capacidades (grupo → capacidades → aplicaciones). |
| POST | /functional-capacities/groups | applications:add | Crea un grupo de capacidades. Cuerpo: { name, icon } (ambos obligatorios). |
| PATCH | /functional-capacities/groups/{groupId} | applications:edit | Actualización parcial: { name?, icon? }. |
| DELETE | /functional-capacities/groups/{groupId} | applications:delete | Elimina un grupo de capacidades. |
Definiciones de campos personalizados
Las definiciones de campos personalizados son el esquema a nivel del espacio de trabajo (distinto del valor de un campo en un recurso, que se define con los endpoints PUT .../custom-fields/{fieldId} de cada recurso). Existe un conjunto CRUD de definiciones por tipo de recurso destino — aplicaciones, servidores, datos, routers:
| Método | Ruta | Scope |
|---|
| GET | /applications/custom-fields · /servers/custom-fields · /data/custom-fields · /routers/custom-fields | tenant:read (paginado) |
| POST | mismas rutas | tenant:edit |
| PATCH | mismas rutas + /{id} | tenant:edit |
| DELETE | mismas rutas + /{id} | tenant:edit |
Cuerpo de creación: name (obligatorio) · type (obligatorio, text|select|multi_select|date) · description · icon · options ([{value, position}], obligatorio para select/multi_select). Respuesta: { id, name, type, description?, options[{id,value}] }. Un PATCH/DELETE solo afecta a las definiciones del tipo destino de la ruta (404 en caso contrario).
Catálogo y aplicaciones descubiertas
| Método | Ruta | Scope | Descripción |
|---|
| GET | /application-catalog | applications:read | Busca en el catálogo de referencia global. Consulta: page (base 1), search, categoryId, lang. Respuesta: { data[{id,name,vendor,description?,logo,categoryId?,type?}], total, page } — paginación por número de página, tamaño de página fijo. |
| GET | /application-catalog/{id} | applications:read | Una entrada del catálogo (datos de referencia globales; 404 con id desconocido). |
| GET | /discovered-applications | applications:read | Aplicaciones detectadas por el autodescubrimiento, paginado: { id, name, icon, state, description?, urls[], desktopExeNames[], usage?, deltaUsage?, lastUpdate, organizations[] }. |
Objetos de datos
| Método | Ruta | Scope | Descripción |
|---|
| GET | /data | data:read | Listado paginado. |
| GET | /data/{id} | data:read | Un objeto de datos. |
| POST | /data | data:add | Crear. |
| PATCH | /data/{id} | data:edit | Actualizar (reemplazo completo del cuerpo de upsert). |
| DELETE | /data/{id} | data:delete | Eliminar. |
| PUT | /data/{id}/applications | data:edit | Vincula/desvincula aplicaciones. Cuerpo: { added?: uuid[], removed?: uuid[] }. |
| GET | /data/{id}/applications | data:read | Aplicaciones vinculadas con roles de acceso: { applicationId, applicationName, roles[] }. |
| PUT | /data/{id}/applications/{applicationId}/roles | data:edit | Define los roles de acceso de un vínculo aplicación↔datos. Cuerpo: { roles[] }. Devuelve 204. |
| GET | /data/{id}/responsibles | data:read | Responsables de los datos: { accountId, email, firstName?, lastName? }. |
| PUT | /data/{id}/custom-fields/{fieldId} | data:edit | Define el valor de un campo personalizado ({ value }). |
Cuerpo de upsert (POST y PATCH — reemplazo completo): name (obligatorio) · types (string[]) · privacy · criticality · description · categoryId · categoryName (id + nombre juntos para definir una categoría).
Respuesta: { id, name, types[], privacy?, criticality?, description?, updatedAt?, category{id,name}?, customFields[] }.
Servidores
| Método | Ruta | Scope | Descripción |
|---|
| GET | /servers | infrastructure:read | Búsqueda/filtro/orden, paginado en BD. Consulta: search, type, location, criticality, os, tag, applicationId, sort, direction, limit, offset. Elementos: { id, name, automatic, os, system, type?, location?, criticality?, dataCollectionStatus?, lastCheckTime? }. |
| GET | /servers/{id} | infrastructure:read | Detalle enriquecido — vea más abajo. |
| POST | /servers | infrastructure:add | Crea un servidor manual. Cuerpo: name, os, ipAddress (todos obligatorios) · manufacturer · type · location · description. |
| PATCH | /servers/{id} | infrastructure:edit | Actualización parcial — todos los campos opcionales: name/os/manufacturer (solo servidores manuales) · type/location/description (todos los servidores). En un servidor reportado por agente (automatic: true), escribir name, os o manufacturer se rechaza con 422 en lugar de ignorarse silenciosamente. |
| DELETE | /servers/{id} | infrastructure:delete | Eliminar. |
| GET | /servers/{id}/owners | infrastructure:read | Lista los responsables (array sin sobre). |
| POST | /servers/{id}/owners | infrastructure:edit | Añade un responsable. Cuerpo: { accountId }. |
| DELETE | /servers/{id}/owners/{accountId} | infrastructure:edit | Retira un responsable. |
| GET | /servers/{id}/tags | infrastructure:read | Lista las etiquetas (array sin sobre). |
| PUT | /servers/{id}/tags | infrastructure:edit | Define las etiquetas (conjunto completo). Cuerpo: { tagIds[] }. |
| GET | /servers/{id}/applications | infrastructure:read | Aplicaciones vinculadas. |
| POST | /servers/{id}/applications | infrastructure:edit | Vincula una aplicación. Cuerpo: { applicationId } (verificado en el espacio de trabajo). |
| DELETE | /servers/{id}/applications/{applicationId} | infrastructure:edit | Desvincula una aplicación. |
| GET | /servers/{id}/interfaces | infrastructure:read | Interfaces de red: { ipAddress, primary, network? }. |
| PUT | /servers/{id}/interfaces/{ipAddress} | infrastructure:edit | Añade/actualiza una interfaz; devuelve las interfaces re-listadas. |
| DELETE | /servers/{id}/interfaces/{ipAddress} | infrastructure:delete | Retira una interfaz. |
| GET | /servers/{id}/network-flows | infrastructure:read | Grafo de flujos de red: { center, sources[], targets[] } con connections[] por extremo. |
| GET | /servers/{id}/agent | infrastructure:read | La información del agente del servidor (404 si no hay). |
| GET | /servers/{id}/schema | infrastructure:read | El vecindario topológico del servidor. |
| GET | /servers/{id}/metrics | infrastructure:read | Historial de métricas + promedios. Consulta: period, system. |
| PUT | /servers/{id}/custom-fields/{fieldId} | infrastructure:edit | Define el valor de un campo personalizado ({ value }). |
Detalle de servidor: { 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[] }.
Redes
| Método | Ruta | Scope | Descripción |
|---|
| GET | /networks | infrastructure:read | Paginado. Consulta: search, limit, offset. Elementos: { id, name, role, ipAddress, subnet, description?, vlanId? }. |
| GET | /networks/{id} | infrastructure:read | Detalle: campos de la red + routers[]{ id, name, type, interfaceAddress? } conectados. |
| POST | /networks | infrastructure:add | Crear. Cuerpo: name, role, ipAddress, subnet (todos obligatorios) · description · vlanId. role ∈ local|wireless|storage|vpn|data_center|edge|public|management|dmz|iot|intercommunication; subnet en notación CIDR (p. ej. /24). |
| PATCH | /networks/{id} | infrastructure:edit | Actualización parcial — todos los campos opcionales. |
| DELETE | /networks/{id} | infrastructure:delete | Eliminar. |
| GET | /networks/{id}/routers | infrastructure:read | Routers conectados (array sin sobre). |
| PUT | /networks/{id}/routers | infrastructure:edit | Define los routers conectados (conjunto completo). Cuerpo: { routerIds[] } — los ids ajenos al espacio de trabajo se ignoran silenciosamente. |
| GET | /networks/{id}/overview | infrastructure:read | Estadísticas de pool de IP / firewall / servidores. |
| GET | /networks/{id}/schema | infrastructure:read | El vecindario topológico de la red. |
| GET | /infrastructure/schema | network_mapping_diagram:read | Árbol topológico global router ↔ red ↔ servidor. |
Routers
| Método | Ruta | Scope | Descripción |
|---|
| GET | /routers | infrastructure:read | Búsqueda/filtro/orden, paginado en BD. Consulta: search, type, location, criticality, sort, direction, limit, offset. Elementos: { id, name, type, ipAddress?, location?, internetConnection?, criticality? }. |
| GET | /routers/{id} | infrastructure:read | Detalle: campos del router + criticality?, tags[]{id,name}, networks[]{ id, name, role, interfaceAddress? } conectadas, customFields[]. |
| POST | /routers | infrastructure:add | Crear. Cuerpo: name, type (ambos obligatorios, type ∈ router|firewall|switch|access_point) · ipAddress · location · description · internetConnection. |
| PATCH | /routers/{id} | infrastructure:edit | Actualización parcial — todos los campos opcionales. |
| DELETE | /routers/{id} | infrastructure:delete | Eliminar. |
| GET | /routers/{id}/networks | infrastructure:read | Redes conectadas (array sin sobre). |
| PUT | /routers/{id}/networks | infrastructure:edit | Define las redes conectadas (conjunto completo). Cuerpo: { networkIds[] } — los ids ajenos se ignoran. |
| GET | /routers/{id}/tags | infrastructure:read | Etiquetas (array sin sobre). |
| PUT | /routers/{id}/tags | infrastructure:edit | Define las etiquetas (conjunto completo). Cuerpo: { tagIds[] } — filtradas al catálogo del espacio de trabajo. |
| PUT | /routers/{id}/custom-fields/{fieldId} | infrastructure:edit | Define el valor de un campo personalizado ({ value }). |
Puestos de trabajo, software y agentes
| Método | Ruta | Scope | Descripción |
|---|
| GET | /workstations | infrastructure:read | Paginado; filtro ?teamId= repetible. Los elementos incluyen hostname, salud, información del usuario, indicador de portátil, hardware, SO, uso de CPU/RAM/almacenamiento, uptime, estado de recolección e indicadores de cumplimiento. |
| GET | /workstations/{id} | infrastructure:read | Un puesto de trabajo. |
| GET | /workstations/{id}/installed-programs | infrastructure:read | Programas instalados. Consulta: search, limit, offset. |
| GET | /workstations/{id}/users | infrastructure:read | Usuarios vistos en el puesto de trabajo. |
| GET | /software | infrastructure:read | Inventario de software del espacio de trabajo, agrupado por programa. Consulta: search, limit, offset. |
| GET | /software/{name}/resources | infrastructure:read | Instalaciones de un programa en puestos de trabajo/servidores. Consulta: version, type. |
| GET | /agents/deployment-status | agents:read | { deploymentStatistics[], availableVersions[], deployedVersions[], activeAgents[] }. |
Taxonomía — categorías y etiquetas
| Método | Ruta | Scope | Descripción |
|---|
| GET | /categories | categories:read | Paginado. Elementos: { id, name, appCount? }. |
| POST | /categories | categories:add | Crear. Cuerpo: { name } (obligatorio). |
| PATCH | /categories/{id} | categories:edit | Renombrar. Cuerpo: { name }. |
| DELETE | /categories/{id} | categories:delete | Eliminar. |
| GET | /tags | tags:read | Paginado. Elementos: { id, name, countOfUse }. |
| POST | /tags | tags:add | Crear. Cuerpo: { name } (obligatorio). |
| DELETE | /tags/{id} | tags:delete | Eliminar. |
Organización y equipos
| Método | Ruta | Scope | Descripción |
|---|
| GET | /organization | organisation:read | El árbol completo de la organización: { organization, children[] }. |
| GET | /teams | organisation:read | Paginado. Elementos: { id, name, type, description?, icon?, parentOrganizationId?, createdAt, updatedAt }. |
| GET | /teams/{id} | organisation:read | Un equipo. |
| POST | /teams | organisation:add | Crear. Cuerpo: name, parentOrganizationId (ambos obligatorios) · icon. |
| PATCH | /teams/{id} | organisation:edit | Actualizar: name?, description?, icon? (solo equipos de tipo unidad de negocio). |
| DELETE | /teams/{id} | organisation:delete | Eliminar. |
| GET | /teams/{id}/owners | organisation:read | Responsables del equipo: { accountId, email, firstName?, lastName? }. |
Personas — usuarios rastreados y miembros
| Método | Ruta | Scope | Descripción |
|---|
| GET | /users | users:read | Usuarios finales rastreados, paginado: { userId, userRealName?, userAccount?, hostname, lastSeen, team?, teamPath?, userExperience }. |
| GET | /users/{id} | users:read | Detalle: { userId, userRealName?, userAccount?, hostname, lastSeen, workstationId, health, osName, osVersion }. |
| GET | /users/{id}/experience/summary | users:read | Consolidado de experiencia de un usuario rastreado. |
| GET | /users/{id}/experience/all-indicators/graph · /list | users:read | Indicadores combinados sobre ?period=. |
| GET | /users/{id}/experience/errors-incidents/graph · /list | users:read | Errores/incidentes sobre ?period=. |
| GET | /users/{id}/experience/performances/graph · /list | users:read | Rendimiento sobre ?period=. |
| GET | /users/{id}/experience/export | users:read | Exportación por evento; las columnas applicationId/applicationName requieren además applications:read. |
| GET | /members | members:read | Miembros del espacio de trabajo, paginado: { accountId, email, firstName, lastName, role?, pending, createdAt }. |
| GET | /members/{id} | members:read | Un miembro. |
| PATCH | /members/{id} | members:edit | Define el rol del miembro. Cuerpo: { role: uuid } (validado en el espacio de trabajo). |
| DELETE | /members/{id} | members:delete | Retira al miembro del espacio de trabajo. |
Los usuarios rastreados se derivan de la telemetría de uso: son de solo lectura (sin crear/actualizar/eliminar). La invitación de miembros no está disponible a través de la API pública.
Anuncios
| Método | Ruta | Scope | Descripción |
|---|
| GET | /announcements | announces:read | Paginado. |
| POST | /announcements | announces:add | Crear. |
| PATCH | /announcements/{id} | announces:edit | Actualizar. |
| DELETE | /announcements/{id} | announces:delete | Eliminar. |
Cuerpo de creación/actualización: title, content, type, startDate (ISO) — todos obligatorios · teams (uuid[]) · app (uuid) · endDate (ISO).
Respuesta: { id, title, content, type, teams[]?, app?, startDate, endDate?, createdAt, updatedAt, seenCount, likeCount, dislikeCount, likeRatio? }.
Contratos
| Método | Ruta | Scope | Descripción |
|---|
| GET | /contracts | contracts:read | Todos los contratos del espacio de trabajo, paginado: { id, applicationId, applicationName, nature, startDate, endDate?, paymentFrom, paymentTo?, amountPerMonth, enableProjection, organizationIds[], documentIds[], createdAt, updatedAt }. |
| GET | /contracts/expiring | finance_dashboard:read | Contratos próximos a expirar. Consulta: limit, teamId. Elementos: { applicationId, applicationName, applicationLogo, type, expiryDate, daysUntilExpiry }. |
| GET | /contracts/cost | finance_dashboard:read | Coste total de los contratos del espacio de trabajo. Consulta: range. Respuesta: { value?, queryType }. |
Las escrituras de contratos están ligadas a la aplicación — vea POST/PATCH/DELETE bajo /applications/{id}/contracts más arriba.
Registro de auditoría
| Método | Ruta | Scope | Descripción |
|---|
| GET | /audit-log | audit_log:read | Eventos de auditoría del espacio de trabajo, del más reciente al más antiguo, paginado por cursor: { data[], total, nextCursor?, hasMore }. Consulta: from/to (instantes ISO), actorId, category, actions (repetible), resourceType, resourceId, query (texto libre), limit (máx. 200), cursor. |
| GET | /audit-log/{id} | audit_log:read | Un evento de auditoría (404 si es desconocido). |
| GET | /audit-log/actors | audit_log:read | Faceta de actores distintos: { id, displayName }. |
Un evento de auditoría tiene la forma { id, timestamp, intent, action, category, actor{type,id,displayName}, resourceType, resourceId, resourceName, correlationId, message? }. Las llamadas a la API pública aparecen con la clave de API como actor de tipo service.
Cuadros de mando, insights y diagramas
Cada cuadro de mando devuelve un objeto de estadísticas agregadas dedicado; la mayoría acepta un parámetro de consulta range o period.
| Método | Ruta | Scope | Descripción |
|---|
| GET | /dashboards/finance | finance_dashboard:read | Visión general financiera. |
| GET | /dashboards/usage | usage_dashboard:read | Visión general de uso. |
| GET | /dashboards/operations | operations_dashboard:read | Visión general de operaciones. |
| GET | /dashboards/architecture | architecture_dashboard:read | Visión general de arquitectura. |
| GET | /dashboards/technology | technology_dashboard:read | Visión general de tecnología / obsolescencia. |
| GET | /dashboards/workstations | workstations_dashboard:read | Visión general del parque de puestos de trabajo. |
| GET | /dashboards/health | operations_dashboard:read | Gráfico diario de salud. Consulta: period. |
| GET | /dashboards/performance | operations_dashboard:read | Distribución del rendimiento LCP. Consulta: period. |
| GET | /dashboards/overlap | architecture_dashboard:read | Estadística de solapamiento de aplicaciones. Consulta: costRange. |
| GET | /dashboards/documentation | architecture_dashboard:read | Estadística de completitud de la documentación. |
| GET | /insights/application-health | applications:read | Insights de salud por aplicación, paginado. |
| GET | /insights/most-impacted-apps | operations_dashboard:read | Aplicaciones clasificadas por impacto de errores. Consulta: period, limit. |
| GET | /insights/worst-performance-apps | operations_dashboard:read | Aplicaciones clasificadas por peor LCP. Consulta: period, limit. |
| GET | /diagrams/flows | flow_mapping_diagram:read | Diagrama de flujos de aplicaciones. Consulta: teamId repetible. |
| GET | /diagrams/matrices | application_matrix_diagram:read | Diagrama de matriz de aplicaciones. Consulta: teamId repetible. |
| GET | /diagrams/quadrants | application_quadrant_diagram:read | Diagrama de cuadrantes de aplicaciones. Consulta: teamId repetible. |
| GET | /diagrams/life-cycles | application_lifecycle_diagram:read | Diagrama de ciclo de vida de aplicaciones. Consulta: teamId repetible. |
Los endpoints de diagramas devuelven las mismas formas de nodos que usan los diagramas de arquitectura del producto.
No disponible en esta versión
- Webhooks / push de eventos — la API funciona solo por sondeo. Consulte Paginación y errores para los patrones de sondeo recomendados.
- Limitación de tasa — el estado
429 está reservado por el contrato de errores, pero todavía no se aplica limitación de tasa por clave.
- Invitación de miembros y escrituras sobre usuarios rastreados.
- Cargas binarias — los documentos de aplicación están respaldados por URL; los logos del espacio de trabajo y de las aplicaciones no pueden subirse a través de la API.