openapi_nexus/spec/oas32/spec/
flows.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use url::Url;
5
6use super::spec_extensions;
7
8#[derive(Debug, Clone, Default, PartialEq, Deserialize, Serialize)]
10#[serde(rename_all = "camelCase")]
11pub struct Flows {
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub implicit: Option<ImplicitFlow>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub password: Option<PasswordFlow>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub client_credentials: Option<ClientCredentialsFlow>,
20
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub authorization_code: Option<AuthorizationCodeFlow>,
23
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub device_authorization: Option<DeviceAuthorizationFlow>,
26
27 #[serde(flatten, with = "spec_extensions")]
28 pub extensions: BTreeMap<String, serde_json::Value>,
29}
30
31#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
32#[serde(rename_all = "camelCase")]
33pub struct ImplicitFlow {
34 pub authorization_url: Url,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub refresh_url: Option<Url>,
38
39 #[serde(default)]
40 pub scopes: BTreeMap<String, String>,
41
42 #[serde(flatten, with = "spec_extensions")]
43 pub extensions: BTreeMap<String, serde_json::Value>,
44}
45
46#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
47#[serde(rename_all = "camelCase")]
48pub struct PasswordFlow {
49 pub token_url: Url,
50
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub refresh_url: Option<Url>,
53
54 #[serde(default)]
55 pub scopes: BTreeMap<String, String>,
56}
57
58#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
59#[serde(rename_all = "camelCase")]
60pub struct ClientCredentialsFlow {
61 pub token_url: Url,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub refresh_url: Option<Url>,
65
66 #[serde(default)]
67 pub scopes: BTreeMap<String, String>,
68}
69
70#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
71#[serde(rename_all = "camelCase")]
72pub struct AuthorizationCodeFlow {
73 pub authorization_url: Url,
74
75 pub token_url: Url,
76
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub refresh_url: Option<Url>,
79
80 #[serde(default)]
81 pub scopes: BTreeMap<String, String>,
82}
83
84#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
85#[serde(rename_all = "camelCase")]
86pub struct DeviceAuthorizationFlow {
87 pub device_authorization_url: Url,
88
89 pub token_url: Url,
90
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub refresh_url: Option<Url>,
93
94 #[serde(default)]
95 pub scopes: BTreeMap<String, String>,
96}