create_grant
POST
/admin/principals/{id}/grants
curl --request POST \ --url http://localhost:3001/admin/principals/00000000-0000-0000-0000-000000000000/grants \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{"can_allocate":false,"can_trade":false,"can_view":false,"portfolio_id":"00000000-0000-0000-0000-000000000000"}'import requests
url = "http://localhost:3001/admin/principals/00000000-0000-0000-0000-000000000000/grants"
payload = { "can_allocate": False, "can_trade": False, "can_view": False, "portfolio_id": "00000000-0000-0000-0000-000000000000"}headers = { "Authorization": "Bearer <token>", "Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())use serde_json::json;use reqwest;
#[tokio::main]pub async fn main() { let url = "http://localhost:3001/admin/principals/00000000-0000-0000-0000-000000000000/grants";
let payload = json!({ "can_allocate": false, "can_trade": false, "can_view": false, "portfolio_id": "00000000-0000-0000-0000-000000000000" });
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Authorization", "Bearer <token>".parse().unwrap()); headers.insert("Content-Type", "application/json".parse().unwrap());
let client = reqwest::Client::new(); let response = client.post(url) .headers(headers) .json(&payload) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”id
required
string format: uuid
Principal ID
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
can_allocate
required
boolean
can_trade
required
boolean
can_view
required
boolean
portfolio_id
required
string format: uuid
Example generated
{ "can_allocate": true, "can_trade": true, "can_view": true, "portfolio_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}Responses
Section titled “Responses”Created
Media typeapplication/json
object
can_allocate
required
boolean
can_trade
required
boolean
can_view
required
boolean
created_at
required
string format: date-time
id
required
string format: uuid
portfolio_id
required
string format: uuid
principal_id
required
string format: uuid
updated_at
required
string format: date-time
Example generated
{ "can_allocate": true, "can_trade": true, "can_view": true, "created_at": "2026-04-15T12:00:00Z", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "portfolio_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "principal_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "updated_at": "2026-04-15T12:00:00Z"}Grant already exists for this principal/portfolio