Update Content Type
curl --request PUT \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"layoutComponentId": "<string>",
"componentIdsAllowList": [
{}
],
"templateContentIds": [
"<string>"
],
"permissions": {},
"metadata": {}
}
'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"layoutComponentId": "<string>",
"componentIdsAllowList": [{}],
"templateContentIds": ["<string>"],
"permissions": {},
"metadata": {}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
layoutComponentId: '<string>',
componentIdsAllowList: [{}],
templateContentIds: ['<string>'],
permissions: {},
metadata: {}
})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'layoutComponentId' => '<string>',
'componentIdsAllowList' => [
[
]
],
'templateContentIds' => [
'<string>'
],
'permissions' => [
],
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"layoutComponentId\": \"<string>\",\n \"componentIdsAllowList\": [\n {}\n ],\n \"templateContentIds\": [\n \"<string>\"\n ],\n \"permissions\": {},\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"layoutComponentId\": \"<string>\",\n \"componentIdsAllowList\": [\n {}\n ],\n \"templateContentIds\": [\n \"<string>\"\n ],\n \"permissions\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"layoutComponentId\": \"<string>\",\n \"componentIdsAllowList\": [\n {}\n ],\n \"templateContentIds\": [\n \"<string>\"\n ],\n \"permissions\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyContent Types
Update Content Type
Update an existing content type
PUT
/
app
/
v1
/
organizations
/
{organizationId}
/
projects
/
{projectId}
/
content-types
/
{id}
Update Content Type
curl --request PUT \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"layoutComponentId": "<string>",
"componentIdsAllowList": [
{}
],
"templateContentIds": [
"<string>"
],
"permissions": {},
"metadata": {}
}
'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"layoutComponentId": "<string>",
"componentIdsAllowList": [{}],
"templateContentIds": ["<string>"],
"permissions": {},
"metadata": {}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
layoutComponentId: '<string>',
componentIdsAllowList: [{}],
templateContentIds: ['<string>'],
permissions: {},
metadata: {}
})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'layoutComponentId' => '<string>',
'componentIdsAllowList' => [
[
]
],
'templateContentIds' => [
'<string>'
],
'permissions' => [
],
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"layoutComponentId\": \"<string>\",\n \"componentIdsAllowList\": [\n {}\n ],\n \"templateContentIds\": [\n \"<string>\"\n ],\n \"permissions\": {},\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"layoutComponentId\": \"<string>\",\n \"componentIdsAllowList\": [\n {}\n ],\n \"templateContentIds\": [\n \"<string>\"\n ],\n \"permissions\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"layoutComponentId\": \"<string>\",\n \"componentIdsAllowList\": [\n {}\n ],\n \"templateContentIds\": [\n \"<string>\"\n ],\n \"permissions\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyPath Parameters
string
required
Organization ID
string
required
Project ID
string
required
Content Type ID
Request Body
All fields are optional. Only provided fields will be updated.string
Display name for the content type
string
Structured markdown description
string
ID of the layout component
array
Array of component IDs or component groups
string[]
Array of pre-built content example IDs
object
Access control settings
object
Additional type metadata
Example Request
{
"description": "Updated description for blog posts",
"componentIdsAllowList": [
{
"id": "content",
"name": "Content Components",
"componentIds": ["c126", "c127"]
},
{
"id": "media",
"name": "Media Components",
"componentIds": ["c128", "c129"]
}
],
"templateContentIds": ["cont125", "cont126"]
}
Updating a published content type changes its status to
modified. The changes will not affect published content until the content type is published again.Response
Returns the updated ContentType object.{
"id": "ct123",
"name": "Article",
"description": "Updated description for blog posts",
"status": "modified",
"version": 3,
"lastPublishedVersion": 3,
"layoutComponentId": "c123",
"componentIdsAllowList": [
{
"id": "content",
"name": "Content Components",
"componentIds": ["c126", "c127"]
},
{
"id": "media",
"name": "Media Components",
"componentIds": ["c128", "c129"]
}
],
"packageVersion": "1.0.0",
"schema": { ... },
"templateContentIds": ["cont125", "cont126"],
"permissions": { ... },
"metadata": { ... },
"createdAt": "2024-03-20T10:00:00Z",
"updatedAt": "2024-03-21T14:30:00Z"
}
Error Responses
Content Type Not Found
{
"error": {
"code": "NOT_FOUND",
"message": "Content type not found"
}
}
Invalid Component Allow List
{
"error": {
"code": "VALIDATION_FAILED",
"message": "componentIdsAllowList validation failed",
"details": {
"duplicateGroupIds": ["questions"],
"invalidComponentIds": ["c999"],
"emptyGroups": ["media"],
"missingFields": [
{
"groupIndex": 2,
"missingFields": ["id"]
}
]
}
}
}
Code Examples
curl -X PUT "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content-types/ct123" \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated description",
"componentIdsAllowList": ["c126", "c127", "c128"]
}'
const response = await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content-types/ct123',
{
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_JWT',
'Content-Type': 'application/json'
},
body: JSON.stringify({
description: 'Updated description',
componentIdsAllowList: ['c126', 'c127', 'c128']
})
}
);
const contentType = await response.json();
console.log(`Updated content type, new status: ${contentType.status}`);