=begin
#Ory APIs

## Introduction Documentation for all public and administrative Ory APIs. Administrative APIs can only be accessed with a valid Personal Access Token. Public APIs are mostly used in browsers.  ## SDKs This document describes the APIs available in the Ory Network. The APIs are available as SDKs for the following languages:  | Language       | Download SDK                                                     | Documentation                                                                        | | -------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------ | | Dart           | [pub.dev](https://pub.dev/packages/ory_client)                   | [README](https://github.com/ory/sdk/blob/master/clients/client/dart/README.md)       | | .NET           | [nuget.org](https://www.nuget.org/packages/Ory.Client/)          | [README](https://github.com/ory/sdk/blob/master/clients/client/dotnet/README.md)     | | Elixir         | [hex.pm](https://hex.pm/packages/ory_client)                     | [README](https://github.com/ory/sdk/blob/master/clients/client/elixir/README.md)     | | Go             | [github.com](https://github.com/ory/client-go)                   | [README](https://github.com/ory/sdk/blob/master/clients/client/go/README.md)         | | Java           | [maven.org](https://search.maven.org/artifact/sh.ory/ory-client) | [README](https://github.com/ory/sdk/blob/master/clients/client/java/README.md)       | | JavaScript     | [npmjs.com](https://www.npmjs.com/package/@ory/client)           | [README](https://github.com/ory/sdk/blob/master/clients/client/typescript/README.md) | | JavaScript (With fetch) | [npmjs.com](https://www.npmjs.com/package/@ory/client-fetch)           | [README](https://github.com/ory/sdk/blob/master/clients/client/typescript-fetch/README.md) |  | PHP            | [packagist.org](https://packagist.org/packages/ory/client)       | [README](https://github.com/ory/sdk/blob/master/clients/client/php/README.md)        | | Python         | [pypi.org](https://pypi.org/project/ory-client/)                 | [README](https://github.com/ory/sdk/blob/master/clients/client/python/README.md)     | | Ruby           | [rubygems.org](https://rubygems.org/gems/ory-client)             | [README](https://github.com/ory/sdk/blob/master/clients/client/ruby/README.md)       | | Rust           | [crates.io](https://crates.io/crates/ory-client)                 | [README](https://github.com/ory/sdk/blob/master/clients/client/rust/README.md)       | 

The version of the OpenAPI document: v1.22.6
Contact: support@ory.sh
Generated by: https://openapi-generator.tech
Generator version: 7.12.0

=end

require 'date'
require 'time'

