Skip to main content

SecureAuth Platform Configuration Reference

Regardless of the deployment type you run, the SecureAuth platform shares common configuration reference that can be used to adjust the platform settings to any business need.

# logging
logging:
    level: info # logging level (panic, fatal, error, warn, info, debug, trace)
# http server
server:
    system_tenant: system # name of the system tenant
    url: https://localhost:8443 # server url template
    mtls_url: "" # mtls server url template
    vanity_url_template: "" # vanity url template (https://{{vanityID}}.vanity.cloudentity.io)
    vanity_mtls_url_template: "" # vanity mtls url template (https://{{vanityID}}.mtls.vanity.cloudentity.io)
    assets_url: "" # url template to cdn with static files
    image_proxy_url: "" # url template to image proxy
    grpc_url: localhost:9443 # grpc url
    port: 8443 # http server port
    grpc_port: 9443 # grpc server port
    do_not_print_audit_logs_for_static_files: true # do not print audit logs for static files
    timeout: 10s # http server timeout
    etag_backoff: 200ms # etag backoff duration
    etag_retries: 25 # max number of etag retries
    audit_logs: true # enable audit logs
    disable_audit_logs_in_stdout: false # disable publishing audit logs to stdout
    http_logs: false # enable http request and response logging
    max_size_bytes: 1048576 # max size of http request body
    dangerous_disable_tls: false # disable tls
    disable_cache: false # disable cache
    disable_gzip: true # disable http gzip encoding
    disable_csrf: false # disable csrf protection
    disable_security: false # disable security middleware
    client_auth_type: RequestClientCert # mtls http server client auth type
    # http server tls
    certificate:
        password: "" # key passphrase
        cert_path: ./certs/srv/cert.pem # path to the certificate PEM file
        key_path: ./certs/srv/cert-key.pem # path to the key PEM file
        cert: "" # base64 encoded cert PEM
        key: "" # base64 encoded key PEM
        generated_key_type: rsa # type for generated key if cert and key are not provided (rsa or ecda)
    disable_monitoring: false # disable /metrics endpoint
    http_metrics_per_tenant: false # enable http metrics per tenant
    disable_async_processing: false # disable async processing (streams,queue)
    # http security configuration (github.com/unrolled/secure)
    security:
        browserxssfilter: true
        contenttypenosniff: true
        forcestsheader: false
        framedeny: true
        isdevelopment: false
        sslredirect: true
        sslforcehost: false
        ssltemporaryredirect: false
        stsincludesubdomains: true
        stspreload: true
        contentsecuritypolicy: |
            default-src 'self';
            script-src 'self' $NONCE 'unsafe-eval';
            worker-src 'self' 'strict-dynamic' $NONCE;
            style-src 'self' 'unsafe-inline' https:;
            font-src 'self' https:;
            img-src 'self' data: https:;
            connect-src 'self' wss:;
            frame-src 'self' https://www.google.com;
        contentsecuritypolicyreportonly: ""
        custombrowserxssvalue: ""
        customframeoptionsvalue: SAMEORIGIN
        publickey: ""
        referrerpolicy: same-origin
        featurepolicy: ""
        permissionspolicy: accelerometer=(),camera=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),hid=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),usb=()
        crossoriginopenerpolicy: ""
        sslhost: ""
        allowedhosts: []
        allowedhostsareregex: false
        hostsproxyheaders:
            - X-Forwarded-Host
        sslproxyheaders:
            X-Forwarded-Proto: https
        stsseconds: 31536000
        expectctheader: ""
        securecontextkey: ""
    # cors configuration
    cors:
        allowedorigins:
            - '*'
        allowedheaders:
            - Content-Type
            - Authorization
            - If-Match
        allowedmethods:
            - GET
            - POST
            - PUT
            - DELETE
    # gateway authorizer packages
    packages:
        apigeeedge:
            file: /enforcement/apigee-edge-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        apigeex:
            file: /enforcement/apigee-x-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        aws:
            file: /enforcement/cloudentity-mp-aws-gw-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        istio:
            file: /enforcement/istio-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        kong:
            file: /enforcement/kong-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        kusk:
            file: /enforcement/standalone-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        pyron:
            file: /enforcement/pyron-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        standalone:
            file: /enforcement/standalone-authorizer.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
    # openbanking packages
    openbanking_packages:
        br:
            file: /packages/openbanking/openbanking-quickstart-br.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        cdr:
            file: /packages/openbanking/openbanking-quickstart-cdr.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        fdx:
            file: /packages/openbanking/openbanking-quickstart-fdx.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        generic:
            file: /packages/openbanking/openbanking-quickstart-generic.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
        uk:
            file: /packages/openbanking/openbanking-quickstart-uk.zip # path to package file
            url: "" # url to package
            username: "" # basic auth username for url
            password: "" # basic auth password for url
    templates_dir: ./web/templates # path to dir with templates
    static_dir: ./web/static # path to the dir with static files for templates
    app_static_dir: ./web/app/build/static # path to the dir with static files for react frontend app
    app_dir: ./web/app/build # path to the dir with react frontend app for acp
    swagger_dir: ./web/swagger # path to the dir with swagger ui
    swagger_path_template: ./api/handler/{{module}}.yaml # path to the swagger-{{module}}.yaml
    redirect_to_default_tenant: false # enable redirection to default tenant
    client_certificate_header: "" # default client http TLS certificate header name
    client_certificate_format_header: X-SSL-CERT-FORMAT # format of tls certificate injected as a header
    region: default # The name of the region in which this node is running
    # public path prefix for openbanking brazil endpoints
    obbr_base_paths: []
    # external integrations configuration e.g. hubspot
    integrations:
        # hubspot configuration
        hubspot:
            enabled: false # enabled
            script_src: "" # script source
        # Google Analytics configuration
        google_analytics:
            enabled: false # enabled
            measurement_id: "" # measurement id
        # Google Custom Search JSON API configuration
        google_images:
            api_key: "" # Google Custom Search JSON API key
            cx: "" # The identifier of the Google Programmable Search Engine.
    rate_limiting_threshold: 0 # fine grained rate limiting threshold in number of requests per second
    # licensing configuration
    licensing:
        default_license_type: trial # DefaultLicenseType is the default license type for new tenants
        default_license_duration: 1440h0m0s # DefaultLicenseDuration is the default license duration for new tenants
