URL de bază, scheme de autentificare, rezolvarea chiriașului și modelul de erori pentru API-ul REST al CMS-ului.
API-ul REST Profound CMS este oferit de serviciul Rust translation_manager. Acesta expune endpoint-uri headless de citire/stream folosite de renderer, plus endpoint-uri de scriere pentru conținut, traducere și import CSV.
Toate exemplele folosesc {CMS_API_URL} ca URL de bază al gazdei API-ului CMS (de exemplu https://cms.dev.tryprofound.com). Nu există un prefix global de cale — rutele sunt montate la rădăcină, de ex. {CMS_API_URL}/routes.
API-ul folosește două scheme separate în funcție de endpoint.
Trimite cheia ca antet x-api-key sau ca parametru de interogare api_key:
curl '{CMS_API_URL}/dataset/post?websiteId=<uuid>' \
-H 'x-api-key: <cheia-ta-api>'
Cheile sunt validate prin WorkOS și puse temporar în cache în memorie. Pentru endpoint-urile de citire, o cheie API este necesară doar atunci când serverul setează require_schema_api_key = true; în caz contrar, sunt permise citirile anonime. Upsert-ul variantei (PATCH /dataset/{schema_name}) necesită întotdeauna o cheie validă care deține permisiunea content_write.
Folosește autentificare cu cheie API: /routes, /route, /blocks*, /components*, /dataset/*, /schemas/*, /content-changes.
Endpoint-urile de administrare necesită un JWT de utilizator WorkOS:
curl '{CMS_API_URL}/usage?orgId=<uuid>' \
-H 'Authorization: Bearer <jwt-workos>'
Folosește autentificare Bearer: /translation, /translations, /usage, /csv.
Endpoint-urile cu cheie API identifică site-ul țintă în această ordine:
?websiteId=<uuid>Host, potrivit cu un domeniu de site configuratCMS_WEBSITE_ID (single-tenant / dezvoltare locală)Dacă niciuna nu se rezolvă într-un UUID valid, endpoint-ul returnează 400.
| Stare | Semnificație |
|---|---|
400 | Cerere nevalidă — websiteId lipsă/nevalid, UUID nevalid sau eșec la validare |
401 | Credențiale lipsă sau nevalide |
403 | Autentificat, dar lipsește o permisiune necesară |
404 | Resursă negăsită |
500 | Eroare internă / de bază de date |
GET {CMS_API_URL}/health returnează { "status": "ok" } și nu necesită autentificare — folosiți-l pentru probe de vitalitate.