openapi_nexus_spec/oas31/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(flatten, with = "spec_extensions")]
25 pub extensions: BTreeMap<String, serde_json::Value>,
26}
27
28#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
29#[serde(rename_all = "camelCase")]
30pub struct ImplicitFlow {
31 pub authorization_url: Url,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub refresh_url: Option<Url>,
35
36 #[serde(default)]
37 pub scopes: BTreeMap<String, String>,
38
39 #[serde(flatten, with = "spec_extensions")]
40 pub extensions: BTreeMap<String, serde_json::Value>,
41}
42
43#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
44#[serde(rename_all = "camelCase")]
45pub struct PasswordFlow {
46 pub token_url: Url,
47
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub refresh_url: Option<Url>,
50
51 #[serde(default)]
52 pub scopes: BTreeMap<String, String>,
53}
54
55#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
56#[serde(rename_all = "camelCase")]
57pub struct ClientCredentialsFlow {
58 pub token_url: Url,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub refresh_url: Option<Url>,
62
63 #[serde(default)]
64 pub scopes: BTreeMap<String, String>,
65}
66
67#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
68#[serde(rename_all = "camelCase")]
69pub struct AuthorizationCodeFlow {
70 pub authorization_url: Url,
71
72 pub token_url: Url,
73
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub refresh_url: Option<Url>,
76
77 #[serde(default)]
78 pub scopes: BTreeMap<String, String>,
79}