Skip to main content

openapi_nexus_spec/oas31/spec/
components.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::{
6    Callback, Example, Header, Link, ObjectOrReference, Parameter, PathItem, RequestBody, Response,
7    SecurityScheme, schema::ObjectSchema, spec_extensions,
8};
9
10/// Holds a set of reusable objects for different aspects of the OAS.
11#[derive(Debug, Clone, Default, PartialEq, Deserialize, Serialize)]
12pub struct Components {
13    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
14    pub schemas: BTreeMap<String, ObjectOrReference<ObjectSchema>>,
15
16    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
17    pub responses: BTreeMap<String, ObjectOrReference<Response>>,
18
19    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
20    pub parameters: BTreeMap<String, ObjectOrReference<Parameter>>,
21
22    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
23    pub examples: BTreeMap<String, ObjectOrReference<Example>>,
24
25    #[serde(
26        rename = "requestBodies",
27        default,
28        skip_serializing_if = "BTreeMap::is_empty"
29    )]
30    pub request_bodies: BTreeMap<String, ObjectOrReference<RequestBody>>,
31
32    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
33    pub headers: BTreeMap<String, ObjectOrReference<Header>>,
34
35    #[serde(
36        rename = "pathItems",
37        default,
38        skip_serializing_if = "BTreeMap::is_empty"
39    )]
40    pub path_items: BTreeMap<String, ObjectOrReference<PathItem>>,
41
42    #[serde(
43        rename = "securitySchemes",
44        default,
45        skip_serializing_if = "BTreeMap::is_empty"
46    )]
47    pub security_schemes: BTreeMap<String, ObjectOrReference<SecurityScheme>>,
48
49    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
50    pub links: BTreeMap<String, ObjectOrReference<Link>>,
51
52    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
53    pub callbacks: BTreeMap<String, ObjectOrReference<Callback>>,
54
55    #[serde(flatten, with = "spec_extensions")]
56    pub extensions: BTreeMap<String, serde_json::Value>,
57}