Skip to main content

oag_core/parse/
parameter.rs

1use serde::{Deserialize, Serialize};
2
3use super::schema::SchemaOrRef;
4
5/// Parameter location.
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "lowercase")]
8pub enum ParameterLocation {
9    Query,
10    Header,
11    Path,
12    Cookie,
13}
14
15/// An API parameter.
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
17pub struct Parameter {
18    pub name: String,
19
20    #[serde(rename = "in")]
21    pub location: ParameterLocation,
22
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub description: Option<String>,
25
26    #[serde(default)]
27    pub required: bool,
28
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub deprecated: Option<bool>,
31
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub schema: Option<SchemaOrRef>,
34
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub style: Option<String>,
37
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub explode: Option<bool>,
40
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub example: Option<serde_json::Value>,
43}
44
45/// A reference or inline parameter.
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47#[serde(untagged)]
48pub enum ParameterOrRef {
49    Ref {
50        #[serde(rename = "$ref")]
51        ref_path: String,
52    },
53    Parameter(Parameter),
54}