Skip to main content

Update content

PUT /cms/{type}/{language}/{key}
PUT /internal/cms/{type}/{language}/{key}
alphahttps://api.sandbox.ovok.com

Create Content

Create a new CMS content entry for a given content type and language.
The content is stored as a FHIR Composition resource scoped to the caller's project. A unique key is auto-generated from the title and used to link translations across languages.

Path Parameters

ParameterDescriptionExample
typeContent type (e.g. article, faq, exercise)article
languageISO language codeen-US

Request Body

FieldTypeDescription
titlestringTitle of the content entry
categorystringCategory identifier
sectionarrayArray of sections, each with title, text, and code
codestringOptional code used for additional classification

Example cURL request

curl -X POST \
--url 'https://api.dev.ovok.com/cms/article/en-US' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"title": "My Blog",
"category": "123",
"section": [
{ "title": "Intro", "text": "Welcome text", "code": ["main-content"] }
]
}'

Side Effects: A background job is enqueued for every other language configured in the project locale, so translation stubs can be generated automatically.

Notes: The same description is reused for the Update content (PUT /:language/:key) route. Updates follow the same body schema but target an existing key.

Parameters

NameInTypeRequiredDescription
typepathstringyes
languagepathstringyes
keypathstringyesA key that is used to identify the content between languages.

Request body

Content-Type: application/json

  • title: string (required)
  • category: array
  • section: array
  • code: string

Responses

CodeDescription
200Success.
400The request could not be operated by the server.
401The resource owner or authorization server denied the request.
404The requested resource could not be found.
422The request could not be validated by the server.
500The server encountered an unexpected condition. Please try again later.

200ContentDto (application/json)

  • id: string
  • title: string (required)
  • author: object (required)
    • reference: string (required)
    • display: string
  • key: string (required) — A random UUID that is used to identify the content, not ID!
  • language: string (required)
  • date: string (required)
  • projectId: string
  • type: string (required)
  • code: string
  • category: string[]
  • section: object[]
    • title: string
    • text: string
    • extension: object
    • code: string[]

Example

{
"id": "123",
"title": "My Blog",
"author": {
"reference": "123",
"display": "John Doe"
},
"date": {},
"project": "123",
"type": "blog",
"category": [
"123",
"456"
],
"section": [
{
"title": "My Blog",
"text": "My Blog Text",
"extension": {
"covert-media": "http://example.com/extensionValue"
}
}
]
}