# sql encryption secret
secrets:
    - id: "1" # secret id
      key: FmIQrzqf7dT57SjVH3g52SEVx45WH9pE # secret key
# pbkdf2 secret hashing configuration
hashing:
    number_of_iterations: 4096 # number of iterations
    key_length: 128 # key length
    salt: WuD0izLakS24Uyft65JP # salt (at least 8 characters)
    function: SHA-512 # SHA-1, SHA-224, SHA-256, SHA-384 or SHA-512
# system tenant
system:
    secret: n8HF35qzZkmsukHJzzz9LnN8m9Mf97uq # system client secret
# limits
limits:
    max_number_of_client_rotated_secrets: 1 # max number of client rotated secrets
    # send otp per address global limit
    send_otp_limit:
        enabled: true # enable rate limiter
        period: 1m0s # period
        rate: 2 # rate
        burst: 1 # max burst
    # limits for admin websocket notifications
    notifications:
        audit_event: 3s
        scope_grants: 3s
    batch_size: 1000
# brute force limits
brute_force_limits:
    enabled: true
    mfa:
        max_attempts: 5
        block_duration: 1m0s
    client_authentication:
        max_attempts: 5
        block_duration: 1m0s
    device_handling:
        max_attempts: 5
        block_duration: 1m0s
    identity_code_inspect:
        max_attempts: 5
        block_duration: 1m0s
    identity_code_verify:
        max_attempts: 5
        block_duration: 1m0s
    identity_change_password:
        max_attempts: 5
        block_duration: 1m0s
    identity_confirm_password:
        max_attempts: 5
        block_duration: 1m0s
    identity_verify_password:
        max_attempts: 5
        block_duration: 1m0s
    identity_registration:
        max_attempts: 5
        block_duration: 1m0s
    identity_set_credential:
        max_attempts: 5
        block_duration: 1m0s
    identity_self_register:
        max_attempts: 5
        block_duration: 1m0s
    identity_activate_self_registered:
        max_attempts: 5
        block_duration: 1m0s
    identity_self_activation:
        max_attempts: 5
        block_duration: 1m0s
    identity_self_change_password:
        max_attempts: 5
        block_duration: 1m0s
    identity_authentication:
        max_attempts: 5
        block_duration: 1m0s
    identity_address_verification:
        max_attempts: 5
        block_duration: 1m0s
# feature flags
features:
    dev_mode: false # hot reloading of templates
    demo_app: false # demo app
    swagger_ui: false # swagger ui
    disable_embedded_sms_provider: false # disable embedded sms provider
    debug: false # enable additional debug logs
    block_non_vanity_domain_access: false # block access to a tenant's resources from traffic not originating from the tenant's vanity domain
    dedicated_faas: false # allow the usage of dedicated FaaS Rego/JS environments
    client_secrets_stored_as_one_way_hash: false # stores client secrets as one-way hashes
    admin_workspace_access: true # admin workspace access
    system_workspace_access: true # system workspace access
    insecure_disable_csrf: false # disable csrf
    insecure_token_exchange_public_clients: false # insecure token exchange public clients
    disable_audit_events: false # disable audit events
    cache_access_tokens: false # cache access tokens
    cdr_disable_unique_software_id: false # disable unique software id for CDR
    do_not_validate_cert_for_private_key_jwt: false # do not validate cert for private key jwt
    drop_tokens_on_password_reset: false # drop tokens on password reset
    initialize_demo_workspace: false # when enabled and the display_workspace_wizard feature flag is set to true, a demo workspace with a set of preconfigured IDPs is created and no welcome screen is displayed
    scope_transient_otp: false # scope transient_otp
    cloudentity_idp: false # Cloudentity IDP
    add_fake_tenant_url_to_login_request_for_non_default_routing: false # add fake tenantUrl to query params for routing other than default (needed for backward compatibility with CIP for vanity domains)
    rar: false # rich authorization requests
    connect_id: false # connectID profile
    identity_assurance: false # identity assurance
    connect_id_consent_page_face_lifting: false # connect ID consent page facelifting
    simple_api_integration: false # simple api integration
    openbanking_ksa: false # openbanking ksa workspace and security profile
    tree_dump_tenant: false # hierarchical dumps tenant APIs
    cdr_arrangement_cache: false # arrangement cache for CDR
    mark_address_as_verified_on_any_proof_of_possession: true # mark address as verified on any proof of possession of the address
    identity_pool_mfa: false # Identity Pool MFA
    cdr_amend_audit_event_with_previous_arrangement: false # add previous arrangement to CDR amend audit event
    saml_v2: false # Enable SAML V2
    jit_permissions: false # Enforce JIT users roles
    scripts_runtime_versions: false # Scripts runtime versions
    admin_portal_face_lifting: false # Admin portal face lifting
    permissions: false # Permissions
    roles: false # Roles
    organizations: false # Organizations
    identifier_based_discovery: false # Identifier-based discovery
    self_service: false # Self-service
