1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use utoipa::ToSchema;
4
5#[derive(Debug, Serialize, ToSchema)]
6pub struct OidcProviderMetadataResponse {
7 pub issuer: String,
8 pub authorization_endpoint: String,
9 pub token_endpoint: String,
10 pub jwks_uri: String,
11 pub response_types_supported: Vec<String>,
12 pub subject_types_supported: Vec<String>,
13 pub id_token_signing_alg_values_supported: Vec<String>,
14 pub scopes_supported: Vec<String>,
15 pub claims_supported: Vec<String>,
16 pub code_challenge_methods_supported: Vec<String>,
17 pub token_endpoint_auth_methods_supported: Vec<String>,
18 pub lenso_console_client_id: String,
19}
20
21#[derive(Debug, Serialize, ToSchema)]
22pub struct OidcJwksResponse {
23 pub keys: Vec<Value>,
24}
25
26#[derive(Debug, Deserialize, ToSchema)]
27pub struct OidcAuthorizeQuery {
28 #[serde(default)]
29 pub response_type: Option<String>,
30 #[serde(default)]
31 pub client_id: Option<String>,
32 #[serde(default)]
33 pub redirect_uri: Option<String>,
34 #[serde(default)]
35 pub scope: Option<String>,
36 #[serde(default)]
37 pub state: Option<String>,
38 #[serde(default)]
39 pub nonce: Option<String>,
40 #[serde(default)]
41 pub code_challenge: Option<String>,
42 #[serde(default)]
43 pub code_challenge_method: Option<String>,
44}
45
46#[derive(Debug, Deserialize, ToSchema)]
47pub struct OidcTokenRequest {
48 #[serde(default)]
49 pub grant_type: Option<String>,
50 #[serde(default)]
51 pub code: Option<String>,
52 #[serde(default)]
53 pub redirect_uri: Option<String>,
54 #[serde(default)]
55 pub client_id: Option<String>,
56 #[serde(default)]
57 pub code_verifier: Option<String>,
58}
59
60#[derive(Debug, Serialize, ToSchema)]
61pub struct OidcTokenResponse {
62 pub access_token: String,
63 pub token_type: String,
64 pub expires_in: u64,
65 pub id_token: String,
66 pub scope: String,
67}