Skip to main content

uarp_sdk/generated/api/
guardrails.rs

1// Code generated by @uarp/codegen from spec/openapi.json. DO NOT EDIT.
2//!
3//! Guardrail policies
4
5#![allow(unused_imports, clippy::too_many_arguments)]
6
7use reqwest::Method;
8use serde::{Deserialize, Serialize};
9
10use crate::client::{Client, Request, NO_BODY, NO_QUERY};
11use crate::error::Result;
12use crate::generated::models;
13use crate::multipart::{field_text, FilePart};
14use crate::util::encode_path;
15
16/// Guardrail policies
17#[derive(Debug, Clone)]
18pub struct GuardrailsApi {
19    pub(crate) client: Client,
20}
21
22impl Client {
23    /// Guardrail policies
24    pub fn guardrails(&self) -> GuardrailsApi {
25        GuardrailsApi { client: self.clone() }
26    }
27}
28
29impl GuardrailsApi {
30    /// Register a custom guardrail
31    ///
32    /// `POST /api/v1/guardrails`
33    ///
34    /// Required scopes: `guardrails:write`.
35    pub async fn create(&self, body: &models::CreateGuardrailRequest) -> Result<models::Guardrail> {
36        self.client
37            .request_json(Request {
38                method: Method::POST,
39                path: "/api/v1/guardrails".to_string(),
40                query: NO_QUERY,
41                body: Some(body),
42                headers: Vec::new(),
43                idempotent: true,
44            })
45            .await
46    }
47
48    /// Delete a guardrail
49    ///
50    /// `DELETE /api/v1/guardrails/{guardrailId}`
51    ///
52    /// Required scopes: `guardrails:write`.
53    pub async fn delete(&self, guardrail_id: &str) -> Result<models::DeleteGuardrailResponse> {
54        self.client
55            .request_json(Request {
56                method: Method::DELETE,
57                path: format!("/api/v1/guardrails/{}", encode_path(guardrail_id)),
58                query: NO_QUERY,
59                body: NO_BODY,
60                headers: Vec::new(),
61                idempotent: true,
62            })
63            .await
64    }
65
66    /// List guardrails
67    ///
68    /// `GET /api/v1/guardrails`
69    ///
70    /// Required scopes: `guardrails:read`.
71    pub async fn list(&self) -> Result<models::ListGuardrailsResponse> {
72        self.client
73            .request_json(Request {
74                method: Method::GET,
75                path: "/api/v1/guardrails".to_string(),
76                query: NO_QUERY,
77                body: NO_BODY,
78                headers: Vec::new(),
79                idempotent: false,
80            })
81            .await
82    }
83}