torn_api_codegen/openapi/
parameter.rs1use std::borrow::Cow;
2
3use serde::Deserialize;
4
5use super::r#type::OpenApiType;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize)]
8#[serde(rename_all = "lowercase")]
9pub enum ParameterLocation {
10 Query,
11 Path,
12}
13
14#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
15#[serde(untagged)]
16pub enum OpenApiParameterDefault<'a> {
17 Int(i32),
18 Str(&'a str),
19}
20
21#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
22#[serde(rename_all = "camelCase")]
23pub struct OpenApiParameterSchema<'a> {
24 #[serde(rename = "$ref")]
25 pub ref_path: Option<&'a str>,
26 pub r#type: Option<&'a str>,
27 pub r#enum: Option<Vec<&'a str>>,
28 pub format: Option<&'a str>,
29 pub default: Option<OpenApiParameterDefault<'a>>,
30 pub maximum: Option<i32>,
31 pub minimum: Option<i32>,
32 pub items: Option<Box<OpenApiParameterSchema<'a>>>,
33 pub one_of: Option<Vec<OpenApiType<'a>>>,
34}
35
36#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
37pub struct OpenApiParameter<'a> {
38 pub name: &'a str,
39 pub description: Option<Cow<'a, str>>,
40 pub r#in: ParameterLocation,
41 pub required: bool,
42 #[serde(borrow)]
43 pub schema: OpenApiParameterSchema<'a>,
44}