URL base, esquemas de autenticación, resolución del tenant y el modelo de errores de la API REST del CMS.
La API REST de Profound CMS es servida por el servicio de Rust translation_manager. Expone endpoints headless de lectura/transmisión utilizados por el renderizador, además de endpoints de escritura para contenido, traducción e importación de CSV.
Todos los ejemplos utilizan {CMS_API_URL} como la URL base de tu host de API del CMS (por ejemplo https://cms.dev.tryprofound.com). No hay prefijo de ruta global: las rutas se montan en la raíz, p. ej. {CMS_API_URL}/routes.
La API utiliza dos esquemas diferentes según el endpoint.
Envía la clave como el encabezado x-api-key o el parámetro de consulta api_key:
curl '{CMS_API_URL}/dataset/post?websiteId=<uuid>' \
-H 'x-api-key: <your-api-key>'
Las claves se validan frente a WorkOS y se almacenan brevemente en caché en memoria. Para los endpoints de lectura, solo se requiere una clave de API cuando el servidor establece require_schema_api_key = true; de lo contrario, se permiten lecturas anónimas. El upsert de variantes (PATCH /dataset/{schema_name}) siempre requiere una clave válida que tenga el permiso content_write.
Utiliza autenticación con clave de API: /routes, /route, /blocks*, /components*, /dataset/*, /schemas/*, /content-changes.
Los endpoints de administración requieren un JWT de usuario de WorkOS:
curl '{CMS_API_URL}/usage?orgId=<uuid>' \
-H 'Authorization: Bearer <workos-jwt>'
Utiliza autenticación Bearer: /translation, /translations, /usage, /csv.
Los endpoints con clave de API resuelven el sitio web de destino en este orden:
?websiteId=<uuid>Host, comparado con un dominio de sitio web configuradoCMS_WEBSITE_ID (tenant único / desarrollo local)Si ninguno se resuelve en un UUID válido, el endpoint devuelve 400.
| Estado | Significado |
|---|---|
400 | Solicitud incorrecta — falta/websiteId inválido, UUID inválido o error de validación |
401 | Credenciales ausentes o inválidas |
403 | Autenticado pero falta un permiso requerido |
404 | Recurso no encontrado |
500 | Error interno / de base de datos |
GET {CMS_API_URL}/health devuelve { "status": "ok" } y no necesita autenticación — úsalo para sondas de actividad.