rusty_gemini/
schema.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Serialize, Deserialize, Clone)]
6#[serde(rename_all = "camelCase")]
7pub struct Schema {
8    #[serde(rename = "type")]
9    pub schema_type: Type,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub format: Option<String>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub description: Option<String>,
14    #[serde(default)]
15    pub nullable: bool,
16    #[serde(rename = "enum")]
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub enum_values: Option<Vec<String>>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub max_items: Option<String>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub min_items: Option<String>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub properties: Option<HashMap<String, Box<Schema>>>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub required: Option<Vec<String>>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub items: Option<Box<Schema>>,
29}
30
31#[derive(Debug, Serialize, Deserialize, Clone)]
32#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
33pub enum Type {
34    #[serde(rename = "TYPE_UNSPECIFIED")]
35    Unspecified,
36    String,
37    Number,
38    Integer,
39    Boolean,
40    Array,
41    Object,
42}