# http client
client:
    timeout: 5s # http client timeout
    retry_wait_min: 10ms # minimum time to wait between retries
    retry_wait_max: 100ms # maximum time to wait between retries
    retry_max: 2 # maximum number of retries
    root_ca: "" # file path to the root ca that this client should trust (defaults to system root ca)
    root_ca_pem: "" # PEM encoded root ca  that this client should trust
    insecure_skip_verify: false # disable cert verification
    # client TLS configuration
    tls:
        certificate: "" # file path to the client certificate
        key: "" # file path to the client key
        certificate_pem: "" # client certificate PEM encoded
        key_pem: "" # client key PEM encoded
    disable_follow_redirects: false # disable follow redirects
    disable_retry: false # disable retry
# sql client
sql:
    url: postgres://root@crdb:26257/defaultdb?sslmode=disable # sql connection url
    type: "" # sql db type cockroachdb or postgresql
    # urls to replicas in master/slave mode
    replicas: []
    max_open_conns: 8 # max number of open connection
    max_idle_conns: 0 # max number of idle connection
    # migrations configuration
    migrations:
        disable: false # disable migrations
        path: ./migrations # path to the migrations
        timeout: 1m0s # timeout for running migrations
        down: false # DANGEROUS run all migrations down (removes all data from the database)
    with_cockroachdb_enterprise: false # turn on cockroachdb enterprise features
    # garbage collection ttl per table (default 24h)
    gc:
        audit_events: 1h6m40s
        refresh_tokens: 1h6m40s
    cockroachdb_use_limit_ordering_for_streaming_group_by: false # enable optimizer_use_limit_ordering_for_streaming_group_by feature flag for cockroachdb available from version 22.2.3
# timescale client
timescale:
    enabled: false # enable timescaledb
    url: postgres://postgres:password@timescale/acp?sslmode=disable # sql connection url
    # urls to replicas in master/slave mode
    replicas: []
    max_open_conns: 8 # max number of open connection
    max_idle_conns: 0 # max number of idle connection
    # migrations configuration
    migrations:
        disable: false # disable migrations
        path: ./migrations/timescale # path to the migrations
        timeout: 1m0s # timeout for running migrations
        down: false # DANGEROUS run all migrations down (removes all data from the database)
    data_retention: 2160h0m0s # data retention duration
# spicedb client for external permissions (permission systems)
spicedb:
    enabled: false # enable spicedb
    dry_run: false # turn off enforcement
    url: spicedb:50051 # spicedb endpoint url
    token: secret # bearer token
    ca: "" # path to the root ca
    insecure_skip_verify: false # skip tls verification
# spicedb client for internal permissions (roles)
internal_spicedb:
    enabled: false # enable spicedb
    dry_run: false # turn off enforcement
    url: internal-spicedb:50051 # spicedb endpoint url
    token: secret # bearer token
    ca: "" # path to the root ca
    insecure_skip_verify: false # skip tls verification
