1use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::{
7 Map,
8 model::{
9 external_docs::ExternalDocumentation,
10 schema::{Schema, discriminator::Discriminator, types::TypeSet, xml::Xml},
11 },
12};
13
14#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
26pub struct SchemaObject {
27 #[serde(rename = "$schema", default, skip_serializing_if = "Option::is_none")]
33 pub schema_dialect: Option<String>,
34
35 #[serde(rename = "$id", default, skip_serializing_if = "Option::is_none")]
37 pub id: Option<String>,
38
39 #[serde(rename = "$ref", default, skip_serializing_if = "Option::is_none")]
41 pub reference: Option<String>,
42
43 #[serde(rename = "$anchor", default, skip_serializing_if = "Option::is_none")]
45 pub anchor: Option<String>,
46
47 #[serde(
49 rename = "$dynamicRef",
50 default,
51 skip_serializing_if = "Option::is_none"
52 )]
53 pub dynamic_ref: Option<String>,
54
55 #[serde(
57 rename = "$dynamicAnchor",
58 default,
59 skip_serializing_if = "Option::is_none"
60 )]
61 pub dynamic_anchor: Option<String>,
62
63 #[serde(rename = "$comment", default, skip_serializing_if = "Option::is_none")]
65 pub comment: Option<String>,
66
67 #[serde(rename = "$defs", default, skip_serializing_if = "Map::is_empty")]
73 pub defs: Map<Schema>,
74
75 #[serde(rename = "allOf", default, skip_serializing_if = "Option::is_none")]
78 pub all_of: Option<Vec<Schema>>,
79
80 #[serde(rename = "anyOf", default, skip_serializing_if = "Option::is_none")]
82 pub any_of: Option<Vec<Schema>>,
83
84 #[serde(rename = "oneOf", default, skip_serializing_if = "Option::is_none")]
86 pub one_of: Option<Vec<Schema>>,
87
88 #[serde(default, skip_serializing_if = "Option::is_none")]
90 pub not: Option<Box<Schema>>,
91
92 #[serde(rename = "if", default, skip_serializing_if = "Option::is_none")]
94 pub if_schema: Option<Box<Schema>>,
95
96 #[serde(rename = "then", default, skip_serializing_if = "Option::is_none")]
98 pub then_schema: Option<Box<Schema>>,
99
100 #[serde(rename = "else", default, skip_serializing_if = "Option::is_none")]
102 pub else_schema: Option<Box<Schema>>,
103
104 #[serde(
106 rename = "dependentSchemas",
107 default,
108 skip_serializing_if = "Map::is_empty"
109 )]
110 pub dependent_schemas: Map<Schema>,
111
112 #[serde(
114 rename = "prefixItems",
115 default,
116 skip_serializing_if = "Option::is_none"
117 )]
118 pub prefix_items: Option<Vec<Schema>>,
119
120 #[serde(default, skip_serializing_if = "Option::is_none")]
123 pub items: Option<Box<Schema>>,
124
125 #[serde(default, skip_serializing_if = "Option::is_none")]
127 pub contains: Option<Box<Schema>>,
128
129 #[serde(default, skip_serializing_if = "Map::is_empty")]
131 pub properties: Map<Schema>,
132
133 #[serde(
135 rename = "patternProperties",
136 default,
137 skip_serializing_if = "Map::is_empty"
138 )]
139 pub pattern_properties: Map<Schema>,
140
141 #[serde(
143 rename = "additionalProperties",
144 default,
145 skip_serializing_if = "Option::is_none"
146 )]
147 pub additional_properties: Option<Box<Schema>>,
148
149 #[serde(
151 rename = "propertyNames",
152 default,
153 skip_serializing_if = "Option::is_none"
154 )]
155 pub property_names: Option<Box<Schema>>,
156
157 #[serde(
160 rename = "unevaluatedItems",
161 default,
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub unevaluated_items: Option<Box<Schema>>,
165
166 #[serde(
168 rename = "unevaluatedProperties",
169 default,
170 skip_serializing_if = "Option::is_none"
171 )]
172 pub unevaluated_properties: Option<Box<Schema>>,
173
174 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
177 pub ty: Option<TypeSet>,
178
179 #[serde(
181 rename = "const",
182 default,
183 deserialize_with = "crate::model::nullable::some",
184 skip_serializing_if = "Option::is_none"
185 )]
186 pub const_value: Option<Value>,
187
188 #[serde(rename = "enum", default, skip_serializing_if = "Option::is_none")]
190 pub enumeration: Option<Vec<Value>>,
191
192 #[serde(
194 rename = "multipleOf",
195 default,
196 skip_serializing_if = "Option::is_none"
197 )]
198 pub multiple_of: Option<f64>,
199
200 #[serde(default, skip_serializing_if = "Option::is_none")]
202 pub maximum: Option<f64>,
203
204 #[serde(
209 rename = "exclusiveMaximum",
210 default,
211 skip_serializing_if = "Option::is_none"
212 )]
213 pub exclusive_maximum: Option<f64>,
214
215 #[serde(default, skip_serializing_if = "Option::is_none")]
217 pub minimum: Option<f64>,
218
219 #[serde(
221 rename = "exclusiveMinimum",
222 default,
223 skip_serializing_if = "Option::is_none"
224 )]
225 pub exclusive_minimum: Option<f64>,
226
227 #[serde(rename = "maxLength", default, skip_serializing_if = "Option::is_none")]
229 pub max_length: Option<u64>,
230
231 #[serde(rename = "minLength", default, skip_serializing_if = "Option::is_none")]
233 pub min_length: Option<u64>,
234
235 #[serde(default, skip_serializing_if = "Option::is_none")]
237 pub pattern: Option<String>,
238
239 #[serde(rename = "maxItems", default, skip_serializing_if = "Option::is_none")]
241 pub max_items: Option<u64>,
242
243 #[serde(rename = "minItems", default, skip_serializing_if = "Option::is_none")]
245 pub min_items: Option<u64>,
246
247 #[serde(
249 rename = "uniqueItems",
250 default,
251 skip_serializing_if = "Option::is_none"
252 )]
253 pub unique_items: Option<bool>,
254
255 #[serde(
257 rename = "maxContains",
258 default,
259 skip_serializing_if = "Option::is_none"
260 )]
261 pub max_contains: Option<u64>,
262
263 #[serde(
265 rename = "minContains",
266 default,
267 skip_serializing_if = "Option::is_none"
268 )]
269 pub min_contains: Option<u64>,
270
271 #[serde(
273 rename = "maxProperties",
274 default,
275 skip_serializing_if = "Option::is_none"
276 )]
277 pub max_properties: Option<u64>,
278
279 #[serde(
281 rename = "minProperties",
282 default,
283 skip_serializing_if = "Option::is_none"
284 )]
285 pub min_properties: Option<u64>,
286
287 #[serde(default, skip_serializing_if = "Option::is_none")]
289 pub required: Option<Vec<String>>,
290
291 #[serde(
293 rename = "dependentRequired",
294 default,
295 skip_serializing_if = "Map::is_empty"
296 )]
297 pub dependent_required: Map<Vec<String>>,
298
299 #[serde(default, skip_serializing_if = "Option::is_none")]
306 pub format: Option<String>,
307
308 #[serde(
315 rename = "contentEncoding",
316 default,
317 skip_serializing_if = "Option::is_none"
318 )]
319 pub content_encoding: Option<String>,
320
321 #[serde(
323 rename = "contentMediaType",
324 default,
325 skip_serializing_if = "Option::is_none"
326 )]
327 pub content_media_type: Option<String>,
328
329 #[serde(
331 rename = "contentSchema",
332 default,
333 skip_serializing_if = "Option::is_none"
334 )]
335 pub content_schema: Option<Box<Schema>>,
336
337 #[serde(default, skip_serializing_if = "Option::is_none")]
340 pub title: Option<String>,
341
342 #[serde(default, skip_serializing_if = "Option::is_none")]
346 pub description: Option<String>,
347
348 #[serde(
350 default,
351 deserialize_with = "crate::model::nullable::some",
352 skip_serializing_if = "Option::is_none"
353 )]
354 pub default: Option<Value>,
355
356 #[serde(default, skip_serializing_if = "Option::is_none")]
358 pub deprecated: Option<bool>,
359
360 #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
362 pub read_only: Option<bool>,
363
364 #[serde(rename = "writeOnly", default, skip_serializing_if = "Option::is_none")]
366 pub write_only: Option<bool>,
367
368 #[serde(default, skip_serializing_if = "Option::is_none")]
373 pub examples: Option<Vec<Value>>,
374
375 #[serde(default, skip_serializing_if = "Option::is_none")]
378 pub discriminator: Option<Discriminator>,
379
380 #[serde(default, skip_serializing_if = "Option::is_none")]
382 pub xml: Option<Xml>,
383
384 #[serde(
386 rename = "externalDocs",
387 default,
388 skip_serializing_if = "Option::is_none"
389 )]
390 pub external_docs: Option<ExternalDocumentation>,
391
392 #[deprecated(note = "use `examples`, which the specification supersedes this with")]
398 #[serde(
399 default,
400 deserialize_with = "crate::model::nullable::some",
401 skip_serializing_if = "Option::is_none"
402 )]
403 pub example: Option<Value>,
404
405 #[serde(flatten)]
411 pub unknown_keywords: Map<Value>,
412}