Базова URL-адреса, схеми автентифікації, визначення тенанта та модель помилок для REST API CMS.
REST API Profound CMS обслуговується сервісом Rust translation_manager. Він відкриває безголові кінцеві точки читання/стріму, які використовує рендерер, а також кінцеві точки запису для контенту, перекладів та імпорту CSV.
Усі приклади використовують {CMS_API_URL} як базову URL-адресу вашого хоста CMS API (наприклад, https://cms.dev.tryprofound.com). Глобального префікса шляху немає — маршрути монтуються в корені, наприклад {CMS_API_URL}/routes.
API використовує дві окремі схеми залежно від кінцевої точки.
Надішліть ключ у заголовку x-api-key або в параметрі запиту api_key:
curl '{CMS_API_URL}/dataset/post?websiteId=<uuid>' \
-H 'x-api-key: <your-api-key>'
Ключі перевіряються через WorkOS і короткочасно кешуються в пам'яті. Для кінцевих точок читання ключ API потрібен лише тоді, коли сервер встановлює require_schema_api_key = true; інакше анонімні читання дозволені. Upsert варіанта (PATCH /dataset/{schema_name}) завжди потребує чинного ключа з дозволом content_write.
Використовує автентифікацію за ключем API: /routes, /route, /blocks*, /components*, /dataset/*, /schemas/*, /content-changes.
Кінцеві точки керування потребують JWT користувача WorkOS:
curl '{CMS_API_URL}/usage?orgId=<uuid>' \
-H 'Authorization: Bearer <workos-jwt>'
Використовує автентифікацію Bearer: /translation, /translations, /usage, /csv.
Кінцеві точки з ключем API визначають цільовий вебсайт у такому порядку:
?websiteId=<uuid>Host, що порівнюється з налаштованим доменом вебсайтуCMS_WEBSITE_ID (однотенант / локальна розробка)Якщо жоден варіант не дає чинний UUID, кінцева точка повертає 400.
| Статус | Значення |
|---|---|
400 | Неправильний запит — відсутній/некоректний websiteId, недійсний UUID або помилка валідації |
401 | Відсутні або недійсні облікові дані |
403 | Автентифікація пройдена, але бракує необхідного дозволу |
404 | Ресурс не знайдено |
500 | Внутрішня помилка / помилка бази даних |
GET {CMS_API_URL}/health повертає { "status": "ok" } і не потребує автентифікації — використовуйте це для перевірок на живучість.