# redis client
redis:
    id: redis # redis database id
    region: local # region id
    scan_count: 100 # Number of entries fetched using SCAN
    push_limit: 1024 # at-least-once delivery queue push limit
    number_of_workers: 8 # number of workers for stream handlers
    # Either a single address or a seed list of host:port addresses
    addrs:
        - 127.0.0.1:6379
    db: 0 # Database to be selected after connecting to the server.
    master_name: "" # The sentinel master name.
    username: "" # username
    password: "" # password
    sentinel_password: "" # sentinel password
    max_retries: 3 # max retires
    min_retry_backoff: 8ms # min retry backoff
    max_retry_backoff: 512ms # max retry backoff
    dial_timeout: 5s # dial timeout
    read_timeout: 3s # read timeout
    write_timeout: 3s # write timeout
    pool_size: 0 # pool size
    min_idle_conns: 0 # min idle connections
    max_conn_age: 0s # max connection age
    pool_timeout: 4s # pool timeout
    idle_timeout: 5m0s # idle timeout
    idle_check_frequency: 1m0s # idle check frequency
    max_redirects: 3 # max redirects
    read_only: false # read only
    route_by_latency: false # route by latency
    route_randomly: false # route randomly
    # redis search indexes
    indexes:
        - name: tokens # redis search index name
          # redis search index prefixes
          prefix:
            - access_tokens
            - authorization_codes
            - device_codes
            - openid_tokens
            - pkce_sessions
            - refresh_tokens
            - authorize_requesters
          # redis search tags for index
          tags:
            - tenant_id
            - server_id
            - client_id
            - subject
            - token_type
            - collection
            - consent_id
            - consent_type
            - customer_id
            - sso_session_id
        - name: users # redis search index name
          # redis search index prefixes
          prefix:
            - users
            - user_identifiers
            - user_verified_addresses
            - user_codes
          # redis search tags for index
          tags:
            - tenant_id
            - pool_id
            - user_id
        - name: sessions # redis search index name
          # redis search index prefixes
          prefix:
            - sso_sessions
          # redis search tags for index
          tags:
            - tenant_id
            - server_id
            - subject
        - name: mfa_sessions # redis search index name
          # redis search index prefixes
          prefix:
            - mfa_sessions
          # redis search tags for index
          tags:
            - tenant_id
            - user_pool_id
            - user_id
    # redis streams configuration
    streams:
        max_length: 100000 # max length for streams
        max_ttl: 24h0m0s # max ttl for entries in streams
        trim_interval: 1m0s # trim max ttl interval
        disable_trim: false # disable trimming
        count: 128 # number of events to read from a stream
        block: 1s # duration until timeout
        handler_timeout: 30s # stream handler timeout
        stats_interval: 10s # streams stats interval
        # streams auto claim count
        auto_claim:
            interval: 1s # streams auto claim interval
            min_idle: 30s # streams auto claim min idle
            count: 100 # streams auto claim count
        sleep: 100ms # sleep between reads
        max_retries: 10 # max number of retries
        prefix: "" # redis stream name prefix
        auto_ack: false # automatically ack all messages when there is no error
        # etags configuration
        etag:
            duration: 1m0s # max duration to wait for confirmation
            size: 10000 # max size of confirmations queue
    # redis tls configuration
    tls:
        enabled: false # enable tls
        cert: "" # path to the public key cert PEM file
        key: "" # path to the private key PEM file
        ca: "" # path to the root ca PEM file
        insecure_skip_verify: false # skip host name verification
    max_backoff_retries: 5 # constant backoff max number of retries
    backoff_duration: 10ms # constant backoff duration
    # consumer group configuration - option to override global settings for a given consumer group
    consumer_groups:
        analytics:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 0 # count of messages in a singe batch, 0 for default size
            max_retries: -1
        audit_logs_timescale:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 200 # count of messages in a singe batch, 0 for default size
            max_retries: -1
        gateway:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 100 # count of messages in a singe batch, 0 for default size
            max_retries: 0
        identity_cleanup:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 1 # count of messages in a singe batch, 0 for default size
            max_retries: 0
# optional local redis client (uses redis client configuration if addrs is empty)
local_redis:
    id: local-redis # redis database id
    region: local # region id
    scan_count: 100 # Number of entries fetched using SCAN
    push_limit: 1024 # at-least-once delivery queue push limit
    number_of_workers: 8 # number of workers for stream handlers
    # Either a single address or a seed list of host:port addresses
    addrs: []
    db: 0 # Database to be selected after connecting to the server.
    master_name: "" # The sentinel master name.
    username: "" # username
    password: "" # password
    sentinel_password: "" # sentinel password
    max_retries: 3 # max retires
    min_retry_backoff: 8ms # min retry backoff
    max_retry_backoff: 512ms # max retry backoff
    dial_timeout: 5s # dial timeout
    read_timeout: 3s # read timeout
    write_timeout: 3s # write timeout
    pool_size: 0 # pool size
    min_idle_conns: 0 # min idle connections
    max_conn_age: 0s # max connection age
    pool_timeout: 4s # pool timeout
    idle_timeout: 5m0s # idle timeout
    idle_check_frequency: 1m0s # idle check frequency
    max_redirects: 3 # max redirects
    read_only: false # read only
    route_by_latency: false # route by latency
    route_randomly: false # route randomly
    # redis search indexes
    indexes:
        - name: tokens # redis search index name
          # redis search index prefixes
          prefix:
            - access_tokens
            - authorization_codes
            - device_codes
            - openid_tokens
            - pkce_sessions
            - refresh_tokens
            - authorize_requesters
          # redis search tags for index
          tags:
            - tenant_id
            - server_id
            - client_id
            - subject
            - token_type
            - collection
            - consent_id
            - consent_type
            - customer_id
            - sso_session_id
        - name: users # redis search index name
          # redis search index prefixes
          prefix:
            - users
            - user_identifiers
            - user_verified_addresses
            - user_codes
          # redis search tags for index
          tags:
            - tenant_id
            - pool_id
            - user_id
        - name: sessions # redis search index name
          # redis search index prefixes
          prefix:
            - sso_sessions
          # redis search tags for index
          tags:
            - tenant_id
            - server_id
            - subject
        - name: mfa_sessions # redis search index name
          # redis search index prefixes
          prefix:
            - mfa_sessions
          # redis search tags for index
          tags:
            - tenant_id
            - user_pool_id
            - user_id
    # redis streams configuration
    streams:
        max_length: 100000 # max length for streams
        max_ttl: 24h0m0s # max ttl for entries in streams
        trim_interval: 1m0s # trim max ttl interval
        disable_trim: false # disable trimming
        count: 128 # number of events to read from a stream
        block: 1s # duration until timeout
        handler_timeout: 30s # stream handler timeout
        stats_interval: 10s # streams stats interval
        # streams auto claim count
        auto_claim:
            interval: 1s # streams auto claim interval
            min_idle: 30s # streams auto claim min idle
            count: 100 # streams auto claim count
        sleep: 100ms # sleep between reads
        max_retries: 10 # max number of retries
        prefix: "" # redis stream name prefix
        auto_ack: false # automatically ack all messages when there is no error
        # etags configuration
        etag:
            duration: 1m0s # max duration to wait for confirmation
            size: 10000 # max size of confirmations queue
    # redis tls configuration
    tls:
        enabled: false # enable tls
        cert: "" # path to the public key cert PEM file
        key: "" # path to the private key PEM file
        ca: "" # path to the root ca PEM file
        insecure_skip_verify: false # skip host name verification
    max_backoff_retries: 5 # constant backoff max number of retries
    backoff_duration: 10ms # constant backoff duration
    # consumer group configuration - option to override global settings for a given consumer group
    consumer_groups:
        analytics:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 0 # count of messages in a singe batch, 0 for default size
            max_retries: -1
        audit_logs_timescale:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 200 # count of messages in a singe batch, 0 for default size
            max_retries: -1
        gateway:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 100 # count of messages in a singe batch, 0 for default size
            max_retries: 0
        identity_cleanup:
            timeout: 0s # timeout for all handlers in a given consumer group, 0 for default timeout
            batch_size: 1 # count of messages in a singe batch, 0 for default size
            max_retries: 0
