Atomically migrate selected bindings to a policy version with an auditable…
curl --request POST \
--url https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"targetVersion": "<string>",
"bindings": [
{
"sourceVersion": "<string>",
"bindingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"reason": "<string>"
}
'import requests
url = "https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind"
payload = {
"targetVersion": "<string>",
"bindings": [
{
"sourceVersion": "<string>",
"bindingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"reason": "<string>"
}
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({
targetVersion: '<string>',
bindings: [{sourceVersion: '<string>', bindingId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
reason: '<string>'
})
};
fetch('https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind', 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.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind",
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([
'targetVersion' => '<string>',
'bindings' => [
[
'sourceVersion' => '<string>',
'bindingId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'reason' => '<string>'
]),
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.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind"
payload := strings.NewReader("{\n \"targetVersion\": \"<string>\",\n \"bindings\": [\n {\n \"sourceVersion\": \"<string>\",\n \"bindingId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"reason\": \"<string>\"\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.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"targetVersion\": \"<string>\",\n \"bindings\": [\n {\n \"sourceVersion\": \"<string>\",\n \"bindingId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind")
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 \"targetVersion\": \"<string>\",\n \"bindings\": [\n {\n \"sourceVersion\": \"<string>\",\n \"bindingId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"bindingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": "<string>",
"groupId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"groupName": "<string>",
"groupVersion": "<string>",
"isLatestGroupVersion": true,
"bindingLevel": "TENANT",
"agent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"sourceAgent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"sourceUser": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"sinkAgent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"channel": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"mcpServer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"llmGateway": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"priority": 123,
"validFrom": "2023-11-07T05:31:56Z",
"validTo": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
]Policy Groups
Atomically migrate selected bindings to a policy version with an auditable…
Atomically migrate selected bindings to a policy version with an auditable reason
Security Requirements
| Auth Types | Entities | Permissions | Required Roles |
|---|---|---|---|
| USER | TENANT | WRITE | TENANT:WRITE |
POST
/
relay
/
v1
/
policy-groups
/
{groupId}
/
cascade-rebind
Atomically migrate selected bindings to a policy version with an auditable…
curl --request POST \
--url https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"targetVersion": "<string>",
"bindings": [
{
"sourceVersion": "<string>",
"bindingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"reason": "<string>"
}
'import requests
url = "https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind"
payload = {
"targetVersion": "<string>",
"bindings": [
{
"sourceVersion": "<string>",
"bindingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"reason": "<string>"
}
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({
targetVersion: '<string>',
bindings: [{sourceVersion: '<string>', bindingId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
reason: '<string>'
})
};
fetch('https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind', 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.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind",
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([
'targetVersion' => '<string>',
'bindings' => [
[
'sourceVersion' => '<string>',
'bindingId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'reason' => '<string>'
]),
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.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind"
payload := strings.NewReader("{\n \"targetVersion\": \"<string>\",\n \"bindings\": [\n {\n \"sourceVersion\": \"<string>\",\n \"bindingId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"reason\": \"<string>\"\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.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"targetVersion\": \"<string>\",\n \"bindings\": [\n {\n \"sourceVersion\": \"<string>\",\n \"bindingId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.swarmd.ai/relay/v1/policy-groups/{groupId}/cascade-rebind")
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 \"targetVersion\": \"<string>\",\n \"bindings\": [\n {\n \"sourceVersion\": \"<string>\",\n \"bindingId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"bindingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": "<string>",
"groupId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"groupName": "<string>",
"groupVersion": "<string>",
"isLatestGroupVersion": true,
"bindingLevel": "TENANT",
"agent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"sourceAgent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"sourceUser": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"sinkAgent": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"channel": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"mcpServer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"llmGateway": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"priority": 123,
"validFrom": "2023-11-07T05:31:56Z",
"validTo": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z"
}
]Authorizations
JWT token (USER, AGENT, or SERVICE auth)
Path Parameters
Body
application/json
Response
200 - application/json
OK
Available options:
TENANT, ANY_TO_AGENT, AGENT_TO_AGENT, USER_TO_AGENT, CHANNEL_TO_ANY_AGENT, CHANNEL_TO_AGENT, ANY_TO_MCP_SERVER, ANY_TO_LLM_GATEWAY, AGENT_TO_MCP_SERVER, AGENT_TO_LLM_GATEWAY, USER_TO_LLM_GATEWAY Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
