create_policy_group
POST
/api/v1/admin/policy-groups
const url = 'https://example.com/api/v1/admin/policy-groups';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"admission":{"accept_extensionless":true,"allowed_categories":["image"],"allowed_extensions":["example"],"denied_extensions":["example"],"max_file_size":1},"description":"example","execution_preference":"automatic","is_default":true,"is_enabled":true,"name":"example","rules":[{"description":"example","is_enabled":true,"matcher":{"categories":["image"],"compound_extensions":["example"],"extensionless":true,"extensions":["example"],"max_file_size":1,"min_file_size":1},"name":"example","priority":1,"selection_mode":"first_available","targets":[{"accepting_new_writes":true,"policy_id":1,"stable_order":1,"weight":1}],"unavailable_behavior":"next_rule"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use serde_json::json;use reqwest;
#[tokio::main]pub async fn main() { let url = "https://example.com/api/v1/admin/policy-groups";
let payload = json!({ "admission": json!({ "accept_extensionless": true, "allowed_categories": ("image"), "allowed_extensions": ("example"), "denied_extensions": ("example"), "max_file_size": 1 }), "description": "example", "execution_preference": "automatic", "is_default": true, "is_enabled": true, "name": "example", "rules": ( json!({ "description": "example", "is_enabled": true, "matcher": json!({ "categories": ("image"), "compound_extensions": ("example"), "extensionless": true, "extensions": ("example"), "max_file_size": 1, "min_file_size": 1 }), "name": "example", "priority": 1, "selection_mode": "first_available", "targets": ( json!({ "accepting_new_writes": true, "policy_id": 1, "stable_order": 1, "weight": 1 }) ), "unavailable_behavior": "next_rule" }) ) });
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);}curl --request POST \ --url https://example.com/api/v1/admin/policy-groups \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "admission": { "accept_extensionless": true, "allowed_categories": [ "image" ], "allowed_extensions": [ "example" ], "denied_extensions": [ "example" ], "max_file_size": 1 }, "description": "example", "execution_preference": "automatic", "is_default": true, "is_enabled": true, "name": "example", "rules": [ { "description": "example", "is_enabled": true, "matcher": { "categories": [ "image" ], "compound_extensions": [ "example" ], "extensionless": true, "extensions": [ "example" ], "max_file_size": 1, "min_file_size": 1 }, "name": "example", "priority": 1, "selection_mode": "first_available", "targets": [ { "accepting_new_writes": true, "policy_id": 1, "stable_order": 1, "weight": 1 } ], "unavailable_behavior": "next_rule" } ] }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
Create a storage policy group.
object
admission
description
string | null
is_default
boolean
is_enabled
boolean
name
required
string
rules
Array<object> | null
object
description
string | null
is_enabled
boolean
matcher
required
object
categories
Array<string>
compound_extensions
Array<string>
extensionless
boolean | null
extensions
Array<string>
max_file_size
integer format: int64
min_file_size
integer format: int64
name
required
string
priority
required
integer format: int32
selection_mode
string
targets
required
Array<object>
object
accepting_new_writes
boolean
policy_id
required
integer format: int64
stable_order
integer format: int32
weight
required
integer format: int32
unavailable_behavior
string
Responses
Section titled “Responses”Policy group created
Media typeapplication/json
统一 API 响应格式
成功: { "code": "success", "msg": "", "data": {...} }
失败: { "code": "auth.credentials_failed", "msg": "Invalid Credentials" }
object
code
required
string
data
object
admission
required
object
accept_extensionless
boolean
allowed_categories
Array<string>
allowed_extensions
Array<string>
denied_extensions
Array<string>
max_file_size
integer format: int64
created_at
required
string
description
required
string
execution_preference
required
string
id
required
integer format: int64
is_default
required
boolean
is_enabled
required
boolean
name
required
string
routing_revision
required
integer format: int64
rules
required
Array<object>
object
description
required
string
id
required
integer format: int64
is_enabled
required
boolean
matcher
required
object
categories
Array<string>
compound_extensions
Array<string>
extensionless
boolean | null
extensions
Array<string>
max_file_size
integer format: int64
min_file_size
integer format: int64
name
required
string
priority
required
integer format: int32
selection_mode
required
string
targets
required
Array<object>
object
accepting_new_writes
required
boolean
id
required
integer format: int64
policy
required
object
connector_id
required
string
id
required
integer format: int64
name
required
string
policy_id
required
integer format: int64
stable_order
required
integer format: int32
weight
required
integer format: int32
unavailable_behavior
required
string
updated_at
required
string
error
One of:
null
object
diagnostic
One of:
null
object
field
Connector-owned field that caused a configuration validation failure.
This is intentionally optional so existing diagnostics remain wire-compatible.
string | null
kind
required
string
message
required
string
scope
Connector field scope, for example connector_config or static_credential.
string | null
retryable
required
boolean
msg
required
string
Example
{ "code": "success", "data": { "admission": { "allowed_categories": [ "image" ] }, "execution_preference": "automatic", "rules": [ { "matcher": { "categories": [ "image" ] }, "selection_mode": "first_available", "unavailable_behavior": "next_rule" } ] }}Bad Request
Unauthorized
Forbidden