# sql queue
queue:
    disabled: false # disable queue worker pool
    tenant_id: "" # Limit sql queue handler to a single tenant
    count: 1 # number of pool workers
    limit: 10 # poll limit
    heartbeat_interval: 30s # heartbeat interval
    expiration_interval: 1m0s # expiration interval
    polling_interval: 1s # polling interval
    max_backoff: 10s # max backoff
    error_limit: 0.1 # error rate limit
# storage config
storage:
    # refresh tokens storage configuration
    refresh_tokens:
        enabled: true # enable storing refresh tokens in sql, stored in kv if false
        batch_limit: 1000 # refresh token batch delete limit
    # expired consents storage configuration
    consents:
        batch_limit: 1000 # expired consents batch delete limit
    # audit events strorage configuration
    audit_events:
        enabled: true # enable storing audit events in sql
        # audit events retention config
        retention:
            enabled: true # enable audit events retention
            global: true # when true, audit events retention is executed globally, not per tenant
            batch_limit: 1000 # audit events retention batch delete limit
            max_age: 168h0m0s # remove audit events older than max age
# recurring jobs
jobs:
    auditEventsRetention:
        tenant_id: system # tenant id
        id: auditEventsRetention # job id
        queue: execute_retention # queue name
        cron: 15 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    cdrExpiredArrangements:
        tenant_id: system # tenant id
        id: cdrExpiredArrangements # job id
        queue: openbanking_set_expired_cdr_arrangements # queue name
        cron: 0 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    cdrSyncRegisters:
        tenant_id: system # tenant id
        id: cdrSyncRegisters # job id
        queue: openbanking_cdr_sync_registers # queue name
        cron: '*/4 * * * *' # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    cibaSimulatorExpiredAuthentications:
        tenant_id: system # tenant id
        id: cibaSimulatorExpiredAuthentications # job id
        queue: ciba_simulator_remove_expired_authentications # queue name
        cron: '*/1 * * * *' # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    expiredTokens:
        tenant_id: system # tenant id
        id: expiredTokens # job id
        queue: remove_expired_refresh_tokens # queue name
        cron: 0 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    fdxExpiredConsents:
        tenant_id: system # tenant id
        id: fdxExpiredConsents # job id
        queue: openbanking_set_expired_fdx_consents # queue name
        cron: 0 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    identityStats:
        tenant_id: system # tenant id
        id: identityStats # job id
        queue: identity_stats # queue name
        cron: 45 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    openbankingExpiredConsents:
        tenant_id: system # tenant id
        id: openbankingExpiredConsents # job id
        queue: openbanking_remove_expired_consents # queue name
        cron: 0 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
    openbankingOrphanedConsents:
        tenant_id: system # tenant id
        id: openbankingOrphanedConsents # job id
        queue: openbanking_remove_orphaned_consents # queue name
        cron: 0 * * * * # cron expression
        # next execution time
        scheduled_at: {}
        # job starting from
        starting_from: {}
        paused: false # is paused
        payload: null # payload
# lru cache
cache:
    redis_ttl: 10m0s
    local_ttl: 1m0s
    local_max_size: 1000
    locks: 256
    disabled: false
# stats cache
stats:
    redis_ttl: 1m0s
    local_ttl: 10s
    local_max_size: 1000
    locks: 0
    disabled: false
# themes cache
themes_cache:
    redis_ttl: 1h0m0s
    local_ttl: 10m0s
    local_max_size: 100
    locks: 0
    disabled: false
