Add a Webhook
You can set some of the fields available in the webhook object, below we only list the properties in the example and the possible required fields.
https://mapi.storyblok.com/v1/spaces/:space_id/webhook_endpoints/
Path Parameters
-
:space_id
required numberNumeric ID of a space
Request Body Properties
-
webhook_endpoint
The Webhook ObjectWebhook object
-
name
required stringName of this webhook
-
description
stringA brief description of this webhook
-
endpoint
required stringWebhook endpoint
-
secret
stringWebhook secret
-
actions
required enum[]Webhook triggers, at least one of the options listed below.
Triggers Description story.published A story is published story.unpublished A story is unpublished story.deleted A story is deleted story.moved A story is moved from a folder or to a folder datasource.entries_updated A new datasource entry is saved or added. asset.created An asset is uploaded asset.replaced An asset is replaced asset.deleted An asset is deleted asset.restored An asset is restored user.added A new user is added to the space user.removed A user is removed from the space user.roles_updated A user role is updated stage.changed A workflow stage of a story changed. pipeline.deployed A pipeline stage is deployed release.merged A release is merged into the currently released content -
activated
booleanActivate or deactivate the current webhook. Default: true when creating a webhook
-
Response Properties
-
webhook_endpoint
The Webhook ObjectWebhook object
-
id
numberThe numeric ID of the webhook
-
name
stringName of this webhook
-
description
stringA brief description of this webhook
-
endpoint
stringWebhook endpoint
-
space_id
numberNumeric ID of a space
-
secret
stringWebhook secret
-
actions
enum[]Webhook triggers, at least one of the options listed below.
Triggers Description story.published A story is published story.unpublished A story is unpublished story.deleted A story is deleted story.moved A story is moved from a folder or to a folder datasource.entries_updated A new datasource entry is saved or added. asset.created An asset is uploaded asset.replaced An asset is replaced asset.deleted An asset is deleted asset.restored An asset is restored user.added A new user is added to the space user.removed A user is removed from the space user.roles_updated A user role is updated stage.changed A workflow stage of a story changed. pipeline.deployed A pipeline stage is deployed release.merged A release is merged into the currently released content -
activated
booleanActivate or deactivate the current webhook. Default: true when creating a webhook
-
deleted_at
stringDeleted date (Format: YYYY-mm-dd HH:MM)
-
created_at
stringCreation date (Format:
yyyy-MM-dd'T'HH:mm:ssZ
) -
updated_at
stringLatest update date (Format:
yyyy-MM-dd'T'HH:mm:ssZ
)
-
curl "https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_OAUTH_TOKEN" \
-d "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}"
// Using the Universal JavaScript Client:
// https://github.com/storyblok/storyblok-js-client
Storyblok.post('/spaces/656/webhook_endpoints/', {
"webhook_endpoint": {
"name": "Rebuild Website",
"endpoint": "https://apiendpoint.com",
"secret": "",
"actions": [
"story.published"
],
"activated": true
}
})
.then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = [
"webhook_endpoint" => [
"name" => "Rebuild Website",
"endpoint" => "https => //apiendpoint.com",
"secret" => "",
"actions" => [
"story.published"
],
"activated" => true
]
];
$client->post('/spaces/656/webhook_endpoints/', $payload)->getBody();
require 'storyblok'
client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {
"webhook_endpoint" => {
"name" => "Rebuild Website",
"endpoint" => "https => //apiendpoint.com",
"secret" => "",
"actions" => [
"story.published"
],
"activated" => true
}
}
client.post('/spaces/656/webhook_endpoints/', payload)
HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/")
.header("Content-Type", "application/json")
.header("Authorization", "YOUR_OAUTH_TOKEN")
.body("{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}")
.asString();
var client = new RestClient("https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
request.AddParameter("application/json", "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"Content-Type": "application/json",
"Authorization": "YOUR_OAUTH_TOKEN"
]
let postData = NSData(data: "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
request.method = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
import requests
url = "https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/"
querystring = {}
payload = "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}"
headers = {
'Content-Type': "application/json",
'Authorization': "YOUR_OAUTH_TOKEN"
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)