Rollback Content Type Version
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback \
--header 'Content-Type: application/json' \
--data '{
"version": 123
}'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback"
payload = { "version": 123 }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({version: 123})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback', 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}/rollback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'version' => 123
]),
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}/rollback"
payload := strings.NewReader("{\n \"version\": 123\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123\n}"
response = http.request(request)
puts response.read_bodyContent Types
Rollback Content Type Version
Rollback to a previous version of a content type
POST
/
app
/
v1
/
organizations
/
{organizationId}
/
projects
/
{projectId}
/
content-types
/
{id}
/
rollback
Rollback Content Type Version
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback \
--header 'Content-Type: application/json' \
--data '{
"version": 123
}'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback"
payload = { "version": 123 }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({version: 123})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback', 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}/rollback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'version' => 123
]),
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}/rollback"
payload := strings.NewReader("{\n \"version\": 123\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content-types/{id}/rollback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123\n}"
response = http.request(request)
puts response.read_bodyRestores a content type to a previous version’s configuration. This creates a new version with the historical configuration, rather than overwriting history.
Path Parameters
string
required
Organization ID
string
required
Project ID
string
required
Content Type ID
Request Body
number
required
The version number to rollback to
Example Request
{
"version": 2
}
Response
Returns the updated ContentType object with a new version number containing the rolled-back configuration.{
"id": "ct123",
"name": "Article",
"status": "published",
"version": 4,
"lastPublishedVersion": 4,
"layoutComponentId": "c123",
"componentIdsAllowList": ["c124", "c125", "c126"],
"packageVersion": "1.0.0",
"schema": { ... },
"templateContentIds": ["cont123"],
"permissions": { ... },
"metadata": {
"author": "admin@metabind.ai",
"tags": ["article"],
"publishedAt": "2024-03-23T10:00:00Z",
"publishedBy": "user123"
},
"createdAt": "2024-03-20T10:00:00Z",
"updatedAt": "2024-03-23T10:00:00Z"
}
Rollback creates a new version (e.g., rolling back from v3 to v2 creates v4 with v2’s configuration). This preserves the complete version history.
Error Responses
Version Not Found
{
"error": {
"code": "VERSION_NOT_FOUND",
"message": "Version 5 not found for content type ct123"
}
}
Invalid Package Version
If the historical version references a package version that is no longer available:{
"error": {
"code": "PACKAGE_NOT_FOUND",
"message": "Package version 0.9.0 referenced by version 2 is no longer available"
}
}
Code Examples
curl -X POST "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content-types/ct123/rollback" \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{
"version": 2
}'
const response = await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content-types/ct123/rollback',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_JWT',
'Content-Type': 'application/json'
},
body: JSON.stringify({
version: 2
})
}
);
const contentType = await response.json();
console.log(`Rolled back to version 2, now at version ${contentType.version}`);