Skip to main content

box_open_sdk/models/schemas/
ai_studio.rs

1// Code generated by box-gantry 0.1.0 (spec 3fb3510fe12f2f80) for Box API 2024.0. DO NOT EDIT.
2
3use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum AiAgentAllowedEntity {
9    User(UserBase),
10    Group(GroupBase),
11    /// An unrecognized discriminator, retained verbatim (open union).
12    Unknown(serde_json::Value),
13}
14
15impl Default for AiAgentAllowedEntity {
16    fn default() -> Self {
17        Self::Unknown(Default::default())
18    }
19}
20
21impl serde::Serialize for AiAgentAllowedEntity {
22    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
23        match self {
24            Self::User(inner) => inner.serialize(serializer),
25            Self::Group(inner) => inner.serialize(serializer),
26            Self::Unknown(inner) => inner.serialize(serializer),
27        }
28    }
29}
30
31impl<'de> serde::Deserialize<'de> for AiAgentAllowedEntity {
32    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
33        let value = serde_json::Value::deserialize(deserializer)?;
34        let tag = value
35            .get("type")
36            .and_then(serde_json::Value::as_str)
37            .map(str::to_owned);
38        match tag.as_deref() {
39            Some("user") => Ok(Self::User(
40                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
41            )),
42            Some("group") => Ok(Self::Group(
43                serde_json::from_value(value).map_err(serde::de::Error::custom)?,
44            )),
45            _ => Ok(Self::Unknown(value)),
46        }
47    }
48}
49
50#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
51pub struct AiMultipleAgentResponse {
52    #[serde(default, skip_serializing_if = "Option::is_none")]
53    pub limit: Option<i64>,
54    #[serde(
55        default,
56        skip_serializing_if = "Option::is_none",
57        deserialize_with = "double_option"
58    )]
59    pub next_marker: Option<Option<String>>,
60    #[serde(
61        default,
62        skip_serializing_if = "Option::is_none",
63        deserialize_with = "double_option"
64    )]
65    pub prev_marker: Option<Option<String>>,
66    pub entries: Vec<AiSingleAgentResponseFull>,
67}
68
69#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
70pub struct AiSingleAgentResponseFull {
71    pub id: String,
72    #[serde(default, skip_serializing_if = "Option::is_none")]
73    pub r#type: Option<AiSingleAgentResponseType>,
74    pub origin: String,
75    pub name: String,
76    pub access_state: String,
77    #[serde(default, skip_serializing_if = "Option::is_none")]
78    pub created_by: Option<UserBase>,
79    #[serde(default, skip_serializing_if = "Option::is_none")]
80    pub created_at: Option<chrono::DateTime<chrono::Utc>>,
81    #[serde(default, skip_serializing_if = "Option::is_none")]
82    pub modified_by: Option<UserBase>,
83    #[serde(default, skip_serializing_if = "Option::is_none")]
84    pub modified_at: Option<chrono::DateTime<chrono::Utc>>,
85    #[serde(default, skip_serializing_if = "Option::is_none")]
86    pub icon_reference: Option<String>,
87    #[serde(default, skip_serializing_if = "Option::is_none")]
88    pub allowed_entities: Option<Vec<AiAgentAllowedEntity>>,
89    #[serde(default, skip_serializing_if = "Option::is_none")]
90    pub ask: Option<AiStudioAgentAskResponse>,
91    #[serde(default, skip_serializing_if = "Option::is_none")]
92    pub text_gen: Option<AiStudioAgentTextGenResponse>,
93    #[serde(default, skip_serializing_if = "Option::is_none")]
94    pub extract: Option<AiStudioAgentExtractResponse>,
95}
96
97#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
98pub struct AiStudioAgentAsk {
99    pub r#type: AiAgentAskType,
100    pub access_state: String,
101    pub description: String,
102    #[serde(
103        default,
104        skip_serializing_if = "Option::is_none",
105        deserialize_with = "double_option"
106    )]
107    pub custom_instructions: Option<Option<String>>,
108    #[serde(default, skip_serializing_if = "Option::is_none")]
109    pub suggested_questions: Option<Vec<String>>,
110    #[serde(default, skip_serializing_if = "Option::is_none")]
111    pub long_text: Option<AiStudioAgentLongTextTool>,
112    #[serde(default, skip_serializing_if = "Option::is_none")]
113    pub basic_text: Option<AiStudioAgentBasicTextTool>,
114    #[serde(default, skip_serializing_if = "Option::is_none")]
115    pub basic_image: Option<AiStudioAgentBasicTextTool>,
116    #[serde(default, skip_serializing_if = "Option::is_none")]
117    pub spreadsheet: Option<AiStudioAgentSpreadsheetTool>,
118    #[serde(default, skip_serializing_if = "Option::is_none")]
119    pub long_text_multi: Option<AiStudioAgentLongTextTool>,
120    #[serde(default, skip_serializing_if = "Option::is_none")]
121    pub basic_text_multi: Option<AiStudioAgentBasicTextTool>,
122    #[serde(default, skip_serializing_if = "Option::is_none")]
123    pub basic_image_multi: Option<AiStudioAgentBasicTextTool>,
124}
125
126#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
127pub struct AiStudioAgentAskResponse {
128    pub r#type: AiAgentAskType,
129    pub access_state: String,
130    pub description: String,
131    #[serde(
132        default,
133        skip_serializing_if = "Option::is_none",
134        deserialize_with = "double_option"
135    )]
136    pub custom_instructions: Option<Option<String>>,
137    #[serde(default, skip_serializing_if = "Option::is_none")]
138    pub suggested_questions: Option<Vec<String>>,
139    #[serde(default, skip_serializing_if = "Option::is_none")]
140    pub long_text: Option<AiStudioAgentLongTextToolResponse>,
141    #[serde(default, skip_serializing_if = "Option::is_none")]
142    pub basic_text: Option<AiStudioAgentBasicTextToolResponse>,
143    #[serde(default, skip_serializing_if = "Option::is_none")]
144    pub basic_image: Option<AiStudioAgentBasicTextToolResponse>,
145    #[serde(default, skip_serializing_if = "Option::is_none")]
146    pub spreadsheet: Option<AiStudioAgentSpreadsheetToolResponse>,
147    #[serde(default, skip_serializing_if = "Option::is_none")]
148    pub long_text_multi: Option<AiStudioAgentLongTextToolResponse>,
149    #[serde(default, skip_serializing_if = "Option::is_none")]
150    pub basic_text_multi: Option<AiStudioAgentBasicTextToolResponse>,
151    #[serde(default, skip_serializing_if = "Option::is_none")]
152    pub basic_image_multi: Option<AiStudioAgentBasicTextToolResponse>,
153}
154
155#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
156pub struct AiStudioAgentBasicGenTool {
157    #[serde(default, skip_serializing_if = "Option::is_none")]
158    pub model: Option<String>,
159    #[serde(default, skip_serializing_if = "Option::is_none")]
160    pub num_tokens_for_completion: Option<i64>,
161    #[serde(default, skip_serializing_if = "Option::is_none")]
162    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
163    #[serde(default, skip_serializing_if = "Option::is_none")]
164    pub system_message: Option<String>,
165    #[serde(default, skip_serializing_if = "Option::is_none")]
166    pub prompt_template: Option<String>,
167    #[serde(default, skip_serializing_if = "Option::is_none")]
168    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
169    #[serde(default, skip_serializing_if = "Option::is_none")]
170    pub content_template: Option<String>,
171    #[serde(default, skip_serializing_if = "Option::is_none")]
172    pub is_custom_instructions_included: Option<bool>,
173}
174
175#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
176pub struct AiStudioAgentBasicGenToolResponse {
177    #[serde(default, skip_serializing_if = "Option::is_none")]
178    pub model: Option<String>,
179    #[serde(default, skip_serializing_if = "Option::is_none")]
180    pub num_tokens_for_completion: Option<i64>,
181    #[serde(default, skip_serializing_if = "Option::is_none")]
182    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
183    #[serde(default, skip_serializing_if = "Option::is_none")]
184    pub system_message: Option<String>,
185    #[serde(default, skip_serializing_if = "Option::is_none")]
186    pub prompt_template: Option<String>,
187    #[serde(default, skip_serializing_if = "Option::is_none")]
188    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
189    #[serde(default, skip_serializing_if = "Option::is_none")]
190    pub content_template: Option<String>,
191    #[serde(default, skip_serializing_if = "Option::is_none")]
192    pub is_custom_instructions_included: Option<bool>,
193    #[serde(default, skip_serializing_if = "Option::is_none")]
194    pub warnings: Option<Vec<String>>,
195}
196
197#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
198pub struct AiStudioAgentBasicTextTool {
199    #[serde(default, skip_serializing_if = "Option::is_none")]
200    pub model: Option<String>,
201    #[serde(default, skip_serializing_if = "Option::is_none")]
202    pub num_tokens_for_completion: Option<i64>,
203    #[serde(default, skip_serializing_if = "Option::is_none")]
204    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
205    #[serde(default, skip_serializing_if = "Option::is_none")]
206    pub system_message: Option<String>,
207    #[serde(default, skip_serializing_if = "Option::is_none")]
208    pub prompt_template: Option<String>,
209    #[serde(default, skip_serializing_if = "Option::is_none")]
210    pub is_custom_instructions_included: Option<bool>,
211}
212
213#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
214pub struct AiStudioAgentBasicTextToolResponse {
215    #[serde(default, skip_serializing_if = "Option::is_none")]
216    pub model: Option<String>,
217    #[serde(default, skip_serializing_if = "Option::is_none")]
218    pub num_tokens_for_completion: Option<i64>,
219    #[serde(default, skip_serializing_if = "Option::is_none")]
220    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
221    #[serde(default, skip_serializing_if = "Option::is_none")]
222    pub system_message: Option<String>,
223    #[serde(default, skip_serializing_if = "Option::is_none")]
224    pub prompt_template: Option<String>,
225    #[serde(default, skip_serializing_if = "Option::is_none")]
226    pub is_custom_instructions_included: Option<bool>,
227    #[serde(default, skip_serializing_if = "Option::is_none")]
228    pub warnings: Option<Vec<String>>,
229}
230
231#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
232pub struct AiStudioAgentExtract {
233    pub r#type: AiAgentExtractType,
234    pub access_state: String,
235    pub description: String,
236    #[serde(
237        default,
238        skip_serializing_if = "Option::is_none",
239        deserialize_with = "double_option"
240    )]
241    pub custom_instructions: Option<Option<String>>,
242    #[serde(default, skip_serializing_if = "Option::is_none")]
243    pub long_text: Option<AiStudioAgentLongTextTool>,
244    #[serde(default, skip_serializing_if = "Option::is_none")]
245    pub basic_text: Option<AiStudioAgentBasicTextTool>,
246    #[serde(default, skip_serializing_if = "Option::is_none")]
247    pub basic_image: Option<AiStudioAgentBasicTextTool>,
248}
249
250#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
251pub struct AiStudioAgentExtractResponse {
252    pub r#type: AiAgentExtractType,
253    pub access_state: String,
254    pub description: String,
255    #[serde(
256        default,
257        skip_serializing_if = "Option::is_none",
258        deserialize_with = "double_option"
259    )]
260    pub custom_instructions: Option<Option<String>>,
261    #[serde(default, skip_serializing_if = "Option::is_none")]
262    pub long_text: Option<AiStudioAgentLongTextToolResponse>,
263    #[serde(default, skip_serializing_if = "Option::is_none")]
264    pub basic_text: Option<AiStudioAgentBasicTextToolResponse>,
265    #[serde(default, skip_serializing_if = "Option::is_none")]
266    pub basic_image: Option<AiStudioAgentBasicTextToolResponse>,
267}
268
269#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
270pub struct AiStudioAgentLongTextTool {
271    #[serde(default, skip_serializing_if = "Option::is_none")]
272    pub model: Option<String>,
273    #[serde(default, skip_serializing_if = "Option::is_none")]
274    pub num_tokens_for_completion: Option<i64>,
275    #[serde(default, skip_serializing_if = "Option::is_none")]
276    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
277    #[serde(default, skip_serializing_if = "Option::is_none")]
278    pub system_message: Option<String>,
279    #[serde(default, skip_serializing_if = "Option::is_none")]
280    pub prompt_template: Option<String>,
281    #[serde(default, skip_serializing_if = "Option::is_none")]
282    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
283    #[serde(default, skip_serializing_if = "Option::is_none")]
284    pub is_custom_instructions_included: Option<bool>,
285}
286
287#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
288pub struct AiStudioAgentLongTextToolResponse {
289    #[serde(default, skip_serializing_if = "Option::is_none")]
290    pub model: Option<String>,
291    #[serde(default, skip_serializing_if = "Option::is_none")]
292    pub num_tokens_for_completion: Option<i64>,
293    #[serde(default, skip_serializing_if = "Option::is_none")]
294    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
295    #[serde(default, skip_serializing_if = "Option::is_none")]
296    pub system_message: Option<String>,
297    #[serde(default, skip_serializing_if = "Option::is_none")]
298    pub prompt_template: Option<String>,
299    #[serde(default, skip_serializing_if = "Option::is_none")]
300    pub embeddings: Option<AiAgentBasicGenToolEmbeddings>,
301    #[serde(default, skip_serializing_if = "Option::is_none")]
302    pub is_custom_instructions_included: Option<bool>,
303    #[serde(default, skip_serializing_if = "Option::is_none")]
304    pub warnings: Option<Vec<String>>,
305}
306
307pub type AiStudioAgentSpreadsheetTool = AiAgentSpreadsheetTool;
308
309#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
310pub struct AiStudioAgentSpreadsheetToolResponse {
311    #[serde(default, skip_serializing_if = "Option::is_none")]
312    pub model: Option<String>,
313    #[serde(default, skip_serializing_if = "Option::is_none")]
314    pub num_tokens_for_completion: Option<i64>,
315    #[serde(default, skip_serializing_if = "Option::is_none")]
316    pub llm_endpoint_params: Option<AiLlmEndpointParams>,
317    #[serde(default, skip_serializing_if = "Option::is_none")]
318    pub warnings: Option<Vec<String>>,
319}
320
321#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
322pub struct AiStudioAgentTextGen {
323    pub r#type: AiAgentTextGenType,
324    pub access_state: String,
325    pub description: String,
326    #[serde(
327        default,
328        skip_serializing_if = "Option::is_none",
329        deserialize_with = "double_option"
330    )]
331    pub custom_instructions: Option<Option<String>>,
332    #[serde(default, skip_serializing_if = "Option::is_none")]
333    pub suggested_questions: Option<Vec<String>>,
334    #[serde(default, skip_serializing_if = "Option::is_none")]
335    pub basic_gen: Option<AiStudioAgentBasicGenTool>,
336}
337
338#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
339pub struct AiStudioAgentTextGenResponse {
340    pub r#type: AiAgentTextGenType,
341    pub access_state: String,
342    pub description: String,
343    #[serde(
344        default,
345        skip_serializing_if = "Option::is_none",
346        deserialize_with = "double_option"
347    )]
348    pub custom_instructions: Option<Option<String>>,
349    #[serde(default, skip_serializing_if = "Option::is_none")]
350    pub suggested_questions: Option<Vec<String>>,
351    #[serde(default, skip_serializing_if = "Option::is_none")]
352    pub basic_gen: Option<AiStudioAgentBasicGenToolResponse>,
353}
354
355#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
356pub struct CreateAiAgent {
357    pub r#type: AiSingleAgentResponseType,
358    pub name: String,
359    pub access_state: String,
360    #[serde(default, skip_serializing_if = "Option::is_none")]
361    pub icon_reference: Option<String>,
362    #[serde(default, skip_serializing_if = "Option::is_none")]
363    pub allowed_entities: Option<Vec<AiAgentAllowedEntity>>,
364    #[serde(default, skip_serializing_if = "Option::is_none")]
365    pub ask: Option<AiStudioAgentAsk>,
366    #[serde(default, skip_serializing_if = "Option::is_none")]
367    pub text_gen: Option<AiStudioAgentTextGen>,
368    #[serde(default, skip_serializing_if = "Option::is_none")]
369    pub extract: Option<AiStudioAgentExtract>,
370}
371
372#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
373pub struct GroupBase {
374    pub id: String,
375    pub r#type: GroupType,
376}
377
378#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
379#[serde(transparent)]
380pub struct AiSingleAgentResponseType(pub String);
381
382impl AiSingleAgentResponseType {
383    pub const AI_AGENT: &'static str = "ai_agent";
384}