EN IT

Content (V1)

Endpoints for searching, reading, creating, updating, and deleting content items using the V1 field model (fields as typed array).

Base URL: https://api.contit.cloud

POST /contents/{contentTypeKey}/ids

Get content IDs only

Returns only the IDs of matching content items, useful for bulk operations or cross-referencing without loading full content.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key (e.g. 'Product', 'Article')

Request Body application/json

PropertyTypeRequiredDescription
filter object Filter tree to restrict results
page integer Page number (1-based)
pageSize integer Number of items per page

Responses

200 Success
ids string[] Array of content item IDs
total integer Total number of matching items
401 Unauthorized

Code examples

curl -X POST "https://api.contit.cloud/contents/{contentTypeKey}/ids" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filter": "filter_value",
  "page": 1,
  "pageSize": 1
}'
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");

var content = new StringContent("{
  \"filter\": \"filter_value\",
  \"page\": 1,
  \"pageSize\": 1
}",
    Encoding.UTF8, "application/json");
var response = await http.PostAsync(
    "https://api.contit.cloud/contents/{contentTypeKey}/ids", content);

response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/ids",
  {
    method: "POST",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "filter": "filter_value",
  "page": 1,
  "pageSize": 1
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "filter": "filter_value",
  "page": 1,
  "pageSize": 1
}

response = requests.post(
    "https://api.contit.cloud/contents/{contentTypeKey}/ids",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "filter": {
    "type": "and",
    "conditions": [
      { "type": "condition", "fieldKey": "status", "operator": "e", "value": "published" }
    ]
  },
  "page": 1,
  "pageSize": 100
}
Example Response 200
{
  "ids": [
    "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "c3d4e5f6-a7b8-9012-cdef-123456789012"
  ],
  "total": 3
}
Try it Live
GET /contents/{contentTypeKey}/{id}

Get single content

Retrieve a single content item by its ID.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key
id string The content item ID (GUID)

Responses

200 Success
id string Content item ID
contentType string Content type key
fields ContentField[] Array of typed fields
createdAt datetime Creation timestamp
updatedAt datetime Last update timestamp
401 Unauthorized
404 Not Found — content item does not exist

Code examples

curl -X GET "https://api.contit.cloud/contents/{contentTypeKey}/{id}" \
  -H "X-Api-Key: YOUR_API_KEY"
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");

var response = await http.GetAsync("https://api.contit.cloud/contents/{contentTypeKey}/{id}");

response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/{id}",
  {
    method: "GET",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
    }
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}

response = requests.get(
    "https://api.contit.cloud/contents/{contentTypeKey}/{id}",
    headers=headers
)

data = response.json()
Example Response 200
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "contentType": "Article",
  "fields": [
    { "type": "Text", "key": "title", "value": "Hello World" },
    { "type": "RichText", "key": "body", "value": "<p>Welcome to Contit.</p>" },
    { "type": "DateTime", "key": "publishDate", "value": "2026-03-15T10:30:00Z" }
  ],
  "createdAt": "2026-03-10T08:00:00Z",
  "updatedAt": "2026-03-15T10:30:00Z"
}
Try it Live
POST /contents/{contentTypeKey}/{id}

Get content with relations

Retrieve a single content item by ID, optionally expanding related content and specifying a locale for translated fields.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key
id string The content item ID (GUID)

Request Body application/json

PropertyTypeRequiredDescription
locale string Locale code for translated fields (e.g. 'en', 'it')
includeRelations string[] Relation field keys to expand inline

Responses

200 Success — content item with expanded relations
id string Content item ID
contentType string Content type key
fields ContentField[] Array of typed fields, with relations expanded
401 Unauthorized
404 Not Found

Code examples

curl -X POST "https://api.contit.cloud/contents/{contentTypeKey}/{id}" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "locale": "locale_value",
  "includeRelations": []
}'
var client = new ContitClient(
    new ClientContitConfiguration(clientId, clientSecret));

var result = await client.Content.Get<MyModel>(contentType, new ContentsRequest
{
    Page = 1, PageSize = 20
});
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/{id}",
  {
    method: "POST",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "locale": "locale_value",
  "includeRelations": []
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "locale": "locale_value",
  "includeRelations": []
}

