curl --request POST \
--url https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-workspace-id: <x-workspace-id>' \
--data @- <<EOF
{
"condition": {
"type": "expression",
"value": "lead.intent == 'closing'"
},
"nextStageName": "closing"
}
EOFimport requests
url = "https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers"
payload = {
"condition": {
"type": "expression",
"value": "lead.intent == 'closing'"
},
"nextStageName": "closing"
}
headers = {
"x-workspace-id": "<x-workspace-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-workspace-id': '<x-workspace-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
condition: {type: 'expression', value: 'lead.intent == \'closing\''},
nextStageName: 'closing'
})
};
fetch('https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/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-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'condition' => [
'type' => 'expression',
'value' => 'lead.intent == \'closing\''
],
'nextStageName' => 'closing'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-workspace-id: <x-workspace-id>"
],
]);
$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-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers"
payload := strings.NewReader("{\n \"condition\": {\n \"type\": \"expression\",\n \"value\": \"lead.intent == 'closing'\"\n },\n \"nextStageName\": \"closing\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-workspace-id", "<x-workspace-id>")
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers")
.header("x-workspace-id", "<x-workspace-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"condition\": {\n \"type\": \"expression\",\n \"value\": \"lead.intent == 'closing'\"\n },\n \"nextStageName\": \"closing\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-workspace-id"] = '<x-workspace-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"condition\": {\n \"type\": \"expression\",\n \"value\": \"lead.intent == 'closing'\"\n },\n \"nextStageName\": \"closing\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"condition": {
"type": "intent",
"value": "<string>",
"metadata": {}
},
"nextStageName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"code": "INVALID_TRIGGER",
"message": "El campo nextStageName debe referenciar un stage existente"
}{
"code": "STAGE_NOT_FOUND",
"message": "No se encontró el stage indicado"
}{
"code": "TRIGGER_CONFLICT",
"message": "La referencia al siguiente stage crea un ciclo inválido"
}Crear trigger para un stage
Registra un nuevo trigger asociado al stage indicado. La validación del grafo se
ejecuta de forma automática y responde 400 INVALID_GRAPH cuando la transición rompe
invariantes. El evento BlueprintStageTriggerCreated se publica al finalizar y el job
StagesSyncJob vuelve a generar el payload del proveedor de forma asincrónica.
curl --request POST \
--url https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-workspace-id: <x-workspace-id>' \
--data @- <<EOF
{
"condition": {
"type": "expression",
"value": "lead.intent == 'closing'"
},
"nextStageName": "closing"
}
EOFimport requests
url = "https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers"
payload = {
"condition": {
"type": "expression",
"value": "lead.intent == 'closing'"
},
"nextStageName": "closing"
}
headers = {
"x-workspace-id": "<x-workspace-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-workspace-id': '<x-workspace-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
condition: {type: 'expression', value: 'lead.intent == \'closing\''},
nextStageName: 'closing'
})
};
fetch('https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/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-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'condition' => [
'type' => 'expression',
'value' => 'lead.intent == \'closing\''
],
'nextStageName' => 'closing'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-workspace-id: <x-workspace-id>"
],
]);
$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-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers"
payload := strings.NewReader("{\n \"condition\": {\n \"type\": \"expression\",\n \"value\": \"lead.intent == 'closing'\"\n },\n \"nextStageName\": \"closing\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-workspace-id", "<x-workspace-id>")
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers")
.header("x-workspace-id", "<x-workspace-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"condition\": {\n \"type\": \"expression\",\n \"value\": \"lead.intent == 'closing'\"\n },\n \"nextStageName\": \"closing\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-workspace-id"] = '<x-workspace-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"condition\": {\n \"type\": \"expression\",\n \"value\": \"lead.intent == 'closing'\"\n },\n \"nextStageName\": \"closing\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"condition": {
"type": "intent",
"value": "<string>",
"metadata": {}
},
"nextStageName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"code": "INVALID_TRIGGER",
"message": "El campo nextStageName debe referenciar un stage existente"
}{
"code": "STAGE_NOT_FOUND",
"message": "No se encontró el stage indicado"
}{
"code": "TRIGGER_CONFLICT",
"message": "La referencia al siguiente stage crea un ciclo inválido"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Identificador del workspace multi-tenant.
Path Parameters
Identificador del agente
Identificador del blueprint del agente (se obtiene de GET /v1/agents/{agentId}/blueprints)
Identificador del stage dentro del blueprint del agente
Body
Response
Trigger creado
Condición evaluada para activar la transición al siguiente stage.
Show child attributes
Show child attributes
Nombre del siguiente stage al que se transicionará.
