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