Skip to main content

firebase_admin_sdk/auth/
project_config.rs

1use serde::{Deserialize, Serialize};
2
3/// Represents an OIDC Provider Configuration.
4#[derive(Debug, Serialize, Deserialize, Default)]
5#[serde(rename_all = "camelCase")]
6pub struct OidcProviderConfig {
7    /// The resource name of the config.
8    /// Format: "projects/{project-id}/oauthIdpConfigs/{config-id}"
9    pub name: String,
10
11    /// The display name for this provider.
12    pub display_name: Option<String>,
13
14    /// Whether this provider is enabled.
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub enabled: Option<bool>,
17
18    /// The client ID for the OIDC provider.
19    pub client_id: Option<String>,
20
21    /// The issuer URL for the OIDC provider.
22    pub issuer: Option<String>,
23
24    /// The client secret for the OIDC provider.
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub client_secret: Option<String>,
27
28    /// The response type (e.g., "code", "id_token").
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub response_type: Option<OidcResponseType>,
31}
32
33#[derive(Debug, Serialize, Deserialize, Default)]
34#[serde(rename_all = "camelCase")]
35pub struct OidcResponseType {
36    /// Whether the ID token is requested.
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub id_token: Option<bool>,
39    /// Whether the code is requested.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub code: Option<bool>,
42}
43
44/// Request to create an OIDC Provider Config.
45#[derive(Debug, Serialize, Default)]
46#[serde(rename_all = "camelCase")]
47pub struct CreateOidcProviderConfigRequest {
48    /// The ID to use for the new config.
49    #[serde(skip)]
50    pub oauth_idp_config_id: String,
51
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub display_name: Option<String>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub enabled: Option<bool>,
56    pub client_id: String,
57    pub issuer: String,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub client_secret: Option<String>,
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub response_type: Option<OidcResponseType>,
62}
63
64/// Request to update an OIDC Provider Config.
65#[derive(Debug, Serialize, Default)]
66#[serde(rename_all = "camelCase")]
67pub struct UpdateOidcProviderConfigRequest {
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub display_name: Option<String>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub enabled: Option<bool>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub client_id: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub issuer: Option<String>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub client_secret: Option<String>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub response_type: Option<OidcResponseType>,
80}
81
82/// Response from listing OIDC Provider Configs.
83#[derive(Debug, Deserialize)]
84#[serde(rename_all = "camelCase")]
85pub struct ListOidcProviderConfigsResponse {
86    pub oauth_idp_configs: Option<Vec<OidcProviderConfig>>,
87    pub next_page_token: Option<String>,
88}
89
90// --- SAML Structures ---
91
92#[derive(Debug, Serialize, Deserialize, Default)]
93#[serde(rename_all = "camelCase")]
94pub struct SamlIdpConfig {
95    #[serde(skip_serializing_if = "Option::is_none")]
96    pub idp_entity_id: Option<String>,
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub sso_url: Option<String>,
99    #[serde(skip_serializing_if = "Option::is_none")]
100    pub sign_request: Option<bool>,
101    #[serde(skip_serializing_if = "Option::is_none")]
102    pub idp_certificates: Option<Vec<SamlCertificate>>,
103}
104
105#[derive(Debug, Serialize, Deserialize, Default)]
106#[serde(rename_all = "camelCase")]
107pub struct SamlSpConfig {
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub sp_entity_id: Option<String>,
110    #[serde(skip_serializing_if = "Option::is_none")]
111    pub callback_uri: Option<String>,
112}
113
114#[derive(Debug, Serialize, Deserialize, Default)]
115#[serde(rename_all = "camelCase")]
116pub struct SamlCertificate {
117    pub x509_certificate: String,
118}
119
120/// Represents a SAML Provider Configuration.
121#[derive(Debug, Serialize, Deserialize, Default)]
122#[serde(rename_all = "camelCase")]
123pub struct SamlProviderConfig {
124    /// The resource name of the config.
125    pub name: String,
126
127    /// The display name.
128    pub display_name: Option<String>,
129
130    /// Whether enabled.
131    #[serde(skip_serializing_if = "Option::is_none")]
132    pub enabled: Option<bool>,
133
134    /// IDP configuration.
135    pub idp_config: Option<SamlIdpConfig>,
136
137    /// SP configuration.
138    pub sp_config: Option<SamlSpConfig>,
139}
140
141/// Request to create a SAML Provider Config.
142#[derive(Debug, Serialize, Default)]
143#[serde(rename_all = "camelCase")]
144pub struct CreateSamlProviderConfigRequest {
145    /// The ID to use for the new config.
146    #[serde(skip)]
147    pub inbound_saml_config_id: String,
148
149    #[serde(skip_serializing_if = "Option::is_none")]
150    pub display_name: Option<String>,
151    #[serde(skip_serializing_if = "Option::is_none")]
152    pub enabled: Option<bool>,
153    pub idp_config: SamlIdpConfig,
154    pub sp_config: SamlSpConfig,
155}
156
157/// Request to update a SAML Provider Config.
158#[derive(Debug, Serialize, Default)]
159#[serde(rename_all = "camelCase")]
160pub struct UpdateSamlProviderConfigRequest {
161    #[serde(skip_serializing_if = "Option::is_none")]
162    pub display_name: Option<String>,
163    #[serde(skip_serializing_if = "Option::is_none")]
164    pub enabled: Option<bool>,
165    #[serde(skip_serializing_if = "Option::is_none")]
166    pub idp_config: Option<SamlIdpConfig>,
167    #[serde(skip_serializing_if = "Option::is_none")]
168    pub sp_config: Option<SamlSpConfig>,
169}
170
171/// Response from listing SAML Provider Configs.
172#[derive(Debug, Deserialize)]
173#[serde(rename_all = "camelCase")]
174pub struct ListSamlProviderConfigsResponse {
175    pub inbound_saml_configs: Option<Vec<SamlProviderConfig>>,
176    pub next_page_token: Option<String>,
177}