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' \
--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 = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {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"
],
]);
$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("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("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["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>"
},
"nextStageName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"error": "Bad Request",
"message": "El campo nextStageName debe referenciar un stage existente"
}{
"statusCode": 404,
"error": "Not Found",
"message": "No se encontró el stage indicado"
}{
"statusCode": 409,
"error": "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' \
--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 = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {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"
],
]);
$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("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("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["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>"
},
"nextStageName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"error": "Bad Request",
"message": "El campo nextStageName debe referenciar un stage existente"
}{
"statusCode": 404,
"error": "Not Found",
"message": "No se encontró el stage indicado"
}{
"statusCode": 409,
"error": "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. Obligatorio al autenticar con Authorization: Bearer, donde su ausencia devuelve 400 Workspace context is required. Con x-api-key es opcional: la llave ya identifica a su workspace y lo que mandes aquí se ignora.
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
Payload base para crear o actualizar triggers asociados a un stage.
Condición evaluada para activar la transición al siguiente stage. La forma de value depende de type, así que el esquema discrimina por él: con intent y expression el dominio exige una cadena y rechaza cualquier otra cosa con 400; sólo rule admite además un objeto con la regla estructurada. Expresarlo como una unión plana string | object para los tres dejaba que un cliente generado mandara un payload que la API rechaza.
- Intent
- Expression
- Rule
Show child attributes
Show child attributes
1Response
Trigger creado
Condición evaluada para activar la transición al siguiente stage. La forma de value depende de type, así que el esquema discrimina por él: con intent y expression el dominio exige una cadena y rechaza cualquier otra cosa con 400; sólo rule admite además un objeto con la regla estructurada. Expresarlo como una unión plana string | object para los tres dejaba que un cliente generado mandara un payload que la API rechaza.
- Intent
- Expression
- Rule
Show child attributes
Show child attributes
Nombre del siguiente stage al que se transicionará.
