oag_core/parse/
operation.rs1use indexmap::IndexMap;
2use serde::{Deserialize, Serialize};
3
4use super::parameter::ParameterOrRef;
5use super::request_body::RequestBodyOrRef;
6use super::response::ResponseOrRef;
7use super::security::SecurityRequirement;
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct Operation {
12 #[serde(rename = "operationId", skip_serializing_if = "Option::is_none")]
13 pub operation_id: Option<String>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub summary: Option<String>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub description: Option<String>,
20
21 #[serde(default, skip_serializing_if = "Vec::is_empty")]
22 pub tags: Vec<String>,
23
24 #[serde(default, skip_serializing_if = "Vec::is_empty")]
25 pub parameters: Vec<ParameterOrRef>,
26
27 #[serde(rename = "requestBody", skip_serializing_if = "Option::is_none")]
28 pub request_body: Option<RequestBodyOrRef>,
29
30 #[serde(default, skip_serializing_if = "IndexMap::is_empty")]
31 pub responses: IndexMap<String, ResponseOrRef>,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub deprecated: Option<bool>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub security: Option<Vec<SecurityRequirement>>,
38}
39
40#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
42pub struct PathItem {
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub summary: Option<String>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub description: Option<String>,
48
49 #[serde(default, skip_serializing_if = "Vec::is_empty")]
50 pub parameters: Vec<ParameterOrRef>,
51
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub get: Option<Operation>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub post: Option<Operation>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub put: Option<Operation>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub delete: Option<Operation>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub patch: Option<Operation>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub options: Option<Operation>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub head: Option<Operation>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub trace: Option<Operation>,
68}