Discard unpublished component changes
curl --request DELETE \
--url https://api.dittowords.com/v2/components/staged \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"componentIds": [
"component-id-1",
"component-id-2"
]
}
'import requests
url = "https://api.dittowords.com/v2/components/staged"
payload = { "componentIds": ["component-id-1", "component-id-2"] }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({componentIds: ['component-id-1', 'component-id-2']})
};
fetch('https://api.dittowords.com/v2/components/staged', 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.dittowords.com/v2/components/staged",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'componentIds' => [
'component-id-1',
'component-id-2'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.dittowords.com/v2/components/staged"
payload := strings.NewReader("{\n \"componentIds\": [\n \"component-id-1\",\n \"component-id-2\"\n ]\n}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.delete("https://api.dittowords.com/v2/components/staged")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"componentIds\": [\n \"component-id-1\",\n \"component-id-2\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dittowords.com/v2/components/staged")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"componentIds\": [\n \"component-id-1\",\n \"component-id-2\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"discardedIds": [
"component-id-1"
],
"skippedIds": [
"component-id-2"
]
}{
"message": "Component with developer ID component-id-1 not found"
}{
"message": "This workspace hasn't opted into library component versioning"
}Versioning
Discard unpublished component changes
Discards the unpublished changes on library components by their Developer IDs. The components’ published values, versions, and instances are unchanged. Components with no unpublished changes are left as they are and returned in skippedIds.
The operation is all-or-nothing: if any Developer ID does not match a component, nothing is discarded.
Only available in workspaces that have opted into library component versioning.
DELETE
/
components
/
staged
Discard unpublished component changes
curl --request DELETE \
--url https://api.dittowords.com/v2/components/staged \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"componentIds": [
"component-id-1",
"component-id-2"
]
}
'import requests
url = "https://api.dittowords.com/v2/components/staged"
payload = { "componentIds": ["component-id-1", "component-id-2"] }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({componentIds: ['component-id-1', 'component-id-2']})
};
fetch('https://api.dittowords.com/v2/components/staged', 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.dittowords.com/v2/components/staged",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'componentIds' => [
'component-id-1',
'component-id-2'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.dittowords.com/v2/components/staged"
payload := strings.NewReader("{\n \"componentIds\": [\n \"component-id-1\",\n \"component-id-2\"\n ]\n}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.delete("https://api.dittowords.com/v2/components/staged")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"componentIds\": [\n \"component-id-1\",\n \"component-id-2\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dittowords.com/v2/components/staged")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"componentIds\": [\n \"component-id-1\",\n \"component-id-2\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"discardedIds": [
"component-id-1"
],
"skippedIds": [
"component-id-2"
]
}{
"message": "Component with developer ID component-id-1 not found"
}{
"message": "This workspace hasn't opted into library component versioning"
}Authorizations
Body
application/json
Array of Developer IDs for the library components whose unpublished changes should be discarded.
Response
Returns success status of the discard operation, the Developer IDs of the components whose unpublished changes were discarded, and the Developer IDs of any that had no unpublished changes