response = requests.post(
    "https://api.contit.cloud/contents/{contentTypeKey}/{id}",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "locale": "it",
  "includeRelations": ["category", "author"]
}
Example Response 200
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "contentType": "Article",
  "fields": [
    { "type": "Text", "key": "title", "value": "Ciao Mondo" },
    { "type": "Relation", "key": "category", "value": { "id": "d4e5f6a7-b8c9-0123-defg-456789012345", "contentType": "Category", "fields": [{ "type": "Text", "key": "name", "value": "Tecnologia" }] } },
    { "type": "Relation", "key": "author", "value": { "id": "e5f6a7b8-c9d0-1234-efgh-567890123456", "contentType": "Author", "fields": [{ "type": "Text", "key": "name", "value": "Marco Rossi" }] } }
  ],
  "createdAt": "2026-03-10T08:00:00Z",
  "updatedAt": "2026-03-15T10:30:00Z"
}
Try it Live
POST /contents/{contentTypeKey}/aggregate

Aggregate field values

Compute an aggregate (Sum, Avg, Min, Max, or Count) on a numeric field across matching content items.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
fieldKey string The field key to aggregate on
aggregateType string Aggregation function: Sum, Avg, Min, Max, or Count
filter object Optional filter to restrict which items are aggregated

Responses

200 Success — returns a single decimal value
value decimal The computed aggregate value
401 Unauthorized

Code examples

curl -X POST "https://api.contit.cloud/contents/{contentTypeKey}/aggregate" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "fieldKey": "fieldKey_value",
  "aggregateType": "aggregateType_value",
  "filter": "filter_value"
}'
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");

var content = new StringContent("{
  \"fieldKey\": \"fieldKey_value\",
  \"aggregateType\": \"aggregateType_value\",
  \"filter\": \"filter_value\"
}",
    Encoding.UTF8, "application/json");
var response = await http.PostAsync(
    "https://api.contit.cloud/contents/{contentTypeKey}/aggregate", content);

response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/aggregate",
  {
    method: "POST",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "fieldKey": "fieldKey_value",
  "aggregateType": "aggregateType_value",
  "filter": "filter_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "fieldKey": "fieldKey_value",
  "aggregateType": "aggregateType_value",
  "filter": "filter_value"
}

response = requests.post(
    "https://api.contit.cloud/contents/{contentTypeKey}/aggregate",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "type": "condition",
            "fieldKey": "price",
  "aggregateType": "Avg",
  "filter": {
    "type": "and",
    "conditions": [
      { "type": "condition", "fieldKey": "status", "operator": "e", "value": "published" }
    ]
  }
}
Example Response 200
{
  "value": 49.95
}
Try it Live
POST /contents/{contentTypeKey}/aggregategroup

Grouped aggregation

Compute an aggregate grouped by a specific field, returning one result per distinct group value.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
fieldKey string The field key to aggregate on
aggregateType string Aggregation function: Sum, Avg, Min, Max, or Count
groupByFieldKey string The field key to group results by
filter object Optional filter to restrict which items are aggregated

Responses

200 Success
items AggregateGroupItem[] Array of group-value / aggregate-value pairs
401 Unauthorized

Code examples

curl -X POST "https://api.contit.cloud/contents/{contentTypeKey}/aggregategroup" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "fieldKey": "fieldKey_value",
  "aggregateType": "aggregateType_value",
  "groupByFieldKey": "groupByFieldKey_value",
  "filter": "filter_value"
}'
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");

var content = new StringContent("{
  \"fieldKey\": \"fieldKey_value\",
  \"aggregateType\": \"aggregateType_value\",
  \"groupByFieldKey\": \"groupByFieldKey_value\",
  \"filter\": \"filter_value\"
}",
    Encoding.UTF8, "application/json");
var response = await http.PostAsync(
    "https://api.contit.cloud/contents/{contentTypeKey}/aggregategroup", content);

response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/aggregategroup",
  {
    method: "POST",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "fieldKey": "fieldKey_value",
  "aggregateType": "aggregateType_value",
  "groupByFieldKey": "groupByFieldKey_value",
  "filter": "filter_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "fieldKey": "fieldKey_value",
  "aggregateType": "aggregateType_value",
  "groupByFieldKey": "groupByFieldKey_value",
  "filter": "filter_value"
}

response = requests.post(
    "https://api.contit.cloud/contents/{contentTypeKey}/aggregategroup",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "type": "condition",
            "fieldKey": "price",
  "aggregateType": "Sum",
  "groupByFieldKey": "category",
  "filter": null
}
Example Response 200
{
  "items": [
    { "groupValue": "Electronics", "aggregateValue": 2499.90 },
    { "groupValue": "Books", "aggregateValue": 389.50 },
    { "groupValue": "Clothing", "aggregateValue": 1250.00 }
  ]
}
Try it Live
POST /contents/{contentTypeKey}/encrypt/check

