Rollback Content Type Version
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}', 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}/types/{id}/rollback/{version}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}"
req, _ := http.NewRequest("POST", url, nil)
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}/types/{id}/rollback/{version}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
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}
/
types
/
{id}
/
rollback
/
{version}
Rollback Content Type Version
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}', 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}/types/{id}/rollback/{version}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}"
req, _ := http.NewRequest("POST", url, nil)
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}/types/{id}/rollback/{version}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/types/{id}/rollback/{version}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
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
number
required
The version number to rollback to
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,
"rootComponentId": "c123",
"config": {
"allowedComponents": ["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"
}
}
Code Examples
curl -X POST "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/types/ct123/rollback/2" \
-H "Authorization: Bearer YOUR_JWT"
const response = await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/types/ct123/rollback/2',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_JWT'
}
}
);
const contentType = await response.json();
console.log(`Rolled back to version 2, now at version ${contentType.version}`);