module OryClient
  class NormalizedProjectRevision
    # The Account Experience's Custom Translations  Contains all Custom Translations for this project.
    attr_accessor :account_experience_custom_translations

    # Holds the default locale for the account experience.
    attr_accessor :account_experience_default_locale

    # Holds the URL to the account experience's dark theme favicon (currently unused).
    attr_accessor :account_experience_favicon_dark

    # Holds the URL to the account experience's favicon.
    attr_accessor :account_experience_favicon_light

    # Holds the URL to the account experience's language behavior.  Can be one of: `respect_accept_language`: Respect the `Accept-Language` header. `force_default`: Force the default language.
    attr_accessor :account_experience_locale_behavior

    # Holds the URL to the account experience's dark theme logo (currently unused).
    attr_accessor :account_experience_logo_dark

    # Holds the URL to the account experience's logo.
    attr_accessor :account_experience_logo_light

    # Holds the URL to the account experience's dark theme variables.
    attr_accessor :account_experience_theme_variables_dark

    # Holds the URL to the account experience's light theme variables.
    attr_accessor :account_experience_theme_variables_light

    # The Project's Revision Creation Date
    attr_accessor :created_at

    # Whether to disable the account experience welcome screen, which is hosted under `/ui/welcome`.
    attr_accessor :disable_account_experience_welcome_screen

    # Whether the new account experience is enabled and reachable.
    attr_accessor :enable_ax_v2

    attr_accessor :hydra_oauth2_allowed_top_level_claims

    # Automatically grant authorized OAuth2 Scope in OAuth2 Client Credentials Flow.  Each OAuth2 Client is allowed to request a predefined OAuth2 Scope (for example `read write`). If this option is enabled, the full scope is automatically granted when performing the OAuth2 Client Credentials flow.  If disabled, the OAuth2 Client has to request the scope in the OAuth2 request by providing the `scope` query parameter.  Setting this option to true is common if you need compatibility with MITREid.  This governs the \"oauth2.client_credentials.default_grant_allowed_scope\" setting.
    attr_accessor :hydra_oauth2_client_credentials_default_grant_allowed_scope

    # Set to true if you want to exclude claim `nbf (not before)` part of access token.  This governs the \"oauth2.exclude_not_before_claim\" setting.
    attr_accessor :hydra_oauth2_exclude_not_before_claim

    # Configures if the issued at (`iat`) claim is required in the JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (RFC7523).  If set to `false`, the `iat` claim is required. Set this value to `true` only after careful consideration.  This governs the \"oauth2.grant.jwt.iat_optional\" setting.
    attr_accessor :hydra_oauth2_grant_jwt_iat_optional

    # Configures if the JSON Web Token ID (`jti`) claim is required in the JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (RFC7523).  If set to `false`, the `jti` claim is required. Set this value to `true` only after careful consideration.  This governs the \"oauth2.grant.jwt.jti_optional\" setting.
    attr_accessor :hydra_oauth2_grant_jwt_jti_optional

    # Configures what the maximum age of a JWT assertion used in the JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (RFC7523) can be.  This feature uses the `exp` claim and `iat` claim to calculate assertion age. Assertions exceeding the max age will be denied.  Useful as a safety measure and recommended to keep below 720h.  This governs the \"oauth2.grant.jwt.max_ttl\" setting.
    attr_accessor :hydra_oauth2_grant_jwt_max_ttl

    # Configures the OAuth2 Grant Refresh Token Rotation Grace Period  If set to `null` or `\"0s\"`, the graceful refresh token rotation is disabled.  This governs the \"oauth2.grant.refresh_token_rotation_grace_period\" setting.
    attr_accessor :hydra_oauth2_grant_refresh_token_rotation_grace_period

    # Set to false if you don't want to mirror custom claims under 'ext'.  This governs the \"oauth2.mirror_top_level_claims\" setting.
    attr_accessor :hydra_oauth2_mirror_top_level_claims

    # Configures whether PKCE should be enforced for all OAuth2 Clients.  This governs the \"oauth2.pkce.enforced\" setting.
    attr_accessor :hydra_oauth2_pkce_enforced

    # Configures whether PKCE should be enforced for OAuth2 Clients without a client secret (public clients).  This governs the \"oauth2.pkce.enforced_for_public_clients\" setting.
    attr_accessor :hydra_oauth2_pkce_enforced_for_public_clients

    # Sets the Refresh Token Hook Endpoint. If set this endpoint will be called during the OAuth2 Token Refresh grant update the OAuth2 Access Token claims.  This governs the \"oauth2.refresh_token_hook\" setting.
    attr_accessor :hydra_oauth2_refresh_token_hook

    # Sets the token hook endpoint for all grant types. If set it will be called while providing token to customize claims.  This governs the \"oauth2.token_hook.url\" setting.
    attr_accessor :hydra_oauth2_token_hook

    attr_accessor :hydra_oidc_dynamic_client_registration_default_scope

    # Configures OpenID Connect Dynamic Client Registration.  This governs the \"oidc.dynamic_client_registration.enabled\" setting.
    attr_accessor :hydra_oidc_dynamic_client_registration_enabled

    # Configures OpenID Connect Discovery and overwrites the pairwise algorithm  This governs the \"oidc.subject_identifiers.pairwise_salt\" setting.
    attr_accessor :hydra_oidc_subject_identifiers_pairwise_salt

    attr_accessor :hydra_oidc_subject_identifiers_supported_types

    attr_accessor :hydra_secrets_cookie

    attr_accessor :hydra_secrets_pagination

    attr_accessor :hydra_secrets_system

    # Configures the Ory Hydra Cookie Same Site Legacy Workaround  This governs the \"serve.cookies.same_site_legacy_workaround\" setting.
    attr_accessor :hydra_serve_cookies_same_site_legacy_workaround

    # Configures the Ory Hydra Cookie Same Site Mode  This governs the \"serve.cookies.same_site_mode\" setting.
    attr_accessor :hydra_serve_cookies_same_site_mode

    # Defines access token type  This governs the \"strategies.access_token\" setting. opaque Oauth2AccessTokenStrategyOpaque jwt Oauth2AccessTokenStrategyJwt
    attr_accessor :hydra_strategies_access_token

    # Define the claim to use as the scope in the access token.  This governs the \"strategies.jwt.scope_claim\" setting:  list: The scope claim is an array of strings named `scope`: `{ \"scope\": [\"read\", \"write\"] }` string: The scope claim is a space delimited list of strings named `scp`: `{ \"scp\": \"read write\" }` both: The scope claim is both a space delimited list and an array of strings named `scope` and `scp`: `{ \"scope\": [\"read\", \"write\"], \"scp\": \"read write\" }` list OAuth2JWTScopeClaimList string OAuth2JWTScopeClaimString both OAuth2JWTScopeClaimBoth
    attr_accessor :hydra_strategies_jwt_scope_claim

    # Defines how scopes are matched. For more details have a look at https://github.com/ory/fosite#scopes  This governs the \"strategies.scope\" setting. exact Oauth2ScopeStrategyExact wildcard Oauth2ScopeStrategyWildcard
    attr_accessor :hydra_strategies_scope

    # This governs the \"ttl.access_token\" setting.
    attr_accessor :hydra_ttl_access_token

    # Configures how long refresh tokens are valid.  Set to -1 for refresh tokens to never expire. This is not recommended!  This governs the \"ttl.auth_code\" setting.
    attr_accessor :hydra_ttl_auth_code

    # This governs the \"ttl.id_token\" setting.
    attr_accessor :hydra_ttl_id_token

    # Configures how long a user login and consent flow may take.  This governs the \"ttl.login_consent_request\" setting.
    attr_accessor :hydra_ttl_login_consent_request

    # Configures how long refresh tokens are valid.  Set to -1 for refresh tokens to never expire. This is not recommended!  This governs the \"ttl.refresh_token\" setting.
    attr_accessor :hydra_ttl_refresh_token

    # Sets the OAuth2 Consent Endpoint URL of the OAuth2 User Login & Consent flow.  Defaults to the Ory Account Experience if left empty.  This governs the \"urls.consent\" setting.
    attr_accessor :hydra_urls_consent

    # Sets the OAuth2 Error URL of the OAuth2 User Login & Consent flow.  Defaults to the Ory Account Experience if left empty.  This governs the \"urls.error\" setting.
    attr_accessor :hydra_urls_error

    # Sets the OAuth2 Login Endpoint URL of the OAuth2 User Login & Consent flow.  Defaults to the Ory Account Experience if left empty.  This governs the \"urls.login\" setting.
    attr_accessor :hydra_urls_login

    # Sets the logout endpoint.  Defaults to the Ory Account Experience if left empty.  This governs the \"urls.logout\" setting.
    attr_accessor :hydra_urls_logout

    # When an OAuth2-related user agent requests to log out, they will be redirected to this url afterwards per default.  Defaults to the Ory Account Experience in development and your application in production mode when a custom domain is connected.  This governs the \"urls.post_logout_redirect\" setting.
    attr_accessor :hydra_urls_post_logout_redirect

    # Sets the OAuth2 Registration Endpoint URL of the OAuth2 User Login & Consent flow.  Defaults to the Ory Account Experience if left empty.  This governs the \"urls.registration\" setting.
    attr_accessor :hydra_urls_registration

    # This value will be used as the issuer in access and ID tokens. It must be specified and using HTTPS protocol, unless the development mode is enabled.  On the Ory Network it will be very rare that you want to modify this value. If left empty, it will default to the correct value for the Ory Network.  This governs the \"urls.self.issuer\" setting.
    attr_accessor :hydra_urls_self_issuer

    attr_accessor :hydra_webfinger_jwks_broadcast_keys

    # Configures OpenID Connect Discovery and overwrites the OAuth2 Authorization URL.  This governs the \"webfinger.oidc.discovery.auth_url\" setting.
    attr_accessor :hydra_webfinger_oidc_discovery_auth_url

    # Configures OpenID Connect Discovery and overwrites the OpenID Connect Dynamic Client Registration Endpoint.  This governs the \"webfinger.oidc.discovery.client_registration_url\" setting.
    attr_accessor :hydra_webfinger_oidc_discovery_client_registration_url

    # Configures OpenID Connect Discovery and overwrites the JWKS URL.  This governs the \"webfinger.oidc.discovery.jwks_url\" setting.
    attr_accessor :hydra_webfinger_oidc_discovery_jwks_url

    attr_accessor :hydra_webfinger_oidc_discovery_supported_claims

    attr_accessor :hydra_webfinger_oidc_discovery_supported_scope

    # Configures OpenID Connect Discovery and overwrites the OAuth2 Token URL.  This governs the \"webfinger.oidc.discovery.token_url\" setting.
    attr_accessor :hydra_webfinger_oidc_discovery_token_url

    # Configures OpenID Connect Discovery and overwrites userinfo endpoint to be advertised at the OpenID Connect Discovery endpoint /.well-known/openid-configuration. Defaults to Ory Hydra's userinfo endpoint at /userinfo. Set this value if you want to handle this endpoint yourself.  This governs the \"webfinger.oidc.discovery.userinfo_url\" setting.
    attr_accessor :hydra_webfinger_oidc_discovery_userinfo_url

    # The revision ID.
    attr_accessor :id

    # The Revisions' Keto Namespace Configuration  The string is a URL pointing to an OPL file with the configuration.
    attr_accessor :keto_namespace_configuration

    attr_accessor :keto_namespaces

    attr_accessor :keto_secrets_pagination

    # Configures the Ory Kratos Cookie SameSite Attribute  This governs the \"cookies.same_site\" setting.
    attr_accessor :kratos_cookies_same_site

    attr_accessor :kratos_courier_channels

    # The delivery strategy to use when sending emails  `smtp`: Use SMTP server `http`: Use the built in HTTP client to send the email to some remote service
    attr_accessor :kratos_courier_delivery_strategy

    # The location of the API key to use in the HTTP email sending service's authentication  `header`: Send the key value pair as a header `cookie`: Send the key value pair as a cookie This governs the \"courier.http.auth.config.in\" setting
    attr_accessor :kratos_courier_http_request_config_auth_api_key_in

    # The name of the API key to use in the HTTP email sending service's authentication  This governs the \"courier.http.auth.config.name\" setting
    attr_accessor :kratos_courier_http_request_config_auth_api_key_name

    # The value of the API key to use in the HTTP email sending service's authentication  This governs the \"courier.http.auth.config.value\" setting
    attr_accessor :kratos_courier_http_request_config_auth_api_key_value

    # The password to use for basic auth in the HTTP email sending service's authentication  This governs the \"courier.http.auth.config.password\" setting
    attr_accessor :kratos_courier_http_request_config_auth_basic_auth_password

    # The user to use for basic auth in the HTTP email sending service's authentication  This governs the \"courier.http.auth.config.user\" setting
    attr_accessor :kratos_courier_http_request_config_auth_basic_auth_user

    # The authentication type to use while contacting the remote HTTP email sending service  `basic_auth`: Use Basic Authentication `api_key`: Use API Key Authentication in a header or cookie
    attr_accessor :kratos_courier_http_request_config_auth_type

    # The Jsonnet template to generate the body to send to the remote HTTP email sending service  Should be valid Jsonnet and base64 encoded  This governs the \"courier.http.body\" setting
    attr_accessor :kratos_courier_http_request_config_body

    # NullJSONRawMessage represents a json.RawMessage that works well with JSON, SQL, and Swagger and is NULLable-
    attr_accessor :kratos_courier_http_request_config_headers

    # The http METHOD to use when calling the remote HTTP email sending service
    attr_accessor :kratos_courier_http_request_config_method

    # The URL of the remote HTTP email sending service  This governs the \"courier.http.url\" setting
    attr_accessor :kratos_courier_http_request_config_url

    # Configures the Ory Kratos SMTP Connection URI  This governs the \"courier.smtp.connection_uri\" setting.
    attr_accessor :kratos_courier_smtp_connection_uri

    # Configures the Ory Kratos SMTP From Address  This governs the \"courier.smtp.from_address\" setting.
    attr_accessor :kratos_courier_smtp_from_address

    # Configures the Ory Kratos SMTP From Name  This governs the \"courier.smtp.from_name\" setting.
    attr_accessor :kratos_courier_smtp_from_name

    # NullJSONRawMessage represents a json.RawMessage that works well with JSON, SQL, and Swagger and is NULLable-
    attr_accessor :kratos_courier_smtp_headers

    # Configures the local_name to use in SMTP connections  This governs the \"courier.smtp.local_name\" setting.
    attr_accessor :kratos_courier_smtp_local_name

    # Configures the Ory Kratos Valid Login via Code Email Body HTML Template  This governs the \"courier.smtp.templates.login_code.valid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_login_code_valid_email_body_html

    # Configures the Ory Kratos Valid Login via Code Email Body Plaintext Template  This governs the \"courier.smtp.templates.login_code.valid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_login_code_valid_email_body_plaintext

    # Configures the Ory Kratos Valid Login via Code Email Subject Template  This governs the \"courier.smtp.templates.login_code.valid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_login_code_valid_email_subject

    # Configures the Ory Kratos Valid Login via Code SMS plain text body  This governs the \"courier.smtp.templates.login_code.valid.sms.plaintext\" setting.
    attr_accessor :kratos_courier_templates_login_code_valid_sms_body_plaintext

    # Configures the Ory Kratos Invalid Recovery via Code Email Body HTML Template  This governs the \"courier.smtp.templates.recovery_code.invalid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_recovery_code_invalid_email_body_html

    # Configures the Ory Kratos Invalid Recovery via Code Email Body Plaintext Template  This governs the \"courier.smtp.templates.recovery_code.invalid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_recovery_code_invalid_email_body_plaintext

    # Configures the Ory Kratos Invalid Recovery via Code Email Subject Template  This governs the \"courier.smtp.templates.recovery_code.invalid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_recovery_code_invalid_email_subject

    # Configures the Ory Kratos Valid Recovery via Code Email Body HTML Template  This governs the \"courier.smtp.templates.recovery_code.valid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_recovery_code_valid_email_body_html

    # Configures the Ory Kratos Valid Recovery via Code Email Body Plaintext Template  This governs the \"courier.smtp.templates.recovery_code.valid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_recovery_code_valid_email_body_plaintext

    # Configures the Ory Kratos Valid Recovery via Code Email Subject Template  This governs the \"courier.smtp.templates.recovery_code.valid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_recovery_code_valid_email_subject

    # Configures the Ory Kratos Invalid Recovery Email Body HTML Template  This governs the \"courier.smtp.templates.recovery.invalid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_recovery_invalid_email_body_html

    # Configures the Ory Kratos Invalid Recovery Email Body Plaintext Template  This governs the \"courier.smtp.templates.recovery.invalid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_recovery_invalid_email_body_plaintext

    # Configures the Ory Kratos Invalid Recovery Email Subject Template  This governs the \"courier.smtp.templates.recovery.invalid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_recovery_invalid_email_subject

    # Configures the Ory Kratos Valid Recovery Email Body HTML Template  This governs the \"courier.smtp.templates.recovery.valid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_recovery_valid_email_body_html

    # Configures the Ory Kratos Valid Recovery Email Body Plaintext Template  This governs the \"courier.smtp.templates.recovery.valid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_recovery_valid_email_body_plaintext

    # Configures the Ory Kratos Valid Recovery Email Subject Template  This governs the \"courier.smtp.templates.recovery.valid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_recovery_valid_email_subject

    # Configures the Ory Kratos Valid Registration via Code Email Body HTML Template  This governs the \"courier.smtp.templates.registration_code.valid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_registration_code_valid_email_body_html

    # Configures the Ory Kratos Valid Registration via Code Email Body Plaintext Template  This governs the \"courier.smtp.templates.registration_code.valid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_registration_code_valid_email_body_plaintext

    # Configures the Ory Kratos Valid Registration via Code Email Subject Template  This governs the \"courier.smtp.templates.registration_code.valid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_registration_code_valid_email_subject

    # Configures the Ory Kratos Valid Registration via Code Email Subject Template  This governs the \"courier.smtp.templates.registration_code.valid.sms.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_registration_code_valid_sms_body_plaintext

    # Configures the Ory Kratos Invalid Verification via Code Email Body HTML Template  This governs the \"courier.smtp.templates.verification_code.invalid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_verification_code_invalid_email_body_html

    # Configures the Ory Kratos Invalid Verification via Code Email Body Plaintext Template  This governs the \"courier.smtp.templates.verification_code.invalid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_verification_code_invalid_email_body_plaintext

    # Configures the Ory Kratos Invalid Verification via Code Email Subject Template  This governs the \"courier.smtp.templates.verification_code.invalid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_verification_code_invalid_email_subject

    # Configures the Ory Kratos Valid Verification via Code Email Body HTML Template  This governs the \"courier.smtp.templates.verification_code.valid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_verification_code_valid_email_body_html

    # Configures the Ory Kratos Valid Verification via Code Email Body Plaintext Template  This governs the \"courier.smtp.templates.verification_code.valid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_verification_code_valid_email_body_plaintext

    # Configures the Ory Kratos Valid Verification via Code Email Subject Template  This governs the \"courier.smtp.templates.verification_code.valid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_verification_code_valid_email_subject

    # Configures the Ory Kratos Valid Verification via Code SMS Body Plaintext  This governs the \"courier.smtp.templates.verification_code.valid.sms.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_verification_code_valid_sms_body_plaintext

    # Configures the Ory Kratos Invalid Verification Email Body HTML Template  This governs the \"courier.smtp.templates.verification.invalid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_verification_invalid_email_body_html

    # Configures the Ory Kratos Invalid Verification Email Body Plaintext Template  This governs the \"courier.smtp.templates.verification.invalid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_verification_invalid_email_body_plaintext

    # Configures the Ory Kratos Invalid Verification Email Subject Template  This governs the \"courier.smtp.templates.verification.invalid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_verification_invalid_email_subject

    # Configures the Ory Kratos Valid Verification Email Body HTML Template  This governs the \"courier.smtp.templates.verification.valid.email.body.html\" setting.
    attr_accessor :kratos_courier_templates_verification_valid_email_body_html

    # Configures the Ory Kratos Valid Verification Email Body Plaintext Template  This governs the \"courier.smtp.templates.verification.valid.email.body.plaintext\" setting.
    attr_accessor :kratos_courier_templates_verification_valid_email_body_plaintext

    # Configures the Ory Kratos Valid Verification Email Subject Template  This governs the \"courier.smtp.templates.verification.valid.email.subject\" setting.
    attr_accessor :kratos_courier_templates_verification_valid_email_subject

    # Configures the Ory Kratos Session caching feature flag  This governs the \"feature_flags.cacheable_sessions\" setting.
    attr_accessor :kratos_feature_flags_cacheable_sessions

    # Configures the Ory Kratos Session caching max-age feature flag  This governs the \"feature_flags.cacheable_sessions_max_age\" setting.
    attr_accessor :kratos_feature_flags_cacheable_sessions_max_age

    # This governs the \"feature_flags.choose_recovery_address\" setting.
    attr_accessor :kratos_feature_flags_choose_recovery_address

    # Configures the Ory Kratos Faster Session Extend setting  If enabled allows faster session extension by skipping the session lookup and returning 201 instead of 200. Disabling this feature will be deprecated in the future.  This governs the \"feature_flags.faster_session_extend\" setting.
    attr_accessor :kratos_feature_flags_faster_session_extend

    # Always include show_verification_ui in continue_with  If true, restores the legacy behavior of always including `show_verification_ui` in the registration flow's `continue_with` when verification is enabled. If set to false, `show_verification_ui` is only set in `continue_with` if the `show_verification_ui` hook is used. This flag will be removed in the future.  This governs the \"feature_flags.legacy_continue_with_verification_ui\" setting.
    attr_accessor :kratos_feature_flags_legacy_continue_with_verification_ui

    # Controls whether the UI nodes in an OIDC registration flow have group \"oidc\" in case required fields are not returned by the OIDC provider.  If set to true, the UI nodes will have group \"oidc\" and the flow will be considered successful if the user completes the flow. This is the legacy behavior.  This governs the \"feature_flags.legacy_oidc_registration_node_group\" setting.
    attr_accessor :kratos_feature_flags_legacy_oidc_registration_node_group

    # Return a form error if the login identifier is not verified  If true, the login flow will return a form error if the login identifier is not verified, which restores legacy behavior. If this value is false, the `continue_with` array will contain a `show_verification_ui` hook instead.  This flag is deprecated and will be removed in the future.  This governs the \"feature_flags.legacy_require_verified_login_error\" setting.
    attr_accessor :kratos_feature_flags_legacy_require_verified_login_error

    # Configures the group for the password method in the registration flow.  If true, it sets the password method group value to \"password\" if it is the only method available. This is the legacy behavior. If false is, it sets the password method group value to \"default\".
    attr_accessor :kratos_feature_flags_password_profile_registration_node_group

    # Configures the Ory Kratos Session use_continue_with_transitions flag  This governs the \"feature_flags.use_continue_with_transitions\" setting.
    attr_accessor :kratos_feature_flags_use_continue_with_transitions

    attr_accessor :kratos_identity_schemas

    # NullJSONRawMessage represents a json.RawMessage that works well with JSON, SQL, and Swagger and is NULLable-
    attr_accessor :kratos_oauth2_provider_headers

    # Kratos OAuth2 Provider Override Return To  Enabling this allows Kratos to set the return_to parameter automatically to the OAuth2 request URL on the login flow, allowing complex flows such as recovery to continue to the initial OAuth2 flow.
    attr_accessor :kratos_oauth2_provider_override_return_to

    # The Revisions' OAuth2 Provider Integration URL  This governs the \"oauth2_provider.url\" setting.
    attr_accessor :kratos_oauth2_provider_url

    # Configures the default read consistency level for identity APIs  This governs the `preview.default_read_consistency_level` setting.  The read consistency level determines the consistency guarantee for reads:  strong (slow): The read is guaranteed to return the most recent data committed at the start of the read. eventual (very fast): The result will return data that is about 4.8 seconds old.  Setting the default consistency level to `eventual` may cause regressions in the future as we add consistency controls to more APIs. Currently, the following APIs will be affected by this setting:  `GET /admin/identities`  Defaults to \"strong\" for new and existing projects. This feature is in preview. Use with caution.
    attr_accessor :kratos_preview_default_read_consistency_level

    attr_accessor :kratos_secrets_cipher

    attr_accessor :kratos_secrets_cookie

    attr_accessor :kratos_secrets_default

    attr_accessor :kratos_secrets_pagination

    # Configures if account enumeration should be mitigated when using identifier first login.
    attr_accessor :kratos_security_account_enumeration_mitigate

    attr_accessor :kratos_selfservice_allowed_return_urls

    # Configures the Ory Kratos Default Return URL  This governs the \"selfservice.allowed_return_urls\" setting.
    attr_accessor :kratos_selfservice_default_browser_return_url

    # Configures the Ory Kratos Error UI URL  This governs the \"selfservice.flows.error.ui_url\" setting.
    attr_accessor :kratos_selfservice_flows_error_ui_url

    # Configures the Ory Kratos Login After Password Default Return URL  This governs the \"selfservice.flows.code.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_code_default_browser_return_url

    # Configures the Ory Kratos Login Default Return URL  This governs the \"selfservice.flows.login.after.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_default_browser_return_url

    # Configures the Ory Kratos Login After Password Default Return URL  This governs the \"selfservice.flows.lookup_secret.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url

    # Configures the Ory Kratos Login After OIDC Default Return URL  This governs the \"selfservice.flows.login.after.oidc.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_oidc_default_browser_return_url

    # Configures the Ory Kratos Login After Passkey Default Return URL  This governs the \"selfservice.flows.login.after.passkey.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_passkey_default_browser_return_url

    # Configures the Ory Kratos Login After Password Default Return URL  This governs the \"selfservice.flows.login.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_password_default_browser_return_url

    # Configures the Ory Kratos Login After Password Default Return URL  This governs the \"selfservice.flows.totp.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_totp_default_browser_return_url

    # Configures the Ory Kratos Login After WebAuthn Default Return URL  This governs the \"selfservice.flows.login.after.webauthn.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_after_webauthn_default_browser_return_url

    # Configures the Ory Kratos Login Lifespan  This governs the \"selfservice.flows.login.lifespan\" setting.
    attr_accessor :kratos_selfservice_flows_login_lifespan

    # Configures the Ory Kratos Login UI URL  This governs the \"selfservice.flows.login.ui_url\" setting.
    attr_accessor :kratos_selfservice_flows_login_ui_url

    # Configures the Ory Kratos Logout Default Return URL  This governs the \"selfservice.flows.logout.after.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_logout_after_default_browser_return_url

    # Configures the Ory Kratos Recovery Default Return URL  This governs the \"selfservice.flows.recovery.after.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_recovery_after_default_browser_return_url

    # Configures the Ory Kratos Recovery Enabled Setting  This governs the \"selfservice.flows.recovery.enabled\" setting.
    attr_accessor :kratos_selfservice_flows_recovery_enabled

    # Configures the Ory Kratos Recovery Lifespan  This governs the \"selfservice.flows.recovery.lifespan\" setting.
    attr_accessor :kratos_selfservice_flows_recovery_lifespan

    # Configures whether to notify unknown recipients of a Ory Kratos recovery flow  This governs the \"selfservice.flows.recovery.notify_unknown_recipients\" setting.
    attr_accessor :kratos_selfservice_flows_recovery_notify_unknown_recipients

    # Configures the Ory Kratos Recovery UI URL  This governs the \"selfservice.flows.recovery.ui_url\" setting.
    attr_accessor :kratos_selfservice_flows_recovery_ui_url

    # Configures the Ory Kratos Recovery strategy to use (\"link\" or \"code\")  This governs the \"selfservice.flows.recovery.use\" setting. link SelfServiceMessageVerificationStrategyLink code SelfServiceMessageVerificationStrategyCode
    attr_accessor :kratos_selfservice_flows_recovery_use

    # Configures the Ory Kratos Registration After Code Default Return URL  This governs the \"selfservice.flows.registration.after.code.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_after_code_default_browser_return_url

    # Configures the Ory Kratos Registration Default Return URL  This governs the \"selfservice.flows.registration.after.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_after_default_browser_return_url

    # Configures the Ory Kratos Registration After OIDC Default Return URL  This governs the \"selfservice.flows.registration.after.oidc.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_after_oidc_default_browser_return_url

    # Configures the Ory Kratos Registration After Passkey Default Return URL  This governs the \"selfservice.flows.registration.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_after_passkey_default_browser_return_url

    # Configures the Ory Kratos Registration After Password Default Return URL  This governs the \"selfservice.flows.registration.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_after_password_default_browser_return_url

    # Configures the Ory Kratos Registration After Webauthn Default Return URL  This governs the \"selfservice.flows.registration.after.webauthn.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url

    # Disable two-step registration  Two-step registration is a significantly improved sign up flow and recommended when using more than one sign up methods. To revert to one-step registration, set this to `true`.  This governs the \"selfservice.flows.registration.enable_legacy_one_step\" setting.
    attr_accessor :kratos_selfservice_flows_registration_enable_legacy_one_step

    # Configures the Whether Ory Kratos Registration is Enabled  This governs the \"selfservice.flows.registration.enabled\" setting.0
    attr_accessor :kratos_selfservice_flows_registration_enabled

    # Configures the Ory Kratos Registration Lifespan  This governs the \"selfservice.flows.registration.lifespan\" setting.
    attr_accessor :kratos_selfservice_flows_registration_lifespan

    # Configures the Ory Kratos Registration Login Hints  Shows helpful information when a user tries to sign up with a duplicate account.  This governs the \"selfservice.flows.registration.login_hints\" setting.
    attr_accessor :kratos_selfservice_flows_registration_login_hints

    # Configures the Ory Kratos Registration UI URL  This governs the \"selfservice.flows.registration.ui_url\" setting.
    attr_accessor :kratos_selfservice_flows_registration_ui_url

    # Configures the Ory Kratos Settings Default Return URL  This governs the \"selfservice.flows.settings.after.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating Lookup Secrets  This governs the \"selfservice.flows.settings.after.lookup_secret.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating Social Sign In  This governs the \"selfservice.flows.settings.after.oidc.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_oidc_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating Passkey  This governs the \"selfservice.flows.settings.after.passkey.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_passkey_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating Passwords  This governs the \"selfservice.flows.settings.after.password.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_password_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating Profiles  This governs the \"selfservice.flows.settings.after.profile.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_profile_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating TOTP  This governs the \"selfservice.flows.settings.after.totp.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_totp_default_browser_return_url

    # Configures the Ory Kratos Settings Default Return URL After Updating WebAuthn  This governs the \"selfservice.flows.settings.after.webauthn.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url

    # Configures the Ory Kratos Settings Lifespan  This governs the \"selfservice.flows.settings.lifespan\" setting.
    attr_accessor :kratos_selfservice_flows_settings_lifespan

    # Configures the Ory Kratos Settings Privileged Session Max Age  This governs the \"selfservice.flows.settings.privileged_session_max_age\" setting.
    attr_accessor :kratos_selfservice_flows_settings_privileged_session_max_age

    # Configures the Ory Kratos Settings Required AAL  This governs the \"selfservice.flows.settings.required_aal\" setting.
    attr_accessor :kratos_selfservice_flows_settings_required_aal

    # Configures the Ory Kratos Settings UI URL  This governs the \"selfservice.flows.settings.ui_url\" setting.
    attr_accessor :kratos_selfservice_flows_settings_ui_url

    # Configures the Ory Kratos Verification Default Return URL  This governs the \"selfservice.flows.verification.after.default_browser_return_url\" setting.
    attr_accessor :kratos_selfservice_flows_verification_after_default_browser_return_url

    # Configures the Ory Kratos Verification Enabled Setting  This governs the \"selfservice.flows.verification.enabled\" setting.
    attr_accessor :kratos_selfservice_flows_verification_enabled

    # Configures the Ory Kratos Verification Lifespan  This governs the \"selfservice.flows.verification.lifespan\" setting.
    attr_accessor :kratos_selfservice_flows_verification_lifespan

    # Configures whether to notify unknown recipients of a Ory Kratos verification flow  This governs the \"selfservice.flows.verification.notify_unknown_recipients\" setting.
    attr_accessor :kratos_selfservice_flows_verification_notify_unknown_recipients

    # Configures the Ory Kratos Verification UI URL  This governs the \"selfservice.flows.verification.ui_url\" setting.
    attr_accessor :kratos_selfservice_flows_verification_ui_url

    # Configures the Ory Kratos Strategy to use for Verification  This governs the \"selfservice.flows.verification.use\" setting. link SelfServiceMessageVerificationStrategyLink code SelfServiceMessageVerificationStrategyCode
    attr_accessor :kratos_selfservice_flows_verification_use

    attr_accessor :kratos_selfservice_methods_captcha_config_allowed_domains

    # Configures the Cloudflare Turnstile site secret for CAPTCHA protection  The site secret is private and will be never be shared with the client. This key is write only and the value will not be returned in response to a read request.  Reach out to your account manager to enable this feature.
    attr_accessor :kratos_selfservice_methods_captcha_config_cf_turnstile_secret

    # Configures the Cloudflare Turnstile site key for CAPTCHA protection  The site key is public and will be shared with the client.  Reach out to your account manager to enable this feature.
    attr_accessor :kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey

    # Configures the Ory Kratos Self-Service Methods' Captcha Enabled Setting  Reach out to your account manager to enable this feature.
    attr_accessor :kratos_selfservice_methods_captcha_config_legacy_inject_node

    # Configures the Ory Kratos Self-Service Methods' Captcha Enabled Setting  Reach out to your account manager to enable this feature.
    attr_accessor :kratos_selfservice_methods_captcha_enabled

    # Configures the Ory Kratos Code Method's lifespan  This governs the \"selfservice.methods.code.config.lifespan\" setting.
    attr_accessor :kratos_selfservice_methods_code_config_lifespan

    attr_accessor :kratos_selfservice_methods_code_config_max_submissions

    # Enables a fallback method required in certain legacy use cases.  This governs the \"selfservice.methods.code.config.missing_credential_fallback_enabled\" setting.
    attr_accessor :kratos_selfservice_methods_code_config_missing_credential_fallback_enabled

    # Configures whether Ory Kratos Code Method is enabled  This governs the \"selfservice.methods.code.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_code_enabled

    # Configures whether the code method can be used to fulfil MFA flows  This governs the \"selfservice.methods.code.mfa_enabled\" setting.
    attr_accessor :kratos_selfservice_methods_code_mfa_enabled

    # Configures whether Ory Kratos Passwordless should use the Code Method  This governs the \"selfservice.methods.code.passwordless_enabled\" setting.
    attr_accessor :kratos_selfservice_methods_code_passwordless_enabled

    # This setting allows the code method to always login a user with code if they have registered with another authentication method such as password or social sign in.  This governs the \"selfservice.methods.code.passwordless_login_fallback_enabled\" setting.
    attr_accessor :kratos_selfservice_methods_code_passwordless_login_fallback_enabled

    # Configures the Base URL which Recovery, Verification, and Login Links Point to  It is recommended to leave this value empty. It will be appropriately configured to the best matching domain (e.g. when using custom domains) automatically.  This governs the \"selfservice.methods.link.config.base_url\" setting.
    attr_accessor :kratos_selfservice_methods_link_config_base_url

    # Configures the Ory Kratos Link Method's lifespan  This governs the \"selfservice.methods.link.config.lifespan\" setting.
    attr_accessor :kratos_selfservice_methods_link_config_lifespan

    # Configures whether Ory Kratos Link Method is enabled  This governs the \"selfservice.methods.link.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_link_enabled

    # Configures whether Ory Kratos TOTP Lookup Secret is enabled  This governs the \"selfservice.methods.lookup_secret.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_lookup_secret_enabled

    # Configures the Ory Kratos Third Party / OpenID Connect base redirect URI  This governs the \"selfservice.methods.oidc.config.base_redirect_uri\" setting.
    attr_accessor :kratos_selfservice_methods_oidc_config_base_redirect_uri

    attr_accessor :kratos_selfservice_methods_oidc_config_providers

    # Configures whether Ory Kratos allows auto-linking of OIDC credentials without a subject  This governs the \"selfservice.methods.oidc.enable_auto_link_policy\" setting.
    attr_accessor :kratos_selfservice_methods_oidc_enable_auto_link_policy

    # Configures whether Ory Kratos Third Party / OpenID Connect Login is enabled  This governs the \"selfservice.methods.oidc.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_oidc_enabled

    # Configures the Ory Kratos Passkey RP Display Name  This governs the \"selfservice.methods.passkey.config.rp.display_name\" setting.
    attr_accessor :kratos_selfservice_methods_passkey_config_rp_display_name

    # Configures the Ory Kratos Passkey RP ID  This governs the \"selfservice.methods.passkey.config.rp.id\" setting.
    attr_accessor :kratos_selfservice_methods_passkey_config_rp_id

    attr_accessor :kratos_selfservice_methods_passkey_config_rp_origins

    # Configures whether Ory Kratos Passkey authentication is enabled  This governs the \"selfservice.methods.passkey.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_passkey_enabled

    # Configures whether Ory Kratos Password HIBP Checks is enabled  This governs the \"selfservice.methods.password.config.haveibeenpwned_enabled\" setting.
    attr_accessor :kratos_selfservice_methods_password_config_haveibeenpwned_enabled

    # Configures whether Ory Kratos Password should disable the similarity policy.  This governs the \"selfservice.methods.password.config.identifier_similarity_check_enabled\" setting.
    attr_accessor :kratos_selfservice_methods_password_config_identifier_similarity_check_enabled

    # Configures whether Ory Kratos Password Should ignore HIBPWND Network Errors  This governs the \"selfservice.methods.password.config.ignore_network_errors\" setting.
    attr_accessor :kratos_selfservice_methods_password_config_ignore_network_errors

    # Configures Ory Kratos Password Max Breaches Detection  This governs the \"selfservice.methods.password.config.max_breaches\" setting.
    attr_accessor :kratos_selfservice_methods_password_config_max_breaches

    # Configures the minimum length of passwords.  This governs the \"selfservice.methods.password.config.min_password_length\" setting.
    attr_accessor :kratos_selfservice_methods_password_config_min_password_length

    # Configures whether Ory Kratos Password Method is enabled  This governs the \"selfservice.methods.password.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_password_enabled

    # Configures whether Ory Kratos Profile Method is enabled  This governs the \"selfservice.methods.profile.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_profile_enabled

    attr_accessor :kratos_selfservice_methods_saml_config_providers

    # Configures whether Ory Kratos SAML Login is enabled  This governs the \"selfservice.methods.saml.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_saml_enabled

    # Configures Ory Kratos TOTP Issuer  This governs the \"selfservice.methods.totp.config.issuer\" setting.
    attr_accessor :kratos_selfservice_methods_totp_config_issuer

    # Configures whether Ory Kratos TOTP Method is enabled  This governs the \"selfservice.methods.totp.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_totp_enabled

    # Configures whether Ory Kratos Webauthn is used for passwordless flows  This governs the \"selfservice.methods.webauthn.config.passwordless\" setting.
    attr_accessor :kratos_selfservice_methods_webauthn_config_passwordless

    # Configures the Ory Kratos Webauthn RP Display Name  This governs the \"selfservice.methods.webauthn.config.rp.display_name\" setting.
    attr_accessor :kratos_selfservice_methods_webauthn_config_rp_display_name

    # Configures the Ory Kratos Webauthn RP Icon  This governs the \"selfservice.methods.webauthn.config.rp.icon\" setting. Deprecated: This value will be ignored due to security considerations.
    attr_accessor :kratos_selfservice_methods_webauthn_config_rp_icon

    # Configures the Ory Kratos Webauthn RP ID  This governs the \"selfservice.methods.webauthn.config.rp.id\" setting.
    attr_accessor :kratos_selfservice_methods_webauthn_config_rp_id

    attr_accessor :kratos_selfservice_methods_webauthn_config_rp_origins

    # Configures whether Ory Kratos Webauthn is enabled  This governs the \"selfservice.methods.webauthn.enabled\" setting.
    attr_accessor :kratos_selfservice_methods_webauthn_enabled

    # Configures the Ory Kratos Session Cookie Persistent Attribute  This governs the \"session.cookie.persistent\" setting.
    attr_accessor :kratos_session_cookie_persistent

    # Configures the Ory Kratos Session Cookie SameSite Attribute  This governs the \"session.cookie.same_site\" setting.
    attr_accessor :kratos_session_cookie_same_site

    # Configures the Ory Kratos Session Lifespan  This governs the \"session.lifespan\" setting.
    attr_accessor :kratos_session_lifespan

    # Configures the Ory Kratos Session Whoami AAL requirement  This governs the \"session.whoami.required_aal\" setting.
    attr_accessor :kratos_session_whoami_required_aal

    attr_accessor :kratos_session_whoami_tokenizer_templates

    # The project's name.
    attr_accessor :name

    attr_accessor :organizations

    # The Revision's Project ID
    attr_accessor :project_id

    attr_accessor :project_revision_hooks

    attr_accessor :scim_clients

    attr_accessor :serve_admin_cors_allowed_origins

    # Enable CORS headers on all admin APIs  This governs the \"serve.admin.cors.enabled\" setting.
    attr_accessor :serve_admin_cors_enabled

    attr_accessor :serve_public_cors_allowed_origins

    # Enable CORS headers on all public APIs  This governs the \"serve.public.cors.enabled\" setting.
    attr_accessor :serve_public_cors_enabled

    # Whether the project should employ strict security measures. Setting this to true is recommended for going into production.
    attr_accessor :strict_security

    # Last Time Project's Revision was Updated
    attr_accessor :updated_at

    class EnumAttributeValidator
      attr_reader :datatype
      attr_reader :allowable_values

      def initialize(datatype, allowable_values)
        @allowable_values = allowable_values.map do |value|
          case datatype.to_s
          when /Integer/i
            value.to_i
          when /Float/i
            value.to_f
          else
            value
          end
        end
      end

      def valid?(value)
        !value || allowable_values.include?(value)
      end
    end

    # Attribute mapping from ruby-style variable name to JSON key.
    def self.attribute_map
      {
        :'account_experience_custom_translations' => :'account_experience_custom_translations',
        :'account_experience_default_locale' => :'account_experience_default_locale',
        :'account_experience_favicon_dark' => :'account_experience_favicon_dark',
        :'account_experience_favicon_light' => :'account_experience_favicon_light',
        :'account_experience_locale_behavior' => :'account_experience_locale_behavior',
        :'account_experience_logo_dark' => :'account_experience_logo_dark',
        :'account_experience_logo_light' => :'account_experience_logo_light',
        :'account_experience_theme_variables_dark' => :'account_experience_theme_variables_dark',
        :'account_experience_theme_variables_light' => :'account_experience_theme_variables_light',
        :'created_at' => :'created_at',
        :'disable_account_experience_welcome_screen' => :'disable_account_experience_welcome_screen',
        :'enable_ax_v2' => :'enable_ax_v2',
        :'hydra_oauth2_allowed_top_level_claims' => :'hydra_oauth2_allowed_top_level_claims',
        :'hydra_oauth2_client_credentials_default_grant_allowed_scope' => :'hydra_oauth2_client_credentials_default_grant_allowed_scope',
        :'hydra_oauth2_exclude_not_before_claim' => :'hydra_oauth2_exclude_not_before_claim',
        :'hydra_oauth2_grant_jwt_iat_optional' => :'hydra_oauth2_grant_jwt_iat_optional',
        :'hydra_oauth2_grant_jwt_jti_optional' => :'hydra_oauth2_grant_jwt_jti_optional',
        :'hydra_oauth2_grant_jwt_max_ttl' => :'hydra_oauth2_grant_jwt_max_ttl',
        :'hydra_oauth2_grant_refresh_token_rotation_grace_period' => :'hydra_oauth2_grant_refresh_token_rotation_grace_period',
        :'hydra_oauth2_mirror_top_level_claims' => :'hydra_oauth2_mirror_top_level_claims',
        :'hydra_oauth2_pkce_enforced' => :'hydra_oauth2_pkce_enforced',
        :'hydra_oauth2_pkce_enforced_for_public_clients' => :'hydra_oauth2_pkce_enforced_for_public_clients',
        :'hydra_oauth2_refresh_token_hook' => :'hydra_oauth2_refresh_token_hook',
        :'hydra_oauth2_token_hook' => :'hydra_oauth2_token_hook',
        :'hydra_oidc_dynamic_client_registration_default_scope' => :'hydra_oidc_dynamic_client_registration_default_scope',
        :'hydra_oidc_dynamic_client_registration_enabled' => :'hydra_oidc_dynamic_client_registration_enabled',
        :'hydra_oidc_subject_identifiers_pairwise_salt' => :'hydra_oidc_subject_identifiers_pairwise_salt',
        :'hydra_oidc_subject_identifiers_supported_types' => :'hydra_oidc_subject_identifiers_supported_types',
        :'hydra_secrets_cookie' => :'hydra_secrets_cookie',
        :'hydra_secrets_pagination' => :'hydra_secrets_pagination',
        :'hydra_secrets_system' => :'hydra_secrets_system',
        :'hydra_serve_cookies_same_site_legacy_workaround' => :'hydra_serve_cookies_same_site_legacy_workaround',
        :'hydra_serve_cookies_same_site_mode' => :'hydra_serve_cookies_same_site_mode',
        :'hydra_strategies_access_token' => :'hydra_strategies_access_token',
        :'hydra_strategies_jwt_scope_claim' => :'hydra_strategies_jwt_scope_claim',
        :'hydra_strategies_scope' => :'hydra_strategies_scope',
        :'hydra_ttl_access_token' => :'hydra_ttl_access_token',
        :'hydra_ttl_auth_code' => :'hydra_ttl_auth_code',
        :'hydra_ttl_id_token' => :'hydra_ttl_id_token',
        :'hydra_ttl_login_consent_request' => :'hydra_ttl_login_consent_request',
        :'hydra_ttl_refresh_token' => :'hydra_ttl_refresh_token',
        :'hydra_urls_consent' => :'hydra_urls_consent',
        :'hydra_urls_error' => :'hydra_urls_error',
        :'hydra_urls_login' => :'hydra_urls_login',
        :'hydra_urls_logout' => :'hydra_urls_logout',
        :'hydra_urls_post_logout_redirect' => :'hydra_urls_post_logout_redirect',
        :'hydra_urls_registration' => :'hydra_urls_registration',
        :'hydra_urls_self_issuer' => :'hydra_urls_self_issuer',
        :'hydra_webfinger_jwks_broadcast_keys' => :'hydra_webfinger_jwks_broadcast_keys',
        :'hydra_webfinger_oidc_discovery_auth_url' => :'hydra_webfinger_oidc_discovery_auth_url',
        :'hydra_webfinger_oidc_discovery_client_registration_url' => :'hydra_webfinger_oidc_discovery_client_registration_url',
        :'hydra_webfinger_oidc_discovery_jwks_url' => :'hydra_webfinger_oidc_discovery_jwks_url',
        :'hydra_webfinger_oidc_discovery_supported_claims' => :'hydra_webfinger_oidc_discovery_supported_claims',
        :'hydra_webfinger_oidc_discovery_supported_scope' => :'hydra_webfinger_oidc_discovery_supported_scope',
        :'hydra_webfinger_oidc_discovery_token_url' => :'hydra_webfinger_oidc_discovery_token_url',
        :'hydra_webfinger_oidc_discovery_userinfo_url' => :'hydra_webfinger_oidc_discovery_userinfo_url',
        :'id' => :'id',
        :'keto_namespace_configuration' => :'keto_namespace_configuration',
        :'keto_namespaces' => :'keto_namespaces',
        :'keto_secrets_pagination' => :'keto_secrets_pagination',
        :'kratos_cookies_same_site' => :'kratos_cookies_same_site',
        :'kratos_courier_channels' => :'kratos_courier_channels',
        :'kratos_courier_delivery_strategy' => :'kratos_courier_delivery_strategy',
        :'kratos_courier_http_request_config_auth_api_key_in' => :'kratos_courier_http_request_config_auth_api_key_in',
        :'kratos_courier_http_request_config_auth_api_key_name' => :'kratos_courier_http_request_config_auth_api_key_name',
        :'kratos_courier_http_request_config_auth_api_key_value' => :'kratos_courier_http_request_config_auth_api_key_value',
        :'kratos_courier_http_request_config_auth_basic_auth_password' => :'kratos_courier_http_request_config_auth_basic_auth_password',
        :'kratos_courier_http_request_config_auth_basic_auth_user' => :'kratos_courier_http_request_config_auth_basic_auth_user',
        :'kratos_courier_http_request_config_auth_type' => :'kratos_courier_http_request_config_auth_type',
        :'kratos_courier_http_request_config_body' => :'kratos_courier_http_request_config_body',
        :'kratos_courier_http_request_config_headers' => :'kratos_courier_http_request_config_headers',
        :'kratos_courier_http_request_config_method' => :'kratos_courier_http_request_config_method',
        :'kratos_courier_http_request_config_url' => :'kratos_courier_http_request_config_url',
        :'kratos_courier_smtp_connection_uri' => :'kratos_courier_smtp_connection_uri',
        :'kratos_courier_smtp_from_address' => :'kratos_courier_smtp_from_address',
        :'kratos_courier_smtp_from_name' => :'kratos_courier_smtp_from_name',
        :'kratos_courier_smtp_headers' => :'kratos_courier_smtp_headers',
        :'kratos_courier_smtp_local_name' => :'kratos_courier_smtp_local_name',
        :'kratos_courier_templates_login_code_valid_email_body_html' => :'kratos_courier_templates_login_code_valid_email_body_html',
        :'kratos_courier_templates_login_code_valid_email_body_plaintext' => :'kratos_courier_templates_login_code_valid_email_body_plaintext',
        :'kratos_courier_templates_login_code_valid_email_subject' => :'kratos_courier_templates_login_code_valid_email_subject',
        :'kratos_courier_templates_login_code_valid_sms_body_plaintext' => :'kratos_courier_templates_login_code_valid_sms_body_plaintext',
        :'kratos_courier_templates_recovery_code_invalid_email_body_html' => :'kratos_courier_templates_recovery_code_invalid_email_body_html',
        :'kratos_courier_templates_recovery_code_invalid_email_body_plaintext' => :'kratos_courier_templates_recovery_code_invalid_email_body_plaintext',
        :'kratos_courier_templates_recovery_code_invalid_email_subject' => :'kratos_courier_templates_recovery_code_invalid_email_subject',
        :'kratos_courier_templates_recovery_code_valid_email_body_html' => :'kratos_courier_templates_recovery_code_valid_email_body_html',
        :'kratos_courier_templates_recovery_code_valid_email_body_plaintext' => :'kratos_courier_templates_recovery_code_valid_email_body_plaintext',
        :'kratos_courier_templates_recovery_code_valid_email_subject' => :'kratos_courier_templates_recovery_code_valid_email_subject',
        :'kratos_courier_templates_recovery_invalid_email_body_html' => :'kratos_courier_templates_recovery_invalid_email_body_html',
        :'kratos_courier_templates_recovery_invalid_email_body_plaintext' => :'kratos_courier_templates_recovery_invalid_email_body_plaintext',
        :'kratos_courier_templates_recovery_invalid_email_subject' => :'kratos_courier_templates_recovery_invalid_email_subject',
        :'kratos_courier_templates_recovery_valid_email_body_html' => :'kratos_courier_templates_recovery_valid_email_body_html',
        :'kratos_courier_templates_recovery_valid_email_body_plaintext' => :'kratos_courier_templates_recovery_valid_email_body_plaintext',
        :'kratos_courier_templates_recovery_valid_email_subject' => :'kratos_courier_templates_recovery_valid_email_subject',
        :'kratos_courier_templates_registration_code_valid_email_body_html' => :'kratos_courier_templates_registration_code_valid_email_body_html',
        :'kratos_courier_templates_registration_code_valid_email_body_plaintext' => :'kratos_courier_templates_registration_code_valid_email_body_plaintext',
        :'kratos_courier_templates_registration_code_valid_email_subject' => :'kratos_courier_templates_registration_code_valid_email_subject',
        :'kratos_courier_templates_registration_code_valid_sms_body_plaintext' => :'kratos_courier_templates_registration_code_valid_sms_body_plaintext',
        :'kratos_courier_templates_verification_code_invalid_email_body_html' => :'kratos_courier_templates_verification_code_invalid_email_body_html',
        :'kratos_courier_templates_verification_code_invalid_email_body_plaintext' => :'kratos_courier_templates_verification_code_invalid_email_body_plaintext',
        :'kratos_courier_templates_verification_code_invalid_email_subject' => :'kratos_courier_templates_verification_code_invalid_email_subject',
        :'kratos_courier_templates_verification_code_valid_email_body_html' => :'kratos_courier_templates_verification_code_valid_email_body_html',
        :'kratos_courier_templates_verification_code_valid_email_body_plaintext' => :'kratos_courier_templates_verification_code_valid_email_body_plaintext',
        :'kratos_courier_templates_verification_code_valid_email_subject' => :'kratos_courier_templates_verification_code_valid_email_subject',
        :'kratos_courier_templates_verification_code_valid_sms_body_plaintext' => :'kratos_courier_templates_verification_code_valid_sms_body_plaintext',
        :'kratos_courier_templates_verification_invalid_email_body_html' => :'kratos_courier_templates_verification_invalid_email_body_html',
        :'kratos_courier_templates_verification_invalid_email_body_plaintext' => :'kratos_courier_templates_verification_invalid_email_body_plaintext',
        :'kratos_courier_templates_verification_invalid_email_subject' => :'kratos_courier_templates_verification_invalid_email_subject',
        :'kratos_courier_templates_verification_valid_email_body_html' => :'kratos_courier_templates_verification_valid_email_body_html',
        :'kratos_courier_templates_verification_valid_email_body_plaintext' => :'kratos_courier_templates_verification_valid_email_body_plaintext',
        :'kratos_courier_templates_verification_valid_email_subject' => :'kratos_courier_templates_verification_valid_email_subject',
        :'kratos_feature_flags_cacheable_sessions' => :'kratos_feature_flags_cacheable_sessions',
        :'kratos_feature_flags_cacheable_sessions_max_age' => :'kratos_feature_flags_cacheable_sessions_max_age',
        :'kratos_feature_flags_choose_recovery_address' => :'kratos_feature_flags_choose_recovery_address',
        :'kratos_feature_flags_faster_session_extend' => :'kratos_feature_flags_faster_session_extend',
        :'kratos_feature_flags_legacy_continue_with_verification_ui' => :'kratos_feature_flags_legacy_continue_with_verification_ui',
        :'kratos_feature_flags_legacy_oidc_registration_node_group' => :'kratos_feature_flags_legacy_oidc_registration_node_group',
        :'kratos_feature_flags_legacy_require_verified_login_error' => :'kratos_feature_flags_legacy_require_verified_login_error',
        :'kratos_feature_flags_password_profile_registration_node_group' => :'kratos_feature_flags_password_profile_registration_node_group',
        :'kratos_feature_flags_use_continue_with_transitions' => :'kratos_feature_flags_use_continue_with_transitions',
        :'kratos_identity_schemas' => :'kratos_identity_schemas',
        :'kratos_oauth2_provider_headers' => :'kratos_oauth2_provider_headers',
        :'kratos_oauth2_provider_override_return_to' => :'kratos_oauth2_provider_override_return_to',
        :'kratos_oauth2_provider_url' => :'kratos_oauth2_provider_url',
        :'kratos_preview_default_read_consistency_level' => :'kratos_preview_default_read_consistency_level',
        :'kratos_secrets_cipher' => :'kratos_secrets_cipher',
        :'kratos_secrets_cookie' => :'kratos_secrets_cookie',
        :'kratos_secrets_default' => :'kratos_secrets_default',
        :'kratos_secrets_pagination' => :'kratos_secrets_pagination',
        :'kratos_security_account_enumeration_mitigate' => :'kratos_security_account_enumeration_mitigate',
        :'kratos_selfservice_allowed_return_urls' => :'kratos_selfservice_allowed_return_urls',
        :'kratos_selfservice_default_browser_return_url' => :'kratos_selfservice_default_browser_return_url',
        :'kratos_selfservice_flows_error_ui_url' => :'kratos_selfservice_flows_error_ui_url',
        :'kratos_selfservice_flows_login_after_code_default_browser_return_url' => :'kratos_selfservice_flows_login_after_code_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_default_browser_return_url' => :'kratos_selfservice_flows_login_after_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url' => :'kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_oidc_default_browser_return_url' => :'kratos_selfservice_flows_login_after_oidc_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_passkey_default_browser_return_url' => :'kratos_selfservice_flows_login_after_passkey_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_password_default_browser_return_url' => :'kratos_selfservice_flows_login_after_password_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_totp_default_browser_return_url' => :'kratos_selfservice_flows_login_after_totp_default_browser_return_url',
        :'kratos_selfservice_flows_login_after_webauthn_default_browser_return_url' => :'kratos_selfservice_flows_login_after_webauthn_default_browser_return_url',
        :'kratos_selfservice_flows_login_lifespan' => :'kratos_selfservice_flows_login_lifespan',
        :'kratos_selfservice_flows_login_ui_url' => :'kratos_selfservice_flows_login_ui_url',
        :'kratos_selfservice_flows_logout_after_default_browser_return_url' => :'kratos_selfservice_flows_logout_after_default_browser_return_url',
        :'kratos_selfservice_flows_recovery_after_default_browser_return_url' => :'kratos_selfservice_flows_recovery_after_default_browser_return_url',
        :'kratos_selfservice_flows_recovery_enabled' => :'kratos_selfservice_flows_recovery_enabled',
        :'kratos_selfservice_flows_recovery_lifespan' => :'kratos_selfservice_flows_recovery_lifespan',
        :'kratos_selfservice_flows_recovery_notify_unknown_recipients' => :'kratos_selfservice_flows_recovery_notify_unknown_recipients',
        :'kratos_selfservice_flows_recovery_ui_url' => :'kratos_selfservice_flows_recovery_ui_url',
        :'kratos_selfservice_flows_recovery_use' => :'kratos_selfservice_flows_recovery_use',
        :'kratos_selfservice_flows_registration_after_code_default_browser_return_url' => :'kratos_selfservice_flows_registration_after_code_default_browser_return_url',
        :'kratos_selfservice_flows_registration_after_default_browser_return_url' => :'kratos_selfservice_flows_registration_after_default_browser_return_url',
        :'kratos_selfservice_flows_registration_after_oidc_default_browser_return_url' => :'kratos_selfservice_flows_registration_after_oidc_default_browser_return_url',
        :'kratos_selfservice_flows_registration_after_passkey_default_browser_return_url' => :'kratos_selfservice_flows_registration_after_passkey_default_browser_return_url',
        :'kratos_selfservice_flows_registration_after_password_default_browser_return_url' => :'kratos_selfservice_flows_registration_after_password_default_browser_return_url',
        :'kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url' => :'kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url',
        :'kratos_selfservice_flows_registration_enable_legacy_one_step' => :'kratos_selfservice_flows_registration_enable_legacy_one_step',
        :'kratos_selfservice_flows_registration_enabled' => :'kratos_selfservice_flows_registration_enabled',
        :'kratos_selfservice_flows_registration_lifespan' => :'kratos_selfservice_flows_registration_lifespan',
        :'kratos_selfservice_flows_registration_login_hints' => :'kratos_selfservice_flows_registration_login_hints',
        :'kratos_selfservice_flows_registration_ui_url' => :'kratos_selfservice_flows_registration_ui_url',
        :'kratos_selfservice_flows_settings_after_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_oidc_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_oidc_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_passkey_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_passkey_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_password_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_password_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_profile_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_profile_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_totp_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_totp_default_browser_return_url',
        :'kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url' => :'kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url',
        :'kratos_selfservice_flows_settings_lifespan' => :'kratos_selfservice_flows_settings_lifespan',
        :'kratos_selfservice_flows_settings_privileged_session_max_age' => :'kratos_selfservice_flows_settings_privileged_session_max_age',
        :'kratos_selfservice_flows_settings_required_aal' => :'kratos_selfservice_flows_settings_required_aal',
        :'kratos_selfservice_flows_settings_ui_url' => :'kratos_selfservice_flows_settings_ui_url',
        :'kratos_selfservice_flows_verification_after_default_browser_return_url' => :'kratos_selfservice_flows_verification_after_default_browser_return_url',
        :'kratos_selfservice_flows_verification_enabled' => :'kratos_selfservice_flows_verification_enabled',
        :'kratos_selfservice_flows_verification_lifespan' => :'kratos_selfservice_flows_verification_lifespan',
        :'kratos_selfservice_flows_verification_notify_unknown_recipients' => :'kratos_selfservice_flows_verification_notify_unknown_recipients',
        :'kratos_selfservice_flows_verification_ui_url' => :'kratos_selfservice_flows_verification_ui_url',
        :'kratos_selfservice_flows_verification_use' => :'kratos_selfservice_flows_verification_use',
        :'kratos_selfservice_methods_captcha_config_allowed_domains' => :'kratos_selfservice_methods_captcha_config_allowed_domains',
        :'kratos_selfservice_methods_captcha_config_cf_turnstile_secret' => :'kratos_selfservice_methods_captcha_config_cf_turnstile_secret',
        :'kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey' => :'kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey',
        :'kratos_selfservice_methods_captcha_config_legacy_inject_node' => :'kratos_selfservice_methods_captcha_config_legacy_inject_node',
        :'kratos_selfservice_methods_captcha_enabled' => :'kratos_selfservice_methods_captcha_enabled',
        :'kratos_selfservice_methods_code_config_lifespan' => :'kratos_selfservice_methods_code_config_lifespan',
        :'kratos_selfservice_methods_code_config_max_submissions' => :'kratos_selfservice_methods_code_config_max_submissions',
        :'kratos_selfservice_methods_code_config_missing_credential_fallback_enabled' => :'kratos_selfservice_methods_code_config_missing_credential_fallback_enabled',
        :'kratos_selfservice_methods_code_enabled' => :'kratos_selfservice_methods_code_enabled',
        :'kratos_selfservice_methods_code_mfa_enabled' => :'kratos_selfservice_methods_code_mfa_enabled',
        :'kratos_selfservice_methods_code_passwordless_enabled' => :'kratos_selfservice_methods_code_passwordless_enabled',
        :'kratos_selfservice_methods_code_passwordless_login_fallback_enabled' => :'kratos_selfservice_methods_code_passwordless_login_fallback_enabled',
        :'kratos_selfservice_methods_link_config_base_url' => :'kratos_selfservice_methods_link_config_base_url',
        :'kratos_selfservice_methods_link_config_lifespan' => :'kratos_selfservice_methods_link_config_lifespan',
        :'kratos_selfservice_methods_link_enabled' => :'kratos_selfservice_methods_link_enabled',
        :'kratos_selfservice_methods_lookup_secret_enabled' => :'kratos_selfservice_methods_lookup_secret_enabled',
        :'kratos_selfservice_methods_oidc_config_base_redirect_uri' => :'kratos_selfservice_methods_oidc_config_base_redirect_uri',
        :'kratos_selfservice_methods_oidc_config_providers' => :'kratos_selfservice_methods_oidc_config_providers',
        :'kratos_selfservice_methods_oidc_enable_auto_link_policy' => :'kratos_selfservice_methods_oidc_enable_auto_link_policy',
        :'kratos_selfservice_methods_oidc_enabled' => :'kratos_selfservice_methods_oidc_enabled',
        :'kratos_selfservice_methods_passkey_config_rp_display_name' => :'kratos_selfservice_methods_passkey_config_rp_display_name',
        :'kratos_selfservice_methods_passkey_config_rp_id' => :'kratos_selfservice_methods_passkey_config_rp_id',
        :'kratos_selfservice_methods_passkey_config_rp_origins' => :'kratos_selfservice_methods_passkey_config_rp_origins',
        :'kratos_selfservice_methods_passkey_enabled' => :'kratos_selfservice_methods_passkey_enabled',
        :'kratos_selfservice_methods_password_config_haveibeenpwned_enabled' => :'kratos_selfservice_methods_password_config_haveibeenpwned_enabled',
        :'kratos_selfservice_methods_password_config_identifier_similarity_check_enabled' => :'kratos_selfservice_methods_password_config_identifier_similarity_check_enabled',
        :'kratos_selfservice_methods_password_config_ignore_network_errors' => :'kratos_selfservice_methods_password_config_ignore_network_errors',
        :'kratos_selfservice_methods_password_config_max_breaches' => :'kratos_selfservice_methods_password_config_max_breaches',
        :'kratos_selfservice_methods_password_config_min_password_length' => :'kratos_selfservice_methods_password_config_min_password_length',
        :'kratos_selfservice_methods_password_enabled' => :'kratos_selfservice_methods_password_enabled',
        :'kratos_selfservice_methods_profile_enabled' => :'kratos_selfservice_methods_profile_enabled',
        :'kratos_selfservice_methods_saml_config_providers' => :'kratos_selfservice_methods_saml_config_providers',
        :'kratos_selfservice_methods_saml_enabled' => :'kratos_selfservice_methods_saml_enabled',
        :'kratos_selfservice_methods_totp_config_issuer' => :'kratos_selfservice_methods_totp_config_issuer',
        :'kratos_selfservice_methods_totp_enabled' => :'kratos_selfservice_methods_totp_enabled',
        :'kratos_selfservice_methods_webauthn_config_passwordless' => :'kratos_selfservice_methods_webauthn_config_passwordless',
        :'kratos_selfservice_methods_webauthn_config_rp_display_name' => :'kratos_selfservice_methods_webauthn_config_rp_display_name',
        :'kratos_selfservice_methods_webauthn_config_rp_icon' => :'kratos_selfservice_methods_webauthn_config_rp_icon',
        :'kratos_selfservice_methods_webauthn_config_rp_id' => :'kratos_selfservice_methods_webauthn_config_rp_id',
        :'kratos_selfservice_methods_webauthn_config_rp_origins' => :'kratos_selfservice_methods_webauthn_config_rp_origins',
        :'kratos_selfservice_methods_webauthn_enabled' => :'kratos_selfservice_methods_webauthn_enabled',
        :'kratos_session_cookie_persistent' => :'kratos_session_cookie_persistent',
        :'kratos_session_cookie_same_site' => :'kratos_session_cookie_same_site',
        :'kratos_session_lifespan' => :'kratos_session_lifespan',
        :'kratos_session_whoami_required_aal' => :'kratos_session_whoami_required_aal',
        :'kratos_session_whoami_tokenizer_templates' => :'kratos_session_whoami_tokenizer_templates',
        :'name' => :'name',
        :'organizations' => :'organizations',
        :'project_id' => :'project_id',
        :'project_revision_hooks' => :'project_revision_hooks',
        :'scim_clients' => :'scim_clients',
        :'serve_admin_cors_allowed_origins' => :'serve_admin_cors_allowed_origins',
        :'serve_admin_cors_enabled' => :'serve_admin_cors_enabled',
        :'serve_public_cors_allowed_origins' => :'serve_public_cors_allowed_origins',
        :'serve_public_cors_enabled' => :'serve_public_cors_enabled',
        :'strict_security' => :'strict_security',
        :'updated_at' => :'updated_at'
      }
    end

    # Returns attribute mapping this model knows about
    def self.acceptable_attribute_map
      attribute_map
    end

    # Returns all the JSON keys this model knows about
    def self.acceptable_attributes
      acceptable_attribute_map.values
    end

    # Attribute type mapping.
    def self.openapi_types
      {
        :'account_experience_custom_translations' => :'Array<RevisionAccountExperienceCustomTranslation>',
        :'account_experience_default_locale' => :'String',
        :'account_experience_favicon_dark' => :'String',
        :'account_experience_favicon_light' => :'String',
        :'account_experience_locale_behavior' => :'String',
        :'account_experience_logo_dark' => :'String',
        :'account_experience_logo_light' => :'String',
        :'account_experience_theme_variables_dark' => :'String',
        :'account_experience_theme_variables_light' => :'String',
        :'created_at' => :'Time',
        :'disable_account_experience_welcome_screen' => :'Boolean',
        :'enable_ax_v2' => :'Boolean',
        :'hydra_oauth2_allowed_top_level_claims' => :'Array<String>',
        :'hydra_oauth2_client_credentials_default_grant_allowed_scope' => :'Boolean',
        :'hydra_oauth2_exclude_not_before_claim' => :'Boolean',
        :'hydra_oauth2_grant_jwt_iat_optional' => :'Boolean',
        :'hydra_oauth2_grant_jwt_jti_optional' => :'Boolean',
        :'hydra_oauth2_grant_jwt_max_ttl' => :'String',
        :'hydra_oauth2_grant_refresh_token_rotation_grace_period' => :'String',
        :'hydra_oauth2_mirror_top_level_claims' => :'Boolean',
        :'hydra_oauth2_pkce_enforced' => :'Boolean',
        :'hydra_oauth2_pkce_enforced_for_public_clients' => :'Boolean',
        :'hydra_oauth2_refresh_token_hook' => :'String',
        :'hydra_oauth2_token_hook' => :'String',
        :'hydra_oidc_dynamic_client_registration_default_scope' => :'Array<String>',
        :'hydra_oidc_dynamic_client_registration_enabled' => :'Boolean',
        :'hydra_oidc_subject_identifiers_pairwise_salt' => :'String',
        :'hydra_oidc_subject_identifiers_supported_types' => :'Array<String>',
        :'hydra_secrets_cookie' => :'Array<String>',
        :'hydra_secrets_pagination' => :'Array<String>',
        :'hydra_secrets_system' => :'Array<String>',
        :'hydra_serve_cookies_same_site_legacy_workaround' => :'Boolean',
        :'hydra_serve_cookies_same_site_mode' => :'String',
        :'hydra_strategies_access_token' => :'String',
        :'hydra_strategies_jwt_scope_claim' => :'String',
        :'hydra_strategies_scope' => :'String',
        :'hydra_ttl_access_token' => :'String',
        :'hydra_ttl_auth_code' => :'String',
        :'hydra_ttl_id_token' => :'String',
        :'hydra_ttl_login_consent_request' => :'String',
        :'hydra_ttl_refresh_token' => :'String',
        :'hydra_urls_consent' => :'String',
        :'hydra_urls_error' => :'String',
        :'hydra_urls_login' => :'String',
        :'hydra_urls_logout' => :'String',
        :'hydra_urls_post_logout_redirect' => :'String',
        :'hydra_urls_registration' => :'String',
        :'hydra_urls_self_issuer' => :'String',
        :'hydra_webfinger_jwks_broadcast_keys' => :'Array<String>',
        :'hydra_webfinger_oidc_discovery_auth_url' => :'String',
        :'hydra_webfinger_oidc_discovery_client_registration_url' => :'String',
        :'hydra_webfinger_oidc_discovery_jwks_url' => :'String',
        :'hydra_webfinger_oidc_discovery_supported_claims' => :'Array<String>',
        :'hydra_webfinger_oidc_discovery_supported_scope' => :'Array<String>',
        :'hydra_webfinger_oidc_discovery_token_url' => :'String',
        :'hydra_webfinger_oidc_discovery_userinfo_url' => :'String',
        :'id' => :'String',
        :'keto_namespace_configuration' => :'String',
        :'keto_namespaces' => :'Array<KetoNamespace>',
        :'keto_secrets_pagination' => :'Array<String>',
        :'kratos_cookies_same_site' => :'String',
        :'kratos_courier_channels' => :'Array<NormalizedProjectRevisionCourierChannel>',
        :'kratos_courier_delivery_strategy' => :'String',
        :'kratos_courier_http_request_config_auth_api_key_in' => :'String',
        :'kratos_courier_http_request_config_auth_api_key_name' => :'String',
        :'kratos_courier_http_request_config_auth_api_key_value' => :'String',
        :'kratos_courier_http_request_config_auth_basic_auth_password' => :'String',
        :'kratos_courier_http_request_config_auth_basic_auth_user' => :'String',
        :'kratos_courier_http_request_config_auth_type' => :'String',
        :'kratos_courier_http_request_config_body' => :'String',
        :'kratos_courier_http_request_config_headers' => :'Object',
        :'kratos_courier_http_request_config_method' => :'String',
        :'kratos_courier_http_request_config_url' => :'String',
        :'kratos_courier_smtp_connection_uri' => :'String',
        :'kratos_courier_smtp_from_address' => :'String',
        :'kratos_courier_smtp_from_name' => :'String',
        :'kratos_courier_smtp_headers' => :'Object',
        :'kratos_courier_smtp_local_name' => :'String',
        :'kratos_courier_templates_login_code_valid_email_body_html' => :'String',
        :'kratos_courier_templates_login_code_valid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_login_code_valid_email_subject' => :'String',
        :'kratos_courier_templates_login_code_valid_sms_body_plaintext' => :'String',
        :'kratos_courier_templates_recovery_code_invalid_email_body_html' => :'String',
        :'kratos_courier_templates_recovery_code_invalid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_recovery_code_invalid_email_subject' => :'String',
        :'kratos_courier_templates_recovery_code_valid_email_body_html' => :'String',
        :'kratos_courier_templates_recovery_code_valid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_recovery_code_valid_email_subject' => :'String',
        :'kratos_courier_templates_recovery_invalid_email_body_html' => :'String',
        :'kratos_courier_templates_recovery_invalid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_recovery_invalid_email_subject' => :'String',
        :'kratos_courier_templates_recovery_valid_email_body_html' => :'String',
        :'kratos_courier_templates_recovery_valid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_recovery_valid_email_subject' => :'String',
        :'kratos_courier_templates_registration_code_valid_email_body_html' => :'String',
        :'kratos_courier_templates_registration_code_valid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_registration_code_valid_email_subject' => :'String',
        :'kratos_courier_templates_registration_code_valid_sms_body_plaintext' => :'String',
        :'kratos_courier_templates_verification_code_invalid_email_body_html' => :'String',
        :'kratos_courier_templates_verification_code_invalid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_verification_code_invalid_email_subject' => :'String',
        :'kratos_courier_templates_verification_code_valid_email_body_html' => :'String',
        :'kratos_courier_templates_verification_code_valid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_verification_code_valid_email_subject' => :'String',
        :'kratos_courier_templates_verification_code_valid_sms_body_plaintext' => :'String',
        :'kratos_courier_templates_verification_invalid_email_body_html' => :'String',
        :'kratos_courier_templates_verification_invalid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_verification_invalid_email_subject' => :'String',
        :'kratos_courier_templates_verification_valid_email_body_html' => :'String',
        :'kratos_courier_templates_verification_valid_email_body_plaintext' => :'String',
        :'kratos_courier_templates_verification_valid_email_subject' => :'String',
        :'kratos_feature_flags_cacheable_sessions' => :'Boolean',
        :'kratos_feature_flags_cacheable_sessions_max_age' => :'String',
        :'kratos_feature_flags_choose_recovery_address' => :'Boolean',
        :'kratos_feature_flags_faster_session_extend' => :'Boolean',
        :'kratos_feature_flags_legacy_continue_with_verification_ui' => :'Boolean',
        :'kratos_feature_flags_legacy_oidc_registration_node_group' => :'Boolean',
        :'kratos_feature_flags_legacy_require_verified_login_error' => :'Boolean',
        :'kratos_feature_flags_password_profile_registration_node_group' => :'Boolean',
        :'kratos_feature_flags_use_continue_with_transitions' => :'Boolean',
        :'kratos_identity_schemas' => :'Array<NormalizedProjectRevisionIdentitySchema>',
        :'kratos_oauth2_provider_headers' => :'Object',
        :'kratos_oauth2_provider_override_return_to' => :'Boolean',
        :'kratos_oauth2_provider_url' => :'String',
        :'kratos_preview_default_read_consistency_level' => :'String',
        :'kratos_secrets_cipher' => :'Array<String>',
        :'kratos_secrets_cookie' => :'Array<String>',
        :'kratos_secrets_default' => :'Array<String>',
        :'kratos_secrets_pagination' => :'Array<String>',
        :'kratos_security_account_enumeration_mitigate' => :'Boolean',
        :'kratos_selfservice_allowed_return_urls' => :'Array<String>',
        :'kratos_selfservice_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_error_ui_url' => :'String',
        :'kratos_selfservice_flows_login_after_code_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_oidc_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_passkey_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_password_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_totp_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_after_webauthn_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_login_lifespan' => :'String',
        :'kratos_selfservice_flows_login_ui_url' => :'String',
        :'kratos_selfservice_flows_logout_after_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_recovery_after_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_recovery_enabled' => :'Boolean',
        :'kratos_selfservice_flows_recovery_lifespan' => :'String',
        :'kratos_selfservice_flows_recovery_notify_unknown_recipients' => :'Boolean',
        :'kratos_selfservice_flows_recovery_ui_url' => :'String',
        :'kratos_selfservice_flows_recovery_use' => :'String',
        :'kratos_selfservice_flows_registration_after_code_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_registration_after_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_registration_after_oidc_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_registration_after_passkey_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_registration_after_password_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_registration_enable_legacy_one_step' => :'Boolean',
        :'kratos_selfservice_flows_registration_enabled' => :'Boolean',
        :'kratos_selfservice_flows_registration_lifespan' => :'String',
        :'kratos_selfservice_flows_registration_login_hints' => :'Boolean',
        :'kratos_selfservice_flows_registration_ui_url' => :'String',
        :'kratos_selfservice_flows_settings_after_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_oidc_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_passkey_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_password_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_profile_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_totp_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_settings_lifespan' => :'String',
        :'kratos_selfservice_flows_settings_privileged_session_max_age' => :'String',
        :'kratos_selfservice_flows_settings_required_aal' => :'String',
        :'kratos_selfservice_flows_settings_ui_url' => :'String',
        :'kratos_selfservice_flows_verification_after_default_browser_return_url' => :'String',
        :'kratos_selfservice_flows_verification_enabled' => :'Boolean',
        :'kratos_selfservice_flows_verification_lifespan' => :'String',
        :'kratos_selfservice_flows_verification_notify_unknown_recipients' => :'Boolean',
        :'kratos_selfservice_flows_verification_ui_url' => :'String',
        :'kratos_selfservice_flows_verification_use' => :'String',
        :'kratos_selfservice_methods_captcha_config_allowed_domains' => :'Array<String>',
        :'kratos_selfservice_methods_captcha_config_cf_turnstile_secret' => :'String',
        :'kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey' => :'String',
        :'kratos_selfservice_methods_captcha_config_legacy_inject_node' => :'Boolean',
        :'kratos_selfservice_methods_captcha_enabled' => :'Boolean',
        :'kratos_selfservice_methods_code_config_lifespan' => :'String',
        :'kratos_selfservice_methods_code_config_max_submissions' => :'Integer',
        :'kratos_selfservice_methods_code_config_missing_credential_fallback_enabled' => :'Boolean',
        :'kratos_selfservice_methods_code_enabled' => :'Boolean',
        :'kratos_selfservice_methods_code_mfa_enabled' => :'Boolean',
        :'kratos_selfservice_methods_code_passwordless_enabled' => :'Boolean',
        :'kratos_selfservice_methods_code_passwordless_login_fallback_enabled' => :'Boolean',
        :'kratos_selfservice_methods_link_config_base_url' => :'String',
        :'kratos_selfservice_methods_link_config_lifespan' => :'String',
        :'kratos_selfservice_methods_link_enabled' => :'Boolean',
        :'kratos_selfservice_methods_lookup_secret_enabled' => :'Boolean',
        :'kratos_selfservice_methods_oidc_config_base_redirect_uri' => :'String',
        :'kratos_selfservice_methods_oidc_config_providers' => :'Array<NormalizedProjectRevisionThirdPartyProvider>',
        :'kratos_selfservice_methods_oidc_enable_auto_link_policy' => :'Boolean',
        :'kratos_selfservice_methods_oidc_enabled' => :'Boolean',
        :'kratos_selfservice_methods_passkey_config_rp_display_name' => :'String',
        :'kratos_selfservice_methods_passkey_config_rp_id' => :'String',
        :'kratos_selfservice_methods_passkey_config_rp_origins' => :'Array<String>',
        :'kratos_selfservice_methods_passkey_enabled' => :'Boolean',
        :'kratos_selfservice_methods_password_config_haveibeenpwned_enabled' => :'Boolean',
        :'kratos_selfservice_methods_password_config_identifier_similarity_check_enabled' => :'Boolean',
        :'kratos_selfservice_methods_password_config_ignore_network_errors' => :'Boolean',
        :'kratos_selfservice_methods_password_config_max_breaches' => :'Integer',
        :'kratos_selfservice_methods_password_config_min_password_length' => :'Integer',
        :'kratos_selfservice_methods_password_enabled' => :'Boolean',
        :'kratos_selfservice_methods_profile_enabled' => :'Boolean',
        :'kratos_selfservice_methods_saml_config_providers' => :'Array<NormalizedProjectRevisionSAMLProvider>',
        :'kratos_selfservice_methods_saml_enabled' => :'Boolean',
        :'kratos_selfservice_methods_totp_config_issuer' => :'String',
        :'kratos_selfservice_methods_totp_enabled' => :'Boolean',
        :'kratos_selfservice_methods_webauthn_config_passwordless' => :'Boolean',
        :'kratos_selfservice_methods_webauthn_config_rp_display_name' => :'String',
        :'kratos_selfservice_methods_webauthn_config_rp_icon' => :'String',
        :'kratos_selfservice_methods_webauthn_config_rp_id' => :'String',
        :'kratos_selfservice_methods_webauthn_config_rp_origins' => :'Array<String>',
        :'kratos_selfservice_methods_webauthn_enabled' => :'Boolean',
        :'kratos_session_cookie_persistent' => :'Boolean',
        :'kratos_session_cookie_same_site' => :'String',
        :'kratos_session_lifespan' => :'String',
        :'kratos_session_whoami_required_aal' => :'String',
        :'kratos_session_whoami_tokenizer_templates' => :'Array<NormalizedProjectRevisionTokenizerTemplate>',
        :'name' => :'String',
        :'organizations' => :'Array<Organization>',
        :'project_id' => :'String',
        :'project_revision_hooks' => :'Array<NormalizedProjectRevisionHook>',
        :'scim_clients' => :'Array<NormalizedProjectRevisionScimClient>',
        :'serve_admin_cors_allowed_origins' => :'Array<String>',
        :'serve_admin_cors_enabled' => :'Boolean',
        :'serve_public_cors_allowed_origins' => :'Array<String>',
        :'serve_public_cors_enabled' => :'Boolean',
        :'strict_security' => :'Boolean',
        :'updated_at' => :'Time'
      }
    end

    # List of attributes with nullable: true
    def self.openapi_nullable
      Set.new([
        :'kratos_courier_http_request_config_headers',
        :'kratos_courier_smtp_headers',
        :'kratos_oauth2_provider_headers',
        :'kratos_selfservice_methods_code_config_max_submissions',
      ])
    end

    # Initializes the object
    # @param [Hash] attributes Model attributes in the form of hash
    def initialize(attributes = {})
      if (!attributes.is_a?(Hash))
        fail ArgumentError, "The input argument (attributes) must be a hash in `OryClient::NormalizedProjectRevision` initialize method"
      end

      # check to see if the attribute exists and convert string to symbol for hash key
      acceptable_attribute_map = self.class.acceptable_attribute_map
      attributes = attributes.each_with_object({}) { |(k, v), h|
        if (!acceptable_attribute_map.key?(k.to_sym))
          fail ArgumentError, "`#{k}` is not a valid attribute in `OryClient::NormalizedProjectRevision`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
        end
        h[k.to_sym] = v
      }

      if attributes.key?(:'account_experience_custom_translations')
        if (value = attributes[:'account_experience_custom_translations']).is_a?(Array)
          self.account_experience_custom_translations = value
        end
      end

      if attributes.key?(:'account_experience_default_locale')
        self.account_experience_default_locale = attributes[:'account_experience_default_locale']
      end

      if attributes.key?(:'account_experience_favicon_dark')
        self.account_experience_favicon_dark = attributes[:'account_experience_favicon_dark']
      end

      if attributes.key?(:'account_experience_favicon_light')
        self.account_experience_favicon_light = attributes[:'account_experience_favicon_light']
      end

      if attributes.key?(:'account_experience_locale_behavior')
        self.account_experience_locale_behavior = attributes[:'account_experience_locale_behavior']
      end

      if attributes.key?(:'account_experience_logo_dark')
        self.account_experience_logo_dark = attributes[:'account_experience_logo_dark']
      end

      if attributes.key?(:'account_experience_logo_light')
        self.account_experience_logo_light = attributes[:'account_experience_logo_light']
      end

      if attributes.key?(:'account_experience_theme_variables_dark')
        self.account_experience_theme_variables_dark = attributes[:'account_experience_theme_variables_dark']
      end

      if attributes.key?(:'account_experience_theme_variables_light')
        self.account_experience_theme_variables_light = attributes[:'account_experience_theme_variables_light']
      end

      if attributes.key?(:'created_at')
        self.created_at = attributes[:'created_at']
      end

      if attributes.key?(:'disable_account_experience_welcome_screen')
        self.disable_account_experience_welcome_screen = attributes[:'disable_account_experience_welcome_screen']
      end

      if attributes.key?(:'enable_ax_v2')
        self.enable_ax_v2 = attributes[:'enable_ax_v2']
      end

      if attributes.key?(:'hydra_oauth2_allowed_top_level_claims')
        if (value = attributes[:'hydra_oauth2_allowed_top_level_claims']).is_a?(Array)
          self.hydra_oauth2_allowed_top_level_claims = value
        end
      end

      if attributes.key?(:'hydra_oauth2_client_credentials_default_grant_allowed_scope')
        self.hydra_oauth2_client_credentials_default_grant_allowed_scope = attributes[:'hydra_oauth2_client_credentials_default_grant_allowed_scope']
      end

      if attributes.key?(:'hydra_oauth2_exclude_not_before_claim')
        self.hydra_oauth2_exclude_not_before_claim = attributes[:'hydra_oauth2_exclude_not_before_claim']
      end

      if attributes.key?(:'hydra_oauth2_grant_jwt_iat_optional')
        self.hydra_oauth2_grant_jwt_iat_optional = attributes[:'hydra_oauth2_grant_jwt_iat_optional']
      end

      if attributes.key?(:'hydra_oauth2_grant_jwt_jti_optional')
        self.hydra_oauth2_grant_jwt_jti_optional = attributes[:'hydra_oauth2_grant_jwt_jti_optional']
      end

      if attributes.key?(:'hydra_oauth2_grant_jwt_max_ttl')
        self.hydra_oauth2_grant_jwt_max_ttl = attributes[:'hydra_oauth2_grant_jwt_max_ttl']
      else
        self.hydra_oauth2_grant_jwt_max_ttl = '720h'
      end

      if attributes.key?(:'hydra_oauth2_grant_refresh_token_rotation_grace_period')
        self.hydra_oauth2_grant_refresh_token_rotation_grace_period = attributes[:'hydra_oauth2_grant_refresh_token_rotation_grace_period']
      end

      if attributes.key?(:'hydra_oauth2_mirror_top_level_claims')
        self.hydra_oauth2_mirror_top_level_claims = attributes[:'hydra_oauth2_mirror_top_level_claims']
      end

      if attributes.key?(:'hydra_oauth2_pkce_enforced')
        self.hydra_oauth2_pkce_enforced = attributes[:'hydra_oauth2_pkce_enforced']
      end

      if attributes.key?(:'hydra_oauth2_pkce_enforced_for_public_clients')
        self.hydra_oauth2_pkce_enforced_for_public_clients = attributes[:'hydra_oauth2_pkce_enforced_for_public_clients']
      end

      if attributes.key?(:'hydra_oauth2_refresh_token_hook')
        self.hydra_oauth2_refresh_token_hook = attributes[:'hydra_oauth2_refresh_token_hook']
      end

      if attributes.key?(:'hydra_oauth2_token_hook')
        self.hydra_oauth2_token_hook = attributes[:'hydra_oauth2_token_hook']
      end

      if attributes.key?(:'hydra_oidc_dynamic_client_registration_default_scope')
        if (value = attributes[:'hydra_oidc_dynamic_client_registration_default_scope']).is_a?(Array)
          self.hydra_oidc_dynamic_client_registration_default_scope = value
        end
      end

      if attributes.key?(:'hydra_oidc_dynamic_client_registration_enabled')
        self.hydra_oidc_dynamic_client_registration_enabled = attributes[:'hydra_oidc_dynamic_client_registration_enabled']
      end

      if attributes.key?(:'hydra_oidc_subject_identifiers_pairwise_salt')
        self.hydra_oidc_subject_identifiers_pairwise_salt = attributes[:'hydra_oidc_subject_identifiers_pairwise_salt']
      end

      if attributes.key?(:'hydra_oidc_subject_identifiers_supported_types')
        if (value = attributes[:'hydra_oidc_subject_identifiers_supported_types']).is_a?(Array)
          self.hydra_oidc_subject_identifiers_supported_types = value
        end
      end

      if attributes.key?(:'hydra_secrets_cookie')
        if (value = attributes[:'hydra_secrets_cookie']).is_a?(Array)
          self.hydra_secrets_cookie = value
        end
      end

      if attributes.key?(:'hydra_secrets_pagination')
        if (value = attributes[:'hydra_secrets_pagination']).is_a?(Array)
          self.hydra_secrets_pagination = value
        end
      end

      if attributes.key?(:'hydra_secrets_system')
        if (value = attributes[:'hydra_secrets_system']).is_a?(Array)
          self.hydra_secrets_system = value
        end
      end

      if attributes.key?(:'hydra_serve_cookies_same_site_legacy_workaround')
        self.hydra_serve_cookies_same_site_legacy_workaround = attributes[:'hydra_serve_cookies_same_site_legacy_workaround']
      end

      if attributes.key?(:'hydra_serve_cookies_same_site_mode')
        self.hydra_serve_cookies_same_site_mode = attributes[:'hydra_serve_cookies_same_site_mode']
      end

      if attributes.key?(:'hydra_strategies_access_token')
        self.hydra_strategies_access_token = attributes[:'hydra_strategies_access_token']
      else
        self.hydra_strategies_access_token = 'opaque'
      end

      if attributes.key?(:'hydra_strategies_jwt_scope_claim')
        self.hydra_strategies_jwt_scope_claim = attributes[:'hydra_strategies_jwt_scope_claim']
      else
        self.hydra_strategies_jwt_scope_claim = 'list'
      end

      if attributes.key?(:'hydra_strategies_scope')
        self.hydra_strategies_scope = attributes[:'hydra_strategies_scope']
      else
        self.hydra_strategies_scope = 'wildcard'
      end

      if attributes.key?(:'hydra_ttl_access_token')
        self.hydra_ttl_access_token = attributes[:'hydra_ttl_access_token']
      else
        self.hydra_ttl_access_token = '30m'
      end

      if attributes.key?(:'hydra_ttl_auth_code')
        self.hydra_ttl_auth_code = attributes[:'hydra_ttl_auth_code']
      else
        self.hydra_ttl_auth_code = '720h'
      end

      if attributes.key?(:'hydra_ttl_id_token')
        self.hydra_ttl_id_token = attributes[:'hydra_ttl_id_token']
      else
        self.hydra_ttl_id_token = '30m'
      end

      if attributes.key?(:'hydra_ttl_login_consent_request')
        self.hydra_ttl_login_consent_request = attributes[:'hydra_ttl_login_consent_request']
      else
        self.hydra_ttl_login_consent_request = '30m'
      end

      if attributes.key?(:'hydra_ttl_refresh_token')
        self.hydra_ttl_refresh_token = attributes[:'hydra_ttl_refresh_token']
      else
        self.hydra_ttl_refresh_token = '720h'
      end

      if attributes.key?(:'hydra_urls_consent')
        self.hydra_urls_consent = attributes[:'hydra_urls_consent']
      end

      if attributes.key?(:'hydra_urls_error')
        self.hydra_urls_error = attributes[:'hydra_urls_error']
      end

      if attributes.key?(:'hydra_urls_login')
        self.hydra_urls_login = attributes[:'hydra_urls_login']
      end

      if attributes.key?(:'hydra_urls_logout')
        self.hydra_urls_logout = attributes[:'hydra_urls_logout']
      end

      if attributes.key?(:'hydra_urls_post_logout_redirect')
        self.hydra_urls_post_logout_redirect = attributes[:'hydra_urls_post_logout_redirect']
      end

      if attributes.key?(:'hydra_urls_registration')
        self.hydra_urls_registration = attributes[:'hydra_urls_registration']
      end

      if attributes.key?(:'hydra_urls_self_issuer')
        self.hydra_urls_self_issuer = attributes[:'hydra_urls_self_issuer']
      end

      if attributes.key?(:'hydra_webfinger_jwks_broadcast_keys')
        if (value = attributes[:'hydra_webfinger_jwks_broadcast_keys']).is_a?(Array)
          self.hydra_webfinger_jwks_broadcast_keys = value
        end
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_auth_url')
        self.hydra_webfinger_oidc_discovery_auth_url = attributes[:'hydra_webfinger_oidc_discovery_auth_url']
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_client_registration_url')
        self.hydra_webfinger_oidc_discovery_client_registration_url = attributes[:'hydra_webfinger_oidc_discovery_client_registration_url']
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_jwks_url')
        self.hydra_webfinger_oidc_discovery_jwks_url = attributes[:'hydra_webfinger_oidc_discovery_jwks_url']
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_supported_claims')
        if (value = attributes[:'hydra_webfinger_oidc_discovery_supported_claims']).is_a?(Array)
          self.hydra_webfinger_oidc_discovery_supported_claims = value
        end
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_supported_scope')
        if (value = attributes[:'hydra_webfinger_oidc_discovery_supported_scope']).is_a?(Array)
          self.hydra_webfinger_oidc_discovery_supported_scope = value
        end
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_token_url')
        self.hydra_webfinger_oidc_discovery_token_url = attributes[:'hydra_webfinger_oidc_discovery_token_url']
      end

      if attributes.key?(:'hydra_webfinger_oidc_discovery_userinfo_url')
        self.hydra_webfinger_oidc_discovery_userinfo_url = attributes[:'hydra_webfinger_oidc_discovery_userinfo_url']
      end

      if attributes.key?(:'id')
        self.id = attributes[:'id']
      end

      if attributes.key?(:'keto_namespace_configuration')
        self.keto_namespace_configuration = attributes[:'keto_namespace_configuration']
      end

      if attributes.key?(:'keto_namespaces')
        if (value = attributes[:'keto_namespaces']).is_a?(Array)
          self.keto_namespaces = value
        end
      end

      if attributes.key?(:'keto_secrets_pagination')
        if (value = attributes[:'keto_secrets_pagination']).is_a?(Array)
          self.keto_secrets_pagination = value
        end
      end

      if attributes.key?(:'kratos_cookies_same_site')
        self.kratos_cookies_same_site = attributes[:'kratos_cookies_same_site']
      end

      if attributes.key?(:'kratos_courier_channels')
        if (value = attributes[:'kratos_courier_channels']).is_a?(Array)
          self.kratos_courier_channels = value
        end
      end

      if attributes.key?(:'kratos_courier_delivery_strategy')
        self.kratos_courier_delivery_strategy = attributes[:'kratos_courier_delivery_strategy']
      else
        self.kratos_courier_delivery_strategy = 'smtp'
      end

      if attributes.key?(:'kratos_courier_http_request_config_auth_api_key_in')
        self.kratos_courier_http_request_config_auth_api_key_in = attributes[:'kratos_courier_http_request_config_auth_api_key_in']
      end

      if attributes.key?(:'kratos_courier_http_request_config_auth_api_key_name')
        self.kratos_courier_http_request_config_auth_api_key_name = attributes[:'kratos_courier_http_request_config_auth_api_key_name']
      end

      if attributes.key?(:'kratos_courier_http_request_config_auth_api_key_value')
        self.kratos_courier_http_request_config_auth_api_key_value = attributes[:'kratos_courier_http_request_config_auth_api_key_value']
      end

      if attributes.key?(:'kratos_courier_http_request_config_auth_basic_auth_password')
        self.kratos_courier_http_request_config_auth_basic_auth_password = attributes[:'kratos_courier_http_request_config_auth_basic_auth_password']
      end

      if attributes.key?(:'kratos_courier_http_request_config_auth_basic_auth_user')
        self.kratos_courier_http_request_config_auth_basic_auth_user = attributes[:'kratos_courier_http_request_config_auth_basic_auth_user']
      end

      if attributes.key?(:'kratos_courier_http_request_config_auth_type')
        self.kratos_courier_http_request_config_auth_type = attributes[:'kratos_courier_http_request_config_auth_type']
      else
        self.kratos_courier_http_request_config_auth_type = 'empty (no authentication)'
      end

      if attributes.key?(:'kratos_courier_http_request_config_body')
        self.kratos_courier_http_request_config_body = attributes[:'kratos_courier_http_request_config_body']
      end

      if attributes.key?(:'kratos_courier_http_request_config_headers')
        self.kratos_courier_http_request_config_headers = attributes[:'kratos_courier_http_request_config_headers']
      end

      if attributes.key?(:'kratos_courier_http_request_config_method')
        self.kratos_courier_http_request_config_method = attributes[:'kratos_courier_http_request_config_method']
      else
        self.kratos_courier_http_request_config_method = 'POST'
      end

      if attributes.key?(:'kratos_courier_http_request_config_url')
        self.kratos_courier_http_request_config_url = attributes[:'kratos_courier_http_request_config_url']
      end

      if attributes.key?(:'kratos_courier_smtp_connection_uri')
        self.kratos_courier_smtp_connection_uri = attributes[:'kratos_courier_smtp_connection_uri']
      end

      if attributes.key?(:'kratos_courier_smtp_from_address')
        self.kratos_courier_smtp_from_address = attributes[:'kratos_courier_smtp_from_address']
      end

      if attributes.key?(:'kratos_courier_smtp_from_name')
        self.kratos_courier_smtp_from_name = attributes[:'kratos_courier_smtp_from_name']
      end

      if attributes.key?(:'kratos_courier_smtp_headers')
        self.kratos_courier_smtp_headers = attributes[:'kratos_courier_smtp_headers']
      end

      if attributes.key?(:'kratos_courier_smtp_local_name')
        self.kratos_courier_smtp_local_name = attributes[:'kratos_courier_smtp_local_name']
      end

      if attributes.key?(:'kratos_courier_templates_login_code_valid_email_body_html')
        self.kratos_courier_templates_login_code_valid_email_body_html = attributes[:'kratos_courier_templates_login_code_valid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_login_code_valid_email_body_plaintext')
        self.kratos_courier_templates_login_code_valid_email_body_plaintext = attributes[:'kratos_courier_templates_login_code_valid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_login_code_valid_email_subject')
        self.kratos_courier_templates_login_code_valid_email_subject = attributes[:'kratos_courier_templates_login_code_valid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_login_code_valid_sms_body_plaintext')
        self.kratos_courier_templates_login_code_valid_sms_body_plaintext = attributes[:'kratos_courier_templates_login_code_valid_sms_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_code_invalid_email_body_html')
        self.kratos_courier_templates_recovery_code_invalid_email_body_html = attributes[:'kratos_courier_templates_recovery_code_invalid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_code_invalid_email_body_plaintext')
        self.kratos_courier_templates_recovery_code_invalid_email_body_plaintext = attributes[:'kratos_courier_templates_recovery_code_invalid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_code_invalid_email_subject')
        self.kratos_courier_templates_recovery_code_invalid_email_subject = attributes[:'kratos_courier_templates_recovery_code_invalid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_code_valid_email_body_html')
        self.kratos_courier_templates_recovery_code_valid_email_body_html = attributes[:'kratos_courier_templates_recovery_code_valid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_code_valid_email_body_plaintext')
        self.kratos_courier_templates_recovery_code_valid_email_body_plaintext = attributes[:'kratos_courier_templates_recovery_code_valid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_code_valid_email_subject')
        self.kratos_courier_templates_recovery_code_valid_email_subject = attributes[:'kratos_courier_templates_recovery_code_valid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_invalid_email_body_html')
        self.kratos_courier_templates_recovery_invalid_email_body_html = attributes[:'kratos_courier_templates_recovery_invalid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_invalid_email_body_plaintext')
        self.kratos_courier_templates_recovery_invalid_email_body_plaintext = attributes[:'kratos_courier_templates_recovery_invalid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_invalid_email_subject')
        self.kratos_courier_templates_recovery_invalid_email_subject = attributes[:'kratos_courier_templates_recovery_invalid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_valid_email_body_html')
        self.kratos_courier_templates_recovery_valid_email_body_html = attributes[:'kratos_courier_templates_recovery_valid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_valid_email_body_plaintext')
        self.kratos_courier_templates_recovery_valid_email_body_plaintext = attributes[:'kratos_courier_templates_recovery_valid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_recovery_valid_email_subject')
        self.kratos_courier_templates_recovery_valid_email_subject = attributes[:'kratos_courier_templates_recovery_valid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_registration_code_valid_email_body_html')
        self.kratos_courier_templates_registration_code_valid_email_body_html = attributes[:'kratos_courier_templates_registration_code_valid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_registration_code_valid_email_body_plaintext')
        self.kratos_courier_templates_registration_code_valid_email_body_plaintext = attributes[:'kratos_courier_templates_registration_code_valid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_registration_code_valid_email_subject')
        self.kratos_courier_templates_registration_code_valid_email_subject = attributes[:'kratos_courier_templates_registration_code_valid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_registration_code_valid_sms_body_plaintext')
        self.kratos_courier_templates_registration_code_valid_sms_body_plaintext = attributes[:'kratos_courier_templates_registration_code_valid_sms_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_invalid_email_body_html')
        self.kratos_courier_templates_verification_code_invalid_email_body_html = attributes[:'kratos_courier_templates_verification_code_invalid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_invalid_email_body_plaintext')
        self.kratos_courier_templates_verification_code_invalid_email_body_plaintext = attributes[:'kratos_courier_templates_verification_code_invalid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_invalid_email_subject')
        self.kratos_courier_templates_verification_code_invalid_email_subject = attributes[:'kratos_courier_templates_verification_code_invalid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_valid_email_body_html')
        self.kratos_courier_templates_verification_code_valid_email_body_html = attributes[:'kratos_courier_templates_verification_code_valid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_valid_email_body_plaintext')
        self.kratos_courier_templates_verification_code_valid_email_body_plaintext = attributes[:'kratos_courier_templates_verification_code_valid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_valid_email_subject')
        self.kratos_courier_templates_verification_code_valid_email_subject = attributes[:'kratos_courier_templates_verification_code_valid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_verification_code_valid_sms_body_plaintext')
        self.kratos_courier_templates_verification_code_valid_sms_body_plaintext = attributes[:'kratos_courier_templates_verification_code_valid_sms_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_verification_invalid_email_body_html')
        self.kratos_courier_templates_verification_invalid_email_body_html = attributes[:'kratos_courier_templates_verification_invalid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_verification_invalid_email_body_plaintext')
        self.kratos_courier_templates_verification_invalid_email_body_plaintext = attributes[:'kratos_courier_templates_verification_invalid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_verification_invalid_email_subject')
        self.kratos_courier_templates_verification_invalid_email_subject = attributes[:'kratos_courier_templates_verification_invalid_email_subject']
      end

      if attributes.key?(:'kratos_courier_templates_verification_valid_email_body_html')
        self.kratos_courier_templates_verification_valid_email_body_html = attributes[:'kratos_courier_templates_verification_valid_email_body_html']
      end

      if attributes.key?(:'kratos_courier_templates_verification_valid_email_body_plaintext')
        self.kratos_courier_templates_verification_valid_email_body_plaintext = attributes[:'kratos_courier_templates_verification_valid_email_body_plaintext']
      end

      if attributes.key?(:'kratos_courier_templates_verification_valid_email_subject')
        self.kratos_courier_templates_verification_valid_email_subject = attributes[:'kratos_courier_templates_verification_valid_email_subject']
      end

      if attributes.key?(:'kratos_feature_flags_cacheable_sessions')
        self.kratos_feature_flags_cacheable_sessions = attributes[:'kratos_feature_flags_cacheable_sessions']
      end

      if attributes.key?(:'kratos_feature_flags_cacheable_sessions_max_age')
        self.kratos_feature_flags_cacheable_sessions_max_age = attributes[:'kratos_feature_flags_cacheable_sessions_max_age']
      end

      if attributes.key?(:'kratos_feature_flags_choose_recovery_address')
        self.kratos_feature_flags_choose_recovery_address = attributes[:'kratos_feature_flags_choose_recovery_address']
      end

      if attributes.key?(:'kratos_feature_flags_faster_session_extend')
        self.kratos_feature_flags_faster_session_extend = attributes[:'kratos_feature_flags_faster_session_extend']
      end

      if attributes.key?(:'kratos_feature_flags_legacy_continue_with_verification_ui')
        self.kratos_feature_flags_legacy_continue_with_verification_ui = attributes[:'kratos_feature_flags_legacy_continue_with_verification_ui']
      end

      if attributes.key?(:'kratos_feature_flags_legacy_oidc_registration_node_group')
        self.kratos_feature_flags_legacy_oidc_registration_node_group = attributes[:'kratos_feature_flags_legacy_oidc_registration_node_group']
      end

      if attributes.key?(:'kratos_feature_flags_legacy_require_verified_login_error')
        self.kratos_feature_flags_legacy_require_verified_login_error = attributes[:'kratos_feature_flags_legacy_require_verified_login_error']
      end

      if attributes.key?(:'kratos_feature_flags_password_profile_registration_node_group')
        self.kratos_feature_flags_password_profile_registration_node_group = attributes[:'kratos_feature_flags_password_profile_registration_node_group']
      end

      if attributes.key?(:'kratos_feature_flags_use_continue_with_transitions')
        self.kratos_feature_flags_use_continue_with_transitions = attributes[:'kratos_feature_flags_use_continue_with_transitions']
      end

      if attributes.key?(:'kratos_identity_schemas')
        if (value = attributes[:'kratos_identity_schemas']).is_a?(Array)
          self.kratos_identity_schemas = value
        end
      end

      if attributes.key?(:'kratos_oauth2_provider_headers')
        self.kratos_oauth2_provider_headers = attributes[:'kratos_oauth2_provider_headers']
      end

      if attributes.key?(:'kratos_oauth2_provider_override_return_to')
        self.kratos_oauth2_provider_override_return_to = attributes[:'kratos_oauth2_provider_override_return_to']
      end

      if attributes.key?(:'kratos_oauth2_provider_url')
        self.kratos_oauth2_provider_url = attributes[:'kratos_oauth2_provider_url']
      end

      if attributes.key?(:'kratos_preview_default_read_consistency_level')
        self.kratos_preview_default_read_consistency_level = attributes[:'kratos_preview_default_read_consistency_level']
      end

      if attributes.key?(:'kratos_secrets_cipher')
        if (value = attributes[:'kratos_secrets_cipher']).is_a?(Array)
          self.kratos_secrets_cipher = value
        end
      end

      if attributes.key?(:'kratos_secrets_cookie')
        if (value = attributes[:'kratos_secrets_cookie']).is_a?(Array)
          self.kratos_secrets_cookie = value
        end
      end

      if attributes.key?(:'kratos_secrets_default')
        if (value = attributes[:'kratos_secrets_default']).is_a?(Array)
          self.kratos_secrets_default = value
        end
      end

      if attributes.key?(:'kratos_secrets_pagination')
        if (value = attributes[:'kratos_secrets_pagination']).is_a?(Array)
          self.kratos_secrets_pagination = value
        end
      end

      if attributes.key?(:'kratos_security_account_enumeration_mitigate')
        self.kratos_security_account_enumeration_mitigate = attributes[:'kratos_security_account_enumeration_mitigate']
      end

      if attributes.key?(:'kratos_selfservice_allowed_return_urls')
        if (value = attributes[:'kratos_selfservice_allowed_return_urls']).is_a?(Array)
          self.kratos_selfservice_allowed_return_urls = value
        end
      end

      if attributes.key?(:'kratos_selfservice_default_browser_return_url')
        self.kratos_selfservice_default_browser_return_url = attributes[:'kratos_selfservice_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_error_ui_url')
        self.kratos_selfservice_flows_error_ui_url = attributes[:'kratos_selfservice_flows_error_ui_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_code_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_code_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_code_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_oidc_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_oidc_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_oidc_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_passkey_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_passkey_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_passkey_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_password_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_password_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_password_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_totp_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_totp_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_totp_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_after_webauthn_default_browser_return_url')
        self.kratos_selfservice_flows_login_after_webauthn_default_browser_return_url = attributes[:'kratos_selfservice_flows_login_after_webauthn_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_lifespan')
        self.kratos_selfservice_flows_login_lifespan = attributes[:'kratos_selfservice_flows_login_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_flows_login_ui_url')
        self.kratos_selfservice_flows_login_ui_url = attributes[:'kratos_selfservice_flows_login_ui_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_logout_after_default_browser_return_url')
        self.kratos_selfservice_flows_logout_after_default_browser_return_url = attributes[:'kratos_selfservice_flows_logout_after_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_recovery_after_default_browser_return_url')
        self.kratos_selfservice_flows_recovery_after_default_browser_return_url = attributes[:'kratos_selfservice_flows_recovery_after_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_recovery_enabled')
        self.kratos_selfservice_flows_recovery_enabled = attributes[:'kratos_selfservice_flows_recovery_enabled']
      end

      if attributes.key?(:'kratos_selfservice_flows_recovery_lifespan')
        self.kratos_selfservice_flows_recovery_lifespan = attributes[:'kratos_selfservice_flows_recovery_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_flows_recovery_notify_unknown_recipients')
        self.kratos_selfservice_flows_recovery_notify_unknown_recipients = attributes[:'kratos_selfservice_flows_recovery_notify_unknown_recipients']
      end

      if attributes.key?(:'kratos_selfservice_flows_recovery_ui_url')
        self.kratos_selfservice_flows_recovery_ui_url = attributes[:'kratos_selfservice_flows_recovery_ui_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_recovery_use')
        self.kratos_selfservice_flows_recovery_use = attributes[:'kratos_selfservice_flows_recovery_use']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_after_code_default_browser_return_url')
        self.kratos_selfservice_flows_registration_after_code_default_browser_return_url = attributes[:'kratos_selfservice_flows_registration_after_code_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_after_default_browser_return_url')
        self.kratos_selfservice_flows_registration_after_default_browser_return_url = attributes[:'kratos_selfservice_flows_registration_after_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_after_oidc_default_browser_return_url')
        self.kratos_selfservice_flows_registration_after_oidc_default_browser_return_url = attributes[:'kratos_selfservice_flows_registration_after_oidc_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_after_passkey_default_browser_return_url')
        self.kratos_selfservice_flows_registration_after_passkey_default_browser_return_url = attributes[:'kratos_selfservice_flows_registration_after_passkey_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_after_password_default_browser_return_url')
        self.kratos_selfservice_flows_registration_after_password_default_browser_return_url = attributes[:'kratos_selfservice_flows_registration_after_password_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url')
        self.kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url = attributes[:'kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_enable_legacy_one_step')
        self.kratos_selfservice_flows_registration_enable_legacy_one_step = attributes[:'kratos_selfservice_flows_registration_enable_legacy_one_step']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_enabled')
        self.kratos_selfservice_flows_registration_enabled = attributes[:'kratos_selfservice_flows_registration_enabled']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_lifespan')
        self.kratos_selfservice_flows_registration_lifespan = attributes[:'kratos_selfservice_flows_registration_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_login_hints')
        self.kratos_selfservice_flows_registration_login_hints = attributes[:'kratos_selfservice_flows_registration_login_hints']
      end

      if attributes.key?(:'kratos_selfservice_flows_registration_ui_url')
        self.kratos_selfservice_flows_registration_ui_url = attributes[:'kratos_selfservice_flows_registration_ui_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_oidc_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_oidc_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_oidc_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_passkey_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_passkey_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_passkey_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_password_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_password_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_password_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_profile_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_profile_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_profile_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_totp_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_totp_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_totp_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url')
        self.kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url = attributes[:'kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_lifespan')
        self.kratos_selfservice_flows_settings_lifespan = attributes[:'kratos_selfservice_flows_settings_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_privileged_session_max_age')
        self.kratos_selfservice_flows_settings_privileged_session_max_age = attributes[:'kratos_selfservice_flows_settings_privileged_session_max_age']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_required_aal')
        self.kratos_selfservice_flows_settings_required_aal = attributes[:'kratos_selfservice_flows_settings_required_aal']
      end

      if attributes.key?(:'kratos_selfservice_flows_settings_ui_url')
        self.kratos_selfservice_flows_settings_ui_url = attributes[:'kratos_selfservice_flows_settings_ui_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_verification_after_default_browser_return_url')
        self.kratos_selfservice_flows_verification_after_default_browser_return_url = attributes[:'kratos_selfservice_flows_verification_after_default_browser_return_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_verification_enabled')
        self.kratos_selfservice_flows_verification_enabled = attributes[:'kratos_selfservice_flows_verification_enabled']
      end

      if attributes.key?(:'kratos_selfservice_flows_verification_lifespan')
        self.kratos_selfservice_flows_verification_lifespan = attributes[:'kratos_selfservice_flows_verification_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_flows_verification_notify_unknown_recipients')
        self.kratos_selfservice_flows_verification_notify_unknown_recipients = attributes[:'kratos_selfservice_flows_verification_notify_unknown_recipients']
      end

      if attributes.key?(:'kratos_selfservice_flows_verification_ui_url')
        self.kratos_selfservice_flows_verification_ui_url = attributes[:'kratos_selfservice_flows_verification_ui_url']
      end

      if attributes.key?(:'kratos_selfservice_flows_verification_use')
        self.kratos_selfservice_flows_verification_use = attributes[:'kratos_selfservice_flows_verification_use']
      end

      if attributes.key?(:'kratos_selfservice_methods_captcha_config_allowed_domains')
        if (value = attributes[:'kratos_selfservice_methods_captcha_config_allowed_domains']).is_a?(Array)
          self.kratos_selfservice_methods_captcha_config_allowed_domains = value
        end
      end

      if attributes.key?(:'kratos_selfservice_methods_captcha_config_cf_turnstile_secret')
        self.kratos_selfservice_methods_captcha_config_cf_turnstile_secret = attributes[:'kratos_selfservice_methods_captcha_config_cf_turnstile_secret']
      end

      if attributes.key?(:'kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey')
        self.kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey = attributes[:'kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey']
      end

      if attributes.key?(:'kratos_selfservice_methods_captcha_config_legacy_inject_node')
        self.kratos_selfservice_methods_captcha_config_legacy_inject_node = attributes[:'kratos_selfservice_methods_captcha_config_legacy_inject_node']
      end

      if attributes.key?(:'kratos_selfservice_methods_captcha_enabled')
        self.kratos_selfservice_methods_captcha_enabled = attributes[:'kratos_selfservice_methods_captcha_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_config_lifespan')
        self.kratos_selfservice_methods_code_config_lifespan = attributes[:'kratos_selfservice_methods_code_config_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_config_max_submissions')
        self.kratos_selfservice_methods_code_config_max_submissions = attributes[:'kratos_selfservice_methods_code_config_max_submissions']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_config_missing_credential_fallback_enabled')
        self.kratos_selfservice_methods_code_config_missing_credential_fallback_enabled = attributes[:'kratos_selfservice_methods_code_config_missing_credential_fallback_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_enabled')
        self.kratos_selfservice_methods_code_enabled = attributes[:'kratos_selfservice_methods_code_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_mfa_enabled')
        self.kratos_selfservice_methods_code_mfa_enabled = attributes[:'kratos_selfservice_methods_code_mfa_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_passwordless_enabled')
        self.kratos_selfservice_methods_code_passwordless_enabled = attributes[:'kratos_selfservice_methods_code_passwordless_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_code_passwordless_login_fallback_enabled')
        self.kratos_selfservice_methods_code_passwordless_login_fallback_enabled = attributes[:'kratos_selfservice_methods_code_passwordless_login_fallback_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_link_config_base_url')
        self.kratos_selfservice_methods_link_config_base_url = attributes[:'kratos_selfservice_methods_link_config_base_url']
      end

      if attributes.key?(:'kratos_selfservice_methods_link_config_lifespan')
        self.kratos_selfservice_methods_link_config_lifespan = attributes[:'kratos_selfservice_methods_link_config_lifespan']
      end

      if attributes.key?(:'kratos_selfservice_methods_link_enabled')
        self.kratos_selfservice_methods_link_enabled = attributes[:'kratos_selfservice_methods_link_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_lookup_secret_enabled')
        self.kratos_selfservice_methods_lookup_secret_enabled = attributes[:'kratos_selfservice_methods_lookup_secret_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_oidc_config_base_redirect_uri')
        self.kratos_selfservice_methods_oidc_config_base_redirect_uri = attributes[:'kratos_selfservice_methods_oidc_config_base_redirect_uri']
      end

      if attributes.key?(:'kratos_selfservice_methods_oidc_config_providers')
        if (value = attributes[:'kratos_selfservice_methods_oidc_config_providers']).is_a?(Array)
          self.kratos_selfservice_methods_oidc_config_providers = value
        end
      end

      if attributes.key?(:'kratos_selfservice_methods_oidc_enable_auto_link_policy')
        self.kratos_selfservice_methods_oidc_enable_auto_link_policy = attributes[:'kratos_selfservice_methods_oidc_enable_auto_link_policy']
      end

      if attributes.key?(:'kratos_selfservice_methods_oidc_enabled')
        self.kratos_selfservice_methods_oidc_enabled = attributes[:'kratos_selfservice_methods_oidc_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_passkey_config_rp_display_name')
        self.kratos_selfservice_methods_passkey_config_rp_display_name = attributes[:'kratos_selfservice_methods_passkey_config_rp_display_name']
      end

      if attributes.key?(:'kratos_selfservice_methods_passkey_config_rp_id')
        self.kratos_selfservice_methods_passkey_config_rp_id = attributes[:'kratos_selfservice_methods_passkey_config_rp_id']
      end

      if attributes.key?(:'kratos_selfservice_methods_passkey_config_rp_origins')
        if (value = attributes[:'kratos_selfservice_methods_passkey_config_rp_origins']).is_a?(Array)
          self.kratos_selfservice_methods_passkey_config_rp_origins = value
        end
      end

      if attributes.key?(:'kratos_selfservice_methods_passkey_enabled')
        self.kratos_selfservice_methods_passkey_enabled = attributes[:'kratos_selfservice_methods_passkey_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_password_config_haveibeenpwned_enabled')
        self.kratos_selfservice_methods_password_config_haveibeenpwned_enabled = attributes[:'kratos_selfservice_methods_password_config_haveibeenpwned_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_password_config_identifier_similarity_check_enabled')
        self.kratos_selfservice_methods_password_config_identifier_similarity_check_enabled = attributes[:'kratos_selfservice_methods_password_config_identifier_similarity_check_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_password_config_ignore_network_errors')
        self.kratos_selfservice_methods_password_config_ignore_network_errors = attributes[:'kratos_selfservice_methods_password_config_ignore_network_errors']
      end

      if attributes.key?(:'kratos_selfservice_methods_password_config_max_breaches')
        self.kratos_selfservice_methods_password_config_max_breaches = attributes[:'kratos_selfservice_methods_password_config_max_breaches']
      end

      if attributes.key?(:'kratos_selfservice_methods_password_config_min_password_length')
        self.kratos_selfservice_methods_password_config_min_password_length = attributes[:'kratos_selfservice_methods_password_config_min_password_length']
      end

      if attributes.key?(:'kratos_selfservice_methods_password_enabled')
        self.kratos_selfservice_methods_password_enabled = attributes[:'kratos_selfservice_methods_password_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_profile_enabled')
        self.kratos_selfservice_methods_profile_enabled = attributes[:'kratos_selfservice_methods_profile_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_saml_config_providers')
        if (value = attributes[:'kratos_selfservice_methods_saml_config_providers']).is_a?(Array)
          self.kratos_selfservice_methods_saml_config_providers = value
        end
      end

      if attributes.key?(:'kratos_selfservice_methods_saml_enabled')
        self.kratos_selfservice_methods_saml_enabled = attributes[:'kratos_selfservice_methods_saml_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_totp_config_issuer')
        self.kratos_selfservice_methods_totp_config_issuer = attributes[:'kratos_selfservice_methods_totp_config_issuer']
      end

      if attributes.key?(:'kratos_selfservice_methods_totp_enabled')
        self.kratos_selfservice_methods_totp_enabled = attributes[:'kratos_selfservice_methods_totp_enabled']
      end

      if attributes.key?(:'kratos_selfservice_methods_webauthn_config_passwordless')
        self.kratos_selfservice_methods_webauthn_config_passwordless = attributes[:'kratos_selfservice_methods_webauthn_config_passwordless']
      end

      if attributes.key?(:'kratos_selfservice_methods_webauthn_config_rp_display_name')
        self.kratos_selfservice_methods_webauthn_config_rp_display_name = attributes[:'kratos_selfservice_methods_webauthn_config_rp_display_name']
      end

      if attributes.key?(:'kratos_selfservice_methods_webauthn_config_rp_icon')
        self.kratos_selfservice_methods_webauthn_config_rp_icon = attributes[:'kratos_selfservice_methods_webauthn_config_rp_icon']
      end

      if attributes.key?(:'kratos_selfservice_methods_webauthn_config_rp_id')
        self.kratos_selfservice_methods_webauthn_config_rp_id = attributes[:'kratos_selfservice_methods_webauthn_config_rp_id']
      end

      if attributes.key?(:'kratos_selfservice_methods_webauthn_config_rp_origins')
        if (value = attributes[:'kratos_selfservice_methods_webauthn_config_rp_origins']).is_a?(Array)
          self.kratos_selfservice_methods_webauthn_config_rp_origins = value
        end
      end

      if attributes.key?(:'kratos_selfservice_methods_webauthn_enabled')
        self.kratos_selfservice_methods_webauthn_enabled = attributes[:'kratos_selfservice_methods_webauthn_enabled']
      end

      if attributes.key?(:'kratos_session_cookie_persistent')
        self.kratos_session_cookie_persistent = attributes[:'kratos_session_cookie_persistent']
      end

      if attributes.key?(:'kratos_session_cookie_same_site')
        self.kratos_session_cookie_same_site = attributes[:'kratos_session_cookie_same_site']
      end

      if attributes.key?(:'kratos_session_lifespan')
        self.kratos_session_lifespan = attributes[:'kratos_session_lifespan']
      end

      if attributes.key?(:'kratos_session_whoami_required_aal')
        self.kratos_session_whoami_required_aal = attributes[:'kratos_session_whoami_required_aal']
      end

      if attributes.key?(:'kratos_session_whoami_tokenizer_templates')
        if (value = attributes[:'kratos_session_whoami_tokenizer_templates']).is_a?(Array)
          self.kratos_session_whoami_tokenizer_templates = value
        end
      end

      if attributes.key?(:'name')
        self.name = attributes[:'name']
      else
        self.name = nil
      end

      if attributes.key?(:'organizations')
        if (value = attributes[:'organizations']).is_a?(Array)
          self.organizations = value
        end
      end

      if attributes.key?(:'project_id')
        self.project_id = attributes[:'project_id']
      end

      if attributes.key?(:'project_revision_hooks')
        if (value = attributes[:'project_revision_hooks']).is_a?(Array)
          self.project_revision_hooks = value
        end
      end

      if attributes.key?(:'scim_clients')
        if (value = attributes[:'scim_clients']).is_a?(Array)
          self.scim_clients = value
        end
      end

      if attributes.key?(:'serve_admin_cors_allowed_origins')
        if (value = attributes[:'serve_admin_cors_allowed_origins']).is_a?(Array)
          self.serve_admin_cors_allowed_origins = value
        end
      end

      if attributes.key?(:'serve_admin_cors_enabled')
        self.serve_admin_cors_enabled = attributes[:'serve_admin_cors_enabled']
      end

      if attributes.key?(:'serve_public_cors_allowed_origins')
        if (value = attributes[:'serve_public_cors_allowed_origins']).is_a?(Array)
          self.serve_public_cors_allowed_origins = value
        end
      end

      if attributes.key?(:'serve_public_cors_enabled')
        self.serve_public_cors_enabled = attributes[:'serve_public_cors_enabled']
      end

      if attributes.key?(:'strict_security')
        self.strict_security = attributes[:'strict_security']
      end

      if attributes.key?(:'updated_at')
        self.updated_at = attributes[:'updated_at']
      end
    end

    # Show invalid properties with the reasons. Usually used together with valid?
    # @return Array for valid properties with the reasons
    def list_invalid_properties
      warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
      invalid_properties = Array.new
      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if !@hydra_oauth2_grant_jwt_max_ttl.nil? && @hydra_oauth2_grant_jwt_max_ttl !~ pattern
        invalid_properties.push("invalid value for \"hydra_oauth2_grant_jwt_max_ttl\", must conform to the pattern #{pattern}.")
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if !@hydra_ttl_access_token.nil? && @hydra_ttl_access_token !~ pattern
        invalid_properties.push("invalid value for \"hydra_ttl_access_token\", must conform to the pattern #{pattern}.")
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if !@hydra_ttl_auth_code.nil? && @hydra_ttl_auth_code !~ pattern
        invalid_properties.push("invalid value for \"hydra_ttl_auth_code\", must conform to the pattern #{pattern}.")
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if !@hydra_ttl_id_token.nil? && @hydra_ttl_id_token !~ pattern
        invalid_properties.push("invalid value for \"hydra_ttl_id_token\", must conform to the pattern #{pattern}.")
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if !@hydra_ttl_login_consent_request.nil? && @hydra_ttl_login_consent_request !~ pattern
        invalid_properties.push("invalid value for \"hydra_ttl_login_consent_request\", must conform to the pattern #{pattern}.")
      end

      pattern = Regexp.new(/^([0-9]+(ns|us|ms|s|m|h)|-1)$/)
      if !@hydra_ttl_refresh_token.nil? && @hydra_ttl_refresh_token !~ pattern
        invalid_properties.push("invalid value for \"hydra_ttl_refresh_token\", must conform to the pattern #{pattern}.")
      end

      if @name.nil?
        invalid_properties.push('invalid value for "name", name cannot be nil.')
      end

      invalid_properties
    end

    # Check to see if the all the properties in the model are valid
    # @return true if the model is valid
    def valid?
      warn '[DEPRECATED] the `valid?` method is obsolete'
      return false if !@hydra_oauth2_grant_jwt_max_ttl.nil? && @hydra_oauth2_grant_jwt_max_ttl !~ Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      hydra_strategies_access_token_validator = EnumAttributeValidator.new('String', ["opaque", "jwt"])
      return false unless hydra_strategies_access_token_validator.valid?(@hydra_strategies_access_token)
      hydra_strategies_jwt_scope_claim_validator = EnumAttributeValidator.new('String', ["list", "string", "both"])
      return false unless hydra_strategies_jwt_scope_claim_validator.valid?(@hydra_strategies_jwt_scope_claim)
      hydra_strategies_scope_validator = EnumAttributeValidator.new('String', ["exact", "wildcard"])
      return false unless hydra_strategies_scope_validator.valid?(@hydra_strategies_scope)
      return false if !@hydra_ttl_access_token.nil? && @hydra_ttl_access_token !~ Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      return false if !@hydra_ttl_auth_code.nil? && @hydra_ttl_auth_code !~ Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      return false if !@hydra_ttl_id_token.nil? && @hydra_ttl_id_token !~ Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      return false if !@hydra_ttl_login_consent_request.nil? && @hydra_ttl_login_consent_request !~ Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      return false if !@hydra_ttl_refresh_token.nil? && @hydra_ttl_refresh_token !~ Regexp.new(/^([0-9]+(ns|us|ms|s|m|h)|-1)$/)
      kratos_selfservice_flows_recovery_use_validator = EnumAttributeValidator.new('String', ["link", "code"])
      return false unless kratos_selfservice_flows_recovery_use_validator.valid?(@kratos_selfservice_flows_recovery_use)
      kratos_selfservice_flows_verification_use_validator = EnumAttributeValidator.new('String', ["link", "code"])
      return false unless kratos_selfservice_flows_verification_use_validator.valid?(@kratos_selfservice_flows_verification_use)
      return false if @name.nil?
      true
    end

    # Custom attribute writer method with validation
    # @param [Object] hydra_oauth2_grant_jwt_max_ttl Value to be assigned
    def hydra_oauth2_grant_jwt_max_ttl=(hydra_oauth2_grant_jwt_max_ttl)
      if hydra_oauth2_grant_jwt_max_ttl.nil?
        fail ArgumentError, 'hydra_oauth2_grant_jwt_max_ttl cannot be nil'
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if hydra_oauth2_grant_jwt_max_ttl !~ pattern
        fail ArgumentError, "invalid value for \"hydra_oauth2_grant_jwt_max_ttl\", must conform to the pattern #{pattern}."
      end

      @hydra_oauth2_grant_jwt_max_ttl = hydra_oauth2_grant_jwt_max_ttl
    end

    # Custom attribute writer method checking allowed values (enum).
    # @param [Object] hydra_strategies_access_token Object to be assigned
    def hydra_strategies_access_token=(hydra_strategies_access_token)
      validator = EnumAttributeValidator.new('String', ["opaque", "jwt"])
      unless validator.valid?(hydra_strategies_access_token)
        fail ArgumentError, "invalid value for \"hydra_strategies_access_token\", must be one of #{validator.allowable_values}."
      end
      @hydra_strategies_access_token = hydra_strategies_access_token
    end

    # Custom attribute writer method checking allowed values (enum).
    # @param [Object] hydra_strategies_jwt_scope_claim Object to be assigned
    def hydra_strategies_jwt_scope_claim=(hydra_strategies_jwt_scope_claim)
      validator = EnumAttributeValidator.new('String', ["list", "string", "both"])
      unless validator.valid?(hydra_strategies_jwt_scope_claim)
        fail ArgumentError, "invalid value for \"hydra_strategies_jwt_scope_claim\", must be one of #{validator.allowable_values}."
      end
      @hydra_strategies_jwt_scope_claim = hydra_strategies_jwt_scope_claim
    end

    # Custom attribute writer method checking allowed values (enum).
    # @param [Object] hydra_strategies_scope Object to be assigned
    def hydra_strategies_scope=(hydra_strategies_scope)
      validator = EnumAttributeValidator.new('String', ["exact", "wildcard"])
      unless validator.valid?(hydra_strategies_scope)
        fail ArgumentError, "invalid value for \"hydra_strategies_scope\", must be one of #{validator.allowable_values}."
      end
      @hydra_strategies_scope = hydra_strategies_scope
    end

    # Custom attribute writer method with validation
    # @param [Object] hydra_ttl_access_token Value to be assigned
    def hydra_ttl_access_token=(hydra_ttl_access_token)
      if hydra_ttl_access_token.nil?
        fail ArgumentError, 'hydra_ttl_access_token cannot be nil'
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if hydra_ttl_access_token !~ pattern
        fail ArgumentError, "invalid value for \"hydra_ttl_access_token\", must conform to the pattern #{pattern}."
      end

      @hydra_ttl_access_token = hydra_ttl_access_token
    end

    # Custom attribute writer method with validation
    # @param [Object] hydra_ttl_auth_code Value to be assigned
    def hydra_ttl_auth_code=(hydra_ttl_auth_code)
      if hydra_ttl_auth_code.nil?
        fail ArgumentError, 'hydra_ttl_auth_code cannot be nil'
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if hydra_ttl_auth_code !~ pattern
        fail ArgumentError, "invalid value for \"hydra_ttl_auth_code\", must conform to the pattern #{pattern}."
      end

      @hydra_ttl_auth_code = hydra_ttl_auth_code
    end

    # Custom attribute writer method with validation
    # @param [Object] hydra_ttl_id_token Value to be assigned
    def hydra_ttl_id_token=(hydra_ttl_id_token)
      if hydra_ttl_id_token.nil?
        fail ArgumentError, 'hydra_ttl_id_token cannot be nil'
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if hydra_ttl_id_token !~ pattern
        fail ArgumentError, "invalid value for \"hydra_ttl_id_token\", must conform to the pattern #{pattern}."
      end

      @hydra_ttl_id_token = hydra_ttl_id_token
    end

    # Custom attribute writer method with validation
    # @param [Object] hydra_ttl_login_consent_request Value to be assigned
    def hydra_ttl_login_consent_request=(hydra_ttl_login_consent_request)
      if hydra_ttl_login_consent_request.nil?
        fail ArgumentError, 'hydra_ttl_login_consent_request cannot be nil'
      end

      pattern = Regexp.new(/^[0-9]+(ns|us|ms|s|m|h)$/)
      if hydra_ttl_login_consent_request !~ pattern
        fail ArgumentError, "invalid value for \"hydra_ttl_login_consent_request\", must conform to the pattern #{pattern}."
      end

      @hydra_ttl_login_consent_request = hydra_ttl_login_consent_request
    end

    # Custom attribute writer method with validation
    # @param [Object] hydra_ttl_refresh_token Value to be assigned
    def hydra_ttl_refresh_token=(hydra_ttl_refresh_token)
      if hydra_ttl_refresh_token.nil?
        fail ArgumentError, 'hydra_ttl_refresh_token cannot be nil'
      end

      pattern = Regexp.new(/^([0-9]+(ns|us|ms|s|m|h)|-1)$/)
      if hydra_ttl_refresh_token !~ pattern
        fail ArgumentError, "invalid value for \"hydra_ttl_refresh_token\", must conform to the pattern #{pattern}."
      end

      @hydra_ttl_refresh_token = hydra_ttl_refresh_token
    end

    # Custom attribute writer method checking allowed values (enum).
    # @param [Object] kratos_selfservice_flows_recovery_use Object to be assigned
    def kratos_selfservice_flows_recovery_use=(kratos_selfservice_flows_recovery_use)
      validator = EnumAttributeValidator.new('String', ["link", "code"])
      unless validator.valid?(kratos_selfservice_flows_recovery_use)
        fail ArgumentError, "invalid value for \"kratos_selfservice_flows_recovery_use\", must be one of #{validator.allowable_values}."
      end
      @kratos_selfservice_flows_recovery_use = kratos_selfservice_flows_recovery_use
    end

    # Custom attribute writer method checking allowed values (enum).
    # @param [Object] kratos_selfservice_flows_verification_use Object to be assigned
    def kratos_selfservice_flows_verification_use=(kratos_selfservice_flows_verification_use)
      validator = EnumAttributeValidator.new('String', ["link", "code"])
      unless validator.valid?(kratos_selfservice_flows_verification_use)
        fail ArgumentError, "invalid value for \"kratos_selfservice_flows_verification_use\", must be one of #{validator.allowable_values}."
      end
      @kratos_selfservice_flows_verification_use = kratos_selfservice_flows_verification_use
    end

    # Custom attribute writer method with validation
    # @param [Object] name Value to be assigned
    def name=(name)
      if name.nil?
        fail ArgumentError, 'name cannot be nil'
      end

      @name = name
    end

    # Checks equality by comparing each attribute.
    # @param [Object] Object to be compared
    def ==(o)
      return true if self.equal?(o)
      self.class == o.class &&
          account_experience_custom_translations == o.account_experience_custom_translations &&
          account_experience_default_locale == o.account_experience_default_locale &&
          account_experience_favicon_dark == o.account_experience_favicon_dark &&
          account_experience_favicon_light == o.account_experience_favicon_light &&
          account_experience_locale_behavior == o.account_experience_locale_behavior &&
          account_experience_logo_dark == o.account_experience_logo_dark &&
          account_experience_logo_light == o.account_experience_logo_light &&
          account_experience_theme_variables_dark == o.account_experience_theme_variables_dark &&
          account_experience_theme_variables_light == o.account_experience_theme_variables_light &&
          created_at == o.created_at &&
          disable_account_experience_welcome_screen == o.disable_account_experience_welcome_screen &&
          enable_ax_v2 == o.enable_ax_v2 &&
          hydra_oauth2_allowed_top_level_claims == o.hydra_oauth2_allowed_top_level_claims &&
          hydra_oauth2_client_credentials_default_grant_allowed_scope == o.hydra_oauth2_client_credentials_default_grant_allowed_scope &&
          hydra_oauth2_exclude_not_before_claim == o.hydra_oauth2_exclude_not_before_claim &&
          hydra_oauth2_grant_jwt_iat_optional == o.hydra_oauth2_grant_jwt_iat_optional &&
          hydra_oauth2_grant_jwt_jti_optional == o.hydra_oauth2_grant_jwt_jti_optional &&
          hydra_oauth2_grant_jwt_max_ttl == o.hydra_oauth2_grant_jwt_max_ttl &&
          hydra_oauth2_grant_refresh_token_rotation_grace_period == o.hydra_oauth2_grant_refresh_token_rotation_grace_period &&
          hydra_oauth2_mirror_top_level_claims == o.hydra_oauth2_mirror_top_level_claims &&
          hydra_oauth2_pkce_enforced == o.hydra_oauth2_pkce_enforced &&
          hydra_oauth2_pkce_enforced_for_public_clients == o.hydra_oauth2_pkce_enforced_for_public_clients &&
          hydra_oauth2_refresh_token_hook == o.hydra_oauth2_refresh_token_hook &&
          hydra_oauth2_token_hook == o.hydra_oauth2_token_hook &&
          hydra_oidc_dynamic_client_registration_default_scope == o.hydra_oidc_dynamic_client_registration_default_scope &&
          hydra_oidc_dynamic_client_registration_enabled == o.hydra_oidc_dynamic_client_registration_enabled &&
          hydra_oidc_subject_identifiers_pairwise_salt == o.hydra_oidc_subject_identifiers_pairwise_salt &&
          hydra_oidc_subject_identifiers_supported_types == o.hydra_oidc_subject_identifiers_supported_types &&
          hydra_secrets_cookie == o.hydra_secrets_cookie &&
          hydra_secrets_pagination == o.hydra_secrets_pagination &&
          hydra_secrets_system == o.hydra_secrets_system &&
          hydra_serve_cookies_same_site_legacy_workaround == o.hydra_serve_cookies_same_site_legacy_workaround &&
          hydra_serve_cookies_same_site_mode == o.hydra_serve_cookies_same_site_mode &&
          hydra_strategies_access_token == o.hydra_strategies_access_token &&
          hydra_strategies_jwt_scope_claim == o.hydra_strategies_jwt_scope_claim &&
          hydra_strategies_scope == o.hydra_strategies_scope &&
          hydra_ttl_access_token == o.hydra_ttl_access_token &&
          hydra_ttl_auth_code == o.hydra_ttl_auth_code &&
          hydra_ttl_id_token == o.hydra_ttl_id_token &&
          hydra_ttl_login_consent_request == o.hydra_ttl_login_consent_request &&
          hydra_ttl_refresh_token == o.hydra_ttl_refresh_token &&
          hydra_urls_consent == o.hydra_urls_consent &&
          hydra_urls_error == o.hydra_urls_error &&
          hydra_urls_login == o.hydra_urls_login &&
          hydra_urls_logout == o.hydra_urls_logout &&
          hydra_urls_post_logout_redirect == o.hydra_urls_post_logout_redirect &&
          hydra_urls_registration == o.hydra_urls_registration &&
          hydra_urls_self_issuer == o.hydra_urls_self_issuer &&
          hydra_webfinger_jwks_broadcast_keys == o.hydra_webfinger_jwks_broadcast_keys &&
          hydra_webfinger_oidc_discovery_auth_url == o.hydra_webfinger_oidc_discovery_auth_url &&
          hydra_webfinger_oidc_discovery_client_registration_url == o.hydra_webfinger_oidc_discovery_client_registration_url &&
          hydra_webfinger_oidc_discovery_jwks_url == o.hydra_webfinger_oidc_discovery_jwks_url &&
          hydra_webfinger_oidc_discovery_supported_claims == o.hydra_webfinger_oidc_discovery_supported_claims &&
          hydra_webfinger_oidc_discovery_supported_scope == o.hydra_webfinger_oidc_discovery_supported_scope &&
          hydra_webfinger_oidc_discovery_token_url == o.hydra_webfinger_oidc_discovery_token_url &&
          hydra_webfinger_oidc_discovery_userinfo_url == o.hydra_webfinger_oidc_discovery_userinfo_url &&
          id == o.id &&
          keto_namespace_configuration == o.keto_namespace_configuration &&
          keto_namespaces == o.keto_namespaces &&
          keto_secrets_pagination == o.keto_secrets_pagination &&
          kratos_cookies_same_site == o.kratos_cookies_same_site &&
          kratos_courier_channels == o.kratos_courier_channels &&
          kratos_courier_delivery_strategy == o.kratos_courier_delivery_strategy &&
          kratos_courier_http_request_config_auth_api_key_in == o.kratos_courier_http_request_config_auth_api_key_in &&
          kratos_courier_http_request_config_auth_api_key_name == o.kratos_courier_http_request_config_auth_api_key_name &&
          kratos_courier_http_request_config_auth_api_key_value == o.kratos_courier_http_request_config_auth_api_key_value &&
          kratos_courier_http_request_config_auth_basic_auth_password == o.kratos_courier_http_request_config_auth_basic_auth_password &&
          kratos_courier_http_request_config_auth_basic_auth_user == o.kratos_courier_http_request_config_auth_basic_auth_user &&
          kratos_courier_http_request_config_auth_type == o.kratos_courier_http_request_config_auth_type &&
          kratos_courier_http_request_config_body == o.kratos_courier_http_request_config_body &&
          kratos_courier_http_request_config_headers == o.kratos_courier_http_request_config_headers &&
          kratos_courier_http_request_config_method == o.kratos_courier_http_request_config_method &&
          kratos_courier_http_request_config_url == o.kratos_courier_http_request_config_url &&
          kratos_courier_smtp_connection_uri == o.kratos_courier_smtp_connection_uri &&
          kratos_courier_smtp_from_address == o.kratos_courier_smtp_from_address &&
          kratos_courier_smtp_from_name == o.kratos_courier_smtp_from_name &&
          kratos_courier_smtp_headers == o.kratos_courier_smtp_headers &&
          kratos_courier_smtp_local_name == o.kratos_courier_smtp_local_name &&
          kratos_courier_templates_login_code_valid_email_body_html == o.kratos_courier_templates_login_code_valid_email_body_html &&
          kratos_courier_templates_login_code_valid_email_body_plaintext == o.kratos_courier_templates_login_code_valid_email_body_plaintext &&
          kratos_courier_templates_login_code_valid_email_subject == o.kratos_courier_templates_login_code_valid_email_subject &&
          kratos_courier_templates_login_code_valid_sms_body_plaintext == o.kratos_courier_templates_login_code_valid_sms_body_plaintext &&
          kratos_courier_templates_recovery_code_invalid_email_body_html == o.kratos_courier_templates_recovery_code_invalid_email_body_html &&
          kratos_courier_templates_recovery_code_invalid_email_body_plaintext == o.kratos_courier_templates_recovery_code_invalid_email_body_plaintext &&
          kratos_courier_templates_recovery_code_invalid_email_subject == o.kratos_courier_templates_recovery_code_invalid_email_subject &&
          kratos_courier_templates_recovery_code_valid_email_body_html == o.kratos_courier_templates_recovery_code_valid_email_body_html &&
          kratos_courier_templates_recovery_code_valid_email_body_plaintext == o.kratos_courier_templates_recovery_code_valid_email_body_plaintext &&
          kratos_courier_templates_recovery_code_valid_email_subject == o.kratos_courier_templates_recovery_code_valid_email_subject &&
          kratos_courier_templates_recovery_invalid_email_body_html == o.kratos_courier_templates_recovery_invalid_email_body_html &&
          kratos_courier_templates_recovery_invalid_email_body_plaintext == o.kratos_courier_templates_recovery_invalid_email_body_plaintext &&
          kratos_courier_templates_recovery_invalid_email_subject == o.kratos_courier_templates_recovery_invalid_email_subject &&
          kratos_courier_templates_recovery_valid_email_body_html == o.kratos_courier_templates_recovery_valid_email_body_html &&
          kratos_courier_templates_recovery_valid_email_body_plaintext == o.kratos_courier_templates_recovery_valid_email_body_plaintext &&
          kratos_courier_templates_recovery_valid_email_subject == o.kratos_courier_templates_recovery_valid_email_subject &&
          kratos_courier_templates_registration_code_valid_email_body_html == o.kratos_courier_templates_registration_code_valid_email_body_html &&
          kratos_courier_templates_registration_code_valid_email_body_plaintext == o.kratos_courier_templates_registration_code_valid_email_body_plaintext &&
          kratos_courier_templates_registration_code_valid_email_subject == o.kratos_courier_templates_registration_code_valid_email_subject &&
          kratos_courier_templates_registration_code_valid_sms_body_plaintext == o.kratos_courier_templates_registration_code_valid_sms_body_plaintext &&
          kratos_courier_templates_verification_code_invalid_email_body_html == o.kratos_courier_templates_verification_code_invalid_email_body_html &&
          kratos_courier_templates_verification_code_invalid_email_body_plaintext == o.kratos_courier_templates_verification_code_invalid_email_body_plaintext &&
          kratos_courier_templates_verification_code_invalid_email_subject == o.kratos_courier_templates_verification_code_invalid_email_subject &&
          kratos_courier_templates_verification_code_valid_email_body_html == o.kratos_courier_templates_verification_code_valid_email_body_html &&
          kratos_courier_templates_verification_code_valid_email_body_plaintext == o.kratos_courier_templates_verification_code_valid_email_body_plaintext &&
          kratos_courier_templates_verification_code_valid_email_subject == o.kratos_courier_templates_verification_code_valid_email_subject &&
          kratos_courier_templates_verification_code_valid_sms_body_plaintext == o.kratos_courier_templates_verification_code_valid_sms_body_plaintext &&
          kratos_courier_templates_verification_invalid_email_body_html == o.kratos_courier_templates_verification_invalid_email_body_html &&
          kratos_courier_templates_verification_invalid_email_body_plaintext == o.kratos_courier_templates_verification_invalid_email_body_plaintext &&
          kratos_courier_templates_verification_invalid_email_subject == o.kratos_courier_templates_verification_invalid_email_subject &&
          kratos_courier_templates_verification_valid_email_body_html == o.kratos_courier_templates_verification_valid_email_body_html &&
          kratos_courier_templates_verification_valid_email_body_plaintext == o.kratos_courier_templates_verification_valid_email_body_plaintext &&
          kratos_courier_templates_verification_valid_email_subject == o.kratos_courier_templates_verification_valid_email_subject &&
          kratos_feature_flags_cacheable_sessions == o.kratos_feature_flags_cacheable_sessions &&
          kratos_feature_flags_cacheable_sessions_max_age == o.kratos_feature_flags_cacheable_sessions_max_age &&
          kratos_feature_flags_choose_recovery_address == o.kratos_feature_flags_choose_recovery_address &&
          kratos_feature_flags_faster_session_extend == o.kratos_feature_flags_faster_session_extend &&
          kratos_feature_flags_legacy_continue_with_verification_ui == o.kratos_feature_flags_legacy_continue_with_verification_ui &&
          kratos_feature_flags_legacy_oidc_registration_node_group == o.kratos_feature_flags_legacy_oidc_registration_node_group &&
          kratos_feature_flags_legacy_require_verified_login_error == o.kratos_feature_flags_legacy_require_verified_login_error &&
          kratos_feature_flags_password_profile_registration_node_group == o.kratos_feature_flags_password_profile_registration_node_group &&
          kratos_feature_flags_use_continue_with_transitions == o.kratos_feature_flags_use_continue_with_transitions &&
          kratos_identity_schemas == o.kratos_identity_schemas &&
          kratos_oauth2_provider_headers == o.kratos_oauth2_provider_headers &&
          kratos_oauth2_provider_override_return_to == o.kratos_oauth2_provider_override_return_to &&
          kratos_oauth2_provider_url == o.kratos_oauth2_provider_url &&
          kratos_preview_default_read_consistency_level == o.kratos_preview_default_read_consistency_level &&
          kratos_secrets_cipher == o.kratos_secrets_cipher &&
          kratos_secrets_cookie == o.kratos_secrets_cookie &&
          kratos_secrets_default == o.kratos_secrets_default &&
          kratos_secrets_pagination == o.kratos_secrets_pagination &&
          kratos_security_account_enumeration_mitigate == o.kratos_security_account_enumeration_mitigate &&
          kratos_selfservice_allowed_return_urls == o.kratos_selfservice_allowed_return_urls &&
          kratos_selfservice_default_browser_return_url == o.kratos_selfservice_default_browser_return_url &&
          kratos_selfservice_flows_error_ui_url == o.kratos_selfservice_flows_error_ui_url &&
          kratos_selfservice_flows_login_after_code_default_browser_return_url == o.kratos_selfservice_flows_login_after_code_default_browser_return_url &&
          kratos_selfservice_flows_login_after_default_browser_return_url == o.kratos_selfservice_flows_login_after_default_browser_return_url &&
          kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url == o.kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url &&
          kratos_selfservice_flows_login_after_oidc_default_browser_return_url == o.kratos_selfservice_flows_login_after_oidc_default_browser_return_url &&
          kratos_selfservice_flows_login_after_passkey_default_browser_return_url == o.kratos_selfservice_flows_login_after_passkey_default_browser_return_url &&
          kratos_selfservice_flows_login_after_password_default_browser_return_url == o.kratos_selfservice_flows_login_after_password_default_browser_return_url &&
          kratos_selfservice_flows_login_after_totp_default_browser_return_url == o.kratos_selfservice_flows_login_after_totp_default_browser_return_url &&
          kratos_selfservice_flows_login_after_webauthn_default_browser_return_url == o.kratos_selfservice_flows_login_after_webauthn_default_browser_return_url &&
          kratos_selfservice_flows_login_lifespan == o.kratos_selfservice_flows_login_lifespan &&
          kratos_selfservice_flows_login_ui_url == o.kratos_selfservice_flows_login_ui_url &&
          kratos_selfservice_flows_logout_after_default_browser_return_url == o.kratos_selfservice_flows_logout_after_default_browser_return_url &&
          kratos_selfservice_flows_recovery_after_default_browser_return_url == o.kratos_selfservice_flows_recovery_after_default_browser_return_url &&
          kratos_selfservice_flows_recovery_enabled == o.kratos_selfservice_flows_recovery_enabled &&
          kratos_selfservice_flows_recovery_lifespan == o.kratos_selfservice_flows_recovery_lifespan &&
          kratos_selfservice_flows_recovery_notify_unknown_recipients == o.kratos_selfservice_flows_recovery_notify_unknown_recipients &&
          kratos_selfservice_flows_recovery_ui_url == o.kratos_selfservice_flows_recovery_ui_url &&
          kratos_selfservice_flows_recovery_use == o.kratos_selfservice_flows_recovery_use &&
          kratos_selfservice_flows_registration_after_code_default_browser_return_url == o.kratos_selfservice_flows_registration_after_code_default_browser_return_url &&
          kratos_selfservice_flows_registration_after_default_browser_return_url == o.kratos_selfservice_flows_registration_after_default_browser_return_url &&
          kratos_selfservice_flows_registration_after_oidc_default_browser_return_url == o.kratos_selfservice_flows_registration_after_oidc_default_browser_return_url &&
          kratos_selfservice_flows_registration_after_passkey_default_browser_return_url == o.kratos_selfservice_flows_registration_after_passkey_default_browser_return_url &&
          kratos_selfservice_flows_registration_after_password_default_browser_return_url == o.kratos_selfservice_flows_registration_after_password_default_browser_return_url &&
          kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url == o.kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url &&
          kratos_selfservice_flows_registration_enable_legacy_one_step == o.kratos_selfservice_flows_registration_enable_legacy_one_step &&
          kratos_selfservice_flows_registration_enabled == o.kratos_selfservice_flows_registration_enabled &&
          kratos_selfservice_flows_registration_lifespan == o.kratos_selfservice_flows_registration_lifespan &&
          kratos_selfservice_flows_registration_login_hints == o.kratos_selfservice_flows_registration_login_hints &&
          kratos_selfservice_flows_registration_ui_url == o.kratos_selfservice_flows_registration_ui_url &&
          kratos_selfservice_flows_settings_after_default_browser_return_url == o.kratos_selfservice_flows_settings_after_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url == o.kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_oidc_default_browser_return_url == o.kratos_selfservice_flows_settings_after_oidc_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_passkey_default_browser_return_url == o.kratos_selfservice_flows_settings_after_passkey_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_password_default_browser_return_url == o.kratos_selfservice_flows_settings_after_password_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_profile_default_browser_return_url == o.kratos_selfservice_flows_settings_after_profile_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_totp_default_browser_return_url == o.kratos_selfservice_flows_settings_after_totp_default_browser_return_url &&
          kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url == o.kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url &&
          kratos_selfservice_flows_settings_lifespan == o.kratos_selfservice_flows_settings_lifespan &&
          kratos_selfservice_flows_settings_privileged_session_max_age == o.kratos_selfservice_flows_settings_privileged_session_max_age &&
          kratos_selfservice_flows_settings_required_aal == o.kratos_selfservice_flows_settings_required_aal &&
          kratos_selfservice_flows_settings_ui_url == o.kratos_selfservice_flows_settings_ui_url &&
          kratos_selfservice_flows_verification_after_default_browser_return_url == o.kratos_selfservice_flows_verification_after_default_browser_return_url &&
          kratos_selfservice_flows_verification_enabled == o.kratos_selfservice_flows_verification_enabled &&
          kratos_selfservice_flows_verification_lifespan == o.kratos_selfservice_flows_verification_lifespan &&
          kratos_selfservice_flows_verification_notify_unknown_recipients == o.kratos_selfservice_flows_verification_notify_unknown_recipients &&
          kratos_selfservice_flows_verification_ui_url == o.kratos_selfservice_flows_verification_ui_url &&
          kratos_selfservice_flows_verification_use == o.kratos_selfservice_flows_verification_use &&
          kratos_selfservice_methods_captcha_config_allowed_domains == o.kratos_selfservice_methods_captcha_config_allowed_domains &&
          kratos_selfservice_methods_captcha_config_cf_turnstile_secret == o.kratos_selfservice_methods_captcha_config_cf_turnstile_secret &&
          kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey == o.kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey &&
          kratos_selfservice_methods_captcha_config_legacy_inject_node == o.kratos_selfservice_methods_captcha_config_legacy_inject_node &&
          kratos_selfservice_methods_captcha_enabled == o.kratos_selfservice_methods_captcha_enabled &&
          kratos_selfservice_methods_code_config_lifespan == o.kratos_selfservice_methods_code_config_lifespan &&
          kratos_selfservice_methods_code_config_max_submissions == o.kratos_selfservice_methods_code_config_max_submissions &&
          kratos_selfservice_methods_code_config_missing_credential_fallback_enabled == o.kratos_selfservice_methods_code_config_missing_credential_fallback_enabled &&
          kratos_selfservice_methods_code_enabled == o.kratos_selfservice_methods_code_enabled &&
          kratos_selfservice_methods_code_mfa_enabled == o.kratos_selfservice_methods_code_mfa_enabled &&
          kratos_selfservice_methods_code_passwordless_enabled == o.kratos_selfservice_methods_code_passwordless_enabled &&
          kratos_selfservice_methods_code_passwordless_login_fallback_enabled == o.kratos_selfservice_methods_code_passwordless_login_fallback_enabled &&
          kratos_selfservice_methods_link_config_base_url == o.kratos_selfservice_methods_link_config_base_url &&
          kratos_selfservice_methods_link_config_lifespan == o.kratos_selfservice_methods_link_config_lifespan &&
          kratos_selfservice_methods_link_enabled == o.kratos_selfservice_methods_link_enabled &&
          kratos_selfservice_methods_lookup_secret_enabled == o.kratos_selfservice_methods_lookup_secret_enabled &&
          kratos_selfservice_methods_oidc_config_base_redirect_uri == o.kratos_selfservice_methods_oidc_config_base_redirect_uri &&
          kratos_selfservice_methods_oidc_config_providers == o.kratos_selfservice_methods_oidc_config_providers &&
          kratos_selfservice_methods_oidc_enable_auto_link_policy == o.kratos_selfservice_methods_oidc_enable_auto_link_policy &&
          kratos_selfservice_methods_oidc_enabled == o.kratos_selfservice_methods_oidc_enabled &&
          kratos_selfservice_methods_passkey_config_rp_display_name == o.kratos_selfservice_methods_passkey_config_rp_display_name &&
          kratos_selfservice_methods_passkey_config_rp_id == o.kratos_selfservice_methods_passkey_config_rp_id &&
          kratos_selfservice_methods_passkey_config_rp_origins == o.kratos_selfservice_methods_passkey_config_rp_origins &&
          kratos_selfservice_methods_passkey_enabled == o.kratos_selfservice_methods_passkey_enabled &&
          kratos_selfservice_methods_password_config_haveibeenpwned_enabled == o.kratos_selfservice_methods_password_config_haveibeenpwned_enabled &&
          kratos_selfservice_methods_password_config_identifier_similarity_check_enabled == o.kratos_selfservice_methods_password_config_identifier_similarity_check_enabled &&
          kratos_selfservice_methods_password_config_ignore_network_errors == o.kratos_selfservice_methods_password_config_ignore_network_errors &&
          kratos_selfservice_methods_password_config_max_breaches == o.kratos_selfservice_methods_password_config_max_breaches &&
          kratos_selfservice_methods_password_config_min_password_length == o.kratos_selfservice_methods_password_config_min_password_length &&
          kratos_selfservice_methods_password_enabled == o.kratos_selfservice_methods_password_enabled &&
          kratos_selfservice_methods_profile_enabled == o.kratos_selfservice_methods_profile_enabled &&
          kratos_selfservice_methods_saml_config_providers == o.kratos_selfservice_methods_saml_config_providers &&
          kratos_selfservice_methods_saml_enabled == o.kratos_selfservice_methods_saml_enabled &&
          kratos_selfservice_methods_totp_config_issuer == o.kratos_selfservice_methods_totp_config_issuer &&
          kratos_selfservice_methods_totp_enabled == o.kratos_selfservice_methods_totp_enabled &&
          kratos_selfservice_methods_webauthn_config_passwordless == o.kratos_selfservice_methods_webauthn_config_passwordless &&
          kratos_selfservice_methods_webauthn_config_rp_display_name == o.kratos_selfservice_methods_webauthn_config_rp_display_name &&
          kratos_selfservice_methods_webauthn_config_rp_icon == o.kratos_selfservice_methods_webauthn_config_rp_icon &&
          kratos_selfservice_methods_webauthn_config_rp_id == o.kratos_selfservice_methods_webauthn_config_rp_id &&
          kratos_selfservice_methods_webauthn_config_rp_origins == o.kratos_selfservice_methods_webauthn_config_rp_origins &&
          kratos_selfservice_methods_webauthn_enabled == o.kratos_selfservice_methods_webauthn_enabled &&
          kratos_session_cookie_persistent == o.kratos_session_cookie_persistent &&
          kratos_session_cookie_same_site == o.kratos_session_cookie_same_site &&
          kratos_session_lifespan == o.kratos_session_lifespan &&
          kratos_session_whoami_required_aal == o.kratos_session_whoami_required_aal &&
          kratos_session_whoami_tokenizer_templates == o.kratos_session_whoami_tokenizer_templates &&
          name == o.name &&
          organizations == o.organizations &&
          project_id == o.project_id &&
          project_revision_hooks == o.project_revision_hooks &&
          scim_clients == o.scim_clients &&
          serve_admin_cors_allowed_origins == o.serve_admin_cors_allowed_origins &&
          serve_admin_cors_enabled == o.serve_admin_cors_enabled &&
          serve_public_cors_allowed_origins == o.serve_public_cors_allowed_origins &&
          serve_public_cors_enabled == o.serve_public_cors_enabled &&
          strict_security == o.strict_security &&
          updated_at == o.updated_at
    end

    # @see the `==` method
    # @param [Object] Object to be compared
    def eql?(o)
      self == o
    end

    # Calculates hash code according to all attributes.
    # @return [Integer] Hash code
    def hash
      [account_experience_custom_translations, account_experience_default_locale, account_experience_favicon_dark, account_experience_favicon_light, account_experience_locale_behavior, account_experience_logo_dark, account_experience_logo_light, account_experience_theme_variables_dark, account_experience_theme_variables_light, created_at, disable_account_experience_welcome_screen, enable_ax_v2, hydra_oauth2_allowed_top_level_claims, hydra_oauth2_client_credentials_default_grant_allowed_scope, hydra_oauth2_exclude_not_before_claim, hydra_oauth2_grant_jwt_iat_optional, hydra_oauth2_grant_jwt_jti_optional, hydra_oauth2_grant_jwt_max_ttl, hydra_oauth2_grant_refresh_token_rotation_grace_period, hydra_oauth2_mirror_top_level_claims, hydra_oauth2_pkce_enforced, hydra_oauth2_pkce_enforced_for_public_clients, hydra_oauth2_refresh_token_hook, hydra_oauth2_token_hook, hydra_oidc_dynamic_client_registration_default_scope, hydra_oidc_dynamic_client_registration_enabled, hydra_oidc_subject_identifiers_pairwise_salt, hydra_oidc_subject_identifiers_supported_types, hydra_secrets_cookie, hydra_secrets_pagination, hydra_secrets_system, hydra_serve_cookies_same_site_legacy_workaround, hydra_serve_cookies_same_site_mode, hydra_strategies_access_token, hydra_strategies_jwt_scope_claim, hydra_strategies_scope, hydra_ttl_access_token, hydra_ttl_auth_code, hydra_ttl_id_token, hydra_ttl_login_consent_request, hydra_ttl_refresh_token, hydra_urls_consent, hydra_urls_error, hydra_urls_login, hydra_urls_logout, hydra_urls_post_logout_redirect, hydra_urls_registration, hydra_urls_self_issuer, hydra_webfinger_jwks_broadcast_keys, hydra_webfinger_oidc_discovery_auth_url, hydra_webfinger_oidc_discovery_client_registration_url, hydra_webfinger_oidc_discovery_jwks_url, hydra_webfinger_oidc_discovery_supported_claims, hydra_webfinger_oidc_discovery_supported_scope, hydra_webfinger_oidc_discovery_token_url, hydra_webfinger_oidc_discovery_userinfo_url, id, keto_namespace_configuration, keto_namespaces, keto_secrets_pagination, kratos_cookies_same_site, kratos_courier_channels, kratos_courier_delivery_strategy, kratos_courier_http_request_config_auth_api_key_in, kratos_courier_http_request_config_auth_api_key_name, kratos_courier_http_request_config_auth_api_key_value, kratos_courier_http_request_config_auth_basic_auth_password, kratos_courier_http_request_config_auth_basic_auth_user, kratos_courier_http_request_config_auth_type, kratos_courier_http_request_config_body, kratos_courier_http_request_config_headers, kratos_courier_http_request_config_method, kratos_courier_http_request_config_url, kratos_courier_smtp_connection_uri, kratos_courier_smtp_from_address, kratos_courier_smtp_from_name, kratos_courier_smtp_headers, kratos_courier_smtp_local_name, kratos_courier_templates_login_code_valid_email_body_html, kratos_courier_templates_login_code_valid_email_body_plaintext, kratos_courier_templates_login_code_valid_email_subject, kratos_courier_templates_login_code_valid_sms_body_plaintext, kratos_courier_templates_recovery_code_invalid_email_body_html, kratos_courier_templates_recovery_code_invalid_email_body_plaintext, kratos_courier_templates_recovery_code_invalid_email_subject, kratos_courier_templates_recovery_code_valid_email_body_html, kratos_courier_templates_recovery_code_valid_email_body_plaintext, kratos_courier_templates_recovery_code_valid_email_subject, kratos_courier_templates_recovery_invalid_email_body_html, kratos_courier_templates_recovery_invalid_email_body_plaintext, kratos_courier_templates_recovery_invalid_email_subject, kratos_courier_templates_recovery_valid_email_body_html, kratos_courier_templates_recovery_valid_email_body_plaintext, kratos_courier_templates_recovery_valid_email_subject, kratos_courier_templates_registration_code_valid_email_body_html, kratos_courier_templates_registration_code_valid_email_body_plaintext, kratos_courier_templates_registration_code_valid_email_subject, kratos_courier_templates_registration_code_valid_sms_body_plaintext, kratos_courier_templates_verification_code_invalid_email_body_html, kratos_courier_templates_verification_code_invalid_email_body_plaintext, kratos_courier_templates_verification_code_invalid_email_subject, kratos_courier_templates_verification_code_valid_email_body_html, kratos_courier_templates_verification_code_valid_email_body_plaintext, kratos_courier_templates_verification_code_valid_email_subject, kratos_courier_templates_verification_code_valid_sms_body_plaintext, kratos_courier_templates_verification_invalid_email_body_html, kratos_courier_templates_verification_invalid_email_body_plaintext, kratos_courier_templates_verification_invalid_email_subject, kratos_courier_templates_verification_valid_email_body_html, kratos_courier_templates_verification_valid_email_body_plaintext, kratos_courier_templates_verification_valid_email_subject, kratos_feature_flags_cacheable_sessions, kratos_feature_flags_cacheable_sessions_max_age, kratos_feature_flags_choose_recovery_address, kratos_feature_flags_faster_session_extend, kratos_feature_flags_legacy_continue_with_verification_ui, kratos_feature_flags_legacy_oidc_registration_node_group, kratos_feature_flags_legacy_require_verified_login_error, kratos_feature_flags_password_profile_registration_node_group, kratos_feature_flags_use_continue_with_transitions, kratos_identity_schemas, kratos_oauth2_provider_headers, kratos_oauth2_provider_override_return_to, kratos_oauth2_provider_url, kratos_preview_default_read_consistency_level, kratos_secrets_cipher, kratos_secrets_cookie, kratos_secrets_default, kratos_secrets_pagination, kratos_security_account_enumeration_mitigate, kratos_selfservice_allowed_return_urls, kratos_selfservice_default_browser_return_url, kratos_selfservice_flows_error_ui_url, kratos_selfservice_flows_login_after_code_default_browser_return_url, kratos_selfservice_flows_login_after_default_browser_return_url, kratos_selfservice_flows_login_after_lookup_secret_default_browser_return_url, kratos_selfservice_flows_login_after_oidc_default_browser_return_url, kratos_selfservice_flows_login_after_passkey_default_browser_return_url, kratos_selfservice_flows_login_after_password_default_browser_return_url, kratos_selfservice_flows_login_after_totp_default_browser_return_url, kratos_selfservice_flows_login_after_webauthn_default_browser_return_url, kratos_selfservice_flows_login_lifespan, kratos_selfservice_flows_login_ui_url, kratos_selfservice_flows_logout_after_default_browser_return_url, kratos_selfservice_flows_recovery_after_default_browser_return_url, kratos_selfservice_flows_recovery_enabled, kratos_selfservice_flows_recovery_lifespan, kratos_selfservice_flows_recovery_notify_unknown_recipients, kratos_selfservice_flows_recovery_ui_url, kratos_selfservice_flows_recovery_use, kratos_selfservice_flows_registration_after_code_default_browser_return_url, kratos_selfservice_flows_registration_after_default_browser_return_url, kratos_selfservice_flows_registration_after_oidc_default_browser_return_url, kratos_selfservice_flows_registration_after_passkey_default_browser_return_url, kratos_selfservice_flows_registration_after_password_default_browser_return_url, kratos_selfservice_flows_registration_after_webauthn_default_browser_return_url, kratos_selfservice_flows_registration_enable_legacy_one_step, kratos_selfservice_flows_registration_enabled, kratos_selfservice_flows_registration_lifespan, kratos_selfservice_flows_registration_login_hints, kratos_selfservice_flows_registration_ui_url, kratos_selfservice_flows_settings_after_default_browser_return_url, kratos_selfservice_flows_settings_after_lookup_secret_default_browser_return_url, kratos_selfservice_flows_settings_after_oidc_default_browser_return_url, kratos_selfservice_flows_settings_after_passkey_default_browser_return_url, kratos_selfservice_flows_settings_after_password_default_browser_return_url, kratos_selfservice_flows_settings_after_profile_default_browser_return_url, kratos_selfservice_flows_settings_after_totp_default_browser_return_url, kratos_selfservice_flows_settings_after_webauthn_default_browser_return_url, kratos_selfservice_flows_settings_lifespan, kratos_selfservice_flows_settings_privileged_session_max_age, kratos_selfservice_flows_settings_required_aal, kratos_selfservice_flows_settings_ui_url, kratos_selfservice_flows_verification_after_default_browser_return_url, kratos_selfservice_flows_verification_enabled, kratos_selfservice_flows_verification_lifespan, kratos_selfservice_flows_verification_notify_unknown_recipients, kratos_selfservice_flows_verification_ui_url, kratos_selfservice_flows_verification_use, kratos_selfservice_methods_captcha_config_allowed_domains, kratos_selfservice_methods_captcha_config_cf_turnstile_secret, kratos_selfservice_methods_captcha_config_cf_turnstile_sitekey, kratos_selfservice_methods_captcha_config_legacy_inject_node, kratos_selfservice_methods_captcha_enabled, kratos_selfservice_methods_code_config_lifespan, kratos_selfservice_methods_code_config_max_submissions, kratos_selfservice_methods_code_config_missing_credential_fallback_enabled, kratos_selfservice_methods_code_enabled, kratos_selfservice_methods_code_mfa_enabled, kratos_selfservice_methods_code_passwordless_enabled, kratos_selfservice_methods_code_passwordless_login_fallback_enabled, kratos_selfservice_methods_link_config_base_url, kratos_selfservice_methods_link_config_lifespan, kratos_selfservice_methods_link_enabled, kratos_selfservice_methods_lookup_secret_enabled, kratos_selfservice_methods_oidc_config_base_redirect_uri, kratos_selfservice_methods_oidc_config_providers, kratos_selfservice_methods_oidc_enable_auto_link_policy, kratos_selfservice_methods_oidc_enabled, kratos_selfservice_methods_passkey_config_rp_display_name, kratos_selfservice_methods_passkey_config_rp_id, kratos_selfservice_methods_passkey_config_rp_origins, kratos_selfservice_methods_passkey_enabled, kratos_selfservice_methods_password_config_haveibeenpwned_enabled, kratos_selfservice_methods_password_config_identifier_similarity_check_enabled, kratos_selfservice_methods_password_config_ignore_network_errors, kratos_selfservice_methods_password_config_max_breaches, kratos_selfservice_methods_password_config_min_password_length, kratos_selfservice_methods_password_enabled, kratos_selfservice_methods_profile_enabled, kratos_selfservice_methods_saml_config_providers, kratos_selfservice_methods_saml_enabled, kratos_selfservice_methods_totp_config_issuer, kratos_selfservice_methods_totp_enabled, kratos_selfservice_methods_webauthn_config_passwordless, kratos_selfservice_methods_webauthn_config_rp_display_name, kratos_selfservice_methods_webauthn_config_rp_icon, kratos_selfservice_methods_webauthn_config_rp_id, kratos_selfservice_methods_webauthn_config_rp_origins, kratos_selfservice_methods_webauthn_enabled, kratos_session_cookie_persistent, kratos_session_cookie_same_site, kratos_session_lifespan, kratos_session_whoami_required_aal, kratos_session_whoami_tokenizer_templates, name, organizations, project_id, project_revision_hooks, scim_clients, serve_admin_cors_allowed_origins, serve_admin_cors_enabled, serve_public_cors_allowed_origins, serve_public_cors_enabled, strict_security, updated_at].hash
    end

    # Builds the object from hash
    # @param [Hash] attributes Model attributes in the form of hash
    # @return [Object] Returns the model itself
    def self.build_from_hash(attributes)
      return nil unless attributes.is_a?(Hash)
      attributes = attributes.transform_keys(&:to_sym)
      transformed_hash = {}
      openapi_types.each_pair do |key, type|
        if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
          transformed_hash["#{key}"] = nil
        elsif type =~ /\AArray<(.*)>/i
          # check to ensure the input is an array given that the attribute
          # is documented as an array but the input is not
          if attributes[attribute_map[key]].is_a?(Array)
            transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
          end
        elsif !attributes[attribute_map[key]].nil?
          transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
        end
      end
      new(transformed_hash)
    end

    # Deserializes the data based on type
    # @param string type Data type
    # @param string value Value to be deserialized
    # @return [Object] Deserialized data
    def self._deserialize(type, value)
      case type.to_sym
      when :Time
        Time.parse(value)
      when :Date
        Date.parse(value)
      when :String
        value.to_s
      when :Integer
        value.to_i
      when :Float
        value.to_f
      when :Boolean
        if value.to_s =~ /\A(true|t|yes|y|1)\z/i
          true
        else
          false
        end
      when :Object
        # generic object (usually a Hash), return directly
        value
      when /\AArray<(?<inner_type>.+)>\z/
        inner_type = Regexp.last_match[:inner_type]
        value.map { |v| _deserialize(inner_type, v) }
      when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
        k_type = Regexp.last_match[:k_type]
        v_type = Regexp.last_match[:v_type]
        {}.tap do |hash|
          value.each do |k, v|
            hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
          end
        end
      else # model
        # models (e.g. Pet) or oneOf
        klass = OryClient.const_get(type)
        klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
      end
    end

    # Returns the string representation of the object
    # @return [String] String presentation of the object
    def to_s
      to_hash.to_s
    end

    # to_body is an alias to to_hash (backward compatibility)
    # @return [Hash] Returns the object in the form of hash
    def to_body
      to_hash
    end

    # Returns the object in the form of hash
    # @return [Hash] Returns the object in the form of hash
    def to_hash
      hash = {}
      self.class.attribute_map.each_pair do |attr, param|
        value = self.send(attr)
        if value.nil?
          is_nullable = self.class.openapi_nullable.include?(attr)
          next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
        end

        hash[param] = _to_hash(value)
      end
      hash
    end

    # Outputs non-array value in the form of hash
    # For object, use to_hash. Otherwise, just return the value
    # @param [Object] value Any valid value
    # @return [Hash] Returns the value in the form of hash
    def _to_hash(value)
      if value.is_a?(Array)
        value.compact.map { |v| _to_hash(v) }
      elsif value.is_a?(Hash)
        {}.tap do |hash|
          value.each { |k, v| hash[k] = _to_hash(v) }
        end
      elsif value.respond_to? :to_hash
        value.to_hash
      else
        value
      end
    end

  end

end
