Skip to main content

openapi_nexus_spec/oas30/spec/
flows.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::spec_extensions;
6
7/// Allows configuration of the supported OAuth Flows (OAS 3.0).
8#[derive(Debug, Clone, Default, PartialEq, Deserialize, Serialize)]
9#[serde(rename_all = "camelCase")]
10pub struct Flows {
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub implicit: Option<ImplicitFlow>,
13
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub password: Option<PasswordFlow>,
16
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub client_credentials: Option<ClientCredentialsFlow>,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub authorization_code: Option<AuthorizationCodeFlow>,
22
23    #[serde(flatten, with = "spec_extensions")]
24    pub extensions: BTreeMap<String, serde_json::Value>,
25}
26
27#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
28#[serde(rename_all = "camelCase")]
29pub struct ImplicitFlow {
30    pub authorization_url: String,
31
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub refresh_url: Option<String>,
34
35    #[serde(default)]
36    pub scopes: BTreeMap<String, String>,
37
38    #[serde(flatten, with = "spec_extensions")]
39    pub extensions: BTreeMap<String, serde_json::Value>,
40}
41
42#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
43#[serde(rename_all = "camelCase")]
44pub struct PasswordFlow {
45    pub token_url: String,
46
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub refresh_url: Option<String>,
49
50    #[serde(default)]
51    pub scopes: BTreeMap<String, String>,
52}
53
54#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
55#[serde(rename_all = "camelCase")]
56pub struct ClientCredentialsFlow {
57    pub token_url: String,
58
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub refresh_url: Option<String>,
61
62    #[serde(default)]
63    pub scopes: BTreeMap<String, String>,
64}
65
66#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
67#[serde(rename_all = "camelCase")]
68pub struct AuthorizationCodeFlow {
69    pub authorization_url: String,
70
71    pub token_url: String,
72
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub refresh_url: Option<String>,
75
76    #[serde(default)]
77    pub scopes: BTreeMap<String, String>,
78}