rweb_openapi/v3_0/
components.rs1use crate::{
2 v3_0::{
3 Callback, Example, Header, Link, Parameter, RequestBody, Response, Schema, SecurityScheme,
4 },
5 Str,
6};
7use indexmap::IndexMap;
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
11#[serde(untagged)]
12pub enum ObjectOrReference<T> {
13 Object(T),
14 Ref {
15 #[serde(rename = "$ref")]
16 ref_path: Str,
17 },
18}
19
20#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
27pub struct Components {
28 #[serde(skip_serializing_if = "IndexMap::is_empty")]
30 pub schemas: IndexMap<Str, ObjectOrReference<Schema>>,
31
32 #[serde(skip_serializing_if = "IndexMap::is_empty")]
34 pub responses: IndexMap<Str, ObjectOrReference<Response>>,
35
36 #[serde(skip_serializing_if = "IndexMap::is_empty")]
38 pub parameters: IndexMap<Str, ObjectOrReference<Parameter>>,
39
40 #[serde(skip_serializing_if = "IndexMap::is_empty")]
42 pub examples: IndexMap<Str, ObjectOrReference<Example>>,
43
44 #[serde(skip_serializing_if = "IndexMap::is_empty", rename = "requestBodies")]
46 pub request_bodies: IndexMap<Str, ObjectOrReference<RequestBody>>,
47
48 #[serde(skip_serializing_if = "IndexMap::is_empty")]
50 pub headers: IndexMap<Str, ObjectOrReference<Header>>,
51
52 #[serde(skip_serializing_if = "IndexMap::is_empty", rename = "securitySchemes")]
54 pub security_schemes: IndexMap<Str, ObjectOrReference<SecurityScheme>>,
55
56 #[serde(skip_serializing_if = "IndexMap::is_empty")]
58 pub links: IndexMap<Str, ObjectOrReference<Link>>,
59
60 #[serde(skip_serializing_if = "IndexMap::is_empty")]
62 pub callbacks: IndexMap<Str, ObjectOrReference<Callback>>,
63 }