curl --request PATCH \
--url https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"condition": {
"type": "intent",
"value": "close_deal"
}
}
'import requests
url = "https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}"
payload = { "condition": {
"type": "intent",
"value": "close_deal"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({condition: {type: 'intent', value: 'close_deal'}})
};
fetch('https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}', 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/{triggerId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'condition' => [
'type' => 'intent',
'value' => 'close_deal'
]
]),
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/{triggerId}"
payload := strings.NewReader("{\n \"condition\": {\n \"type\": \"intent\",\n \"value\": \"close_deal\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"condition\": {\n \"type\": \"intent\",\n \"value\": \"close_deal\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"condition\": {\n \"type\": \"intent\",\n \"value\": \"close_deal\"\n }\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 trigger debe apuntar a un stage existente"
}{
"statusCode": 404,
"error": "Not Found",
"message": "No existe el trigger especificado"
}{
"statusCode": 409,
"error": "Conflict",
"message": "La referencia al siguiente stage crea un ciclo inválido"
}Actualizar un trigger existente
Modifica campos seleccionados de un trigger. La validación completa del grafo se
ejecuta antes de confirmar los cambios y retorna 400 INVALID_GRAPH cuando la
transición rompe invariantes. El evento BlueprintStageTriggerUpdated se publica tras
aplicar los cambios y StagesSyncJob reaplica el grafo en el proveedor externo.
curl --request PATCH \
--url https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"condition": {
"type": "intent",
"value": "close_deal"
}
}
'import requests
url = "https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}"
payload = { "condition": {
"type": "intent",
"value": "close_deal"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({condition: {type: 'intent', value: 'close_deal'}})
};
fetch('https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}', 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/{triggerId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'condition' => [
'type' => 'intent',
'value' => 'close_deal'
]
]),
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/{triggerId}"
payload := strings.NewReader("{\n \"condition\": {\n \"type\": \"intent\",\n \"value\": \"close_deal\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"condition\": {\n \"type\": \"intent\",\n \"value\": \"close_deal\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.studio.getsupervisor.ai/v1/agents/{agentId}/blueprints/{blueprintId}/stages/{stageId}/triggers/{triggerId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"condition\": {\n \"type\": \"intent\",\n \"value\": \"close_deal\"\n }\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 trigger debe apuntar a un stage existente"
}{
"statusCode": 404,
"error": "Not Found",
"message": "No existe el trigger especificado"
}{
"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
Identificador del trigger asociado al stage
Body
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 actualizado
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á.
