Apply a Playbook update preview
curl --request POST \
--url https://api-us.hihobbes.com/api/v1/playbook/update-previews/{preview_id}/apply \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-us.hihobbes.com/api/v1/playbook/update-previews/{preview_id}/apply"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-us.hihobbes.com/api/v1/playbook/update-previews/{preview_id}/apply', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"previewId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": 123,
"sectionsEtag": "<string>",
"productionVersion": 123,
"stagingVersion": 123,
"links": {
"staging": {
"url": "<string>",
"availabilityReason": "<string>"
},
"production": {
"url": "<string>",
"availabilityReason": "<string>"
}
},
"changes": [
{
"sectionKey": "<string>",
"title": "<string>",
"action": "added",
"before": "<unknown>",
"after": "<unknown>"
}
],
"noChange": false
}{
"detail": "API key required or invalid."
}{
"detail": "API key does not include the required scope."
}{
"detail": "Preview not found for this organization and API key."
}{
"detail": "The operation conflicts with current state or idempotency history."
}{
"detail": "The saved preview has expired and must be recreated."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Rate limit or organization quota exceeded."
}{
"detail": "The workflow is disabled or temporarily unavailable."
}Playbook
Apply a Playbook update preview
Apply an approved, unexpired preview to staging.
POST
/
api
/
v1
/
playbook
/
update-previews
/
{preview_id}
/
apply
Apply a Playbook update preview
curl --request POST \
--url https://api-us.hihobbes.com/api/v1/playbook/update-previews/{preview_id}/apply \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-us.hihobbes.com/api/v1/playbook/update-previews/{preview_id}/apply"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-us.hihobbes.com/api/v1/playbook/update-previews/{preview_id}/apply', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"previewId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": 123,
"sectionsEtag": "<string>",
"productionVersion": 123,
"stagingVersion": 123,
"links": {
"staging": {
"url": "<string>",
"availabilityReason": "<string>"
},
"production": {
"url": "<string>",
"availabilityReason": "<string>"
}
},
"changes": [
{
"sectionKey": "<string>",
"title": "<string>",
"action": "added",
"before": "<unknown>",
"after": "<unknown>"
}
],
"noChange": false
}{
"detail": "API key required or invalid."
}{
"detail": "API key does not include the required scope."
}{
"detail": "Preview not found for this organization and API key."
}{
"detail": "The operation conflicts with current state or idempotency history."
}{
"detail": "The saved preview has expired and must be recreated."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Rate limit or organization quota exceeded."
}{
"detail": "The workflow is disabled or temporarily unavailable."
}Requires
playbook:write.
The preview must have been created by the same API key. If staging changed
after the preview was created, Hobbes returns 409 without creating a version.
Create a new preview against the current sectionsEtag. Repeating a successful
apply returns the original result.Authorizations
bearerapiKeyHeader
Hobbes API key with the hb_live_ prefix.
Path Parameters
Playbook update preview UUID.
Response
Successful Response