openapi_nexus_spec/oas30/spec/
flows.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::spec_extensions;
6
7#[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}