# demo apps
demo:
    client:
        root_ca: /certs/ca.pem
        cert: /certs/cid2/cert.pem
        key: /certs/cid2/cert-key.pem
        client_id: cid2
        client_secret: xYA0YnXldHNNjgWBjXGr5xBzIjf8PW-jXWkdZZ_l0WB
        scopes:
            - introspect_openbanking_tokens
    directory:
        redirect_uris:
            - https://fapi-test:8444/test/a/JarmByValuePrivateKeyJwtPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmByValuePrivateKeyJwtPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponseByValuePrivateKeyJwtPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponseByValuePrivateKeyJwtPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponsePushedPrivateKeyJwtPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponsePushedPrivateKeyJwtPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmPushedPrivateKeyJwtPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmPushedPrivateKeyJwtPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponseByValueMtlsPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponseByValueMtlsPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmByValueMtlsPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmByValueMtlsPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponsePushedMtlsPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponsePushedMtlsPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmPushedMtlsPaymentsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmPushedMtlsPaymentsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponseByValueMtlsAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponseByValueMtlsAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmByValueMtlsAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmByValueMtlsAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponsePushedMtlsAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponsePushedMtlsAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmPushedMtlsAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmPushedMtlsAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmPushedPrivateKeyJwtAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmPushedPrivateKeyJwtAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponsePushedPrivateKeyJwtAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponsePushedPrivateKeyJwtAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponseByValuePrivateKeyJwtAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponseByValuePrivateKeyJwtAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmByValuePrivateKeyJwtAccountsObbrDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmByValuePrivateKeyJwtAccountsObbrDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmByValuePrivateKeyJwtOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmByValuePrivateKeyJwtOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponseByValuePrivateKeyJwtOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponseByValuePrivateKeyJwtOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponsePushedPrivateKeyJwtOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponsePushedPrivateKeyJwtOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmPushedPrivateKeyJwtOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmPushedPrivateKeyJwtOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponseByValueMtlsOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponseByValueMtlsOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmByValueMtlsOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmByValueMtlsOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/PlainResponsePushedMtlsOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/PlainResponsePushedMtlsOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://fapi-test:8444/test/a/JarmPushedMtlsOpinDcrFapiTests/callback
            - https://fapi-test:8444/test/a/JarmPushedMtlsOpinDcrFapiTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtWithoutBrowserDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtWithoutBrowserDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmByValueMtlsDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmByValueMtlsDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponseByValueMtlsDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponseByValueMtlsDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmPushedMtlsDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmPushedMtlsDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponsePushedMtlsDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponsePushedMtlsDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmByValuePrivateKeyJwtDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmByValuePrivateKeyJwtDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmPushedPrivateKeyJwtDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmPushedPrivateKeyJwtDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponsePushedPrivateKeyJwtDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponsePushedPrivateKeyJwtDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtWithoutBrowserWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtWithoutBrowserWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmByValueMtlsWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmByValueMtlsWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponseByValueMtlsWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponseByValueMtlsWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmPushedMtlsWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmPushedMtlsWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponsePushedMtlsWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponsePushedMtlsWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmByValuePrivateKeyJwtWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmByValuePrivateKeyJwtWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponseByValuePrivateKeyJwtWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/JarmPushedPrivateKeyJwtWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/JarmPushedPrivateKeyJwtWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponsePushedPrivateKeyJwtWebhookDcrObbrTests/callback
            - https://obbr-test:8445/test/a/PlainResponsePushedPrivateKeyJwtWebhookDcrObbrTests/callback?dummy1=lorem&dummy2=ipsum
            - https://obbr-test:8445/test/a/PlainResponsePushedPrivateKeyJwtAutomaticPaymentsWebhookObbrTests/callback
        webhook_hosts:
            - https://obbr-test-mtls:8445/test-mtls/a/PlainResponseByValuePrivateKeyJwtWithoutBrowserWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/JarmByValueMtlsWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/PlainResponseByValueMtlsWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/JarmPushedMtlsWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/PlainResponsePushedMtlsWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/JarmByValuePrivateKeyJwtWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/PlainResponseByValuePrivateKeyJwtWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/JarmPushedPrivateKeyJwtWebhookDcrObbrTests
            - https://obbr-test-mtls:8445/test-mtls/a/PlainResponsePushedPrivateKeyJwtWebhookDcrObbrTests
# faas provider
faas:
    provider: ""
    # Available node executor env versions (sorted from oldest to the newest).
    node_env_versions:
        - version: "4" # Environment version
          valid_until: ""
          # Nodejs package json
          package_json:
            # NodeJS dependencies
            dependencies:
                async: 3.2.3
                async-lock: 1.4.0
                aws-sdk: 2.1404.0
                axios: 0.25.0
                axios-retry: 3.8.0
                body-parser: 1.19.2
                chalk: 5.0.0
                co: 4.6.0
                debug: 4.3.3
                express: 4.17.3
                express-timeout-handler: ^2.2.2
                graphql: 16.8.1
                immutable: 4.0.0
                invariant: 2.2.4
                js-yaml: 4.1.0
                jsonwebtoken: 8.5.1
                ldapjs: 2.3.1
                lodash: 4.17.21
                log4js: 6.4.1
                lru_map: 0.4.1
                minimist: 1.2.6
                mongodb: 5.9.2
                mongoose: 7.6.8
                morgan: 1.10.0
                mysql: 2.18.1
                mz: 2.7.0
                node-fetch: 3.3.2
                qs: 6.10.3
                ramda: 0.28.0
                request: 2.88.2
                request-promise-native: 1.0.9
                rxjs: 7.5.4
                uglify-js: 3.15.1
                underscore: 1.13.2
                uuid: 8.3.2
                validator: 13.7.0
                ws: 8.5.0
                xml2js: 0.5.0
            # NodeJS engine version
            engines:
                node: v16 # NodeJS engine version
        - version: "5" # Environment version
          valid_until: ""
          # Nodejs package json
          package_json:
            # NodeJS dependencies
            dependencies:
                async: 3.2.5
                async-lock: 1.4.1
                aws-sdk: 2.1541.0
                axios: 1.6.5
                axios-retry: 4.0.0
                body-parser: 1.20.2
                chalk: 5.3.0
                co: 4.6.0
                debug: 4.3.4
                express: 4.18.2
                express-timeout-handler: 2.2.2
                graphql: 16.8.1
                immutable: 4.3.4
                invariant: 2.2.4
                js-yaml: 4.1.0
                jsonwebtoken: 9.0.2
                ldapjs: 3.0.7
                lodash: 4.17.21
                log4js: 6.9.1
                lru_map: 0.4.1
                minimist: 1.2.8
                mongodb: 6.3.0
                mongoose: 8.1.0
                morgan: 1.10.0
                mysql: 2.18.1
                mz: 2.7.0
                node-fetch: 3.3.2
                qs: 6.11.2
                ramda: 0.29.1
                rxjs: 7.8.1
                uglify-js: 3.17.4
                underscore: 1.13.6
                uuid: 9.0.1
                validator: 13.11.0
                ws: 8.16.0
                xml2js: 0.6.2
            # NodeJS engine version
            engines:
                node: v18 # NodeJS engine version
    # Available rego executor env versions (sorted from oldest to the newest).
    rego_env_versions:
        - version: "5" # Environment version
          valid_until: ""
          package_json: null # Nodejs package json
