#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NormalizedProjectRevision {
#[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "hydra_oauth2_allowed_top_level_claims", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_allowed_top_level_claims: Option<Vec<String>>,
#[serde(rename = "hydra_oauth2_client_credentials_default_grant_allowed_scope", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_client_credentials_default_grant_allowed_scope: Option<bool>,
#[serde(rename = "hydra_oauth2_exclude_not_before_claim", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_exclude_not_before_claim: Option<bool>,
#[serde(rename = "hydra_oauth2_grant_jwt_iat_optional", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_grant_jwt_iat_optional: Option<bool>,
#[serde(rename = "hydra_oauth2_grant_jwt_jti_optional", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_grant_jwt_jti_optional: Option<bool>,
#[serde(rename = "hydra_oauth2_grant_jwt_max_ttl", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_grant_jwt_max_ttl: Option<String>,
#[serde(rename = "hydra_oauth2_pkce_enforced", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_pkce_enforced: Option<bool>,
#[serde(rename = "hydra_oauth2_pkce_enforced_for_public_clients", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_pkce_enforced_for_public_clients: Option<bool>,
#[serde(rename = "hydra_oauth2_refresh_token_hook", skip_serializing_if = "Option::is_none")]
pub hydra_oauth2_refresh_token_hook: Option<String>,
#[serde(rename = "hydra_oidc_dynamic_client_registration_default_scope", skip_serializing_if = "Option::is_none")]
pub hydra_oidc_dynamic_client_registration_default_scope: Option<Vec<String>>,
#[serde(rename = "hydra_oidc_dynamic_client_registration_enabled", skip_serializing_if = "Option::is_none")]
pub hydra_oidc_dynamic_client_registration_enabled: Option<bool>,
#[serde(rename = "hydra_oidc_subject_identifiers_pairwise_salt", skip_serializing_if = "Option::is_none")]
pub hydra_oidc_subject_identifiers_pairwise_salt: Option<String>,
#[serde(rename = "hydra_oidc_subject_identifiers_supported_types", skip_serializing_if = "Option::is_none")]
pub hydra_oidc_subject_identifiers_supported_types: Option<Vec<String>>,
#[serde(rename = "hydra_secrets_cookie", skip_serializing_if = "Option::is_none")]
pub hydra_secrets_cookie: Option<Vec<String>>,
#[serde(rename = "hydra_secrets_system", skip_serializing_if = "Option::is_none")]
pub hydra_secrets_system: Option<Vec<String>>,
#[serde(rename = "hydra_serve_admin_cors_allowed_origins", skip_serializing_if = "Option::is_none")]
pub hydra_serve_admin_cors_allowed_origins: Option<Vec<String>>,
#[serde(rename = "hydra_serve_admin_cors_enabled", skip_serializing_if = "Option::is_none")]
pub hydra_serve_admin_cors_enabled: Option<bool>,
#[serde(rename = "hydra_serve_cookies_same_site_legacy_workaround", skip_serializing_if = "Option::is_none")]
pub hydra_serve_cookies_same_site_legacy_workaround: Option<bool>,
#[serde(rename = "hydra_serve_cookies_same_site_mode", skip_serializing_if = "Option::is_none")]
pub hydra_serve_cookies_same_site_mode: Option<String>,
#[serde(rename = "hydra_serve_public_cors_allowed_origins", skip_serializing_if = "Option::is_none")]
pub hydra_serve_public_cors_allowed_origins: Option<Vec<String>>,
#[serde(rename = "hydra_serve_public_cors_enabled", skip_serializing_if = "Option::is_none")]
pub hydra_serve_public_cors_enabled: Option<bool>,
#[serde(rename = "hydra_strategies_access_token", skip_serializing_if = "Option::is_none")]
pub hydra_strategies_access_token: Option<HydraStrategiesAccessTokenEnum>,
#[serde(rename = "hydra_strategies_scope", skip_serializing_if = "Option::is_none")]
pub hydra_strategies_scope: Option<HydraStrategiesScopeEnum>,
#[serde(rename = "hydra_ttl_access_token", skip_serializing_if = "Option::is_none")]
pub hydra_ttl_access_token: Option<String>,
#[serde(rename = "hydra_ttl_auth_code", skip_serializing_if = "Option::is_none")]
pub hydra_ttl_auth_code: Option<String>,
#[serde(rename = "hydra_ttl_id_token", skip_serializing_if = "Option::is_none")]
pub hydra_ttl_id_token: Option<String>,
#[serde(rename = "hydra_ttl_login_consent_request", skip_serializing_if = "Option::is_none")]
pub hydra_ttl_login_consent_request: Option<String>,
#[serde(rename = "hydra_ttl_refresh_token", skip_serializing_if = "Option::is_none")]
pub hydra_ttl_refresh_token: Option<String>,
#[serde(rename = "hydra_urls_consent", skip_serializing_if = "Option::is_none")]
pub hydra_urls_consent: Option<String>,
#[serde(rename = "hydra_urls_error", skip_serializing_if = "Option::is_none")]
pub hydra_urls_error: Option<String>,
#[serde(rename = "hydra_urls_login", skip_serializing_if = "Option::is_none")]
pub hydra_urls_login: Option<String>,
#[serde(rename = "hydra_urls_logout", skip_serializing_if = "Option::is_none")]
pub hydra_urls_logout: Option<String>,
#[serde(rename = "hydra_urls_post_logout_redirect", skip_serializing_if = "Option::is_none")]
pub hydra_urls_post_logout_redirect: Option<String>,
#[serde(rename = "hydra_urls_self_issuer", skip_serializing_if = "Option::is_none")]
pub hydra_urls_self_issuer: Option<String>,
#[serde(rename = "hydra_webfinger_jwks_broadcast_keys", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_jwks_broadcast_keys: Option<Vec<String>>,
#[serde(rename = "hydra_webfinger_oidc_discovery_auth_url", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_auth_url: Option<String>,
#[serde(rename = "hydra_webfinger_oidc_discovery_client_registration_url", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_client_registration_url: Option<String>,
#[serde(rename = "hydra_webfinger_oidc_discovery_jwks_url", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_jwks_url: Option<String>,
#[serde(rename = "hydra_webfinger_oidc_discovery_supported_claims", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_supported_claims: Option<Vec<String>>,
#[serde(rename = "hydra_webfinger_oidc_discovery_supported_scope", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_supported_scope: Option<Vec<String>>,
#[serde(rename = "hydra_webfinger_oidc_discovery_token_url", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_token_url: Option<String>,
#[serde(rename = "hydra_webfinger_oidc_discovery_userinfo_url", skip_serializing_if = "Option::is_none")]
pub hydra_webfinger_oidc_discovery_userinfo_url: Option<String>,
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "keto_namespace_configuration", skip_serializing_if = "Option::is_none")]
pub keto_namespace_configuration: Option<String>,
#[serde(rename = "keto_namespaces", skip_serializing_if = "Option::is_none")]
pub keto_namespaces: Option<Vec<crate::models::KetoNamespace>>,
#[serde(rename = "keto_read_max_depth", skip_serializing_if = "Option::is_none")]
pub keto_read_max_depth: Option<i32>,
#[serde(rename = "kratos_cookies_same_site", skip_serializing_if = "Option::is_none")]
pub kratos_cookies_same_site: Option<String>,
#[serde(rename = "kratos_courier_smtp_connection_uri", skip_serializing_if = "Option::is_none")]
pub kratos_courier_smtp_connection_uri: Option<String>,
#[serde(rename = "kratos_courier_smtp_from_address", skip_serializing_if = "Option::is_none")]
pub kratos_courier_smtp_from_address: Option<String>,
#[serde(rename = "kratos_courier_smtp_from_name", skip_serializing_if = "Option::is_none")]
pub kratos_courier_smtp_from_name: Option<String>,
#[serde(rename = "kratos_courier_smtp_headers", skip_serializing_if = "Option::is_none")]
pub kratos_courier_smtp_headers: Option<serde_json::Value>,
#[serde(rename = "kratos_courier_templates_recovery_code_invalid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_code_invalid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_code_invalid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_code_invalid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_code_invalid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_code_invalid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_code_valid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_code_valid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_code_valid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_code_valid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_code_valid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_code_valid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_invalid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_invalid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_invalid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_invalid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_invalid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_invalid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_valid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_valid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_valid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_valid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_recovery_valid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_recovery_valid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_code_invalid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_code_invalid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_code_invalid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_code_invalid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_code_invalid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_code_invalid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_code_valid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_code_valid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_code_valid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_code_valid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_code_valid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_code_valid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_invalid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_invalid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_invalid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_invalid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_invalid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_invalid_email_subject: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_valid_email_body_html", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_valid_email_body_html: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_valid_email_body_plaintext", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_valid_email_body_plaintext: Option<String>,
#[serde(rename = "kratos_courier_templates_verification_valid_email_subject", skip_serializing_if = "Option::is_none")]
pub kratos_courier_templates_verification_valid_email_subject: Option<String>,
#[serde(rename = "kratos_feature_flags_cacheable_sessions", skip_serializing_if = "Option::is_none")]
pub kratos_feature_flags_cacheable_sessions: Option<bool>,
#[serde(rename = "kratos_identity_schemas", skip_serializing_if = "Option::is_none")]
pub kratos_identity_schemas: Option<Vec<crate::models::NormalizedProjectRevisionIdentitySchema>>,
#[serde(rename = "kratos_oauth2_provider_headers", skip_serializing_if = "Option::is_none")]
pub kratos_oauth2_provider_headers: Option<serde_json::Value>,
#[serde(rename = "kratos_oauth2_provider_url", skip_serializing_if = "Option::is_none")]
pub kratos_oauth2_provider_url: Option<String>,
#[serde(rename = "kratos_secrets_cipher", skip_serializing_if = "Option::is_none")]
pub kratos_secrets_cipher: Option<Vec<String>>,
#[serde(rename = "kratos_secrets_cookie", skip_serializing_if = "Option::is_none")]
pub kratos_secrets_cookie: Option<Vec<String>>,
#[serde(rename = "kratos_secrets_default", skip_serializing_if = "Option::is_none")]
pub kratos_secrets_default: Option<Vec<String>>,
#[serde(rename = "kratos_selfservice_allowed_return_urls", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_allowed_return_urls: Option<Vec<String>>,
#[serde(rename = "kratos_selfservice_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_error_ui_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_error_ui_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_hooks", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_hooks: Option<Vec<crate::models::NormalizedProjectRevisionHook>>,
#[serde(rename = "kratos_selfservice_flows_login_after_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_login_after_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_login_after_oidc_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_login_after_oidc_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_login_after_password_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_login_after_password_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_login_after_webauthn_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_login_after_webauthn_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_login_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_login_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_flows_login_ui_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_login_ui_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_logout_after_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_logout_after_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_recovery_after_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_recovery_after_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_recovery_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_recovery_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_flows_recovery_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_recovery_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_flows_recovery_notify_unknown_recipients", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_recovery_notify_unknown_recipients: Option<bool>,
#[serde(rename = "kratos_selfservice_flows_recovery_ui_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_recovery_ui_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_recovery_use", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_recovery_use: Option<KratosSelfserviceFlowsRecoveryUseEnum>,
#[serde(rename = "kratos_selfservice_flows_registration_after_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_after_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_registration_after_oidc_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_after_oidc_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_registration_after_password_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_after_password_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_registration_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_flows_registration_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_flows_registration_ui_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_registration_ui_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_after_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_after_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_after_password_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_after_password_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_after_profile_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_after_profile_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_privileged_session_max_age", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_privileged_session_max_age: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_required_aal", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_required_aal: Option<String>,
#[serde(rename = "kratos_selfservice_flows_settings_ui_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_settings_ui_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_verification_after_default_browser_return_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_verification_after_default_browser_return_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_verification_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_verification_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_flows_verification_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_verification_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_flows_verification_notify_unknown_recipients", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_verification_notify_unknown_recipients: Option<bool>,
#[serde(rename = "kratos_selfservice_flows_verification_ui_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_verification_ui_url: Option<String>,
#[serde(rename = "kratos_selfservice_flows_verification_use", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_flows_verification_use: Option<KratosSelfserviceFlowsVerificationUseEnum>,
#[serde(rename = "kratos_selfservice_methods_code_config_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_code_config_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_methods_code_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_code_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_link_config_base_url", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_link_config_base_url: Option<String>,
#[serde(rename = "kratos_selfservice_methods_link_config_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_link_config_lifespan: Option<String>,
#[serde(rename = "kratos_selfservice_methods_link_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_link_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_lookup_secret_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_lookup_secret_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_oidc_config_base_redirect_uri", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_oidc_config_base_redirect_uri: Option<String>,
#[serde(rename = "kratos_selfservice_methods_oidc_config_providers", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_oidc_config_providers: Option<Vec<crate::models::NormalizedProjectRevisionThirdPartyProvider>>,
#[serde(rename = "kratos_selfservice_methods_oidc_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_oidc_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_password_config_haveibeenpwned_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_password_config_haveibeenpwned_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_password_config_identifier_similarity_check_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_password_config_identifier_similarity_check_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_password_config_ignore_network_errors", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_password_config_ignore_network_errors: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_password_config_max_breaches", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_password_config_max_breaches: Option<i64>,
#[serde(rename = "kratos_selfservice_methods_password_config_min_password_length", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_password_config_min_password_length: Option<i64>,
#[serde(rename = "kratos_selfservice_methods_password_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_password_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_profile_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_profile_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_totp_config_issuer", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_totp_config_issuer: Option<String>,
#[serde(rename = "kratos_selfservice_methods_totp_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_totp_enabled: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_webauthn_config_passwordless", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_webauthn_config_passwordless: Option<bool>,
#[serde(rename = "kratos_selfservice_methods_webauthn_config_rp_display_name", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_webauthn_config_rp_display_name: Option<String>,
#[serde(rename = "kratos_selfservice_methods_webauthn_config_rp_icon", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_webauthn_config_rp_icon: Option<String>,
#[serde(rename = "kratos_selfservice_methods_webauthn_config_rp_id", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_webauthn_config_rp_id: Option<String>,
#[serde(rename = "kratos_selfservice_methods_webauthn_config_rp_origin", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_webauthn_config_rp_origin: Option<String>,
#[serde(rename = "kratos_selfservice_methods_webauthn_enabled", skip_serializing_if = "Option::is_none")]
pub kratos_selfservice_methods_webauthn_enabled: Option<bool>,
#[serde(rename = "kratos_session_cookie_persistent", skip_serializing_if = "Option::is_none")]
pub kratos_session_cookie_persistent: Option<bool>,
#[serde(rename = "kratos_session_cookie_same_site", skip_serializing_if = "Option::is_none")]
pub kratos_session_cookie_same_site: Option<String>,
#[serde(rename = "kratos_session_lifespan", skip_serializing_if = "Option::is_none")]
pub kratos_session_lifespan: Option<String>,
#[serde(rename = "kratos_session_whoami_required_aal", skip_serializing_if = "Option::is_none")]
pub kratos_session_whoami_required_aal: Option<String>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "production", skip_serializing_if = "Option::is_none")]
pub production: Option<bool>,
#[serde(rename = "project_id", skip_serializing_if = "Option::is_none")]
pub project_id: Option<String>,
#[serde(rename = "updated_at", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
impl NormalizedProjectRevision {
pub fn new(name: String) -> NormalizedProjectRevision {
NormalizedProjectRevision {
created_at: None,
hydra_oauth2_allowed_top_level_claims: None,
hydra_oauth2_client_credentials_default_grant_allowed_scope: None,
hydra_oauth2_exclude_not_before_claim: None,
hydra_oauth2_grant_jwt_iat_optional: None,
hydra_oauth2_grant_jwt_jti_optional: None,
hydra_oauth2_grant_jwt_max_ttl: None,
hydra_oauth2_pkce_enforced: None,
hydra_oauth2_pkce_enforced_for_public_clients: None,
hydra_oauth2_refresh_token_hook: None,
hydra_oidc_dynamic_client_registration_default_scope: None,
hydra_oidc_dynamic_client_registration_enabled: None,
hydra_oidc_subject_identifiers_pairwise_salt: None,
hydra_oidc_subject_identifiers_supported_types: None,
hydra_secrets_cookie: None,
hydra_secrets_system: None,
hydra_serve_admin_cors_allowed_origins: None,
hydra_serve_admin_cors_enabled: None,
hydra_serve_cookies_same_site_legacy_workaround: None,
hydra_serve_cookies_same_site_mode: None,
hydra_serve_public_cors_allowed_origins: None,
hydra_serve_public_cors_enabled: None,
hydra_strategies_access_token: None,
hydra_strategies_scope: None,
hydra_ttl_access_token: None,
hydra_ttl_auth_code: None,
hydra_ttl_id_token: None,
hydra_ttl_login_consent_request: None,
hydra_ttl_refresh_token: None,
hydra_urls_consent: None,
hydra_urls_error: None,
hydra_urls_login: None,
hydra_urls_logout: None,
hydra_urls_post_logout_redirect: None,
hydra_urls_self_issuer: None,
hydra_webfinger_jwks_broadcast_keys: None,
hydra_webfinger_oidc_discovery_auth_url: None,
hydra_webfinger_oidc_discovery_client_registration_url: None,
hydra_webfinger_oidc_discovery_jwks_url: None,
hydra_webfinger_oidc_discovery_supported_claims: None,
hydra_webfinger_oidc_discovery_supported_scope: None,
hydra_webfinger_oidc_discovery_token_url: None,
hydra_webfinger_oidc_discovery_userinfo_url: None,
id: None,
keto_namespace_configuration: None,
keto_namespaces: None,
keto_read_max_depth: None,
kratos_cookies_same_site: None,
kratos_courier_smtp_connection_uri: None,
kratos_courier_smtp_from_address: None,
kratos_courier_smtp_from_name: None,
kratos_courier_smtp_headers: None,
kratos_courier_templates_recovery_code_invalid_email_body_html: None,
kratos_courier_templates_recovery_code_invalid_email_body_plaintext: None,
kratos_courier_templates_recovery_code_invalid_email_subject: None,
kratos_courier_templates_recovery_code_valid_email_body_html: None,
kratos_courier_templates_recovery_code_valid_email_body_plaintext: None,
kratos_courier_templates_recovery_code_valid_email_subject: None,
kratos_courier_templates_recovery_invalid_email_body_html: None,
kratos_courier_templates_recovery_invalid_email_body_plaintext: None,
kratos_courier_templates_recovery_invalid_email_subject: None,
kratos_courier_templates_recovery_valid_email_body_html: None,
kratos_courier_templates_recovery_valid_email_body_plaintext: None,
kratos_courier_templates_recovery_valid_email_subject: None,
kratos_courier_templates_verification_code_invalid_email_body_html: None,
kratos_courier_templates_verification_code_invalid_email_body_plaintext: None,
kratos_courier_templates_verification_code_invalid_email_subject: None,
kratos_courier_templates_verification_code_valid_email_body_html: None,
kratos_courier_templates_verification_code_valid_email_body_plaintext: None,
kratos_courier_templates_verification_code_valid_email_subject: None,
kratos_courier_templates_verification_invalid_email_body_html: None,
kratos_courier_templates_verification_invalid_email_body_plaintext: None,
kratos_courier_templates_verification_invalid_email_subject: None,
kratos_courier_templates_verification_valid_email_body_html: None,
kratos_courier_templates_verification_valid_email_body_plaintext: None,
kratos_courier_templates_verification_valid_email_subject: None,
kratos_feature_flags_cacheable_sessions: None,
kratos_identity_schemas: None,
kratos_oauth2_provider_headers: None,
kratos_oauth2_provider_url: None,
kratos_secrets_cipher: None,
kratos_secrets_cookie: None,
kratos_secrets_default: None,
kratos_selfservice_allowed_return_urls: None,
kratos_selfservice_default_browser_return_url: None,
kratos_selfservice_flows_error_ui_url: None,
kratos_selfservice_flows_hooks: None,
kratos_selfservice_flows_login_after_default_browser_return_url: None,
kratos_selfservice_flows_login_after_oidc_default_browser_return_url: None,
kratos_selfservice_flows_login_after_password_default_browser_return_url: None,
kratos_selfservice_flows_login_after_webauthn_default_browser_return_url: None,
kratos_selfservice_flows_login_lifespan: None,
kratos_selfservice_flows_login_ui_url: None,
kratos_selfservice_flows_logout_after_default_browser_return_url: None,
kratos_selfservice_flows_recovery_after_default_browser_return_url: None,
kratos_selfservice_flows_recovery_enabled: None,
kratos_selfservice_flows_recovery_lifespan: None,
kratos_selfservice_flows_recovery_notify_unknown_recipients: None,
kratos_selfservice_flows_recovery_ui_url: None,
kratos_selfservice_flows_recovery_use: None,
kratos_selfservice_flows_registration_after_default_browser_return_url: None,
kratos_selfservice_flows_registration_after_oidc_default_browser_return_url: None,
kratos_selfservice_flows_registration_after_password_default_browser_return_url: None,
kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url: None,
kratos_selfservice_flows_registration_enabled: None,
kratos_selfservice_flows_registration_lifespan: None,
kratos_selfservice_flows_registration_ui_url: None,
kratos_selfservice_flows_settings_after_default_browser_return_url: None,
kratos_selfservice_flows_settings_after_password_default_browser_return_url: None,
kratos_selfservice_flows_settings_after_profile_default_browser_return_url: None,
kratos_selfservice_flows_settings_lifespan: None,
kratos_selfservice_flows_settings_privileged_session_max_age: None,
kratos_selfservice_flows_settings_required_aal: None,
kratos_selfservice_flows_settings_ui_url: None,
kratos_selfservice_flows_verification_after_default_browser_return_url: None,
kratos_selfservice_flows_verification_enabled: None,
kratos_selfservice_flows_verification_lifespan: None,
kratos_selfservice_flows_verification_notify_unknown_recipients: None,
kratos_selfservice_flows_verification_ui_url: None,
kratos_selfservice_flows_verification_use: None,
kratos_selfservice_methods_code_config_lifespan: None,
kratos_selfservice_methods_code_enabled: None,
kratos_selfservice_methods_link_config_base_url: None,
kratos_selfservice_methods_link_config_lifespan: None,
kratos_selfservice_methods_link_enabled: None,
kratos_selfservice_methods_lookup_secret_enabled: None,
kratos_selfservice_methods_oidc_config_base_redirect_uri: None,
kratos_selfservice_methods_oidc_config_providers: None,
kratos_selfservice_methods_oidc_enabled: None,
kratos_selfservice_methods_password_config_haveibeenpwned_enabled: None,
kratos_selfservice_methods_password_config_identifier_similarity_check_enabled: None,
kratos_selfservice_methods_password_config_ignore_network_errors: None,
kratos_selfservice_methods_password_config_max_breaches: None,
kratos_selfservice_methods_password_config_min_password_length: None,
kratos_selfservice_methods_password_enabled: None,
kratos_selfservice_methods_profile_enabled: None,
kratos_selfservice_methods_totp_config_issuer: None,
kratos_selfservice_methods_totp_enabled: None,
kratos_selfservice_methods_webauthn_config_passwordless: None,
kratos_selfservice_methods_webauthn_config_rp_display_name: None,
kratos_selfservice_methods_webauthn_config_rp_icon: None,
kratos_selfservice_methods_webauthn_config_rp_id: None,
kratos_selfservice_methods_webauthn_config_rp_origin: None,
kratos_selfservice_methods_webauthn_enabled: None,
kratos_session_cookie_persistent: None,
kratos_session_cookie_same_site: None,
kratos_session_lifespan: None,
kratos_session_whoami_required_aal: None,
name,
production: None,
project_id: None,
updated_at: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum HydraStrategiesAccessTokenEnum {
#[serde(rename = "opaque")]
Opaque,
#[serde(rename = "jwt")]
Jwt,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum HydraStrategiesScopeEnum {
#[serde(rename = "exact")]
Exact,
#[serde(rename = "wildcard")]
Wildcard,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum KratosSelfserviceFlowsRecoveryUseEnum {
#[serde(rename = "link")]
Link,
#[serde(rename = "code")]
Code,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum KratosSelfserviceFlowsVerificationUseEnum {
#[serde(rename = "link")]
Link,
#[serde(rename = "code")]
Code,
}