Skip to main content

box_open_sdk/managers/
ai.rs

1// Code generated by box-gantry. DO NOT EDIT.
2
3use crate::runtime::{self, Error};
4
5/// Optional parameters for [`AiManager::get_agent_default`].
6#[derive(Clone, Debug, Default)]
7pub struct AiGetAgentDefaultOptions {
8    pub language: Option<String>,
9    pub model: Option<String>,
10}
11
12/// Operations for the "ai" API area.
13pub struct AiManager {
14    session: std::sync::Arc<runtime::Client>,
15}
16
17impl AiManager {
18    pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
19        Self { session }
20    }
21
22    pub async fn ask(
23        &self,
24        body: crate::models::schemas::AiAsk,
25    ) -> Result<crate::models::schemas::AiResponseFull, Error> {
26        let mut url = self.session.base_url("api");
27        url.push_str("/ai");
28        url.push_str("/ask");
29        let mut req = self.session.new_request("POST", &url);
30        let payload = serde_json::to_vec(&body)?;
31        req = runtime::with_json_body(req, &payload);
32        let resp = self.session.fetch(req).await?;
33        let data = runtime::response_bytes(&resp)?;
34        Ok(serde_json::from_slice(&data)?)
35    }
36
37    pub async fn create_text_gen(
38        &self,
39        body: crate::models::schemas::AiTextGen,
40    ) -> Result<crate::models::schemas::AiResponse, Error> {
41        let mut url = self.session.base_url("api");
42        url.push_str("/ai");
43        url.push_str("/text_gen");
44        let mut req = self.session.new_request("POST", &url);
45        let payload = serde_json::to_vec(&body)?;
46        req = runtime::with_json_body(req, &payload);
47        let resp = self.session.fetch(req).await?;
48        let data = runtime::response_bytes(&resp)?;
49        Ok(serde_json::from_slice(&data)?)
50    }
51
52    pub async fn get_agent_default(
53        &self,
54        mode: crate::models::schemas::GetAgentDefaultMode,
55        opts: Option<AiGetAgentDefaultOptions>,
56    ) -> Result<crate::models::schemas::AiAgent, Error> {
57        let mut url = self.session.base_url("api");
58        url.push_str("/ai_agent_default");
59        let mut req = self.session.new_request("GET", &url);
60        req = runtime::with_query(req, "mode", &mode.0);
61        let opts = opts.unwrap_or_default();
62        if let Some(value) = opts.language {
63            req = runtime::with_query(req, "language", &value);
64        }
65        if let Some(value) = opts.model {
66            req = runtime::with_query(req, "model", &value);
67        }
68        let resp = self.session.fetch(req).await?;
69        let data = runtime::response_bytes(&resp)?;
70        Ok(serde_json::from_slice(&data)?)
71    }
72
73    pub async fn extract(
74        &self,
75        body: crate::models::schemas::AiExtract,
76    ) -> Result<crate::models::schemas::AiResponse, Error> {
77        let mut url = self.session.base_url("api");
78        url.push_str("/ai");
79        url.push_str("/extract");
80        let mut req = self.session.new_request("POST", &url);
81        let payload = serde_json::to_vec(&body)?;
82        req = runtime::with_json_body(req, &payload);
83        let resp = self.session.fetch(req).await?;
84        let data = runtime::response_bytes(&resp)?;
85        Ok(serde_json::from_slice(&data)?)
86    }
87
88    pub async fn create_extract_structured(
89        &self,
90        body: crate::models::schemas::AiExtractStructured,
91    ) -> Result<crate::models::schemas::AiExtractStructuredResponse, Error> {
92        let mut url = self.session.base_url("api");
93        url.push_str("/ai");
94        url.push_str("/extract_structured");
95        let mut req = self.session.new_request("POST", &url);
96        let payload = serde_json::to_vec(&body)?;
97        req = runtime::with_json_body(req, &payload);
98        let resp = self.session.fetch(req).await?;
99        let data = runtime::response_bytes(&resp)?;
100        Ok(serde_json::from_slice(&data)?)
101    }
102}