# fission function as a service provider
fission:
    namespace: acp-faas # Kubernetes namespace where functions should be created
    # Runtime configuration for runtime v1
    envs:
        js: nodejs # Name of the fission environment for JS
        rego: rego # Name of the fission environment for Rego
    # Runtime configuration for runtime v2
    envs_v2:
        js: nodejs-v2 # Name of the fission environment for JS
        rego: rego-v2 # Name of the fission environment for Rego
    url: http://router.fission # URL to the fission router
    max_backoff_retries: 3 # Max backoff retries in case of 404 error
    package_template: |- # k8s package template
        apiVersion: fission.io/v1
        kind: Package
        metadata:
          name: {{ .ID }}
          namespace: {{ .Namespace }}
        spec:
          deployment:
            literal: {{ .Base64EncodedBody }}
            type: literal
          environment:
            name: {{ .Env }}
            namespace: {{ .Namespace }}
        status:
          buildstatus: succeeded
    function_template: |- # k8s function template
        apiVersion: fission.io/v1
        kind: Function
        metadata:
          name: {{ .ID  }}
          namespace: {{ .Namespace }}
        spec:
          InvokeStrategy:
            ExecutionStrategy:
              ExecutorType: poolmgr
              SpecializationTimeout: 30
            StrategyType: execution
          concurrency:  {{ .MaxPodsCount }}
          requestsPerPod: {{ .MaxRequestsPerPod }}
          environment:
            name: {{ .Env }}
            namespace: {{ .Namespace }}
          functionTimeout:  {{ .ExecutionTimeout }}
          idletimeout: {{ .IdleTimeout }}
          package:
            packageref:
              name: {{ .ID }}
              namespace: {{ .Namespace }}
              resourceversion: "{{ .ResourceVersion }}"
    # kube config
    kube:
        timeout: 0s
        kubeconfig: ""
    max_pod_age: 0s # max pod age - set 0 to unlimited
    # function settings
    function_settings:
        execution_timeout: 30s # max function execution time
        idle_timeout: 1m0s # max function idle duration
        max_pods_count: 2 # maximum pod count number
        max_requests_per_pod: 5000 # maximum numer of requests per pod
    # fission resource watcher configuration
    resource_watcher:
        interval: 1m0s # how often check for aged resources
        timeout: 10s # check timeout
# docker function as a service provider
docker:
    node_url: http://node-env:8888
    rego_url: http://rego-env:8888
    shared_node_url: http://node-env:8888
    shared_rego_url: http://rego-env:8888
# opentelemetry configuration
otel:
    service_name: acp # service name
    exporter: jaeger # opentelemetry exporter (jaeger or otlp)
    # enabled propagators (b3, baggage, tracecontext, ottrace, jaeger)
    propagators:
        - jaeger
    # jaeger opentelemetry exporter
    jaeger:
        agent_host: localhost # agent host
        agent_port: "6831" # agent port
        header: uber-trace-id # header name
    # opentelemetry protocol exporter
    otlp:
        endpoint: localhost:4318 # otlp endpoint
        path: /v1/traces # otlp path
        root_ca: "" # otlp root ca
        # additional headers
        headers: {}
        insecure_skip_verify: false # disable cert verification
        insecure_http: false # use http instead of https
# consul client https://github.com/hashicorp/consul/blob/master/api/api.go
consul:
    address: 127.0.0.1:8500
    scheme: http
    pathprefix: ""
    datacenter: ""
    transport: null
    httpclient: null
    httpauth: null
    waittime: 0s
    token: ""
    tokenfile: ""
    namespace: ""
    partition: ""
    tlsconfig:
        address: ""
        cafile: ""
        capath: ""
        capem: []
        certfile: ""
        certpem: []
        keyfile: ""
        keypem: []
        insecureskipverify: false
# vault client
vault:
    address: "" # Address is the address of the Vault server.
    agent_address: "" # AgentAddress is the address of the local Vault agent.
    max_retries: 0 # MaxRetries controls the maximum number of times to retry when a 5xx error occurs.
    timeout: 0s # Timeout is for setting custom timeout parameter in the HttpClient
    token: "" # Access token
    # TLSConfig contains the parameters needed to configure TLS on the HTTP client used to communicate with Vault.
    tls:
        cacert: ""
        cacertbytes: []
        capath: ""
        clientcert: ""
        clientkey: ""
        tlsservername: ""
        insecure: false
    # Authentication
    auth:
        approle:
            roleid: ""
            secretid: ""