Check encrypted field value

Verify that an encrypted field matches a given plaintext value without revealing the stored data.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
id string The content item ID
encryptFields object Dictionary of field key to plaintext value to check against

Responses

200 Success — returns true if values match
match boolean Whether the provided value matches the stored encrypted value
401 Unauthorized
404 Not Found

Code examples

curl -X POST "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/check" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "id_value",
  "encryptFields": "encryptFields_value"
}'
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");

var content = new StringContent("{
  \"id\": \"id_value\",
  \"encryptFields\": \"encryptFields_value\"
}",
    Encoding.UTF8, "application/json");
var response = await http.PostAsync(
    "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/check", content);

response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/check",
  {
    method: "POST",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "id": "id_value",
  "encryptFields": "encryptFields_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "id": "id_value",
  "encryptFields": "encryptFields_value"
}

response = requests.post(
    "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/check",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "encryptFields": {
    "ssn": "123-45-6789"
  }
}
Example Response 200
{
  "match": true
}
Try it Live
POST /contents/{contentTypeKey}/encrypt/decrypt

Decrypt encrypted fields

Decrypt one or more encrypted fields on a content item. Requires a valid TOTP code for additional security.

Requires ReadAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
id string The content item ID
encryptFieldKeys string[] Array of field keys to decrypt
totpCode string Time-based one-time password for authorization

Responses

200 Success — returns decrypted field values
fields object Dictionary of field key to decrypted plaintext value
401 Unauthorized
403 Forbidden — invalid TOTP code

Code examples

curl -X POST "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/decrypt" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "id_value",
  "encryptFieldKeys": [],
  "totpCode": "totpCode_value"
}'
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");

var content = new StringContent("{
  \"id\": \"id_value\",
  \"encryptFieldKeys\": [],
  \"totpCode\": \"totpCode_value\"
}",
    Encoding.UTF8, "application/json");
var response = await http.PostAsync(
    "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/decrypt", content);

response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/decrypt",
  {
    method: "POST",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "id": "id_value",
  "encryptFieldKeys": [],
  "totpCode": "totpCode_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "id": "id_value",
  "encryptFieldKeys": [],
  "totpCode": "totpCode_value"
}

response = requests.post(
    "https://api.contit.cloud/contents/{contentTypeKey}/encrypt/decrypt",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "encryptFieldKeys": ["ssn", "taxId"],
  "totpCode": "482916"
}
Example Response 200
{
  "fields": {
    "ssn": "123-45-6789",
    "taxId": "RSSMRC80A01H501Z"
  }
}
Try it Live
PUT /contents/{contentTypeKey}/encrypt

Set encrypted field values

Store one or more field values in encrypted form on a content item.

Requires WriteAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
id string The content item ID
encryptFields object Dictionary of field key to plaintext value to encrypt and store
clientInfo string Optional client identifier for audit logging

Responses

200 Success — fields encrypted and stored
401 Unauthorized
404 Not Found

Code examples

curl -X PUT "https://api.contit.cloud/contents/{contentTypeKey}/encrypt" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "id_value",
  "encryptFields": "encryptFields_value",
  "clientInfo": "clientInfo_value"
}'
var client = new ContitClient(
    new ClientContitConfiguration(clientId, clientSecret));

await client.Content.AddOrUpdate(contentType, contentModel);
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/encrypt",
  {
    method: "PUT",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "id": "id_value",
  "encryptFields": "encryptFields_value",
  "clientInfo": "clientInfo_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "id": "id_value",
  "encryptFields": "encryptFields_value",
  "clientInfo": "clientInfo_value"
}

response = requests.put(
    "https://api.contit.cloud/contents/{contentTypeKey}/encrypt",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "encryptFields": {
    "ssn": "123-45-6789"
  },
  "clientInfo": "admin-panel-v3"
}
Example Response 200
{
  "success": true
}
Try it Live
PUT /contents/{contentTypeKey}

Create or update content

Create a new content item (id = null) or update an existing one. Returns the full content model including system-generated fields.

Requires WriteAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
id string Content item ID. Pass null or omit to create a new item.
contentType string The content type key (must match path parameter)
fields ContentField[] Array of typed fields with type, key, and value
clientInfo string Optional client identifier for audit logging

