1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::spec::{
6 schema::ObjectSchema, spec_extensions, Callback, Example, Header, Link, ObjectOrReference,
7 Parameter, PathItem, RequestBody, Response, SecurityScheme,
8};
9
10#[derive(Debug, Clone, Default, PartialEq, Deserialize, Serialize)]
17pub struct Components {
18 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
20 pub schemas: BTreeMap<String, ObjectOrReference<ObjectSchema>>,
21
22 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
24 pub responses: BTreeMap<String, ObjectOrReference<Response>>,
25
26 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
28 pub parameters: BTreeMap<String, ObjectOrReference<Parameter>>,
29
30 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
32 pub examples: BTreeMap<String, ObjectOrReference<Example>>,
33
34 #[serde(
36 rename = "requestBodies",
37 default,
38 skip_serializing_if = "BTreeMap::is_empty"
39 )]
40 pub request_bodies: BTreeMap<String, ObjectOrReference<RequestBody>>,
41
42 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
44 pub headers: BTreeMap<String, ObjectOrReference<Header>>,
45
46 #[serde(
48 rename = "pathItems",
49 default,
50 skip_serializing_if = "BTreeMap::is_empty"
51 )]
52 pub path_items: BTreeMap<String, ObjectOrReference<PathItem>>,
53
54 #[serde(
56 rename = "securitySchemes",
57 default,
58 skip_serializing_if = "BTreeMap::is_empty"
59 )]
60 pub security_schemes: BTreeMap<String, ObjectOrReference<SecurityScheme>>,
61
62 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
64 pub links: BTreeMap<String, ObjectOrReference<Link>>,
65
66 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
68 pub callbacks: BTreeMap<String, ObjectOrReference<Callback>>,
69
70 #[serde(flatten, with = "spec_extensions")]
76 pub extensions: BTreeMap<String, serde_json::Value>,
77}