# embedded smtp gateway configuration
email:
    from: Cloudentity  # From address
    username: "" # Username
    password: "" # Password
    auth: PLAIN
    host: smtp.gmail.com # SMTP server host
    port: 25 # SMTP server port
    timeout: 10s # Timeout
    start_tls: false # Send an email over TLS using STARTTLS
    insecure_skip_verify: false # Skip TLS cert verification
# embedded twilio gateway configuration
sms:
    from: Cloudentity # From number
    sid: "" # The Twilio Account SID
    auth_token: "" # The Twilio Auth Token
# messaging config
messaging:
    # email templates
    emails:
        # verify otp
        otp:
            subject: OTP # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: Dear Customer, [[otp]] is your single-use verification code. # Text template used if tile template is not set
            message_template: | # Default message template
                
We've received a OTP Code request.

                
[[otp]]

                
Here is the OTP code that you have requested.

            # Email's attachments
            attachments: []
        # activate account with code
        activate_account_with_code:
            subject: Account activation # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: "" # Text template used if tile template is not set
            message_template: | # Default message template
                

                Excellent!
                 Your account is almost ready.
                

                
Enter the code below on the account activation page to activate you account.

                
[[code]]

            # Email's attachments
            attachments: []
        # activate account with link
        activate_account_with_link:
            subject: Account activation # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: "" # Text template used if tile template is not set
            message_template: | # Default message template
                

                Excellent!
                 Your account is almost ready.
                

                
Just one more step to access it

                

                	Activate account
                

                

                Alternatively, copy this link and follow it in your browser
                
[[link]]

                

            # Email's attachments
            attachments: []
        # reset credentials with code
        reset_credentials_with_code:
            subject: Credentials reset # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: "" # Text template used if tile template is not set
            message_template: | # Default message template
                
Credentials reset

                

                We've received a request to reset your credentials.

                Your credentials reset code is:
                

                
[[code]]

            # Email's attachments
            attachments: []
        # reset credentials with link
        reset_credentials_with_link:
            subject: Credentials reset # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: "" # Text template used if tile template is not set
            message_template: | # Default message template
                
Credentials reset

                
We've received a request to reset your credentials.

                

                	Reset credentials
                

                

                Alternatively, copy this link and follow it in your browser
                
[[link]]

                

            # Email's attachments
            attachments: []
        # identifier used
        identifier_used:
            subject: Account already exists # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: "" # Text template used if tile template is not set
            message_template: | # Default message template
                
Account already exists

                
The email you provided is already registered with an account.

            # Email's attachments
            attachments: []
        # address verification with link
        address_verification_with_link:
            subject: Address verification # Email's subject
            file_template: ./web/emails/ce.html # Path to the file template
            text_template: "" # Text template used if tile template is not set
            message_template: | # Default message template
                
Address verification

                
We've received a request to verify your address.

                

                	Verify address
                

                

                Alternatively, copy this link and follow it in your browser
                
[[link]]

                

            # Email's attachments
            attachments: []
    # sms templates
    smses:
        # verify otp
        otp:
            message_template: Dear Customer, [[otp]] is your single-use verification code. # Message template
        # activate account with code
        activate_account_with_code:
            message_template: Dear Customer, use [[code]] to activate your account. # Message template
        # activate account with code
        activate_account_with_link:
            message_template: 'Dear Customer, use the link to activate your account: [[link]]' # Message template
        # reset credentials with code
        reset_credentials_with_code:
            message_template: Dear Customer, use [[code]] to reset your credentials. # Message template
        # reset credentials with code
        reset_credentials_with_link:
            message_template: 'Dear Customer, use the link to reset your credentials: [[link]]' # Message template
        # identifier used
        identifier_used:
            message_template: Dear Customer, this number is associated with an existing account. # Message template
        # address verification with link
        address_verification_with_link:
            message_template: 'Dear Customer, use the link to verify your address: [[link]]' # Message template
# embedded IDPs
embedded_idps:
    cookie_domain: "" # cookie domain
    # github idp
    github:
        client_id: "" # client id
        client_secret: "" # client secret
    # google idp
    google:
        client_id: "" # client id
        client_secret: "" # client secret
# global rate limits
rate_limits:
    oauth2:
        enabled: false # enable rate limiter
        period: 1m0s # period
        rate: 60 # rate
        burst: 10 # max burst
# rate limits cache
rate_limits_cache:
    redis_ttl: 1h0m0s
    local_ttl: 10m0s
    local_max_size: 1000
    locks: 0
    disabled: false
# token exchange verifier
token_exchange_verifier:
    idp_client_timeout: 5s # http client timeout when calling IDP endpoints
# subject config
subject:
    default_format: legacy # subject default format for new workspaces
# identity pools captcha configuration
captcha:
    enabled: false
    site_key: 6LdPYcYeAAAAAF5f6K9Pv5jkPEDFsOtfkwxP2a5k
    secret_key: 6LdPYcYeAAAAACiRY1ZG2iSPsHXOhYSaqTO_Ycqz
    whitelist: []
# Limits for asynchronous delete of Identity Pools
async_delete_identity_pool:
    delete_users_batch_size: 100
    delete_users_iterations_count: 30
create_tenant_with_default_admin_identity_pool: true # Default Admin Identity Pool IDP for new tenant