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 deserialize_with = "crate::model::number::float",
197 skip_serializing_if = "Option::is_none"
198 )]
199 pub multiple_of: Option<f64>,
200
201 #[serde(
203 default,
204 deserialize_with = "crate::model::number::float",
205 skip_serializing_if = "Option::is_none"
206 )]
207 pub maximum: Option<f64>,
208
209 #[serde(
214 rename = "exclusiveMaximum",
215 default,
216 deserialize_with = "crate::model::number::float",
217 skip_serializing_if = "Option::is_none"
218 )]
219 pub exclusive_maximum: Option<f64>,
220
221 #[serde(
223 default,
224 deserialize_with = "crate::model::number::float",
225 skip_serializing_if = "Option::is_none"
226 )]
227 pub minimum: Option<f64>,
228
229 #[serde(
231 rename = "exclusiveMinimum",
232 default,
233 deserialize_with = "crate::model::number::float",
234 skip_serializing_if = "Option::is_none"
235 )]
236 pub exclusive_minimum: Option<f64>,
237
238 #[serde(rename = "maxLength", default, skip_serializing_if = "Option::is_none")]
240 pub max_length: Option<u64>,
241
242 #[serde(rename = "minLength", default, skip_serializing_if = "Option::is_none")]
244 pub min_length: Option<u64>,
245
246 #[serde(default, skip_serializing_if = "Option::is_none")]
248 pub pattern: Option<String>,
249
250 #[serde(rename = "maxItems", default, skip_serializing_if = "Option::is_none")]
252 pub max_items: Option<u64>,
253
254 #[serde(rename = "minItems", default, skip_serializing_if = "Option::is_none")]
256 pub min_items: Option<u64>,
257
258 #[serde(
260 rename = "uniqueItems",
261 default,
262 skip_serializing_if = "Option::is_none"
263 )]
264 pub unique_items: Option<bool>,
265
266 #[serde(
268 rename = "maxContains",
269 default,
270 skip_serializing_if = "Option::is_none"
271 )]
272 pub max_contains: Option<u64>,
273
274 #[serde(
276 rename = "minContains",
277 default,
278 skip_serializing_if = "Option::is_none"
279 )]
280 pub min_contains: Option<u64>,
281
282 #[serde(
284 rename = "maxProperties",
285 default,
286 skip_serializing_if = "Option::is_none"
287 )]
288 pub max_properties: Option<u64>,
289
290 #[serde(
292 rename = "minProperties",
293 default,
294 skip_serializing_if = "Option::is_none"
295 )]
296 pub min_properties: Option<u64>,
297
298 #[serde(default, skip_serializing_if = "Option::is_none")]
300 pub required: Option<Vec<String>>,
301
302 #[serde(
304 rename = "dependentRequired",
305 default,
306 skip_serializing_if = "Map::is_empty"
307 )]
308 pub dependent_required: Map<Vec<String>>,
309
310 #[serde(default, skip_serializing_if = "Option::is_none")]
317 pub format: Option<String>,
318
319 #[serde(
326 rename = "contentEncoding",
327 default,
328 skip_serializing_if = "Option::is_none"
329 )]
330 pub content_encoding: Option<String>,
331
332 #[serde(
334 rename = "contentMediaType",
335 default,
336 skip_serializing_if = "Option::is_none"
337 )]
338 pub content_media_type: Option<String>,
339
340 #[serde(
342 rename = "contentSchema",
343 default,
344 skip_serializing_if = "Option::is_none"
345 )]
346 pub content_schema: Option<Box<Schema>>,
347
348 #[serde(default, skip_serializing_if = "Option::is_none")]
351 pub title: Option<String>,
352
353 #[serde(default, skip_serializing_if = "Option::is_none")]
357 pub description: Option<String>,
358
359 #[serde(
361 default,
362 deserialize_with = "crate::model::nullable::some",
363 skip_serializing_if = "Option::is_none"
364 )]
365 pub default: Option<Value>,
366
367 #[serde(default, skip_serializing_if = "Option::is_none")]
369 pub deprecated: Option<bool>,
370
371 #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
373 pub read_only: Option<bool>,
374
375 #[serde(rename = "writeOnly", default, skip_serializing_if = "Option::is_none")]
377 pub write_only: Option<bool>,
378
379 #[serde(default, skip_serializing_if = "Option::is_none")]
384 pub examples: Option<Vec<Value>>,
385
386 #[serde(default, skip_serializing_if = "Option::is_none")]
389 pub discriminator: Option<Discriminator>,
390
391 #[serde(default, skip_serializing_if = "Option::is_none")]
393 pub xml: Option<Xml>,
394
395 #[serde(
397 rename = "externalDocs",
398 default,
399 skip_serializing_if = "Option::is_none"
400 )]
401 pub external_docs: Option<ExternalDocumentation>,
402
403 #[deprecated(note = "use `examples`, which the specification supersedes this with")]
409 #[serde(
410 default,
411 deserialize_with = "crate::model::nullable::some",
412 skip_serializing_if = "Option::is_none"
413 )]
414 pub example: Option<Value>,
415
416 #[serde(flatten)]
422 pub unknown_keywords: Map<Value>,
423}