description:"Referencia completa de la API REST. Endpoints de herramientas, procesamiento por lotes, pipelines, biblioteca de archivos, autenticación, equipos y operaciones de administración."
La documentación interactiva de la API con ejemplos de peticiones y respuestas está disponible en [http://localhost:1349/api/docs](http://localhost:1349/api/docs).
Cuando MFA está habilitado para un usuario, `POST /api/auth/login` devuelve `{"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false}` en lugar de un token de sesión. Envía ese `mfaToken` junto con un código TOTP o de recuperación a `/api/auth/mfa/complete`.
### Permisos {#permissions}
| Permiso | Admin | Usuario |
|-----------|:-----:|:----:|
| Usar herramientas | ✓ | ✓ |
| Archivos/pipelines/claves de API propios | ✓ | ✓ |
| Ver archivos/pipelines/claves de todos los usuarios | ✓ | - |
| Escribir ajustes | ✓ | - |
| Gestionar usuarios y equipos | ✓ | - |
| Gestionar la marca | ✓ | - |
## Comprobación de estado {#health-check}
| Método | Ruta | Acceso | Descripción |
|--------|------|--------|-------------|
| `GET` | `/api/v1/health` | Público | Comprobación básica de estado. Devuelve `{"status":"healthy","version":"..."}` con 200, o `{"status":"unhealthy"}` con 503 si la base de datos no es accesible. |
| `GET` | `/api/v1/readyz` | Público | Sonda de disponibilidad. Comprueba PostgreSQL, Redis, el espacio en disco y S3 cuando está configurado. Devuelve 503 cuando la instancia no debería recibir tráfico. |
| `GET` | `/api/v1/admin/health` | Admin (`system:health`) | Diagnóstico detallado que incluye tiempo de actividad, modo de almacenamiento, estado de la base de datos, estado de la cola y disponibilidad de GPU. |
## Uso de herramientas {#using-tools}
Cada herramienta sigue el mismo patrón:
```bash
# Single file
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId> \
-H "Authorization: Bearer <token>"\
-F "file=@input.jpg"\
-F 'settings={"width":800,"height":600}'
# Batch (returns ZIP)
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId>/batch \
-H "Authorization: Bearer <token>"\
-F "files=@a.jpg"\
-F "files=@b.jpg"\
-F 'settings={...}'
```
`<section>` es uno de `image`, `video`, `audio`, `pdf` o `files`.
- La subida es `multipart/form-data`.
-`settings` es una cadena JSON con opciones específicas de la herramienta.
-`clientJobId` es un campo de formulario opcional para la correlación de progreso proporcionada por quien llama.
-`fileId` es un campo de formulario opcional que referencia un elemento existente de la biblioteca de archivos. Cuando está presente, la salida procesada se guarda como una nueva versión y la respuesta incluye `savedFileId`.
- **Las herramientas rápidas** normalmente devuelven 200 JSON: `{"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}`. Obtén el archivo procesado desde `downloadUrl`.
- **Cualquier herramienta en cola** puede devolver 202 JSON si es de larga duración o supera la ventana de espera síncrona: `{"jobId":"...","async":true}`. Conéctate a SSE para el progreso y descarga cuando termine (consulta [Seguimiento del progreso](#progress-tracking)).
- **Las rutas por lotes** devuelven un archivo ZIP transmitido directamente (con la cabecera `X-Job-Id`) para las herramientas registradas en el registro genérico por lotes.
## Referencia de herramientas {#tools-reference}
### Preajustes de conversión {#conversion-presets}
El catálogo compartido incluye 83 endpoints de preajustes de conversión dedicados, como `jpg-to-png`, `mov-to-mp4`, `m4a-to-mp3`, `pdf-to-jpg` y `excel-to-csv`. Los preajustes son rutas de herramienta de primera clase:
`POST /api/v1/tools/<section>/<presetId>`
Cada preajuste fija el formato de salida y delega en una herramienta base como `convert`, `convert-video`, `extract-audio`, `convert-audio`, `image-to-pdf`, `pdf-to-image`, `svg-to-raster` o `convert-spreadsheet`. Consulta [Preajustes de conversión](/es/tools/conversion-presets) para ver la tabla de rutas completa y los ajustes opcionales.
### Esenciales {#essentials}
| ID de herramienta | Nombre | Ajustes clave |
|---------|------|-------------|
| `resize` | Redimensionar | `width`, `height`, `fit` (cover/contain/fill/inside/outside), `percentage`, `withoutEnlargement`, más 23 preajustes de redes sociales |
Todas las herramientas de IA se ejecutan en tu hardware: CPU por defecto, o NVIDIA CUDA cuando hay una GPU NVIDIA compatible disponible. La aceleración de iGPU Intel/AMD mediante VA-API, Quick Sync u OpenCL no es compatible hoy en día para la inferencia de IA. No se necesita internet.
| ID de herramienta | Nombre | Modelo de IA | Ajustes clave |
| `colorize` | Colorización con IA | DDColor | `intensity`, `model` |
| `noise-removal` | Eliminación de ruido | Reducción de ruido por niveles | `tier` (quick/balanced/quality/maximum), `strength`, `detailPreservation`, `colorNoise`, `format`, `quality` |
| `red-eye-removal` | Eliminación de ojos rojos | Puntos de referencia faciales + análisis de color | `sensitivity`, `strength` |
| `restore-photo` | Restauración de fotos | Pipeline de varios pasos | `mode` (auto/light/heavy), `scratchRemoval`, `faceEnhancement`, `fidelity`, `denoise`, `denoiseStrength`, `colorize` |
| `passport-photo` | Foto de pasaporte | Puntos de referencia de MediaPipe | Flujo en dos fases. El análisis usa multipart `file`; la generación usa JSON con `countryCode`, `bgColor`, `printLayout` (none/4x6/a4), puntos de referencia y dimensiones de la imagen |
| `content-aware-resize` | Redimensionado con reconocimiento de contenido | Seam carving (caire) | `width`, `height`, `protectFaces`, `blurRadius`, `sobelThreshold`, `square` |
| `compose` | Composición de imagen | `x`, `y`, `opacity`, `blend` - el segundo archivo se superpone encima |
| `meme-generator` | Generador de memes | `templateId`, `textLayout` (top-bottom/top-only/bottom-only/center/side-by-side), `textBoxes` ([{id, text}]), `fontFamily` (anton/arial-black/comic-sans/montserrat/bebas-neue/permanent-marker/roboto), `fontSize`, `textColor`, `strokeColor`, `textAlign`, `allCaps`. Admite el modo plantilla (cuerpo JSON con `templateId`) o el modo de imagen personalizada (multipart con archivo). |
| `extract-zip` | Extraer ZIP | - (protegido contra bombas) |
### HTML a imagen {#html-to-image}
Captura una página web como imagen. A diferencia de otras herramientas, este endpoint acepta `application/json` en lugar de datos de formulario multipart (no hace falta subir archivos).
Algunas herramientas exponen endpoints adicionales más allá del estándar `POST /api/v1/tools/<section>/<toolId>`:
| Método | Ruta | Descripción |
|--------|------|-------------|
| `GET` | `/api/v1/tools/popular` | Devuelve los ID de las herramientas populares, recurriendo a una lista predeterminada curada cuando los datos de uso son escasos |
| `POST` | `/api/v1/tools/image/remove-background/effects` | Aplica efectos de fondo (color/degradado/desenfoque/sombra) sin volver a ejecutar la IA. Usa la máscara en caché de la eliminación inicial. |
| `POST` | `/api/v1/tools/image/edit-metadata/inspect` | Leer los metadatos EXIF/IPTC/XMP existentes de una imagen |
| `POST` | `/api/v1/tools/image/strip-metadata/inspect` | Inspeccionar los campos de metadatos antes de eliminarlos |
| `POST` | `/api/v1/tools/image/passport-photo/analyze` | Fase 1: detección de rostros con IA + eliminación de fondo. Devuelve los puntos de referencia faciales y los datos en caché. |
| `POST` | `/api/v1/tools/image/passport-photo/generate` | Fase 2: recortar, redimensionar y crear mosaicos usando el análisis en caché. Sin volver a ejecutar la IA. |
| `POST` | `/api/v1/tools/image/gif-tools/info` | Obtener metadatos del GIF (número de fotogramas, dimensiones, duración) |
| `POST` | `/api/v1/tools/pdf/pdf-to-image/info` | Obtener metadatos del PDF (número de páginas, dimensiones) |
| `POST` | `/api/v1/tools/pdf/pdf-to-image/preview` | Generar una vista previa de una página específica del PDF |
| `POST` | `/api/v1/tools/pdf/pdf-to-jpg/info` | Obtener metadatos del PDF para el preajuste JPG dedicado |
| `POST` | `/api/v1/tools/pdf/pdf-to-jpg/preview` | Generar una vista previa de página de PDF con el preajuste JPG |
| `POST` | `/api/v1/tools/pdf/pdf-to-png/info` | Obtener metadatos del PDF para el preajuste PNG dedicado |
| `POST` | `/api/v1/tools/pdf/pdf-to-png/preview` | Generar una vista previa de página de PDF con el preajuste PNG |
| `POST` | `/api/v1/tools/pdf/pdf-to-tiff/info` | Obtener metadatos del PDF para el preajuste TIFF dedicado |
| `POST` | `/api/v1/tools/pdf/pdf-to-tiff/preview` | Generar una vista previa de página de PDF con el preajuste TIFF |
| `POST` | `/api/v1/tools/image/svg-to-raster/batch` | Convertir por lotes varios SVG a ráster |
| `POST` | `/api/v1/tools/image/image-enhancement/analyze` | Analizar la calidad de la imagen y devolver recomendaciones de mejora |
| `POST` | `/api/v1/tools/image/optimize-for-web/preview` | Vista previa ligera para el ajuste de parámetros en vivo. Devuelve una imagen optimizada con cabeceras de tamaño. |
Aplica una herramienta genérica habilitada para lotes a varios archivos a la vez. Devuelve un archivo ZIP. Las rutas personalizadas multiarchivo o de varios pasos, como la firma de PDF y las rutas de preajuste de PDF a imagen, usan su propio contrato de endpoint en lugar de la ruta genérica `/batch`.
La herramienta `ocr-pdf` admite esta ruta genérica `/batch`.
curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \
-H "Authorization: Bearer <token>"\
-F "files=@a.jpg"\
-F "files=@b.jpg"\
-F "files=@c.jpg"\
-F 'settings={"quality":80}'
```
La concurrencia se controla mediante `CONCURRENT_JOBS` (por defecto: detectado automáticamente a partir de los núcleos de la CPU). `MAX_BATCH_SIZE` limita el número de archivos por lote (por defecto: 100; establece 0 para sin límite).
## Pipelines {#pipelines}
### Ejecutar un pipeline {#execute-a-pipeline}
```bash
# Single file
curl -X POST http://localhost:1349/api/v1/pipeline/execute \
La salida de cada paso es la entrada del siguiente paso. Los pipelines permiten 20 pasos por defecto, configurable mediante `MAX_PIPELINE_STEPS`. Establece `MAX_PIPELINE_STEPS=0` para eliminar el límite.
### Guardar y gestionar pipelines {#save-and-manage-pipelines}
| Método | Ruta | Descripción |
|--------|------|-------------|
| `POST` | `/api/v1/pipeline/save` | Guardar un pipeline con nombre (`name`, `description`, `steps[]`) |
| `GET` | `/api/v1/pipeline/list` | Listar los pipelines guardados (los administradores ven todos; los usuarios ven los propios) |
| `DELETE` | `/api/v1/pipeline/:id` | Eliminar (propietario o administrador) |
| `GET` | `/api/v1/pipeline/tools` | Listar los ID de herramienta válidos para los pasos del pipeline |
## Seguimiento del progreso {#progress-tracking}
Los trabajos de larga duración, las herramientas en cola, los trabajos por lotes y los pipelines emiten el progreso en tiempo real mediante Server-Sent Events. El flujo de progreso es público y está indexado por el ID del trabajo, así que los clientes no necesitan enviar una cabecera Authorization para leerlo.
```bash
# Connect to the SSE stream (jobId is in the JSON response body from the tool endpoint)
| `GET` | `/api/v1/files/:id/thumbnail` | Obtener una miniatura JPEG de 300px |
| `DELETE` | `/api/v1/files` | Eliminar en bloque archivos y sus cadenas de versiones (cuerpo: `{ ids: [...] }`) |
| `POST` | `/api/v1/fetch-urls` | Obtener URL remotas en el espacio de trabajo para importaciones basadas en URL |
| `POST` | `/api/v1/preview` | Generar una vista previa WebP compatible con el navegador (para formatos HEIC/HEIF/RAW) |
| `GET` | `/api/v1/files/:id/preview` | Transmitir una vista previa en caché o generada compatible con el navegador para un PDF, documento de oficina, vídeo o archivo de audio guardado |
| `POST` | `/api/v1/preview/generate` | Generar una vista previa MP4 o MP3 bajo demanda para un archivo multimedia subido sin guardarlo primero |
| `GET` | `/api/v1/download/:jobId/:filename` | Descargar un archivo procesado de un espacio de trabajo |
Para guardar automáticamente el resultado de una herramienta en la biblioteca, incluye `fileId` como campo de formulario multipart que referencie un archivo existente de la biblioteca. El resultado procesado se guardará como una nueva versión.
## Gestión de claves de API {#api-key-management}
| Método | Ruta | Acceso | Descripción |
|--------|------|--------|-------------|
| `POST` | `/api/v1/api-keys` | Auth | Generar una nueva clave - se muestra una vez |
| `GET` | `/api/v1/api-keys` | Auth | Listar claves (nombre, id, lastUsedAt - no la clave en bruto) |
| `DELETE` | `/api/v1/teams/:id` | Admin (`teams:manage`) | Eliminar equipo (no se puede eliminar el equipo predeterminado ni los equipos con miembros) |
La configuración en tiempo de ejecución utiliza un conjunto cerrado de claves reconocidas. La lectura requiere `settings:read` y la escritura, `settings:write`; las claves de seguridad y cumplimiento requieren además `security:manage` o `compliance:manage`, respectivamente. Los ajustes secretos requieren autoridad de administrador pleno, mientras que las credenciales y el estado gestionados por endpoints específicos son aquí de solo lectura. Las actualizaciones en bloque se validan antes de escribir cualquier valor.
Claves representativas: `disabledTools` (array JSON de ID de herramientas), `enableExperimentalTools` (booleano), `loginAttemptLimit` (política de seguridad) y `auditRetentionDays` (política de cumplimiento). Las claves desconocidas se rechazan.
Las preferencias por usuario están separadas de los ajustes de la instancia. Cualquier usuario autenticado puede leer y actualizar su propio mapa de preferencias.
| Método | Ruta | Descripción |
|--------|------|-------------|
| `GET` | `/api/v1/preferences` | Obtener las preferencias del usuario actual como `{ "preferences": { ... } }` |
| `PUT` | `/api/v1/preferences` | Insertar o actualizar una o varias claves de preferencia para el usuario actual |
## Roles {#roles}
Gestión de roles personalizados con permisos granulares.
| Método | Ruta | Acceso | Descripción |
|--------|------|--------|-------------|
| `GET` | `/api/v1/roles` | Admin (`audit:read`) | Listar todos los roles con el número de usuarios |
| `POST` | `/api/v1/roles` | Admin (`security:manage`) | Crear un rol personalizado (`name`, `description`, `permissions`) |
| `PUT` | `/api/v1/roles/:id` | Admin (`security:manage`) | Actualizar un rol personalizado (no se pueden modificar los roles integrados) |
| `DELETE` | `/api/v1/roles/:id` | Admin (`security:manage`) | Eliminar un rol personalizado (no se pueden eliminar los roles integrados; los usuarios afectados revierten al rol `user`) |
| `action` | Filtrar por tipo de acción (p. ej. `ROLE_CREATED`, `ROLE_DELETED`) |
| `ip` | Filtrar por dirección IP de origen |
| `from` | Filtrar las entradas posteriores a esta fecha ISO 8601 |
| `to` | Filtrar las entradas anteriores a esta fecha ISO 8601 |
## Analítica {#analytics}
| Método | Ruta | Acceso | Descripción |
|--------|------|--------|-------------|
| `GET` | `/api/v1/config/analytics` | Público | Obtener la configuración de analítica efectiva (clave de PostHog, DSN de Sentry, tasa de muestreo). Las claves, el DSN y el ID de instancia quedan en blanco cuando la analítica está desactivada, ya sea por la compilación en tiempo de compilación o por el ajuste `analyticsEnabled` de la instancia. |
| `POST` | `/api/v1/feedback` | Auth | Enviar comentarios explícitos del usuario al proyecto de PostHog configurado como `feedback_submitted`. La ruta respeta la barrera de analítica, limita la tasa de envíos, elimina los campos de contacto salvo que `contactOk` sea true, y nunca acepta el contenido de archivos, nombres de archivos, rutas de subida ni texto de error privado en bruto. Cuando la analítica está desactivada, devuelve `{ "ok": true, "accepted": false }`. |
| `PUT` | `/api/v1/settings` | Admin (`settings:write`) | Establecer la exclusión voluntaria a nivel de toda la instancia. Envía un cuerpo JSON `{ "analyticsEnabled": "false" }` para desactivar la analítica para todos, o `"true"` para volver a activarla. |
## Funciones / Paquetes de IA {#features-ai-bundles}
Gestiona los paquetes de funciones de IA (instalar/desinstalar paquetes de modelos de IA en el entorno Docker). Prefiere el endpoint de instalación a nivel de herramienta cuando habilites una herramienta desde una automatización personalizada: algunas herramientas de IA necesitan más de un paquete compartido, y este endpoint omite los paquetes ya instalados y solo pone en cola los que faltan.
OCR es una mejora opcional en lugar de una dependencia estricta. Su nivel `fast` Tesseract funciona sin paquete; `POST /api/v1/admin/features/ocr/install` instala el paquete RapidOCR firmado para `balanced` y `best` en Linux amd64 o arm64. El tiempo de ejecución preciso de OCR utiliza CPU en hosts de solo CPU y NVIDIA y requiere al menos 4 GiB de memoria efectiva (el límite de cgroup del contenedor configurado; de lo contrario, memoria del host). SnapOtter informa `requiredMemoryBytes`, `effectiveMemoryBytes` y un motivo de compatibilidad con `insufficient-memory`, y rechaza una instalación incompatible antes de la descarga. Este requisito de memoria no se aplica a `fast`. El paquete cuesta aproximadamente 208-234 MiB para descargar y 409-488 MiB instalado, según el objetivo; el índice firmado vincula los tamaños exactos aplicados durante la instalación.
| `GET` | `/api/v1/features` | Auth | Listar todos los paquetes de funciones y su estado de instalación |
| `POST` | `/api/v1/admin/features/:bundleId/install` | Admin (`features:manage`) | Instalar un paquete de funciones (asíncrono, devuelve `jobId` para el seguimiento del progreso) |
| `POST` | `/api/v1/admin/tools/:toolId/features/install` | Admin (`features:manage`) | Instalar todos los paquetes que requiere una herramienta; devuelve el estado en cola/omitido por paquete |
| `POST` | `/api/v1/admin/features/:bundleId/uninstall` | Admin (`features:manage`) | Desinstalar un paquete de funciones y limpiar los archivos de modelos |
| `GET` | `/api/v1/admin/features/disk-usage` | Admin (`features:manage`) | Obtener el uso total de disco de los modelos de IA |
| `POST` | `/api/v1/admin/features/import` | Administrador (`features:manage`) | Importe un paquete de IA heredado (`file`) o una versión sin conexión firmada de OCR (`index` más `archive`) |
Una importación de OCR aislada debe incluir el `ocr-runtime-index.json` firmado de la versión y el archivo de plataforma correspondiente. SnapOtter aplica las mismas comprobaciones de firma, hash de artefactos, compatibilidad, extracción y prueba de humo de Ed25519 utilizadas en la instalación en línea:
```bash
curl -X POST http://localhost:1349/api/v1/admin/features/import \
-H "Authorization: Bearer <admin-token>"\
-F "index=@ocr-runtime-index.json"\
-F "archive=@ocr-linux-amd64-cpu-py312.tar.gz"
```
Utilice el archivo `linux-arm64-cpu-py311` en arm64. Un artefacto firmado para otro destino se rechaza en lugar de instalarse.
## Operaciones de administración {#admin-operations}
Endpoints operativos para observabilidad, soporte, informes de uso y estado de las copias de seguridad.
| Método | Ruta | Acceso | Descripción |
|--------|------|--------|-------------|
| `GET` | `/api/v1/admin/log-level` | Admin (`settings:write`) | Leer el nivel de log actual en tiempo de ejecución |
| `POST` | `/api/v1/admin/log-level` | Admin (`settings:write`) | Cambiar el nivel de log en tiempo de ejecución (`fatal`, `error`, `warn`, `info`, `debug`, `trace` o `silent`) |
| `GET` | `/api/v1/metrics` | Admin (`system:health`) | Métricas de Prometheus en formato de texto |
| `GET` | `/api/v1/admin/support-bundle` | Admin (`system:health`) | Descargar un ZIP de paquete de soporte de diagnóstico censurado |
| `GET` | `/api/v1/admin/usage` | Admin (`audit:read`) | Datos del panel de uso, con el parámetro de consulta opcional `days` |
| `GET` | `/api/v1/admin/backup-status` | Admin (`system:health`) | Leer los metadatos de la última copia de seguridad y su estado de frescura |
| `POST` | `/api/v1/admin/backup-status` | Admin (`system:health`) | Registrar una copia de seguridad completada (`type`, `sizeBytes` opcional, `notes` opcional) |
## APIs de Enterprise {#enterprise-apis}
Estas rutas están limitadas por licencia según su función enterprise relacionada. Aun así requieren el permiso de SnapOtter indicado.
**Administrador integrado completo** significa que el actor autenticado tiene el rol `admin` y el conjunto efectivo completo de permisos de administrador. Un ámbito de clave de API que omita cualquier permiso de administrador no cumple el requisito.
| `GET` | `/api/v1/enterprise/config/export` | Administrador integrado completo | Exportar la configuración de instancia censurada, los roles personalizados y los equipos |
| `POST` | `/api/v1/enterprise/config/import` | Administrador integrado completo | Importar configuración, con ejecución de prueba opcional |
| `GET` | `/api/v1/enterprise/ip-allowlist` | Admin (`security:manage`) | Leer la lista de permitidos CIDR configurada |
| `PUT` | `/api/v1/enterprise/ip-allowlist` | Admin (`security:manage`) | Actualizar la lista de permitidos CIDR con prevención de autobloqueo |
| `GET` | `/api/v1/enterprise/legal-hold` | Admin (`compliance:manage`) | Listar las retenciones legales de usuarios y equipos |
| `PUT` | `/api/v1/enterprise/legal-hold` | Admin (`compliance:manage`) | Aplicar o liberar una retención legal sobre un usuario o equipo |
| `POST` | `/api/v1/enterprise/scim/token` | Admin (`users:manage`) | Generar un token bearer de SCIM, devuelto una vez |
| `DELETE` | `/api/v1/enterprise/scim/token` | Admin (`users:manage`) | Revocar el token bearer de SCIM actual |
| `GET` | `/api/v1/enterprise/siem/config` | Admin (`webhooks:manage`) | Leer la configuración de reenvío SIEM |
| `PUT` | `/api/v1/enterprise/siem/config` | Admin (`webhooks:manage`) | Actualizar la configuración de reenvío SIEM |
| `GET` | `/api/v1/enterprise/webhooks` | Admin (`webhooks:manage`) | Listar los destinos de webhook |
| `POST` | `/api/v1/enterprise/webhooks` | Admin (`webhooks:manage`) | Crear un destino de webhook |
| `PUT` | `/api/v1/enterprise/webhooks/:index` | Admin (`webhooks:manage`) | Actualizar un destino de webhook |
| `DELETE` | `/api/v1/enterprise/webhooks/:index` | Admin (`webhooks:manage`) | Eliminar un destino de webhook |
| `POST` | `/api/v1/enterprise/webhooks/:index/test` | Admin (`webhooks:manage`) | Enviar una carga útil de webhook de prueba |
| `POST` | `/api/v1/enterprise/users/:id/export` | Admin (`compliance:manage`) | Iniciar un trabajo de exportación de usuario según el RGPD |
| `GET` | `/api/v1/enterprise/users/:id/export/:jobId` | Admin (`compliance:manage`) | Leer el estado de la exportación RGPD y la URL de descarga |
| `DELETE` | `/api/v1/enterprise/users/:id/purge` | Admin (`compliance:manage`) | Purgar permanentemente los datos de un usuario tras la confirmación |
| `DELETE` | `/api/v1/enterprise/teams/:id/purge` | Admin (`compliance:manage`) | Purgar permanentemente los datos de un equipo tras la confirmación |
| `GET` | `/api/v1/admin/version` | Admin (`system:health`) | Leer los metadatos de versión de la app, la compilación, Node y el esquema |
| `GET` | `/api/v1/admin/migrations/pending` | Admin (`system:health`) | Comparar las migraciones empaquetadas con las migraciones aplicadas |
| `GET` | `/api/v1/admin/upgrade-check` | Admin (`system:health`) | Ejecutar comprobaciones de preparación para la actualización |
### SCIM 2.0 {#scim-2-0}
Los endpoints de descubrimiento de SCIM son públicos. Los endpoints de usuarios y grupos requieren el token bearer de SCIM generado anteriormente.