Responses

200 Success — returns the saved content item with system fields populated
id string Content item ID (generated if new)
contentType string Content type key
fields ContentField[] Array of typed fields
createdAt datetime Creation timestamp
updatedAt datetime Last update timestamp
401 Unauthorized

Code examples

curl -X PUT "https://api.contit.cloud/contents/{contentTypeKey}" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "id_value",
  "contentType": "contentType_value",
  "fields": [],
  "clientInfo": "clientInfo_value"
}'
var client = new ContitClient(
    new ClientContitConfiguration(clientId, clientSecret));

await client.Content.AddOrUpdate(contentType, contentModel);
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}",
  {
    method: "PUT",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "id": "id_value",
  "contentType": "contentType_value",
  "fields": [],
  "clientInfo": "clientInfo_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "id": "id_value",
  "contentType": "contentType_value",
  "fields": [],
  "clientInfo": "clientInfo_value"
}

response = requests.put(
    "https://api.contit.cloud/contents/{contentTypeKey}",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "id": null,
  "contentType": "Article",
  "fields": [
    { "type": "Text", "key": "title", "value": "New Article" },
    { "type": "RichText", "key": "body", "value": "<p>Article body here.</p>" },
    { "type": "DateTime", "key": "publishDate", "value": "2026-03-20T09:00:00Z" }
  ],
  "clientInfo": "cms-editor"
}
Example Response 200
{
  "id": "f6a7b8c9-d0e1-2345-fghi-678901234567",
  "contentType": "Article",
  "fields": [
    { "type": "Text", "key": "title", "value": "New Article" },
    { "type": "RichText", "key": "body", "value": "<p>Article body here.</p>" },
    { "type": "DateTime", "key": "publishDate", "value": "2026-03-20T09:00:00Z" },
    { "type": "Text", "key": "_createdBy", "value": "api-client" }
  ],
  "createdAt": "2026-03-20T09:00:00Z",
  "updatedAt": "2026-03-20T09:00:00Z"
}
Try it Live
DELETE /contents/{contentTypeKey}/{id}

Delete content

Permanently delete a content item by its ID.

Requires WriteAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key
id string The content item ID (GUID)

Responses

200 Success — content deleted
401 Unauthorized
404 Not Found

Code examples

curl -X DELETE "https://api.contit.cloud/contents/{contentTypeKey}/{id}" \
  -H "X-Api-Key: YOUR_API_KEY"
var client = new ContitClient(
    new ClientContitConfiguration(clientId, clientSecret));

await client.Content.Delete(contentType, id);
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/{id}",
  {
    method: "DELETE",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
    }
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}

response = requests.delete(
    "https://api.contit.cloud/contents/{contentTypeKey}/{id}",
    headers=headers
)

data = response.json()
Example Response 200
{
  "success": true
}
Try it Live
PUT /contents/{contentTypeKey}/publish Deprecated

Publish content (deprecated)

Deprecated. Use PUT /contents/{contentTypeKey} with the appropriate status field instead.

Deprecated — This endpoint is deprecated and will be removed in a future version.
Requires WriteAccess policy

Path Parameters

NameTypeRequiredDescription
contentTypeKey string The content type key

Request Body application/json

PropertyTypeRequiredDescription
id string The content item ID to publish
clientInfo string Optional client identifier

Responses

200 Success
401 Unauthorized

Code examples

curl -X PUT "https://api.contit.cloud/contents/{contentTypeKey}/publish" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "id_value",
  "clientInfo": "clientInfo_value"
}'
var client = new ContitClient(
    new ClientContitConfiguration(clientId, clientSecret));

await client.Content.AddOrUpdate(contentType, contentModel);
const response = await fetch(
  "https://api.contit.cloud/contents/{contentTypeKey}/publish",
  {
    method: "PUT",
    headers: {
      "X-Api-Key": "YOUR_API_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
  "id": "id_value",
  "clientInfo": "clientInfo_value"
})
  }
);

const data = await response.json();
import requests

headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
  "id": "id_value",
  "clientInfo": "clientInfo_value"
}

response = requests.put(
    "https://api.contit.cloud/contents/{contentTypeKey}/publish",
    json=payload,
    headers=headers
)

data = response.json()
Example Request
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "clientInfo": "cms-editor"
}
Example Response 200
{
  "success": true
}