Workflow Triggers
Replace workflow triggers
Atomically replace the full set of triggers for a workflow. All existing triggers are deleted and the supplied set is created in a single transaction — if any trigger in the request is invalid, no changes are applied.
Use this when syncing trigger configuration from an external source of truth. For per-trigger CRUD, use POST/PATCH/DELETE instead.
PUT
/
workflows
/
{workflow_id}
/
triggers
Replace workflow triggers
curl --request PUT \
--url https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"triggers": [
{
"active": true,
"phone_number_id": "<string>",
"event_name": "conversation.csat_scored",
"property_key": "<string>",
"property_value": "<unknown>"
}
]
}
'import requests
url = "https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers"
payload = { "triggers": [
{
"active": True,
"phone_number_id": "<string>",
"event_name": "conversation.csat_scored",
"property_key": "<string>",
"property_value": "<unknown>"
}
] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
triggers: [
{
active: true,
phone_number_id: '<string>',
event_name: 'conversation.csat_scored',
property_key: '<string>',
property_value: '<unknown>'
}
]
})
};
fetch('https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers', 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.kapso.ai/platform/v1/workflows/{workflow_id}/triggers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'triggers' => [
[
'active' => true,
'phone_number_id' => '<string>',
'event_name' => 'conversation.csat_scored',
'property_key' => '<string>',
'property_value' => '<unknown>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.kapso.ai/platform/v1/workflows/{workflow_id}/triggers"
payload := strings.NewReader("{\n \"triggers\": [\n {\n \"active\": true,\n \"phone_number_id\": \"<string>\",\n \"event_name\": \"conversation.csat_scored\",\n \"property_key\": \"<string>\",\n \"property_value\": \"<unknown>\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<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.put("https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"triggers\": [\n {\n \"active\": true,\n \"phone_number_id\": \"<string>\",\n \"event_name\": \"conversation.csat_scored\",\n \"property_key\": \"<string>\",\n \"property_value\": \"<unknown>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"triggers\": [\n {\n \"active\": true,\n \"phone_number_id\": \"<string>\",\n \"event_name\": \"conversation.csat_scored\",\n \"property_key\": \"<string>\",\n \"property_value\": \"<unknown>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflow_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trigger_type": "inbound_message",
"active": true,
"display_name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"triggerable": {
"phone_number_id": "<string>"
}
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Path Parameters
Workflow identifier
Body
application/json
Atomic bulk-replace request body. Use with PUT /workflows/{workflow_id}/triggers to declaratively sync trigger configuration.
Complete desired set of triggers. Existing triggers not in this list are deleted. An empty array removes all triggers.
Show child attributes
Show child attributes
Response
Triggers replaced successfully
List of workflow triggers
Show child attributes
Show child attributes
Was this page helpful?
⌘I
Replace workflow triggers
curl --request PUT \
--url https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"triggers": [
{
"active": true,
"phone_number_id": "<string>",
"event_name": "conversation.csat_scored",
"property_key": "<string>",
"property_value": "<unknown>"
}
]
}
'import requests
url = "https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers"
payload = { "triggers": [
{
"active": True,
"phone_number_id": "<string>",
"event_name": "conversation.csat_scored",
"property_key": "<string>",
"property_value": "<unknown>"
}
] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
triggers: [
{
active: true,
phone_number_id: '<string>',
event_name: 'conversation.csat_scored',
property_key: '<string>',
property_value: '<unknown>'
}
]
})
};
fetch('https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers', 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.kapso.ai/platform/v1/workflows/{workflow_id}/triggers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'triggers' => [
[
'active' => true,
'phone_number_id' => '<string>',
'event_name' => 'conversation.csat_scored',
'property_key' => '<string>',
'property_value' => '<unknown>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.kapso.ai/platform/v1/workflows/{workflow_id}/triggers"
payload := strings.NewReader("{\n \"triggers\": [\n {\n \"active\": true,\n \"phone_number_id\": \"<string>\",\n \"event_name\": \"conversation.csat_scored\",\n \"property_key\": \"<string>\",\n \"property_value\": \"<unknown>\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<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.put("https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"triggers\": [\n {\n \"active\": true,\n \"phone_number_id\": \"<string>\",\n \"event_name\": \"conversation.csat_scored\",\n \"property_key\": \"<string>\",\n \"property_value\": \"<unknown>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kapso.ai/platform/v1/workflows/{workflow_id}/triggers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"triggers\": [\n {\n \"active\": true,\n \"phone_number_id\": \"<string>\",\n \"event_name\": \"conversation.csat_scored\",\n \"property_key\": \"<string>\",\n \"property_value\": \"<unknown>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflow_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trigger_type": "inbound_message",
"active": true,
"display_name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"triggerable": {
"phone_number_id": "<string>"
}
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}
