Rollback Content Version
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}/rollback/{version}import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{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}/content/{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}/content/{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}/content/{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}/content/{id}/rollback/{version}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{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
Rollback Content Version
Rollback to a previous version of content
POST
/
app
/
v1
/
organizations
/
{organizationId}
/
projects
/
{projectId}
/
content
/
{id}
/
rollback
/
{version}
Rollback Content Version
curl --request POST \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}/rollback/{version}import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{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}/content/{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}/content/{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}/content/{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}/content/{id}/rollback/{version}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{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 content to a previous version’s data. This creates a draft with the historical content, which can then be published as a new version.
Path Parameters
string
required
Organization ID
string
required
Project ID
string
required
Content ID
number
required
The version number to rollback to
Response
Returns the Content object with the rolled-back data in draft/modified status.{
"data": {
"id": "cont123",
"typeId": "ct123",
"version": null,
"lastPublishedVersion": 3,
"packageVersion": "1.0.0",
"name": "Getting Started Guide",
"status": "modified",
"isTemplate": false,
"content": {
"title": "Getting Started Guide v2",
"components": [...]
},
"compiled": "const body = () => { ... }",
"tags": ["Tutorial"],
"metadata": {
"createdBy": "user123",
"rolledBackFrom": 2,
"locale": "en-US"
},
"createdAt": "2024-03-20T10:00:00Z",
"updatedAt": "2024-03-23T10:00:00Z"
}
}
Rollback creates a draft with the historical content. You must publish to make the rollback live. This preserves the complete version history.
Error Responses
Version Not Found
{
"error": {
"code": "NOT_FOUND",
"message": "Content version 5 for ID cont123 was not found"
}
}
Code Examples
curl -X POST "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content/cont123/rollback/2" \
-H "Authorization: Bearer YOUR_JWT"
const response = await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content/cont123/rollback/2',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_JWT'
}
}
);
const { data: content } = await response.json();
console.log(`Rolled back to version 2, status is now: ${content.status}`);
// Publish the rollback
await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content/cont123/publish',
{
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_JWT' }
}
);