List Policies
curl --request GET \
--url https://{host}/api/policy/v2/policies \
--header 'Authorization: Bearer <token>'import requests
url = "https://{host}/api/policy/v2/policies"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/api/policy/v2/policies', 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://{host}/api/policy/v2/policies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/api/policy/v2/policies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{host}/api/policy/v2/policies")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/policy/v2/policies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "<string>",
"mcp_server_id": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"updated_by_user_id": "<string>",
"mcp_server_name": "<string>",
"mcp_server_deleted": false,
"application_ids": [
"<string>"
],
"application_names": [
"<string>"
],
"application_deleted_ids": [
"<string>"
],
"tags": [
"<string>"
],
"updated_by_user_name": "<string>",
"description": "<string>",
"rules_count": 0
}
],
"pagination": {
"page": 123,
"limit": 123,
"total": 123,
"pages": 123,
"previous_page": 123,
"next_page": 123
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Policies
List Policies
GET
/
api
/
policy
/
v2
/
policies
List Policies
curl --request GET \
--url https://{host}/api/policy/v2/policies \
--header 'Authorization: Bearer <token>'import requests
url = "https://{host}/api/policy/v2/policies"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/api/policy/v2/policies', 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://{host}/api/policy/v2/policies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/api/policy/v2/policies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{host}/api/policy/v2/policies")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/policy/v2/policies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "<string>",
"mcp_server_id": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"updated_by_user_id": "<string>",
"mcp_server_name": "<string>",
"mcp_server_deleted": false,
"application_ids": [
"<string>"
],
"application_names": [
"<string>"
],
"application_deleted_ids": [
"<string>"
],
"tags": [
"<string>"
],
"updated_by_user_name": "<string>",
"description": "<string>",
"rules_count": 0
}
],
"pagination": {
"page": 123,
"limit": 123,
"total": 123,
"pages": 123,
"previous_page": 123,
"next_page": 123
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
ApiKeyOAuth2
A Barndoor API key, sent as Authorization: Bearer <key>. Keys are prefixed bdai_ and are opaque ā do not attempt to decode one. Interchangeable with an OAuth 2.0 access token.
Query Parameters
Search by policy ID, name, description, or support contact
Filter by status values
Filter by MCP server IDs
Filter by agent/application IDs
Column to sort by
Available options:
name, mcp_server_name, status, updated_at Sort direction
Available options:
asc, desc Filter to non-archived policies with at least one open or acknowledged policy impact (true), or the complement (false)
Page number (1-based)
Required range:
x >= 1Number of items per page (max 100)
Required range:
1 <= x <= 100