Full Code of ory/kratos for AI

master 82d9700311a6 cached
7814 files
15.4 MB
4.6M tokens
17522 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (18,078K chars total). Download the full file to get everything.
Repository: ory/kratos
Branch: master
Commit: 82d9700311a6
Files: 7814
Total size: 15.4 MB

Directory structure:
gitextract_41u59ogb/

├── .docker/
│   ├── Dockerfile-alpine
│   ├── Dockerfile-build
│   ├── Dockerfile-debug
│   ├── Dockerfile-distroless-static
│   └── docker-compose.template.dbg
├── .dockerignore
├── .editorconfig
├── .github/
│   ├── CODEOWNERS
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── BUG-REPORT.yml
│   │   ├── DESIGN-DOC.yml
│   │   ├── FEATURE-REQUEST.yml
│   │   └── config.yml
│   ├── auto_assign.yml
│   ├── codeql/
│   │   └── codeql-config.yml
│   ├── config.yml
│   ├── conventional_commits.json
│   ├── labels.json
│   ├── pull_request_template.md
│   └── workflows/
│       ├── ci.yaml
│       ├── closed_references.yml
│       ├── codeql-analysis.yml
│       ├── conventional_commits.yml
│       ├── cve-scan.yaml
│       ├── format.yml
│       ├── labels.yml
│       ├── milestone.yml
│       ├── pm.yml
│       └── stale.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yml
├── .grype.yaml
├── .mailmap
├── .nancy-ignore
├── .nvmrc
├── .orycli.yml
├── .prettierignore
├── .reference-ignore
├── .reports/
│   └── dep-licenses.csv
├── .schema/
│   ├── api.openapi.json
│   ├── openapi/
│   │   ├── gen.go.yml
│   │   ├── gen.typescript.yml
│   │   └── patches/
│   │       ├── common.yaml
│   │       ├── courier.yaml
│   │       ├── generic_error.yaml
│   │       ├── identity.yaml
│   │       ├── meta.yaml
│   │       ├── nulls.yaml
│   │       ├── schema.yaml
│   │       ├── security.yaml
│   │       ├── selfservice.yaml
│   │       └── session.yaml
│   ├── openapi.json
│   └── version.schema.json
├── .schemastore/
│   ├── README.md
│   └── config.schema.json
├── .trivyignore
├── .vscode/
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── AUTHORS
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOP.md
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── anonymous_sessions.md
├── buf.gen.yaml
├── buf.yaml
├── cipher/
│   ├── aes.go
│   ├── chacha20.go
│   ├── cipher.go
│   ├── cipher_test.go
│   └── noop.go
├── cmd/
│   ├── cleanup/
│   │   ├── root.go
│   │   ├── sql.go
│   │   └── sql_test.go
│   ├── cliclient/
│   │   ├── cleanup.go
│   │   ├── client.go
│   │   └── migrate.go
│   ├── clidoc/
│   │   ├── main.go
│   │   └── main_test.go
│   ├── courier/
│   │   ├── root.go
│   │   ├── watch.go
│   │   └── watch_test.go
│   ├── daemon/
│   │   ├── serve.go
│   │   └── serve_test.go
│   ├── hashers/
│   │   ├── argon2/
│   │   │   ├── calibrate.go
│   │   │   ├── hash.go
│   │   │   ├── loadtest.go
│   │   │   └── root.go
│   │   └── root.go
│   ├── identities/
│   │   ├── definitions.go
│   │   ├── delete.go
│   │   ├── delete_test.go
│   │   ├── get.go
│   │   ├── get_test.go
│   │   ├── helpers.go
│   │   ├── helpers_test.go
│   │   ├── import.go
│   │   ├── import_test.go
│   │   ├── list.go
│   │   ├── list_test.go
│   │   ├── stubs/
│   │   │   └── identity.schema.json
│   │   ├── validate.go
│   │   └── validate_test.go
│   ├── jsonnet/
│   │   ├── format.go
│   │   ├── lint.go
│   │   └── root.go
│   ├── migrate/
│   │   ├── root.go
│   │   └── sql.go
│   ├── remote/
│   │   ├── root.go
│   │   ├── status.go
│   │   └── version.go
│   ├── root.go
│   ├── root_test.go
│   └── serve/
│       ├── root.go
│       ├── root_test.go
│       └── stub/
│           ├── identity.schema.json
│           └── kratos.yml
├── codecov.yml
├── continuity/
│   ├── container.go
│   ├── container_test.go
│   ├── manager.go
│   ├── manager_cookie.go
│   ├── manager_options_test.go
│   ├── manager_test.go
│   ├── persistence.go
│   └── test/
│       └── persistence.go
├── contrib/
│   └── quickstart/
│       ├── .dockerignore
│       ├── kratos/
│       │   ├── all-strategies/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   ├── cloud/
│       │   │   ├── Caddyfile
│       │   │   ├── identity.schema.json
│       │   │   ├── kratos.yml
│       │   │   └── quickstart.yml
│       │   ├── email-password/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   ├── passkey/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   ├── phone-password/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   └── webauthn/
│       │       ├── identity.schema.json
│       │       └── kratos.yml
│       └── oathkeeper/
│           ├── access-rules.yml
│           ├── id_token.jwks.json
│           └── oathkeeper.yml
├── corpx/
│   └── faker.go
├── courier/
│   ├── .snapshots/
│   │   ├── TestHandler-handler=getCourierMessage-case=returns_an_error_if_no_message_is_found-endpoint=admin.json
│   │   ├── TestHandler-handler=getCourierMessage-case=returns_an_error_if_no_message_is_found-endpoint=public.json
│   │   ├── TestHandler-handler=getCourierMessage-case=returns_an_error_if_parameter_is_malformed-endpoint=admin.json
│   │   └── TestHandler-handler=getCourierMessage-case=returns_an_error_if_parameter_is_malformed-endpoint=public.json
│   ├── channel.go
│   ├── courier.go
│   ├── courier_dispatcher.go
│   ├── courier_dispatcher_test.go
│   ├── email_templates.go
│   ├── email_templates_test.go
│   ├── handler.go
│   ├── handler_test.go
│   ├── http_channel.go
│   ├── http_test.go
│   ├── message.go
│   ├── message_dispatch.go
│   ├── message_test.go
│   ├── persistence.go
│   ├── sms.go
│   ├── sms_templates.go
│   ├── sms_templates_test.go
│   ├── sms_test.go
│   ├── smtp.go
│   ├── smtp_channel.go
│   ├── smtp_test.go
│   ├── stub/
│   │   ├── request.config.mailer.jsonnet
│   │   └── request.config.twilio.jsonnet
│   ├── template/
│   │   ├── courier/
│   │   │   └── builtin/
│   │   │       └── templates/
│   │   │           ├── login_code/
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       ├── email.subject.gotmpl
│   │   │           │       └── sms.body.gotmpl
│   │   │           ├── otp/
│   │   │           │   └── sms.body.gotmpl
│   │   │           ├── recovery/
│   │   │           │   ├── invalid/
│   │   │           │   │   ├── email.body.gotmpl
│   │   │           │   │   ├── email.body.plaintext.gotmpl
│   │   │           │   │   └── email.subject.gotmpl
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       └── email.subject.gotmpl
│   │   │           ├── recovery_code/
│   │   │           │   ├── invalid/
│   │   │           │   │   ├── email.body.gotmpl
│   │   │           │   │   ├── email.body.plaintext.gotmpl
│   │   │           │   │   └── email.subject.gotmpl
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       ├── email.subject.gotmpl
│   │   │           │       └── sms.body.gotmpl
│   │   │           ├── registration_code/
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       ├── email.subject.gotmpl
│   │   │           │       └── sms.body.gotmpl
│   │   │           ├── test_stub/
│   │   │           │   ├── email.body.gotmpl
│   │   │           │   ├── email.body.html.en_US.gotmpl
│   │   │           │   ├── email.body.html.gotmpl
│   │   │           │   ├── email.body.plaintext.gotmpl
│   │   │           │   ├── email.body.sprig.gotmpl
│   │   │           │   └── email.subject.gotmpl
│   │   │           ├── verification/
│   │   │           │   ├── invalid/
│   │   │           │   │   ├── email.body.gotmpl
│   │   │           │   │   ├── email.body.plaintext.gotmpl
│   │   │           │   │   └── email.subject.gotmpl
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       └── email.subject.gotmpl
│   │   │           └── verification_code/
│   │   │               ├── invalid/
│   │   │               │   ├── email.body.gotmpl
│   │   │               │   ├── email.body.plaintext.gotmpl
│   │   │               │   └── email.subject.gotmpl
│   │   │               └── valid/
│   │   │                   ├── email.body.gotmpl
│   │   │                   ├── email.body.plaintext.gotmpl
│   │   │                   ├── email.subject.gotmpl
│   │   │                   └── sms.body.gotmpl
│   │   ├── email/
│   │   │   ├── login_code_valid.go
│   │   │   ├── login_code_valid_test.go
│   │   │   ├── recovery_code_invalid.go
│   │   │   ├── recovery_code_invalid_test.go
│   │   │   ├── recovery_code_valid.go
│   │   │   ├── recovery_code_valid_test.go
│   │   │   ├── recovery_invalid.go
│   │   │   ├── recovery_invalid_test.go
│   │   │   ├── recovery_valid.go
│   │   │   ├── recovery_valid_test.go
│   │   │   ├── registration_code_valid.go
│   │   │   ├── registration_code_valid_test.go
│   │   │   ├── stub.go
│   │   │   ├── verification_code_invalid.go
│   │   │   ├── verification_code_invalid_test.go
│   │   │   ├── verification_code_valid.go
│   │   │   ├── verification_code_valid_test.go
│   │   │   ├── verification_invalid.go
│   │   │   ├── verification_invalid_test.go
│   │   │   ├── verification_valid.go
│   │   │   └── verification_valid_test.go
│   │   ├── load_template.go
│   │   ├── load_template_test.go
│   │   ├── sms/
│   │   │   ├── login_code_valid.go
│   │   │   ├── login_code_valid_test.go
│   │   │   ├── recovery_code.go
│   │   │   ├── registration_code_valid.go
│   │   │   ├── registration_code_valid_test.go
│   │   │   ├── stub.go
│   │   │   ├── verification_code.go
│   │   │   └── verification_code_test.go
│   │   ├── template.go
│   │   ├── testhelpers/
│   │   │   └── testhelpers.go
│   │   └── type.go
│   └── test/
│       └── persistence.go
├── docs/
│   ├── README.md
│   └── sidebar.json
├── driver/
│   ├── config/
│   │   ├── .snapshots/
│   │   │   ├── TestCourierEmailHTTP-case=configs_set.json
│   │   │   ├── TestCourierSMS-case=configs_set.json
│   │   │   ├── TestCourierSMS-case=defaults.json
│   │   │   └── TestDefaultWebhookHeaderAllowlist.json
│   │   ├── buildinfo.go
│   │   ├── config.go
│   │   ├── config_test.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   └── stub/
│   │       ├── .defaults-password.yml
│   │       ├── .defaults-verification.yml
│   │       ├── .defaults.yml
│   │       ├── .identity.invalid.json
│   │       ├── .identity.other.json
│   │       ├── .identity.test.json
│   │       ├── .kratos.courier.channels.yaml
│   │       ├── .kratos.courier.email.http.yaml
│   │       ├── .kratos.courier.message_retries.yaml
│   │       ├── .kratos.courier.remote.invalid.subject.yaml
│   │       ├── .kratos.courier.remote.partial.templates.yaml
│   │       ├── .kratos.courier.remote.templates.yaml
│   │       ├── .kratos.courier.sms.yaml
│   │       ├── .kratos.invalid.identities.yaml
│   │       ├── .kratos.mock.identities.yaml
│   │       ├── .kratos.notify-unknown-recipients.yml
│   │       ├── .kratos.oauth2_provider.yaml
│   │       ├── .kratos.webauthn.invalid.yaml
│   │       ├── .kratos.webauthn.origin.yaml
│   │       ├── .kratos.webauthn.origins.yaml
│   │       └── .kratos.yaml
│   ├── factory.go
│   ├── factory_test.go
│   ├── registry.go
│   ├── registry_default.go
│   ├── registry_default_hooks.go
│   ├── registry_default_login.go
│   ├── registry_default_recovery.go
│   ├── registry_default_registration.go
│   ├── registry_default_schemas.go
│   ├── registry_default_schemas_test.go
│   ├── registry_default_sessiontokenexchange.go
│   ├── registry_default_settings.go
│   ├── registry_default_test.go
│   └── registry_default_verification.go
├── embedx/
│   ├── config.schema.json
│   ├── embedx.go
│   ├── embedx_test.go
│   ├── identity_extension.schema.json
│   ├── identity_meta.schema.json
│   └── testdata/
│       ├── identity_meta.no_traits.invalid.schema.json
│       ├── identity_meta.simple.valid.schema.json
│       └── identity_meta.verification_format.invalid.schema.json
├── examples/
│   └── go/
│       ├── identity/
│       │   ├── create/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── delete/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── get/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   └── update/
│       │       ├── main.go
│       │       └── main_test.go
│       ├── pkg/
│       │   ├── common.go
│       │   ├── resources.go
│       │   └── stub/
│       │       ├── identity.schema.json
│       │       └── kratos.yaml
│       ├── selfservice/
│       │   ├── error/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── login/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── logout/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── recovery/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── registration/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── settings/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   └── verification/
│       │       ├── main.go
│       │       └── main_test.go
│       └── session/
│           └── tosession/
│               ├── main.go
│               └── main_test.go
├── gen/
│   └── oidc/
│       └── v1/
│           └── state.pb.go
├── go.mod
├── go.sum
├── hash/
│   ├── hash_comparator.go
│   ├── hasher.go
│   ├── hasher_argon2.go
│   ├── hasher_bcrypt.go
│   ├── hasher_pbkdf2.go
│   ├── hasher_scrypt.go
│   └── hasher_test.go
├── hydra/
│   ├── fake.go
│   ├── hydra.go
│   └── hydra_test.go
├── identity/
│   ├── .snapshots/
│   │   ├── TestHandler-case=PATCH_should_allow_to_update_credential_password-endpoint=admin.json
│   │   ├── TestHandler-case=PATCH_should_allow_to_update_credential_password-endpoint=public.json
│   │   ├── TestHandler-case=PATCH_should_allow_to_update_credential_password.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_cleartext_password_and_oidc_credentials.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=SSHA.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=SSHA256.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=SSHA512.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=argon2i.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=argon2id.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=bcrypt2.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=hmac.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=md5.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=pkbdf2.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=scrypt.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_not-normalized_email.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_organization_oidc_and_saml_credentials.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_password_migration_hook_enabled.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-without_any_credentials.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-without_traits.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_and_multiple_fido_mfa_type-admin.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_and_multiple_fido_mfa_type-public.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_type-admin.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_type-public.json
│   │   ├── TestHandler-case=should_list_all_identities_with_credentials-include_credential=oidc_should_include_OIDC_credentials_config.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_0.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_1.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_2.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_3.json
│   │   ├── TestHandler-suite=create_and_update-case=should_get_identity_with_credentials-case=should_get_identity_with_password_and_webauthn_credentials_included.json
│   │   ├── TestHandler-suite=create_and_update-case=should_get_identity_with_credentials-case=should_get_identity_with_password_credentials_included.json
│   │   ├── TestHandler-suite=create_and_update-case=should_get_identity_with_credentials-case=should_get_identity_without_credentials_included.json
│   │   ├── TestImportCredentials-OIDC_new_credential_with_organization.json
│   │   ├── TestImportCredentials-OIDC_new_credential_without_organization.json
│   │   ├── TestImportCredentials-OIDC_update_credential_with_organization.json
│   │   ├── TestImportCredentials-OIDC_update_credential_without_organization.json
│   │   ├── TestImportCredentials-OIDC_update_with_multiple_providers.json
│   │   ├── TestImportCredentials-SAML_new_credential_with_organization.json
│   │   ├── TestImportCredentials-SAML_new_credential_without_organization.json
│   │   ├── TestImportCredentials-SAML_update_credential_with_organization.json
│   │   ├── TestImportCredentials-SAML_update_credential_without_organization.json
│   │   ├── TestImportCredentials-SAML_update_with_multiple_providers.json
│   │   ├── TestMarshalIdentityWithAll.json
│   │   ├── TestSchemaExtensionCredentials-case=0.json
│   │   ├── TestSchemaExtensionCredentials-case=1.json
│   │   ├── TestSchemaExtensionCredentials-case=10.json
│   │   ├── TestSchemaExtensionCredentials-case=11.json
│   │   ├── TestSchemaExtensionCredentials-case=12.json
│   │   ├── TestSchemaExtensionCredentials-case=13.json
│   │   ├── TestSchemaExtensionCredentials-case=2.json
│   │   ├── TestSchemaExtensionCredentials-case=3.json
│   │   ├── TestSchemaExtensionCredentials-case=4.json
│   │   ├── TestSchemaExtensionCredentials-case=5.json
│   │   ├── TestSchemaExtensionCredentials-case=6.json
│   │   ├── TestSchemaExtensionCredentials-case=7.json
│   │   ├── TestSchemaExtensionCredentials-case=8.json
│   │   ├── TestSchemaExtensionCredentials-case=9.json
│   │   ├── TestToNode.json
│   │   ├── TestUpgradeCredentials-empty_credentials.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_correct_value.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_email_empty_space_value-with_one_identifier.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_email_empty_space_value-with_two_identifiers.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_empty_value.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_unknown_value.json
│   │   ├── TestUpgradeCredentials-type=code-from=v2_with_empty_value.json
│   │   ├── TestUpgradeCredentials-type=webauthn-from=v0.json
│   │   ├── TestUpgradeCredentials-type=webauthn-from=v1.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=saml-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=saml-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=saml-credential=saml.json
│   │   └── TestWithDeclassifiedCredentials-case=saml-credential=webauthn.json
│   ├── address.go
│   ├── credentials.go
│   ├── credentials_code.go
│   ├── credentials_code_test.go
│   ├── credentials_lookup.go
│   ├── credentials_lookup_test.go
│   ├── credentials_migrate.go
│   ├── credentials_migrate_test.go
│   ├── credentials_oidc.go
│   ├── credentials_oidc_test.go
│   ├── credentials_password.go
│   ├── credentials_password_test.go
│   ├── credentials_test.go
│   ├── credentials_totp.go
│   ├── credentials_webauthn.go
│   ├── credentials_webauthn_test.go
│   ├── error_test.go
│   ├── expandables.go
│   ├── extension_credentials.go
│   ├── extension_credentials_test.go
│   ├── extension_recovery.go
│   ├── extension_recovery_test.go
│   ├── extension_verification.go
│   ├── extension_verification_test.go
│   ├── handler.go
│   ├── handler_import.go
│   ├── handler_import_test.go
│   ├── handler_test.go
│   ├── identity.go
│   ├── identity_recovery.go
│   ├── identity_recovery_test.go
│   ├── identity_test.go
│   ├── identity_verification.go
│   ├── identity_verification_test.go
│   ├── manager.go
│   ├── manager_test.go
│   ├── pool.go
│   ├── registry.go
│   ├── stub/
│   │   ├── aal.json
│   │   ├── expand.schema.json
│   │   ├── extension/
│   │   │   ├── credentials/
│   │   │   │   ├── code-phone-email.schema.json
│   │   │   │   ├── code.schema.json
│   │   │   │   ├── email.schema.json
│   │   │   │   ├── multi.schema.json
│   │   │   │   ├── schema.json
│   │   │   │   └── webauthn.schema.json
│   │   │   ├── recovery/
│   │   │   │   ├── email.schema.json
│   │   │   │   ├── schema.json
│   │   │   │   └── sms.schema.json
│   │   │   └── verify/
│   │   │       ├── email.schema.json
│   │   │       ├── legacy-email-missing-format.schema.json
│   │   │       ├── missing-format.schema.json
│   │   │       ├── no-validate.schema.json
│   │   │       └── phone.schema.json
│   │   ├── extension.schema.json
│   │   ├── handler/
│   │   │   ├── customer.schema.json
│   │   │   ├── employee.schema.json
│   │   │   └── multiple_emails.schema.json
│   │   ├── identity-2.schema.json
│   │   ├── identity.schema.json
│   │   ├── localhost-ref.schema.json
│   │   ├── manager.schema.json
│   │   └── webauthn/
│   │       ├── v0.json
│   │       └── v1.json
│   ├── test/
│   │   └── pool.go
│   ├── validator.go
│   └── validator_test.go
├── install.sh
├── main.go
├── openapitools.json
├── oryx/
│   ├── .gitignore
│   ├── .goimportsignore
│   ├── .golangci.yml
│   ├── .nancy-ignore
│   ├── .prettierignore
│   ├── .reference-ignore
│   ├── .schemas/
│   │   ├── corsx/
│   │   │   └── viper.schema.json
│   │   ├── logrusx/
│   │   │   └── viper.schema.json
│   │   ├── profilingx/
│   │   │   └── viper.schema.json
│   │   └── tlsx/
│   │       └── viper.schema.json
│   ├── LICENSE
│   ├── Makefile
│   ├── assertx/
│   │   └── assertx.go
│   ├── cachex/
│   │   └── ristretto.go
│   ├── castx/
│   │   └── castx.go
│   ├── clidoc/
│   │   ├── generate.go
│   │   ├── md_docs.go
│   │   ├── testdata/
│   │   │   ├── hydra-client-admin.md
│   │   │   ├── hydra-client-public.md
│   │   │   ├── hydra-client.md
│   │   │   ├── hydra-serve.md
│   │   │   └── hydra.md
│   │   └── util.go
│   ├── cmdx/
│   │   ├── args.go
│   │   ├── env.go
│   │   ├── helper.go
│   │   ├── http.go
│   │   ├── noise_printer.go
│   │   ├── output.go
│   │   ├── pagination.go
│   │   ├── printing.go
│   │   ├── usage.go
│   │   ├── user_input.go
│   │   └── version.go
│   ├── configx/
│   │   ├── .snapshots/
│   │   │   └── TestKoanfSchemaDefaults.json
│   │   ├── context.go
│   │   ├── cors.go
│   │   ├── cors.schema.json
│   │   ├── error.go
│   │   ├── helpers.go
│   │   ├── koanf_confmap.go
│   │   ├── koanf_env.go
│   │   ├── koanf_file.go
│   │   ├── koanf_full_merge.go
│   │   ├── koanf_memory.go
│   │   ├── koanf_schema_defaults.go
│   │   ├── options.go
│   │   ├── permission.go
│   │   ├── pflag.go
│   │   ├── provider.go
│   │   ├── schema.go
│   │   ├── schema_cache.go
│   │   ├── schema_path_cache.go
│   │   ├── serve.go
│   │   ├── serve.schema.json
│   │   ├── span.go
│   │   ├── stub/
│   │   │   ├── benchmark/
│   │   │   │   ├── benchmark.yaml
│   │   │   │   └── schema.config.json
│   │   │   ├── domain-aliases/
│   │   │   │   └── config.schema.json
│   │   │   ├── from-files/
│   │   │   │   ├── a.yaml
│   │   │   │   ├── b.yaml
│   │   │   │   ├── config.schema.json
│   │   │   │   └── expected.json
│   │   │   ├── hydra/
│   │   │   │   ├── config.schema.json
│   │   │   │   ├── expected.json
│   │   │   │   └── hydra.yaml
│   │   │   ├── kratos/
│   │   │   │   ├── config.schema.json
│   │   │   │   ├── expected.json
│   │   │   │   └── kratos.yaml
│   │   │   ├── multi/
│   │   │   │   ├── a.yaml
│   │   │   │   ├── b.yaml
│   │   │   │   ├── config.schema.json
│   │   │   │   └── expected.json
│   │   │   ├── nested-array/
│   │   │   │   ├── config.schema.json
│   │   │   │   ├── expected.json
│   │   │   │   └── kratos.yaml
│   │   │   └── watch/
│   │   │       └── config.schema.json
│   │   └── tls.schema.json
│   ├── contextx/
│   │   ├── contextual.go
│   │   ├── contextual_mock.go
│   │   ├── default.go
│   │   ├── testhelpers.go
│   │   └── tree.go
│   ├── corsx/
│   │   ├── check_origin.go
│   │   ├── cmd.go
│   │   ├── defaults.go
│   │   ├── middleware.go
│   │   └── normalize.go
│   ├── crdbx/
│   │   ├── readonly.go
│   │   └── staleness.go
│   ├── dbal/
│   │   ├── canonicalize.go
│   │   ├── driver.go
│   │   ├── dsn.go
│   │   └── testhelpers.go
│   ├── decoderx/
│   │   ├── http.go
│   │   └── stub/
│   │       ├── consent.json
│   │       ├── dynamic-object.json
│   │       ├── nested.json
│   │       ├── person.json
│   │       ├── required-defaults.json
│   │       └── schema.json
│   ├── errorsx/
│   │   └── errors.go
│   ├── fetcher/
│   │   └── fetcher.go
│   ├── flagx/
│   │   └── flagx.go
│   ├── fsx/
│   │   ├── dirhash.go
│   │   └── merge.go
│   ├── go.mod
│   ├── go.sum
│   ├── hasherx/
│   │   ├── hash_comparator.go
│   │   ├── hasher.go
│   │   ├── hasher_argon2.go
│   │   ├── hasher_bcrypt.go
│   │   └── hasher_pbkdf2.go
│   ├── healthx/
│   │   ├── doc.go
│   │   ├── handler.go
│   │   └── openapi/
│   │       └── patch.yaml
│   ├── httprouterx/
│   │   └── router.go
│   ├── httpx/
│   │   ├── assert.go
│   │   ├── chan_handler.go
│   │   ├── client_info.go
│   │   ├── content_type.go
│   │   ├── gzip_server.go
│   │   ├── private_ip_validator.go
│   │   ├── request.go
│   │   ├── resilient_client.go
│   │   ├── ssrf.go
│   │   ├── transports.go
│   │   ├── url.go
│   │   └── wait_for.go
│   ├── ioutilx/
│   │   └── pkger.go
│   ├── ipx/
│   │   ├── cidr.go
│   │   └── ip_validator.go
│   ├── josex/
│   │   ├── encoding.go
│   │   ├── generate.go
│   │   ├── public.go
│   │   └── utils.go
│   ├── jsonnetsecure/
│   │   ├── cmd/
│   │   │   └── root.go
│   │   ├── cmd.go
│   │   ├── jsonnet.go
│   │   ├── jsonnet_pool.go
│   │   ├── limit_unix.go
│   │   ├── limit_windows.go
│   │   ├── null.go
│   │   ├── provider.go
│   │   └── stub/
│   │       └── import.jsonnet
│   ├── jsonnetx/
│   │   ├── format.go
│   │   ├── lint.go
│   │   └── root.go
│   ├── jsonschemax/
│   │   ├── .snapshots/
│   │   │   ├── TestListPaths-case=0.json
│   │   │   ├── TestListPaths-case=1.json
│   │   │   ├── TestListPaths-case=2.json
│   │   │   ├── TestListPaths-case=3.json
│   │   │   ├── TestListPaths-case=4.json
│   │   │   ├── TestListPaths-case=5.json
│   │   │   ├── TestListPaths-case=6.json
│   │   │   ├── TestListPaths-case=7.json
│   │   │   ├── TestListPaths-case=8.json
│   │   │   ├── TestListPaths-case=9.json
│   │   │   └── TestListPathsWithRecursion-case=0.json
│   │   ├── README.md
│   │   ├── error.go
│   │   ├── keys.go
│   │   ├── pointer.go
│   │   ├── print.go
│   │   └── stub/
│   │       ├── .config.yaml
│   │       ├── .oathkeeper.schema.json
│   │       ├── config.schema.json
│   │       ├── json/
│   │       │   └── .project-stub-name.json
│   │       ├── nested-array.schema.json
│   │       ├── nested-simple-array.schema.json
│   │       ├── toml/
│   │       │   └── .project-stub-name.toml
│   │       ├── yaml/
│   │       │   └── .project-stub-name.yaml
│   │       └── yml/
│   │           └── .project-stub-name.yml
│   ├── jsonx/
│   │   ├── .snapshots/
│   │   │   ├── TestEmbedSources-fixtures-fixture=1.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=2.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=3.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=4.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=5.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=6.json.json
│   │   │   └── TestEmbedSources-only_embeds_base64.json
│   │   ├── debug.go
│   │   ├── decoder.go
│   │   ├── embed.go
│   │   ├── fixture/
│   │   │   └── embed/
│   │   │       ├── 1.json
│   │   │       ├── 2.json
│   │   │       ├── 3.json
│   │   │       ├── 4.json
│   │   │       ├── 5.json
│   │   │       └── 6.json
│   │   ├── flatten.go
│   │   ├── get.go
│   │   ├── helpers.go
│   │   ├── patch.go
│   │   └── stub/
│   │       └── random.json
│   ├── jwksx/
│   │   ├── .snapshots/
│   │   │   ├── TestFetcherNext-case=resolve_multiple_source_urls-case=succeeds_with_forced_kid.json
│   │   │   ├── TestFetcherNext-case=resolve_single_source_url-case=with_cache.json
│   │   │   ├── TestFetcherNext-case=resolve_single_source_url-case=with_cache_and_TTL.json
│   │   │   ├── TestFetcherNext-case=resolve_single_source_url-case=with_forced_key.json
│   │   │   └── TestFetcherNext-case=resolve_single_source_url-case=without_cache.json
│   │   ├── fetcher.go
│   │   ├── fetcher_v2.go
│   │   └── generator.go
│   ├── jwtmiddleware/
│   │   ├── middleware.go
│   │   └── stub/
│   │       └── jwks.json
│   ├── jwtx/
│   │   └── claims.go
│   ├── logrusx/
│   │   ├── config.schema.json
│   │   ├── helper.go
│   │   └── logrus.go
│   ├── mapx/
│   │   └── type_assert.go
│   ├── metricsx/
│   │   ├── metrics.go
│   │   └── middleware.go
│   ├── migratest/
│   │   ├── refresh.go
│   │   ├── run.go
│   │   └── strict.go
│   ├── networkx/
│   │   ├── listener.go
│   │   ├── manager.go
│   │   ├── migrations/
│   │   │   ├── sql/
│   │   │   │   ├── 20150100000001000000_networks.cockroach.down.sql
│   │   │   │   ├── 20150100000001000000_networks.cockroach.up.sql
│   │   │   │   ├── 20150100000001000000_networks.mysql.down.sql
│   │   │   │   ├── 20150100000001000000_networks.mysql.up.sql
│   │   │   │   ├── 20150100000001000000_networks.postgres.down.sql
│   │   │   │   ├── 20150100000001000000_networks.postgres.up.sql
│   │   │   │   ├── 20150100000001000000_networks.sqlite3.down.sql
│   │   │   │   └── 20150100000001000000_networks.sqlite3.up.sql
│   │   │   └── templates/
│   │   │       ├── 20150100000001_networks.down.fizz
│   │   │       └── 20150100000001_networks.up.fizz
│   │   └── network.go
│   ├── openapix/
│   │   ├── doc.go
│   │   ├── jsonpatch.go
│   │   └── pagination.go
│   ├── osx/
│   │   ├── env.go
│   │   ├── file.go
│   │   └── stub/
│   │       └── text.txt
│   ├── otelx/
│   │   ├── attribute.go
│   │   ├── config.go
│   │   ├── config.schema.json
│   │   ├── jaeger.go
│   │   ├── middleware.go
│   │   ├── otel.go
│   │   ├── otlp.go
│   │   ├── semconv/
│   │   │   ├── context.go
│   │   │   ├── deprecated.go
│   │   │   ├── events.go
│   │   │   └── warning.go
│   │   ├── withspan.go
│   │   └── zipkin.go
│   ├── package.go
│   ├── package.json
│   ├── pagination/
│   │   ├── README.md
│   │   ├── header.go
│   │   ├── items.go
│   │   ├── keysetpagination/
│   │   │   ├── header.go
│   │   │   ├── page_token.go
│   │   │   ├── paginator.go
│   │   │   └── parse_header.go
│   │   ├── keysetpagination_v2/
│   │   │   ├── .snapshots/
│   │   │   │   └── TestPageToken-Marshal_snapshot.json
│   │   │   ├── page_token.go
│   │   │   ├── paginator.go
│   │   │   ├── parse_header.go
│   │   │   ├── query_builder.go
│   │   │   └── request_params.go
│   │   ├── limit.go
│   │   ├── migrationpagination/
│   │   │   ├── .snapshots/
│   │   │   │   ├── TestPaginationHeader-Create_next_and_last,_but_not_previous_or_first_if_at_the_beginning.json
│   │   │   │   ├── TestPaginationHeader-Create_only_first_if_the_limits_provided_exceeds_the_number_of_clients_found.json
│   │   │   │   ├── TestPaginationHeader-Create_previous,_next,_first,_and_last_if_in_the_middle.json
│   │   │   │   ├── TestPaginationHeader-Create_previous,_next,_first,_but_not_last_if_in_the_middle_and_no_total_was_provided.json
│   │   │   │   ├── TestPaginationHeader-Create_previous_and_first_but_not_next_or_last_if_at_the_end.json
│   │   │   │   └── TestPaginationHeader-Header_should_default_limit_to_1_no_limit_was_provided.json
│   │   │   ├── header.go
│   │   │   └── pagination.go
│   │   ├── pagepagination/
│   │   │   ├── header.go
│   │   │   └── pagination.go
│   │   ├── paginationplanner/
│   │   │   └── planner.go
│   │   ├── parse.go
│   │   └── tokenpagination/
│   │       ├── .snapshots/
│   │       │   ├── TestPaginationHeader-Create_next_and_last,_but_not_previous_or_first_if_at_the_beginning.json
│   │       │   ├── TestPaginationHeader-Create_only_first_if_the_limits_provided_exceeds_the_number_of_clients_found.json
│   │       │   ├── TestPaginationHeader-Create_previous,_next,_first,_and_last_if_in_the_middle.json
│   │       │   ├── TestPaginationHeader-Create_previous,_next,_first,_but_not_last_if_in_the_middle_and_no_total_was_provided.json
│   │       │   ├── TestPaginationHeader-Create_previous_and_first_but_not_next_or_last_if_at_the_end.json
│   │       │   └── TestPaginationHeader-Header_should_default_limit_to_1_no_limit_was_provided.json
│   │       ├── header.go
│   │       └── pagination.go
│   ├── pointerx/
│   │   └── pointerx.go
│   ├── popx/
│   │   ├── .snapshots/
│   │   │   ├── TestMigrateSQLUp-final_status.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_but_do_not_confirm.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_but_no_steps.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_four_steps.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_two_steps.txt
│   │   │   ├── TestMigrateSQLUp-migrate_rollbacks_up_again.txt
│   │   │   ├── TestMigrateSQLUp-migrate_rollbacks_up_without_confirm.txt
│   │   │   ├── TestMigrateSQLUp-migrate_up.txt
│   │   │   ├── TestMigrateSQLUp-status_migrated.txt
│   │   │   ├── TestMigrateSQLUp-status_pre.txt
│   │   │   ├── TestMigrateSQLUp-status_two_steps_rolled_back.txt
│   │   │   └── TestMigrateSQLUp-status_two_versions_rolled_back.txt
│   │   ├── cmd.go
│   │   ├── db_columns.go
│   │   ├── loggers.go
│   │   ├── match.go
│   │   ├── migration_box.go
│   │   ├── migration_content.go
│   │   ├── migration_info.go
│   │   ├── migrator.go
│   │   ├── span.go
│   │   ├── sql_template_funcs.go
│   │   ├── stub/
│   │   │   └── migrations/
│   │   │       ├── check/
│   │   │       │   └── valid/
│   │   │       │       ├── 123_a.down.sql
│   │   │       │       ├── 123_a.mysql.up.sql
│   │   │       │       └── 123_a.postgres.up.sql
│   │   │       ├── legacy/
│   │   │       │   ├── 20191100000001_identities.cockroach.down.sql
│   │   │       │   ├── 20191100000001_identities.cockroach.up.sql
│   │   │       │   ├── 20191100000001_identities.mysql.down.sql
│   │   │       │   ├── 20191100000001_identities.mysql.up.sql
│   │   │       │   ├── 20191100000001_identities.postgres.down.sql
│   │   │       │   ├── 20191100000001_identities.postgres.up.sql
│   │   │       │   ├── 20191100000001_identities.sqlite3.down.sql
│   │   │       │   ├── 20191100000001_identities.sqlite3.up.sql
│   │   │       │   ├── 20191100000002_requests.cockroach.down.sql
│   │   │       │   ├── 20191100000002_requests.cockroach.up.sql
│   │   │       │   ├── 20191100000002_requests.mysql.down.sql
│   │   │       │   ├── 20191100000002_requests.mysql.up.sql
│   │   │       │   ├── 20191100000002_requests.postgres.down.sql
│   │   │       │   ├── 20191100000002_requests.postgres.up.sql
│   │   │       │   ├── 20191100000002_requests.sqlite3.down.sql
│   │   │       │   ├── 20191100000002_requests.sqlite3.up.sql
│   │   │       │   ├── 20191100000003_sessions.cockroach.down.sql
│   │   │       │   ├── 20191100000003_sessions.cockroach.up.sql
│   │   │       │   ├── 20191100000003_sessions.mysql.down.sql
│   │   │       │   ├── 20191100000003_sessions.mysql.up.sql
│   │   │       │   ├── 20191100000003_sessions.postgres.down.sql
│   │   │       │   ├── 20191100000003_sessions.postgres.up.sql
│   │   │       │   ├── 20191100000003_sessions.sqlite3.down.sql
│   │   │       │   ├── 20191100000003_sessions.sqlite3.up.sql
│   │   │       │   ├── 20191100000004_errors.cockroach.down.sql
│   │   │       │   ├── 20191100000004_errors.cockroach.up.sql
│   │   │       │   ├── 20191100000004_errors.mysql.down.sql
│   │   │       │   ├── 20191100000004_errors.mysql.up.sql
│   │   │       │   ├── 20191100000004_errors.postgres.down.sql
│   │   │       │   ├── 20191100000004_errors.postgres.up.sql
│   │   │       │   ├── 20191100000004_errors.sqlite3.down.sql
│   │   │       │   ├── 20191100000004_errors.sqlite3.up.sql
│   │   │       │   ├── 20191100000005_identities.mysql.down.sql
│   │   │       │   ├── 20191100000005_identities.mysql.up.sql
│   │   │       │   ├── 20191100000006_courier.cockroach.down.sql
│   │   │       │   ├── 20191100000006_courier.cockroach.up.sql
│   │   │       │   ├── 20191100000006_courier.mysql.down.sql
│   │   │       │   ├── 20191100000006_courier.mysql.up.sql
│   │   │       │   ├── 20191100000006_courier.postgres.down.sql
│   │   │       │   ├── 20191100000006_courier.postgres.up.sql
│   │   │       │   ├── 20191100000006_courier.sqlite3.down.sql
│   │   │       │   ├── 20191100000006_courier.sqlite3.up.sql
│   │   │       │   ├── 20191100000007_errors.cockroach.down.sql
│   │   │       │   ├── 20191100000007_errors.cockroach.up.sql
│   │   │       │   ├── 20191100000007_errors.mysql.down.sql
│   │   │       │   ├── 20191100000007_errors.mysql.up.sql
│   │   │       │   ├── 20191100000007_errors.postgres.down.sql
│   │   │       │   ├── 20191100000007_errors.postgres.up.sql
│   │   │       │   ├── 20191100000007_errors.sqlite3.down.sql
│   │   │       │   ├── 20191100000007_errors.sqlite3.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.cockroach.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.cockroach.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.mysql.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.mysql.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.postgres.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.postgres.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.sqlite3.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.sqlite3.up.sql
│   │   │       │   ├── 20191100000009_verification.mysql.down.sql
│   │   │       │   ├── 20191100000009_verification.mysql.up.sql
│   │   │       │   ├── 20191100000010_errors.cockroach.down.sql
│   │   │       │   ├── 20191100000010_errors.cockroach.up.sql
│   │   │       │   ├── 20191100000010_errors.mysql.down.sql
│   │   │       │   ├── 20191100000010_errors.mysql.up.sql
│   │   │       │   ├── 20191100000010_errors.postgres.down.sql
│   │   │       │   ├── 20191100000010_errors.postgres.up.sql
│   │   │       │   ├── 20191100000010_errors.sqlite3.down.sql
│   │   │       │   ├── 20191100000010_errors.sqlite3.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.cockroach.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.mysql.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.postgres.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.sqlite3.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.cockroach.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.cockroach.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.mysql.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.mysql.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.postgres.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.postgres.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.sqlite3.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.sqlite3.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.cockroach.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.cockroach.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.mysql.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.mysql.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.postgres.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.postgres.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.sqlite3.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.sqlite3.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.cockroach.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.cockroach.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.mysql.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.mysql.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.postgres.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.postgres.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.sqlite3.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.sqlite3.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.cockroach.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.cockroach.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.mysql.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.mysql.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.postgres.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.postgres.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.sqlite3.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.sqlite3.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.cockroach.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.cockroach.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.mysql.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.mysql.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.postgres.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.postgres.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.sqlite3.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.sqlite3.up.sql
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.down.sql
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.up.sql
│   │   │       │   ├── 20200601101000_create_messages.cockroach.down.sql
│   │   │       │   ├── 20200601101000_create_messages.cockroach.up.sql
│   │   │       │   ├── 20200601101000_create_messages.mysql.down.sql
│   │   │       │   ├── 20200601101000_create_messages.mysql.up.sql
│   │   │       │   ├── 20200601101000_create_messages.postgres.down.sql
│   │   │       │   ├── 20200601101000_create_messages.postgres.up.sql
│   │   │       │   ├── 20200601101000_create_messages.sqlite3.down.sql
│   │   │       │   ├── 20200601101000_create_messages.sqlite3.up.sql
│   │   │       │   ├── 20200601101001_verification.mysql.down.sql
│   │   │       │   ├── 20200601101001_verification.mysql.up.sql
│   │   │       │   ├── 20200605111551_messages.cockroach.down.sql
│   │   │       │   ├── 20200605111551_messages.cockroach.up.sql
│   │   │       │   ├── 20200605111551_messages.mysql.down.sql
│   │   │       │   ├── 20200605111551_messages.mysql.up.sql
│   │   │       │   ├── 20200605111551_messages.postgres.down.sql
│   │   │       │   ├── 20200605111551_messages.postgres.up.sql
│   │   │       │   ├── 20200605111551_messages.sqlite3.down.sql
│   │   │       │   ├── 20200605111551_messages.sqlite3.up.sql
│   │   │       │   ├── 20200607165100_settings.cockroach.down.sql
│   │   │       │   ├── 20200607165100_settings.cockroach.up.sql
│   │   │       │   ├── 20200607165100_settings.mysql.down.sql
│   │   │       │   ├── 20200607165100_settings.mysql.up.sql
│   │   │       │   ├── 20200607165100_settings.postgres.down.sql
│   │   │       │   ├── 20200607165100_settings.postgres.up.sql
│   │   │       │   ├── 20200607165100_settings.sqlite3.down.sql
│   │   │       │   ├── 20200607165100_settings.sqlite3.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.cockroach.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.cockroach.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.mysql.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.mysql.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.postgres.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.postgres.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.sqlite3.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.sqlite3.up.sql
│   │   │       │   ├── 20200810141652_flow_type.cockroach.down.sql
│   │   │       │   ├── 20200810141652_flow_type.cockroach.up.sql
│   │   │       │   ├── 20200810141652_flow_type.mysql.down.sql
│   │   │       │   ├── 20200810141652_flow_type.mysql.up.sql
│   │   │       │   ├── 20200810141652_flow_type.postgres.down.sql
│   │   │       │   ├── 20200810141652_flow_type.postgres.up.sql
│   │   │       │   ├── 20200810141652_flow_type.sqlite3.down.sql
│   │   │       │   ├── 20200810141652_flow_type.sqlite3.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.cockroach.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.cockroach.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.mysql.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.mysql.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.postgres.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.postgres.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.sqlite3.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.sqlite3.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.cockroach.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.cockroach.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.mysql.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.mysql.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.postgres.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.postgres.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.sqlite3.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.sqlite3.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.cockroach.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.cockroach.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.mysql.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.mysql.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.postgres.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.postgres.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.sqlite3.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.sqlite3.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.cockroach.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.cockroach.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.mysql.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.mysql.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.postgres.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.postgres.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.sqlite3.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.sqlite3.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.cockroach.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.cockroach.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.mysql.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.mysql.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.postgres.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.postgres.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.sqlite3.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.sqlite3.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.cockroach.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.mysql.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.postgres.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.sqlite3.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.cockroach.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.cockroach.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.mysql.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.mysql.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.postgres.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.postgres.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.sqlite3.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.sqlite3.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.cockroach.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.cockroach.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.mysql.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.mysql.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.postgres.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.postgres.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.sqlite3.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.sqlite3.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.cockroach.down.sql
│   │   │       │   ├── 20201201161451_credential_types_values.cockroach.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.mysql.down.sql
│   │   │       │   ├── 20201201161451_credential_types_values.mysql.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.postgres.down.sql
│   │   │       │   ├── 20201201161451_credential_types_values.postgres.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.sqlite3.down.sql
│   │   │       │   └── 20201201161451_credential_types_values.sqlite3.up.sql
│   │   │       ├── notx/
│   │   │       │   ├── 20241031_notx.autocommit.down.sql
│   │   │       │   └── 20241031_notx.autocommit.up.sql
│   │   │       ├── source/
│   │   │       │   ├── 20191100000001_identities.down.fizz
│   │   │       │   ├── 20191100000001_identities.up.fizz
│   │   │       │   ├── 20191100000002_requests.down.fizz
│   │   │       │   ├── 20191100000002_requests.up.fizz
│   │   │       │   ├── 20191100000003_sessions.down.fizz
│   │   │       │   ├── 20191100000003_sessions.up.fizz
│   │   │       │   ├── 20191100000004_errors.down.fizz
│   │   │       │   ├── 20191100000004_errors.up.fizz
│   │   │       │   ├── 20191100000005_identities.mysql.down.sql
│   │   │       │   ├── 20191100000005_identities.mysql.up.sql
│   │   │       │   ├── 20191100000006_courier.down.fizz
│   │   │       │   ├── 20191100000006_courier.up.fizz
│   │   │       │   ├── 20191100000007_errors.down.fizz
│   │   │       │   ├── 20191100000007_errors.up.fizz
│   │   │       │   ├── 20191100000008_selfservice_verification.down.fizz
│   │   │       │   ├── 20191100000008_selfservice_verification.up.fizz
│   │   │       │   ├── 20191100000009_verification.mysql.down.sql
│   │   │       │   ├── 20191100000009_verification.mysql.up.sql
│   │   │       │   ├── 20191100000010_errors.down.fizz
│   │   │       │   ├── 20191100000010_errors.up.fizz
│   │   │       │   ├── 20191100000011_courier_body_type.down.fizz
│   │   │       │   ├── 20191100000011_courier_body_type.up.fizz
│   │   │       │   ├── 20191100000012_login_request_forced.down.fizz
│   │   │       │   ├── 20191100000012_login_request_forced.up.fizz
│   │   │       │   ├── 20200317160354_create_profile_request_forms.down.fizz
│   │   │       │   ├── 20200317160354_create_profile_request_forms.up.fizz
│   │   │       │   ├── 20200401183443_continuity_containers.down.fizz
│   │   │       │   ├── 20200401183443_continuity_containers.up.fizz
│   │   │       │   ├── 20200402142539_rename_profile_flows.down.fizz
│   │   │       │   ├── 20200402142539_rename_profile_flows.up.fizz
│   │   │       │   ├── 20200519101057_create_recovery_addresses.down.fizz
│   │   │       │   ├── 20200519101057_create_recovery_addresses.up.fizz
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.down.sql
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.up.sql
│   │   │       │   ├── 20200601101000_create_messages.down.fizz
│   │   │       │   ├── 20200601101000_create_messages.up.fizz
│   │   │       │   ├── 20200601101001_verification.mysql.down.sql
│   │   │       │   ├── 20200601101001_verification.mysql.up.sql
│   │   │       │   ├── 20200605111551_messages.down.fizz
│   │   │       │   ├── 20200605111551_messages.up.fizz
│   │   │       │   ├── 20200607165100_settings.down.fizz
│   │   │       │   ├── 20200607165100_settings.up.fizz
│   │   │       │   ├── 20200705105359_rename_identities_schema.down.fizz
│   │   │       │   ├── 20200705105359_rename_identities_schema.up.fizz
│   │   │       │   ├── 20200810141652_flow_type.down.fizz
│   │   │       │   ├── 20200810141652_flow_type.up.fizz
│   │   │       │   ├── 20200810161022_flow_rename.down.fizz
│   │   │       │   ├── 20200810161022_flow_rename.up.fizz
│   │   │       │   ├── 20200810162450_flow_fields_rename.down.fizz
│   │   │       │   ├── 20200810162450_flow_fields_rename.up.fizz
│   │   │       │   ├── 20200812124254_add_session_token.down.fizz
│   │   │       │   ├── 20200812124254_add_session_token.up.fizz
│   │   │       │   ├── 20200812160551_add_session_revoke.down.fizz
│   │   │       │   ├── 20200812160551_add_session_revoke.up.fizz
│   │   │       │   ├── 20200830121710_update_recovery_token.down.fizz
│   │   │       │   ├── 20200830121710_update_recovery_token.up.fizz
│   │   │       │   ├── 20200830130642_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130642_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130643_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130643_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130644_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130644_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130645_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130645_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130646_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130646_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830154602_add_verification_token.down.fizz
│   │   │       │   ├── 20200830154602_add_verification_token.up.fizz
│   │   │       │   ├── 20200830172221_recovery_token_expires.down.fizz
│   │   │       │   ├── 20200830172221_recovery_token_expires.up.fizz
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.down.fizz
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.up.fizz
│   │   │       │   ├── 20201201161451_credential_types_values.down.fizz
│   │   │       │   └── 20201201161451_credential_types_values.up.fizz
│   │   │       ├── templating/
│   │   │       │   ├── 0_sql_create_tablename_template.down.sql
│   │   │       │   └── 0_sql_create_tablename_template.up.sql
│   │   │       ├── testdata/
│   │   │       │   ├── 20220513_testdata.invalid
│   │   │       │   ├── 20220513_testdata.sql
│   │   │       │   ├── 20220514_testdata.sql
│   │   │       │   ├── invalid
│   │   │       │   └── invalid_testdata.sql
│   │   │       ├── testdata_migrations/
│   │   │       │   ├── 20220513_create_table.down.sql
│   │   │       │   └── 20220513_create_table.up.sql
│   │   │       └── transactional/
│   │   │           ├── 20191100000001000000_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000000_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000000_identities.mysql.down.sql
│   │   │           ├── 20191100000001000000_identities.mysql.up.sql
│   │   │           ├── 20191100000001000000_identities.postgres.down.sql
│   │   │           ├── 20191100000001000000_identities.postgres.up.sql
│   │   │           ├── 20191100000001000000_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000000_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000001_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000001_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000001_identities.mysql.down.sql
│   │   │           ├── 20191100000001000001_identities.mysql.up.sql
│   │   │           ├── 20191100000001000001_identities.postgres.down.sql
│   │   │           ├── 20191100000001000001_identities.postgres.up.sql
│   │   │           ├── 20191100000001000001_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000001_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000002_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000002_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000002_identities.mysql.down.sql
│   │   │           ├── 20191100000001000002_identities.mysql.up.sql
│   │   │           ├── 20191100000001000002_identities.postgres.down.sql
│   │   │           ├── 20191100000001000002_identities.postgres.up.sql
│   │   │           ├── 20191100000001000002_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000002_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000003_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000003_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000003_identities.mysql.down.sql
│   │   │           ├── 20191100000001000003_identities.mysql.up.sql
│   │   │           ├── 20191100000001000003_identities.postgres.down.sql
│   │   │           ├── 20191100000001000003_identities.postgres.up.sql
│   │   │           ├── 20191100000001000003_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000003_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000004_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000004_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000004_identities.mysql.down.sql
│   │   │           ├── 20191100000001000004_identities.mysql.up.sql
│   │   │           ├── 20191100000001000004_identities.postgres.down.sql
│   │   │           ├── 20191100000001000004_identities.postgres.up.sql
│   │   │           ├── 20191100000001000004_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000004_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000005_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000005_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000005_identities.mysql.down.sql
│   │   │           ├── 20191100000001000005_identities.mysql.up.sql
│   │   │           ├── 20191100000001000005_identities.postgres.down.sql
│   │   │           ├── 20191100000001000005_identities.postgres.up.sql
│   │   │           ├── 20191100000001000005_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000005_identities.sqlite3.up.sql
│   │   │           ├── 20191100000002000000_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000000_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000000_requests.mysql.down.sql
│   │   │           ├── 20191100000002000000_requests.mysql.up.sql
│   │   │           ├── 20191100000002000000_requests.postgres.down.sql
│   │   │           ├── 20191100000002000000_requests.postgres.up.sql
│   │   │           ├── 20191100000002000000_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000000_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000001_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000001_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000001_requests.mysql.down.sql
│   │   │           ├── 20191100000002000001_requests.mysql.up.sql
│   │   │           ├── 20191100000002000001_requests.postgres.down.sql
│   │   │           ├── 20191100000002000001_requests.postgres.up.sql
│   │   │           ├── 20191100000002000001_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000001_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000002_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000002_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000002_requests.mysql.down.sql
│   │   │           ├── 20191100000002000002_requests.mysql.up.sql
│   │   │           ├── 20191100000002000002_requests.postgres.down.sql
│   │   │           ├── 20191100000002000002_requests.postgres.up.sql
│   │   │           ├── 20191100000002000002_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000002_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000003_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000003_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000003_requests.mysql.down.sql
│   │   │           ├── 20191100000002000003_requests.mysql.up.sql
│   │   │           ├── 20191100000002000003_requests.postgres.down.sql
│   │   │           ├── 20191100000002000003_requests.postgres.up.sql
│   │   │           ├── 20191100000002000003_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000003_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000004_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000004_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000004_requests.mysql.down.sql
│   │   │           ├── 20191100000002000004_requests.mysql.up.sql
│   │   │           ├── 20191100000002000004_requests.postgres.down.sql
│   │   │           ├── 20191100000002000004_requests.postgres.up.sql
│   │   │           ├── 20191100000002000004_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000004_requests.sqlite3.up.sql
│   │   │           ├── 20191100000003000000_sessions.cockroach.down.sql
│   │   │           ├── 20191100000003000000_sessions.cockroach.up.sql
│   │   │           ├── 20191100000003000000_sessions.mysql.down.sql
│   │   │           ├── 20191100000003000000_sessions.mysql.up.sql
│   │   │           ├── 20191100000003000000_sessions.postgres.down.sql
│   │   │           ├── 20191100000003000000_sessions.postgres.up.sql
│   │   │           ├── 20191100000003000000_sessions.sqlite3.down.sql
│   │   │           ├── 20191100000003000000_sessions.sqlite3.up.sql
│   │   │           ├── 20191100000004000000_errors.cockroach.down.sql
│   │   │           ├── 20191100000004000000_errors.cockroach.up.sql
│   │   │           ├── 20191100000004000000_errors.mysql.down.sql
│   │   │           ├── 20191100000004000000_errors.mysql.up.sql
│   │   │           ├── 20191100000004000000_errors.postgres.down.sql
│   │   │           ├── 20191100000004000000_errors.postgres.up.sql
│   │   │           ├── 20191100000004000000_errors.sqlite3.down.sql
│   │   │           ├── 20191100000004000000_errors.sqlite3.up.sql
│   │   │           ├── 20191100000005000000_identities.mysql.down.sql
│   │   │           ├── 20191100000005000000_identities.mysql.up.sql
│   │   │           ├── 20191100000005000001_identities.mysql.down.sql
│   │   │           ├── 20191100000005000001_identities.mysql.up.sql
│   │   │           ├── 20191100000006000000_courier.cockroach.down.sql
│   │   │           ├── 20191100000006000000_courier.cockroach.up.sql
│   │   │           ├── 20191100000006000000_courier.mysql.down.sql
│   │   │           ├── 20191100000006000000_courier.mysql.up.sql
│   │   │           ├── 20191100000006000000_courier.postgres.down.sql
│   │   │           ├── 20191100000006000000_courier.postgres.up.sql
│   │   │           ├── 20191100000006000000_courier.sqlite3.down.sql
│   │   │           ├── 20191100000006000000_courier.sqlite3.up.sql
│   │   │           ├── 20191100000007000000_errors.cockroach.down.sql
│   │   │           ├── 20191100000007000000_errors.cockroach.up.sql
│   │   │           ├── 20191100000007000000_errors.mysql.down.sql
│   │   │           ├── 20191100000007000000_errors.mysql.up.sql
│   │   │           ├── 20191100000007000000_errors.postgres.down.sql
│   │   │           ├── 20191100000007000000_errors.postgres.up.sql
│   │   │           ├── 20191100000007000000_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000000_errors.sqlite3.up.sql
│   │   │           ├── 20191100000007000001_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000001_errors.sqlite3.up.sql
│   │   │           ├── 20191100000007000002_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000002_errors.sqlite3.up.sql
│   │   │           ├── 20191100000007000003_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000003_errors.sqlite3.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000009000000_verification.mysql.down.sql
│   │   │           ├── 20191100000009000000_verification.mysql.up.sql
│   │   │           ├── 20191100000009000001_verification.mysql.down.sql
│   │   │           ├── 20191100000009000001_verification.mysql.up.sql
│   │   │           ├── 20191100000010000000_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000000_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000000_errors.mysql.down.sql
│   │   │           ├── 20191100000010000000_errors.mysql.up.sql
│   │   │           ├── 20191100000010000000_errors.postgres.down.sql
│   │   │           ├── 20191100000010000000_errors.postgres.up.sql
│   │   │           ├── 20191100000010000000_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000000_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000001_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000001_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000001_errors.mysql.down.sql
│   │   │           ├── 20191100000010000001_errors.mysql.up.sql
│   │   │           ├── 20191100000010000001_errors.postgres.down.sql
│   │   │           ├── 20191100000010000001_errors.postgres.up.sql
│   │   │           ├── 20191100000010000001_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000001_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000002_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000002_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000002_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000002_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000003_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000003_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000003_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000003_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000004_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000004_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000004_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000004_errors.sqlite3.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.mysql.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.mysql.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.postgres.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.postgres.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000001_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000001_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000001_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000001_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000002_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000002_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000002_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000002_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000003_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000003_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000003_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000003_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000004_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000004_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.cockroach.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.cockroach.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.mysql.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.mysql.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.postgres.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.postgres.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20191100000012000001_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000001_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20191100000012000002_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000002_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20191100000012000003_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000003_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000005_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000005_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000006_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000006_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.cockroach.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.cockroach.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.mysql.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.mysql.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.postgres.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.postgres.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.sqlite3.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.sqlite3.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.cockroach.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.cockroach.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.mysql.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.mysql.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.postgres.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.postgres.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.sqlite3.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.sqlite3.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.cockroach.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.cockroach.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.mysql.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.mysql.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.postgres.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.postgres.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.sqlite3.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.sqlite3.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.cockroach.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.cockroach.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.mysql.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.mysql.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.postgres.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.postgres.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.sqlite3.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.sqlite3.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101058000000_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101058000000_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101058000001_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101058000001_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200601101000000000_create_messages.cockroach.down.sql
│   │   │           ├── 20200601101000000000_create_messages.cockroach.up.sql
│   │   │           ├── 20200601101000000000_create_messages.mysql.down.sql
│   │   │           ├── 20200601101000000000_create_messages.mysql.up.sql
│   │   │           ├── 20200601101000000000_create_messages.postgres.down.sql
│   │   │           ├── 20200601101000000000_create_messages.postgres.up.sql
│   │   │           ├── 20200601101000000000_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000000_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101000000001_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000001_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101000000002_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000002_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101000000003_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000003_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101001000000_verification.mysql.down.sql
│   │   │           ├── 20200601101001000000_verification.mysql.up.sql
│   │   │           ├── 20200601101001000001_verification.mysql.down.sql
│   │   │           ├── 20200601101001000001_verification.mysql.up.sql
│   │   │           ├── 20200605111551000000_messages.cockroach.down.sql
│   │   │           ├── 20200605111551000000_messages.cockroach.up.sql
│   │   │           ├── 20200605111551000000_messages.mysql.down.sql
│   │   │           ├── 20200605111551000000_messages.mysql.up.sql
│   │   │           ├── 20200605111551000000_messages.postgres.down.sql
│   │   │           ├── 20200605111551000000_messages.postgres.up.sql
│   │   │           ├── 20200605111551000000_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000000_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000001_messages.cockroach.down.sql
│   │   │           ├── 20200605111551000001_messages.cockroach.up.sql
│   │   │           ├── 20200605111551000001_messages.mysql.down.sql
│   │   │           ├── 20200605111551000001_messages.mysql.up.sql
│   │   │           ├── 20200605111551000001_messages.postgres.down.sql
│   │   │           ├── 20200605111551000001_messages.postgres.up.sql
│   │   │           ├── 20200605111551000001_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000001_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000002_messages.cockroach.down.sql
│   │   │           ├── 20200605111551000002_messages.cockroach.up.sql
│   │   │           ├── 20200605111551000002_messages.mysql.down.sql
│   │   │           ├── 20200605111551000002_messages.mysql.up.sql
│   │   │           ├── 20200605111551000002_messages.postgres.down.sql
│   │   │           ├── 20200605111551000002_messages.postgres.up.sql
│   │   │           ├── 20200605111551000002_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000002_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000003_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000003_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000004_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000004_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000005_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000005_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000006_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000006_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000007_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000007_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000008_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000008_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000009_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000009_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000010_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000010_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000011_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000011_messages.sqlite3.up.sql
│   │   │           ├── 20200607165100000000_settings.cockroach.down.sql
│   │   │           ├── 20200607165100000000_settings.cockroach.up.sql
│   │   │           ├── 20200607165100000000_settings.mysql.down.sql
│   │   │           ├── 20200607165100000000_settings.mysql.up.sql
│   │   │           ├── 20200607165100000000_settings.postgres.down.sql
│   │   │           ├── 20200607165100000000_settings.postgres.up.sql
│   │   │           ├── 20200607165100000000_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000000_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000001_settings.cockroach.down.sql
│   │   │           ├── 20200607165100000001_settings.cockroach.up.sql
│   │   │           ├── 20200607165100000001_settings.mysql.down.sql
│   │   │           ├── 20200607165100000001_settings.mysql.up.sql
│   │   │           ├── 20200607165100000001_settings.postgres.down.sql
│   │   │           ├── 20200607165100000001_settings.postgres.up.sql
│   │   │           ├── 20200607165100000001_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000001_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000002_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000002_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000003_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000003_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000004_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000004_settings.sqlite3.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.cockroach.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.cockroach.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.mysql.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.mysql.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.postgres.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.postgres.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.sqlite3.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.sqlite3.up.sql
│   │   │           ├── 20200810141652000000_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000000_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000000_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000000_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000000_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000000_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000000_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000000_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000001_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000001_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000001_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000001_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000001_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000001_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000001_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000001_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000002_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000002_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000002_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000002_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000002_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000002_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000002_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000002_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000003_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000003_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000003_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000003_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000003_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000003_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000003_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000003_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000004_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000004_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000004_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000004_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000004_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000004_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000004_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000004_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000005_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000005_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000006_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000006_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000007_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000007_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000008_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000008_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000009_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000009_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000010_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000010_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000011_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000011_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000012_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000012_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000013_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000013_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000014_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000014_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000015_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000015_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000016_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000016_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000017_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000017_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000018_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000018_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000019_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000019_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000005_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000005_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000005_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000005_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000006_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000006_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000006_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000006_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000007_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000007_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000007_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000007_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.cockroach.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.cockroach.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.mysql.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.mysql.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.postgres.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.postgres.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000001_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000001_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000002_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000002_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000003_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000003_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000004_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000004_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000005_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000005_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000006_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000006_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000007_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000007_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.cockroach.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.cockroach.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.mysql.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.mysql.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.postgres.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.postgres.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.sqlite3.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.sqlite3.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000008_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000008_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000009_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000009_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000010_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000010_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000003_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000003_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000004_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000004_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000005_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000005_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000006_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000006_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000007_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000007_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000008_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000008_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000009_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000009_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000010_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000010_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000011_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000011_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000010_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000010_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000011_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000011_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000012_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000012_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000013_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000013_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000014_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000014_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000015_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000015_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000016_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000016_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000017_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000017_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000018_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000018_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000019_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000019_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000020_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000020_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000021_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000021_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000022_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000022_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000023_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000023_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000024_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000024_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000015_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000015_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000016_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000016_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000017_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000017_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000018_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000018_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000019_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000019_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000020_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000020_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000021_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000021_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.cockroach.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.cockroach.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.mysql.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.mysql.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.postgres.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.postgres.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.sqlite3.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.sqlite3.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.cockroach.down.sql
│   │   │           ├── 20201201161451000001_credential_types_values.cockroach.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.mysql.down.sql
│   │   │           ├── 20201201161451000001_credential_types_values.mysql.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.postgres.down.sql
│   │   │           ├── 20201201161451000001_credential_types_values.postgres.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.sqlite3.down.sql
│   │   │           └── 20201201161451000001_credential_types_values.sqlite3.up.sql
│   │   └── transaction.go
│   ├── profilex/
│   │   └── profiling.go
│   ├── prometheusx/
│   │   ├── handler.go
│   │   └── metrics.go
│   ├── proxy/
│   │   ├── proxy.go
│   │   ├── rewrites.go
│   │   └── stubs/
│   │       └── auth.example.com.json
│   ├── randx/
│   │   ├── README.md
│   │   ├── sequence.go
│   │   └── strength/
│   │       ├── go.mod
│   │       ├── go.sum
│   │       └── main.go
│   ├── reqlog/
│   │   ├── LICENSE
│   │   ├── external_latency.go
│   │   └── middleware.go
│   ├── resilience/
│   │   └── retry.go
│   ├── safecast/
│   │   └── safecast.go
│   ├── serverx/
│   │   ├── 404.go
│   │   ├── 404.html
│   │   └── 404.json
│   ├── servicelocatorx/
│   │   └── options.go
│   ├── snapshotx/
│   │   ├── .snapshots/
│   │   │   ├── TestDeleteMatches-file=1.json-fn.json
│   │   │   ├── TestDeleteMatches-file=2.json-fn.json
│   │   │   └── TestDeleteMatches-file=3.json-fn.json
│   │   ├── fixtures/
│   │   │   ├── 1.json
│   │   │   ├── 2.json
│   │   │   └── 3.json
│   │   └── snapshot.go
│   ├── sqlcon/
│   │   ├── connector.go
│   │   ├── dockertest/
│   │   │   ├── cockroach.go
│   │   │   └── test_helper.go
│   │   ├── error.go
│   │   ├── error_nosqlite.go
│   │   ├── error_sqlite.go
│   │   ├── message.go
│   │   └── parse_opts.go
│   ├── sqlxx/
│   │   ├── batch/
│   │   │   ├── .snapshots/
│   │   │   │   ├── Test_buildInsertQueryArgs-case=cockroach.json
│   │   │   │   ├── Test_buildInsertQueryArgs-case=testModel.json
│   │   │   │   └── Test_buildInsertQueryValues-case=testModel-case=cockroach.json
│   │   │   └── create.go
│   │   ├── expand.go
│   │   ├── sqlxx.go
│   │   └── types.go
│   ├── stringslice/
│   │   └── unique.go
│   ├── stringsx/
│   │   ├── case.go
│   │   ├── split.go
│   │   ├── switch_case.go
│   │   └── truncate.go
│   ├── swaggerx/
│   │   └── error.go
│   ├── testingx/
│   │   └── helpers.go
│   ├── tlsx/
│   │   ├── cert.go
│   │   └── termination.go
│   ├── urlx/
│   │   ├── copy.go
│   │   ├── extract.go
│   │   ├── join.go
│   │   ├── parse.go
│   │   ├── path.go
│   │   └── path_windows.go
│   ├── uuidx/
│   │   └── uuid.go
│   └── watcherx/
│       ├── definitions.go
│       ├── directory.go
│       ├── event.go
│       ├── file.go
│       ├── integrationtest/
│       │   ├── .dockerignore
│       │   ├── .gitignore
│       │   ├── Dockerfile
│       │   ├── Makefile
│       │   ├── README.md
│       │   ├── configmap.yml
│       │   ├── event_logger.yml
│       │   ├── eventlog_snapshot
│       │   └── main.go
│       └── test_helpers.go
├── otp/
│   └── otp.go
├── package.json
├── persistence/
│   ├── reference.go
│   └── sql/
│       ├── .soda.yml
│       ├── README.md
│       ├── batch/
│       │   ├── .snapshots/
│       │   │   ├── Test_buildInsertQueryArgs-case=Identities.json
│       │   │   ├── Test_buildInsertQueryArgs-case=RecoveryAddress#01.json
│       │   │   ├── Test_buildInsertQueryArgs-case=RecoveryAddress.json
│       │   │   ├── Test_buildInsertQueryArgs-case=cockroach.json
│       │   │   ├── Test_buildInsertQueryArgs-case=testModel.json
│       │   │   └── Test_buildInsertQueryValues-case=testModel-case=cockroach.json
│       │   ├── create.go
│       │   ├── create_test.go
│       │   └── test_persister.go
│       ├── devices/
│       │   └── persister_devices.go
│       ├── identity/
│       │   └── persister_identity.go
│       ├── migratest/
│       │   ├── fixtures/
│       │   │   ├── identity/
│       │   │   │   ├── 0149ce5f-76a8-4efe-b2e3-431b8c6cceb6.json
│       │   │   │   ├── 0149ce5f-76a8-4efe-b2e3-431b8c6cceb7.json
│       │   │   │   ├── 196d8c1e-4f04-40f0-94b3-5ec43996b28a.json
│       │   │   │   ├── 28ff0031-190b-4253-bd15-14308dec013e.json
│       │   │   │   ├── 2ae6a5a7-2983-49e7-a4d8-7740b37c88cb.json
│       │   │   │   ├── 308929d3-41a2-43fe-a33c-75308539d841.json
│       │   │   │   ├── 359963ec-b09b-4ea0-aece-fb4dd95f304a.json
│       │   │   │   ├── 5ff66179-c240-4703-b0d8-494592cefff5.json
│       │   │   │   ├── a251ebc2-880c-4f76-a8f3-38e6940eab0e.json
│       │   │   │   ├── d7b9addb-ac15-4bc2-9fa5-562e0bf48755.json
│       │   │   │   └── ed253b2c-48ed-4c58-9b6f-1dc963c30a66.json
│       │   │   ├── identity_recovery_address/
│       │   │   │   └── b8293f1c-010f-45d9-b809-f3fc5365ba80.json
│       │   │   ├── identity_verification_address/
│       │   │   │   ├── 45e867e9-2745-4f16-8dd4-84334a252b61.json
│       │   │   │   ├── b2d59320-8564-4400-a39f-a22a497a23f1.json
│       │   │   │   ├── c2427b6d-312b-46d9-9285-536db7ae11fd.json
│       │   │   │   └── d4718a67-aec2-418d-8173-6ebc7bde3b86.json
│       │   │   ├── login_code/
│       │   │   │   └── bd292366-af32-4ba6-bdf0-11d6d1a217f3.json
│       │   │   ├── login_flow/
│       │   │   │   ├── 00b1517f-2467-4aaf-b0a5-82b4a27dcaf5.json
│       │   │   │   ├── 0bc96cc9-dda4-4700-9e42-35731f2af91e.json
│       │   │   │   ├── 1fb23c75-b809-42cc-8984-6ca2d0a1192f.json
│       │   │   │   ├── 202c1981-1e25-47f0-8764-75ad506c2bec.json
│       │   │   │   ├── 349c945a-60f8-436a-a301-7a42c92604f9.json
│       │   │   │   ├── 38caf592-b042-4551-b92f-8d5223c2a4e2.json
│       │   │   │   ├── 3a9ea34f-0f12-469b-9417-3ae5795a7baa.json
│       │   │   │   ├── 43c99182-bb67-47e1-b564-bb23bd8d4393.json
│       │   │   │   ├── 47edd3a8-0998-4779-9469-f4b8ee4430df.json
│       │   │   │   ├── 56d94e8b-8a5d-4b7f-8a6e-3259d2b2903e.json
│       │   │   │   ├── 6d387820-f2f4-4f9f-9980-a90d89e7811f.json
│       │   │   │   ├── 916ded11-aa64-4a27-b06e-96e221a509d7.json
│       │   │   │   ├── 99974ce6-388c-4669-a95a-7757ee724020.json
│       │   │   │   ├── b1fac7fb-d016-4a06-a7fe-e4eab2a0429f.json
│       │   │   │   ├── cccccccc-dda4-4700-9e42-35731f2af911.json
│       │   │   │   ├── cccccccc-dda4-4700-9e42-35731f2af91e.json
│       │   │   │   └── d6aa1f23-88c9-4b9b-a850-392f48c7f9e8.json
│       │   │   ├── recovery_code/
│       │   │   │   └── 8f75f5d9-9cb4-4848-9a73-9344f686f8a6.json
│       │   │   ├── recovery_flow/
│       │   │   │   ├── 0d14427f-e16d-43a5-8695-8278bf85d4eb.json
│       │   │   │   ├── 13178936-095a-466b-abe0-36d977d3dc18.json
│       │   │   │   ├── 4963f305-e874-4a68-8424-a00bec679e7b.json
│       │   │   │   ├── 68fb4010-84a9-4d1e-9f92-2705978ee891.json
│       │   │   │   ├── 68fb4010-84a9-4d1e-9f92-2705978ee89e.json
│       │   │   │   └── 87e871e1-a45f-4ed0-ba4e-a03063c774dc.json
│       │   │   ├── recovery_token/
│       │   │   │   ├── 1b667e6d-8fda-4194-a765-08185185d7e4.json
│       │   │   │   ├── 5529d454-2946-404e-b681-d950f8657fd0.json
│       │   │   │   └── 77ca3f5c-cd39-488b-9f1d-cc7166d14bdc.json
│       │   │   ├── registration_code/
│       │   │   │   └── f1f66a69-ce02-4a12-9591-9e02dda30a0d.json
│       │   │   ├── registration_flow/
│       │   │   │   ├── 05a7f09d-4ef3-41fb-958a-6ad74584b36a.json
│       │   │   │   ├── 22d58184-b97d-44a5-bbaf-0aa8b4000d81.json
│       │   │   │   ├── 2bf132e0-5d40-4df9-9a11-9106e5333735.json
│       │   │   │   ├── 696e7022-c466-44f6-89c6-8cf93c06a62a.json
│       │   │   │   ├── 69c80296-36cd-4afc-921a-15369cac5bf0.json
│       │   │   │   ├── 87fa3f43-5155-42b4-a1ad-174c2595fdaf.json
│       │   │   │   ├── 8ef215a9-e8d5-43b3-9aa3-cb4333562e36.json
│       │   │   │   ├── 8f32efdc-f6fc-4c27-a3c2-579d109eff60.json
│       │   │   │   ├── 9edcf051-1cd0-44cc-bd2f-6ac21f0c24dd.json
│       │   │   │   ├── e2150cdc-23ac-4940-a240-6c79c27ab029.json
│       │   │   │   ├── ef18b06e-4700-4021-9949-ef783cd86be1.json
│       │   │   │   ├── ef18b06e-4700-4021-9949-ef783cd86be8.json
│       │   │   │   └── f1b5ed18-113a-4a98-aae7-d4eba007199c.json
│       │   │   ├── session/
│       │   │   │   ├── 068f6bb6-d15f-436d-94f7-b3fd0489c9ef.json
│       │   │   │   ├── 7458af86-c1d8-401c-978a-8da89133f78b.json
│       │   │   │   ├── 7458af86-c1d8-401c-978a-8da89133f98b.json
│       │   │   │   ├── 8571e374-38f2-4f46-8ad3-b9d914e174d3.json
│       │   │   │   ├── dcde5aaa-f789-4d3d-ae1f-76da8d57e67c.json
│       │   │   │   └── f38cdebe-e567-42c9-a562-1bd4dee40998.json
│       │   │   ├── settings_flow/
│       │   │   │   ├── 194c5b05-0487-4a11-bcbc-f301c9ff9678.json
│       │   │   │   ├── 19ede218-928c-4e02-ab49-b76e12b34f31.json
│       │   │   │   ├── 19ede218-928c-4e02-ab49-b76e12b34f32.json
│       │   │   │   ├── 21c5f714-3089-49d2-b387-f244d4dd9e00.json
│       │   │   │   ├── 74fd6c53-7651-453e-90b8-2c5adbf911bb.json
│       │   │   │   ├── 77fe4fb3-2d4e-4532-b568-c44b0aece0aa.json
│       │   │   │   ├── 8248bb5d-8ef7-45e3-8e07-9e2003dd5352.json
│       │   │   │   ├── 90b4f970-b9ae-42bc-a0a7-73ec750e0aa1.json
│       │   │   │   ├── a79bfcf1-68ae-49de-8b23-4f96921b8341.json
│       │   │   │   ├── aeba85bd-1a8c-44bf-8fc3-3be83c01a3dc.json
│       │   │   │   └── cdfd1eed-34a4-491d-ad0a-7579d3a0a7ba.json
│       │   │   ├── verification_flow/
│       │   │   │   ├── 29b2c16e-2955-4faa-bd16-33af098cdf83.json
│       │   │   │   ├── 3631e880-ce59-4cbd-a705-0d825eea590d.json
│       │   │   │   ├── 42f31e47-65e1-4be9-80ea-e5d8ed64b236.json
│       │   │   │   ├── 5385c962-0295-4575-9b1b-d7eef13c0eda.json
│       │   │   │   ├── 6aae3159-b880-4cfb-a863-03b114b1371b.json
│       │   │   │   ├── 7be6c72c-c868-4b61-a1f0-1130603665d1.json
│       │   │   │   ├── 7be6c72c-c868-4b61-a1f0-1130603665d8.json
│       │   │   │   ├── 81f74e5d-1fa5-4e1b-a9bf-e95119260471.json
│       │   │   │   ├── 81f74e5d-1fa5-4e1b-a9bf-e9511926047c.json
│       │   │   │   ├── a8e2b810-a561-4a9e-bbd8-37f649bc26fa.json
│       │   │   │   └── b37d34c2-4290-4be4-9e3a-c6263ee77082.json
│       │   │   └── verification_token/
│       │   │       ├── ee56574d-2f0c-43f6-8d26-0062938ae330.json
│       │   │       ├── ee56574d-2f1c-43f6-8d26-0062938ae330.json
│       │   │       └── f81fd924-23bb-4cdf-8fa0-56253eff6cc9.json
│       │   ├── migration_test.go
│       │   ├── stub/
│       │   │   └── default.schema.json
│       │   └── testdata/
│       │       ├── 20150100000001_testdata.sql
│       │       ├── 20191100000001_testdata.sql
│       │       ├── 20191100000002_testdata.sql
│       │       ├── 20191100000003_testdata.sql
│       │       ├── 20191100000004_testdata.sql
│       │       ├── 20191100000005_testdata.mysql.sql
│       │       ├── 20191100000006_testdata.sql
│       │       ├── 20191100000007_testdata.sql
│       │       ├── 20191100000008_testdata.sql
│       │       ├── 20191100000009_testdata.mysql.sql
│       │       ├── 20191100000010_testdata.sql
│       │       ├── 20191100000011_testdata.sql
│       │       ├── 20191100000012_testdata.sql
│       │       ├── 20200317160354_testdata.sql
│       │       ├── 20200401183443_testdata.sql
│       │       ├── 20200402142539_testdata.sql
│       │       ├── 20200519101057_testdata.sql
│       │       ├── 20200519101058_testdata.mysql.sql
│       │       ├── 20200601101000_testdata.sql
│       │       ├── 20200601101001_testdata.mysql.sql
│       │       ├── 20200605111551_testdata.sql
│       │       ├── 20200607165100_testdata.sql
│       │       ├── 20200705105359_testdata.sql
│       │       ├── 20200810141652_testdata.sql
│       │       ├── 20200810161022_testdata.sql
│       │       ├── 20200810162450_testdata.sql
│       │       ├── 20200812124254_testdata.sql
│       │       ├── 20200812160551_testdata.sql
│       │       ├── 20200830121710_testdata.sql
│       │       ├── 20200830130642_testdata.sql
│       │       ├── 20200830130643_testdata.sql
│       │       ├── 20200830130644_testdata.sql
│       │       ├── 20200830130645_testdata.sql
│       │       ├── 20200830130646_testdata.sql
│       │       ├── 20200830154602_testdata.sql
│       │       ├── 20200830172221_testdata.sql
│       │       ├── 20200831110752_testdata.sql
│       │       ├── 20201201161451_testdata.sql
│       │       ├── 20210118113234_testdata.sql
│       │       ├── 20210126114619_testdata.sql
│       │       ├── 20210307130558_testdata.sql
│       │       ├── 20210307130559_testdata.sql
│       │       ├── 20210311102338_testdata.sql
│       │       ├── 20210410175418_testdata.sql
│       │       ├── 20210504121624_testdata.sql
│       │       ├── 20210618103120_testdata.sql
│       │       ├── 20210805112414_testdata.sql
│       │       ├── 20210805122535_testdata.sql
│       │       ├── 20210810153530_testdata.sql
│       │       ├── 20210813150152_testdata.sql
│       │       ├── 20210816113956_testdata.sql
│       │       ├── 20210816142650_testdata.sql
│       │       ├── 20210817181232_testdata.sql
│       │       ├── 20210829131458_testdata.sql
│       │       ├── 20210913095309_testdata.sql
│       │       ├── 20220118104539_testdata.sql
│       │       ├── 20220301102701_testdata.sql
│       │       ├── 20220420102701_testdata.sql
│       │       ├── 20220607000001_testdata.sql
│       │       ├── 20220902141902_testdata.sql
│       │       ├── 20220907132836_testdata.sql
│       │       ├── 20220929124401_testdata.sql
│       │       ├── 20221103120601_testdata.sql
│       │       ├── 20221205095201_testdata.sql
│       │       ├── 20230313141439_testdata.sql
│       │       ├── 20230614205200_testdata.sql
│       │       ├── 20230705000000_testdata.sql
│       │       ├── 20230706000000_testdata.sql
│       │       ├── 20230707133700_testdata.sql
│       │       └── 20230707133701_testdata.sql
│       ├── migrations/
│       │   ├── go/
│       │   │   ├── 20251105000000000000_identity_id_not_null_fks.go
│       │   │   └── gomigrations.go
│       │   ├── legacy/
│       │   │   ├── 20191100000001_identities.cockroach.down.sql
│       │   │   ├── 20191100000001_identities.cockroach.up.sql
│       │   │   ├── 20191100000001_identities.mysql.down.sql
│       │   │   ├── 20191100000001_identities.mysql.up.sql
│       │   │   ├── 20191100000001_identities.postgres.down.sql
│       │   │   ├── 20191100000001_identities.postgres.up.sql
│       │   │   ├── 20191100000001_identities.sqlite3.down.sql
│       │   │   ├── 20191100000001_identities.sqlite3.up.sql
│       │   │   ├── 20191100000002_requests.cockroach.down.sql
│       │   │   ├── 20191100000002_requests.cockroach.up.sql
│       │   │   ├── 20191100000002_requests.mysql.down.sql
│       │   │   ├── 20191100000002_requests.mysql.up.sql
│       │   │   ├── 20191100000002_requests.postgres.down.sql
│       │   │   ├── 20191100000002_requests.postgres.up.sql
│       │   │   ├── 20191100000002_requests.sqlite3.down.sql
│       │   │   ├── 20191100000002_requests.sqlite3.up.sql
│       │   │   ├── 20191100000003_sessions.cockroach.down.sql
│       │   │   ├── 20191100000003_sessions.cockroach.up.sql
│       │   │   ├── 20191100000003_sessions.mysql.down.sql
│       │   │   ├── 20191100000003_sessions.mysql.up.sql
│       │   │   ├── 20191100000003_sessions.postgres.down.sql
│       │   │   ├── 20191100000003_sessions.postgres.up.sql
│       │   │   ├── 20191100000003_sessions.sqlite3.down.sql
│       │   │   ├── 20191100000003_sessions.sqlite3.up.sql
│       │   │   ├── 20191100000004_errors.cockroach.down.sql
│       │   │   ├── 20191100000004_errors.cockroach.up.sql
│       │   │   ├── 20191100000004_errors.mysql.down.sql
│       │   │   ├── 20191100000004_errors.mysql.up.sql
│       │   │   ├── 20191100000004_errors.postgres.down.sql
│       │   │   ├── 20191100000004_errors.postgres.up.sql
│       │   │   ├── 20191100000004_errors.sqlite3.down.sql
│       │   │   ├── 20191100000004_errors.sqlite3.up.sql
│       │   │   ├── 20191100000005_identities.mysql.down.sql
│       │   │   ├── 20191100000005_identities.mysql.up.sql
│       │   │   ├── 20191100000006_courier.cockroach.down.sql
│       │   │   ├── 20191100000006_courier.cockroach.up.sql
│       │   │   ├── 20191100000006_courier.mysql.down.sql
│       │   │   ├── 20191100000006_courier.mysql.up.sql
│       │   │   ├── 20191100000006_courier.postgres.down.sql
│       │   │   ├── 20191100000006_courier.postgres.up.sql
│       │   │   ├── 20191100000006_courier.sqlite3.down.sql
│       │   │   ├── 20191100000006_courier.sqlite3.up.sql
│       │   │   ├── 20191100000007_errors.cockroach.down.sql
│       │   │   ├── 20191100000007_errors.cockroach.up.sql
│       │   │   ├── 20191100000007_errors.mysql.down.sql
│       │   │   ├── 20191100000007_errors.mysql.up.sql
│       │   │   ├── 20191100000007_errors.postgres.down.sql
│       │   │   ├── 20191100000007_errors.postgres.up.sql
│       │   │   ├── 20191100000007_errors.sqlite3.down.sql
│       │   │   ├── 20191100000007_errors.sqlite3.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.cockroach.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.cockroach.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.mysql.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.mysql.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.postgres.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.postgres.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.sqlite3.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.sqlite3.up.sql
│       │   │   ├── 20191100000009_verification.mysql.down.sql
│       │   │   ├── 20191100000009_verification.mysql.up.sql
│       │   │   ├── 20191100000010_errors.cockroach.down.sql
│       │   │   ├── 20191100000010_errors.cockroach.up.sql
│       │   │   ├── 20191100000010_errors.mysql.down.sql
│       │   │   ├── 20191100000010_errors.mysql.up.sql
│       │   │   ├── 20191100000010_errors.postgres.down.sql
│       │   │   ├── 20191100000010_errors.postgres.up.sql
│       │   │   ├── 20191100000010_errors.sqlite3.down.sql
│       │   │   ├── 20191100000010_errors.sqlite3.up.sql
│       │   │   ├── 20191100000011_courier_body_type.cockroach.up.sql
│       │   │   ├── 20191100000011_courier_body_type.down.sql
│       │   │   ├── 20191100000011_courier_body_type.mysql.up.sql
│       │   │   ├── 20191100000011_courier_body_type.postgres.up.sql
│       │   │   ├── 20191100000011_courier_body_type.sqlite3.up.sql
│       │   │   ├── 20191100000012_login_request_forced.cockroach.down.sql
│       │   │   ├── 20191100000012_login_request_forced.cockroach.up.sql
│       │   │   ├── 20191100000012_login_request_forced.mysql.down.sql
│       │   │   ├── 20191100000012_login_request_forced.mysql.up.sql
│       │   │   ├── 20191100000012_login_request_forced.postgres.down.sql
│       │   │   ├── 20191100000012_login_request_forced.postgres.up.sql
│       │   │   ├── 20191100000012_login_request_forced.sqlite3.down.sql
│       │   │   ├── 20191100000012_login_request_forced.sqlite3.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.cockroach.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.cockroach.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.mysql.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.mysql.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.postgres.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.postgres.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.sqlite3.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.sqlite3.up.sql
│       │   │   ├── 20200401183443_continuity_containers.cockroach.down.sql
│       │   │   ├── 20200401183443_continuity_containers.cockroach.up.sql
│       │   │   ├── 20200401183443_continuity_containers.mysql.down.sql
│       │   │   ├── 20200401183443_continuity_containers.mysql.up.sql
│       │   │   ├── 20200401183443_continuity_containers.postgres.down.sql
│       │   │   ├── 20200401183443_continuity_containers.postgres.up.sql
│       │   │   ├── 20200401183443_continuity_containers.sqlite3.down.sql
│       │   │   ├── 20200401183443_continuity_containers.sqlite3.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.cockroach.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.cockroach.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.mysql.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.mysql.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.postgres.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.postgres.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.sqlite3.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.sqlite3.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.cockroach.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.cockroach.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.mysql.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.mysql.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.postgres.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.postgres.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.sqlite3.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.sqlite3.up.sql
│       │   │   ├── 20200519101058_create_recovery_addresses.mysql.down.sql
│       │   │   ├── 20200519101058_create_recovery_addresses.mysql.up.sql
│       │   │   ├── 20200601101000_create_messages.cockroach.down.sql
│       │   │   ├── 20200601101000_create_messages.cockroach.up.sql
│       │   │   ├── 20200601101000_create_messages.mysql.down.sql
│       │   │   ├── 20200601101000_create_messages.mysql.up.sql
│       │   │   ├── 20200601101000_create_messages.postgres.down.sql
│       │   │   ├── 20200601101000_create_messages.postgres.up.sql
│       │   │   ├── 20200601101000_create_messages.sqlite3.down.sql
│       │   │   ├── 20200601101000_create_messages.sqlite3.up.sql
│       │   │   ├── 20200601101001_verification.mysql.down.sql
│       │   │   ├── 20200601101001_verification.mysql.up.sql
│       │   │   ├── 20200605111551_messages.cockroach.down.sql
│       │   │   ├── 20200605111551_messages.cockroach.up.sql
│       │   │   ├── 20200605111551_messages.mysql.down.sql
│       │   │   ├── 20200605111551_messages.mysql.up.sql
│       │   │   ├── 20200605111551_messages.postgres.down.sql
│       │   │   ├── 20200605111551_messages.postgres.up.sql
│       │   │   ├── 20200605111551_messages.sqlite3.down.sql
│       │   │   ├── 20200605111551_messages.sqlite3.up.sql
│       │   │   ├── 20200607165100_settings.cockroach.down.sql
│       │   │   ├── 20200607165100_settings.cockroach.up.sql
│       │   │   ├── 20200607165100_settings.mysql.down.sql
│       │   │   ├── 20200607165100_settings.mysql.up.sql
│       │   │   ├── 20200607165100_settings.postgres.down.sql
│       │   │   ├── 20200607165100_settings.postgres.up.sql
│       │   │   ├── 20200607165100_settings.sqlite3.down.sql
│       │   │   ├── 20200607165100_settings.sqlite3.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.cockroach.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.cockroach.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.mysql.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.mysql.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.postgres.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.postgres.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.sqlite3.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.sqlite3.up.sql
│       │   │   ├── 20200810141652_flow_type.cockroach.down.sql
│       │   │   ├── 20200810141652_flow_type.cockroach.up.sql
│       │   │   ├── 20200810141652_flow_type.mysql.down.sql
│       │   │   ├── 20200810141652_flow_type.mysql.up.sql
│       │   │   ├── 20200810141652_flow_type.postgres.down.sql
│       │   │   ├── 20200810141652_flow_type.postgres.up.sql
│       │   │   ├── 20200810141652_flow_type.sqlite3.down.sql
│       │   │   ├── 20200810141652_flow_type.sqlite3.up.sql
│       │   │   ├── 20200810161022_flow_rename.cockroach.down.sql
│       │   │   ├── 20200810161022_flow_rename.cockroach.up.sql
│       │   │   ├── 20200810161022_flow_rename.mysql.down.sql
│       │   │   ├── 20200810161022_flow_rename.mysql.up.sql
│       │   │   ├── 20200810161022_flow_rename.postgres.down.sql
│       │   │   ├── 20200810161022_flow_rename.postgres.up.sql
│       │   │   ├── 20200810161022_flow_rename.sqlite3.down.sql
│       │   │   ├── 20200810161022_flow_rename.sqlite3.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.cockroach.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.cockroach.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.mysql.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.mysql.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.postgres.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.postgres.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.sqlite3.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.sqlite3.up.sql
│       │   │   ├── 20200812124254_add_session_token.cockroach.down.sql
│       │   │   ├── 20200812124254_add_session_token.cockroach.up.sql
│       │   │   ├── 20200812124254_add_session_token.mysql.down.sql
│       │   │   ├── 20200812124254_add_session_token.mysql.up.sql
│       │   │   ├── 20200812124254_add_session_token.postgres.down.sql
│       │   │   ├── 20200812124254_add_session_token.postgres.up.sql
│       │   │   ├── 20200812124254_add_session_token.sqlite3.down.sql
│       │   │   ├── 20200812124254_add_session_token.sqlite3.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.cockroach.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.cockroach.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.mysql.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.mysql.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.postgres.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.postgres.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.sqlite3.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.sqlite3.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.cockroach.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.cockroach.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.mysql.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.mysql.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.postgres.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.postgres.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.sqlite3.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.sqlite3.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.cockroach.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.mysql.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.postgres.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.sqlite3.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.down.sql
│       │   │   ├── 20200830130643_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.down.sql
│       │   │   ├── 20200830130644_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.down.sql
│       │   │   ├── 20200830130645_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.down.sql
│       │   │   ├── 20200830130646_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830154602_add_verification_token.cockroach.down.sql
│       │   │   ├── 20200830154602_add_verification_token.cockroach.up.sql
│       │   │   ├── 20200830154602_add_verification_token.mysql.down.sql
│       │   │   ├── 20200830154602_add_verification_token.mysql.up.sql
│       │   │   ├── 20200830154602_add_verification_token.postgres.down.sql
│       │   │   ├── 20200830154602_add_verification_token.postgres.up.sql
│       │   │   ├── 20200830154602_add_verification_token.sqlite3.down.sql
│       │   │   ├── 20200830154602_add_verification_token.sqlite3.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.cockroach.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.cockroach.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.mysql.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.mysql.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.postgres.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.postgres.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.sqlite3.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.sqlite3.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.up.sql
│       │   │   ├── 20201201161451_credential_types_values.cockroach.down.sql
│       │   │   ├── 20201201161451_credential_types_values.cockroach.up.sql
│       │   │   ├── 20201201161451_credential_types_values.mysql.down.sql
│       │   │   ├── 20201201161451_credential_types_values.mysql.up.sql
│       │   │   ├── 20201201161451_credential_types_values.postgres.down.sql
│       │   │   ├── 20201201161451_credential_types_values.postgres.up.sql
│       │   │   ├── 20201201161451_credential_types_values.sqlite3.down.sql
│       │   │   └── 20201201161451_credential_types_values.sqlite3.up.sql
│       │   └── sql/
│       │       ├── 20150100000001000000_networks.cockroach.down.sql
│       │       ├── 20150100000001000000_networks.cockroach.up.sql
│       │       ├── 20150100000001000000_networks.mysql.down.sql
│       │       ├── 20150100000001000000_networks.mysql.up.sql
│       │       ├── 20150100000001000000_networks.postgres.down.sql
│       │       ├── 20150100000001000000_networks.postgres.up.sql
│       │       ├── 20150100000001000000_networks.sqlite3.down.sql
│       │       ├── 20150100000001000000_networks.sqlite3.up.sql
│       │       ├── 20191100000001000000_identities.cockroach.down.sql
│       │       ├── 20191100000001000000_identities.cockroach.up.sql
│       │       ├── 20191100000001000000_identities.mysql.down.sql
│       │       ├── 20191100000001000000_identities.mysql.up.sql
│       │       ├── 20191100000001000000_identities.postgres.down.sql
│       │       ├── 20191100000001000000_identities.postgres.up.sql
│       │       ├── 20191100000001000000_identities.sqlite3.down.sql
│       │       ├── 20191100000001000000_identities.sqlite3.up.sql
│       │       ├── 20191100000001000001_identities.cockroach.down.sql
│       │       ├── 20191100000001000001_identities.cockroach.up.sql
│       │       ├── 20191100000001000001_identities.mysql.down.sql
│       │       ├── 20191100000001000001_identities.mysql.up.sql
│       │       ├── 20191100000001000001_identities.postgres.down.sql
│       │       ├── 20191100000001000001_identities.postgres.up.sql
│       │       ├── 20191100000001000001_identities.sqlite3.down.sql
│       │       ├── 20191100000001000001_identities.sqlite3.up.sql
│       │       ├── 20191100000001000002_identities.cockroach.down.sql
│       │       ├── 20191100000001000002_identities.cockroach.up.sql
│       │       ├── 20191100000001000002_identities.mysql.down.sql
│       │       ├── 20191100000001000002_identities.mysql.up.sql
│       │       ├── 20191100000001000002_identities.postgres.down.sql
│       │       ├── 20191100000001000002_identities.postgres.up.sql
│       │       ├── 20191100000001000002_identities.sqlite3.down.sql
│       │       ├── 20191100000001000002_identities.sqlite3.up.sql
│       │       ├── 20191100000001000003_identities.cockroach.down.sql
│       │       ├── 20191100000001000003_identities.cockroach.up.sql
│       │       ├── 20191100000001000003_identities.mysql.down.sql
│       │       ├── 20191100000001000003_identities.mysql.up.sql
│       │       ├── 20191100000001000003_identities.postgres.down.sql
│       │       ├── 20191100000001000003_identities.postgres.up.sql
│       │       ├── 20191100000001000003_identities.sqlite3.down.sql
│       │       ├── 20191100000001000003_identities.sqlite3.up.sql
│       │       ├── 20191100000001000004_identities.cockroach.down.sql
│       │       ├── 20191100000001000004_identities.cockroach.up.sql
│       │       ├── 20191100000001000004_identities.mysql.down.sql
│       │       ├── 20191100000001000004_identities.mysql.up.sql
│       │       ├── 20191100000001000004_identities.postgres.down.sql
│       │       ├── 20191100000001000004_identities.postgres.up.sql
│       │       ├── 20191100000001000004_identities.sqlite3.down.sql
│       │       ├── 20191100000001000004_identities.sqlite3.up.sql
│       │       ├── 20191100000001000005_identities.cockroach.down.sql
│       │       ├── 20191100000001000005_identities.cockroach.up.sql
│       │       ├── 20191100000001000005_identities.mysql.down.sql
│       │       ├── 20191100000001000005_identities.mysql.up.sql
│       │       ├── 20191100000001000005_identities.postgres.down.sql
│       │       ├── 20191100000001000005_identities.postgres.up.sql
│       │       ├── 20191100000001000005_identities.sqlite3.down.sql
│       │       ├── 20191100000001000005_identities.sqlite3.up.sql
│       │       ├── 20191100000002000000_requests.cockroach.down.sql
│       │       ├── 20191100000002000000_requests.cockroach.up.sql
│       │       ├── 20191100000002000000_requests.mysql.down.sql
│       │       ├── 20191100000002000000_requests.mysql.up.sql
│       │       ├── 20191100000002000000_requests.postgres.down.sql
│       │       ├── 20191100000002000000_requests.postgres.up.sql
│       │       ├── 20191100000002000000_requests.sqlite3.down.sql
│       │       ├── 20191100000002000000_requests.sqlite3.up.sql
│       │       ├── 20191100000002000001_requests.cockroach.down.sql
│       │       ├── 20191100000002000001_requests.cockroach.up.sql
│       │       ├── 20191100000002000001_requests.mysql.down.sql
│       │       ├── 20191100000002000001_requests.mysql.up.sql
│       │       ├── 20191100000002000001_requests.postgres.down.sql
│       │       ├── 20191100000002000001_requests.postgres.up.sql
│       │       ├── 20191100000002000001_requests.sqlite3.down.sql
│       │       ├── 20191100000002000001_requests.sqlite3.up.sql
│       │       ├── 20191100000002000002_requests.cockroach.down.sql
│       │       ├── 20191100000002000002_requests.cockroach.up.sql
│       │       ├── 20191100000002000002_requests.mysql.down.sql
│       │       ├── 20191100000002000002_requests.mysql.up.sql
│       │       ├── 20191100000002000002_requests.postgres.down.sql
│       │       ├── 20191100000002000002_requests.postgres.up.sql
│       │       ├── 20191100000002000002_requests.sqlite3.down.sql
│       │       ├── 20191100000002000002_requests.sqlite3.up.sql
│       │       ├── 20191100000002000003_requests.cockroach.down.sql
│       │       ├── 20191100000002000003_requests.cockroach.up.sql
│       │       ├── 20191100000002000003_requests.mysql.down.sql
│       │       ├── 20191100000002000003_requests.mysql.up.sql
│       │       ├── 20191100000002000003_requests.postgres.down.sql
│       │       ├── 20191100000002000003_requests.postgres.up.sql
│       │       ├── 20191100000002000003_requests.sqlite3.down.sql
│       │       ├── 20191100000002000003_requests.sqlite3.up.sql
│       │       ├── 20191100000002000004_requests.cockroach.down.sql
│       │       ├── 20191100000002000004_requests.cockroach.up.sql
│       │       ├── 20191100000002000004_requests.mysql.down.sql
│       │       ├── 20191100000002000004_requests.mysql.up.sql
│       │       ├── 20191100000002000004_requests.postgres.down.sql
│       │       ├── 20191100000002000004_requests.postgres.up.sql
│       │       ├── 20191100000002000004_requests.sqlite3.down.sql
│       │       ├── 20191100000002000004_requests.sqlite3.up.sql
│       │       ├── 20191100000003000000_sessions.cockroach.down.sql
│       │       ├── 20191100000003000000_sessions.cockroach.up.sql
│       │       ├── 20191100000003000000_sessions.mysql.down.sql
│       │       ├── 20191100000003000000_sessions.mysql.up.sql
│       │       ├── 20191100000003000000_sessions.postgres.down.sql
│       │       ├── 20191100000003000000_sessions.postgres.up.sql
│       │       ├── 20191100000003000000_sessions.sqlite3.down.sql
│       │       ├── 20191100000003000000_sessions.sqlite3.up.sql
│       │       ├── 20191100000004000000_errors.cockroach.down.sql
│       │       ├── 20191100000004000000_errors.cockroach.up.sql
│       │       ├── 20191100000004000000_errors.mysql.down.sql
│       │       ├── 20191100000004000000_errors.mysql.up.sql
│       │       ├── 20191100000004000000_errors.postgres.down.sql
│       │       ├── 20191100000004000000_errors.postgres.up.sql
│       │       ├── 20191100000004000000_errors.sqlite3.down.sql
│       │       ├── 20191100000004000000_errors.sqlite3.up.sql
│       │       ├── 20191100000005000000_identities.mysql.down.sql
│       │       ├── 20191100000005000000_identities.mysql.up.sql
│       │       ├── 20191100000005000001_identities.mysql.down.sql
│       │       ├── 20191100000005000001_identities.mysql.up.sql
│       │       ├── 20191100000006000000_courier.cockroach.down.sql
│       │       ├── 20191100000006000000_courier.cockroach.up.sql
│       │       ├── 20191100000006000000_courier.mysql.down.sql
│       │       ├── 20191100000006000000_courier.mysql.up.sql
│       │       ├── 20191100000006000000_courier.postgres.down.sql
│       │       ├── 20191100000006000000_courier.postgres.up.sql
│       │       ├── 20191100000006000000_courier.sqlite3.down.sql
│       │       ├── 20191100000006000000_courier.sqlite3.up.sql
│       │       ├── 20191100000007000000_errors.cockroach.down.sql
│       │       ├── 20191100000007000000_errors.cockroach.up.sql
│       │       ├── 20191100000007000000_errors.mysql.down.sql
│       │       ├── 20191100000007000000_errors.mysql.up.sql
│       │       ├── 20191100000007000000_errors.postgres.down.sql
│       │       ├── 20191100000007000000_errors.postgres.up.sql
│       │       ├── 20191100000007000000_errors.sqlite3.down.sql
│       │       ├── 20191100000007000000_errors.sqlite3.up.sql
│       │       ├── 20191100000007000001_errors.sqlite3.down.sql
│       │       ├── 20191100000007000001_errors.sqlite3.up.sql
│       │       ├── 20191100000007000002_errors.sqlite3.down.sql
│       │       ├── 20191100000007000002_errors.sqlite3.up.sql
│       │       ├── 20191100000007000003_errors.sqlite3.down.sql
│       │       ├── 20191100000007000003_errors.sqlite3.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000009000000_verification.mysql.down.sql
│       │       ├── 20191100000009000000_verification.mysql.up.sql
│       │       ├── 20191100000009000001_verification.mysql.down.sql
│       │       ├── 20191100000009000001_verification.mysql.up.sql
│       │       ├── 20191100000010000000_errors.cockroach.down.sql
│       │       ├── 20191100000010000000_errors.cockroach.up.sql
│       │       ├── 20191100000010000000_errors.mysql.down.sql
│       │       ├── 20191100000010000000_errors.mysql.up.sql
│       │       ├── 20191100000010000000_errors.postgres.down.sql
│       │       ├── 20191100000010000000_errors.postgres.up.sql
│       │       ├── 20191100000010000000_errors.sqlite3.down.sql
│       │       ├── 20191100000010000000_errors.sqlite3.up.sql
│       │       ├── 20191100000010000001_errors.cockroach.down.sql
│       │       ├── 20191100000010000001_errors.cockroach.up.sql
│       │       ├── 20191100000010000001_errors.mysql.down.sql
│       │       ├── 20191100000010000001_errors.mysql.up.sql
│       │       ├── 20191100000010000001_errors.postgres.down.sql
│       │       ├── 20191100000010000001_errors.postgres.up.sql
│       │       ├── 20191100000010000001_errors.sqlite3.down.sql
│       │       ├── 20191100000010000001_errors.sqlite3.up.sql
│       │       ├── 20191100000010000002_errors.cockroach.down.sql
│       │       ├── 20191100000010000002_errors.cockroach.up.sql
│       │       ├── 20191100000010000002_errors.sqlite3.down.sql
│       │       ├── 20191100000010000002_errors.sqlite3.up.sql
│       │       ├── 20191100000010000003_errors.cockroach.down.sql
│       │       ├── 20191100000010000003_errors.cockroach.up.sql
│       │       ├── 20191100000010000003_errors.sqlite3.down.sql
│       │       ├── 20191100000010000003_errors.sqlite3.up.sql
│       │       ├── 20191100000010000004_errors.cockroach.down.sql
│       │       ├── 20191100000010000004_errors.cockroach.up.sql
│       │       ├── 20191100000010000004_errors.sqlite3.down.sql
│       │       ├── 20191100000010000004_errors.sqlite3.up.sql
│       │       ├── 20191100000011000000_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000000_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000000_courier_body_type.mysql.down.sql
│       │       ├── 20191100000011000000_courier_body_type.mysql.up.sql
│       │       ├── 20191100000011000000_courier_body_type.postgres.down.sql
│       │       ├── 20191100000011000000_courier_body_type.postgres.up.sql
│       │       ├── 20191100000011000000_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000000_courier_body_type.sqlite3.up.sql
│       │       ├── 20191100000011000001_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000001_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000001_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000001_courier_body_type.sqlite3.up.sql
│       │       ├── 20191100000011000002_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000002_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000002_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000002_courier_body_type.sqlite3.up.sql
│       │       ├── 20191100000011000003_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000003_courier_body_type.cockroach.up.sql
│       │       ├── 201911000

================================================
FILE CONTENTS
================================================

================================================
FILE: .docker/Dockerfile-alpine
================================================
FROM alpine:3.20.0

# Because this image supports SQLite, we create /home/ory and /home/ory/sqlite which is owned by the ory user
# and declare /home/ory/sqlite a volume.
#
# To get SQLite and Docker Volumes working with this image, mount the volume where SQLite should be written to at:
#
#   /home/ory/sqlite/some-file.

RUN addgroup -S ory; \
    adduser -S ory -G ory -D -u 10000 -h /home/ory -s /bin/nologin; \
    chown -R ory:ory /home/ory
RUN apk --update upgrade && apk --no-cache --update-cache --upgrade --latest add ca-certificates

WORKDIR /home/ory

COPY kratos /usr/bin/kratos

# By creating the sqlite folder as the ory user, the mounted volume will be owned by ory:ory, which
# is required for read/write of SQLite.
RUN mkdir -p /var/lib/sqlite
RUN chown ory:ory /var/lib/sqlite
VOLUME /var/lib/sqlite

# Exposing the ory home directory to simplify passing in Kratos configuration (e.g. if the file $HOME/.kratos.yaml
# exists, it will be automatically used as the configuration file).
VOLUME /home/ory

# Declare the standard ports used by Kratos (4433 for public service endpoint, 4434 for admin service endpoint)
EXPOSE 4433 4434

USER 10000

ENTRYPOINT ["kratos"]
CMD ["serve"]


================================================
FILE: .docker/Dockerfile-build
================================================
FROM golang:1.26-trixie AS builder

RUN apt-get update && apt-get upgrade -y &&\
  mkdir -p /var/lib/sqlite

WORKDIR /go/src/github.com/ory/kratos

COPY oryx/go.mod oryx/go.mod
COPY oryx/go.sum oryx/go.sum
                

COPY go.mod go.mod
COPY go.sum go.sum
COPY pkg/client-go/go.* pkg/client-go/

ENV CGO_ENABLED 1
ENV CGO_CPPFLAGS -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600

RUN go mod download

COPY . .

ARG VERSION
ARG COMMIT
ARG BUILD_DATE

RUN --mount=type=cache,target=/root/.cache/go-build go build -tags sqlite \
  -ldflags="-X 'github.com/ory/kratos/driver/config.Version=${VERSION}' -X 'github.com/ory/kratos/driver/config.Date=${BUILD_DATE}' -X 'github.com/ory/kratos/driver/config.Commit=${COMMIT}'" \
  -o /usr/bin/kratos

#########################
FROM gcr.io/distroless/base-nossl-debian12:nonroot AS runner

COPY --from=builder --chown=nonroot:nonroot /var/lib/sqlite /var/lib/sqlite
COPY --from=builder --chown=nonroot:nonroot /usr/bin/kratos /usr/bin/kratos

VOLUME /var/lib/sqlite

# Declare the standard ports used by Kratos (4433 for public service endpoint, 4434 for admin service endpoint)
EXPOSE 4433 4434

ENTRYPOINT ["kratos"]
CMD ["serve"]


================================================
FILE: .docker/Dockerfile-debug
================================================
FROM golang:1.26-trixie
ENV CGO_ENABLED 1

RUN apt-get update && apt-get install -y --no-install-recommends inotify-tools psmisc
RUN go install github.com/go-delve/delve/cmd/dlv@latest

COPY script/debug-entrypoint.sh /entrypoint.sh

VOLUME /dockerdev

WORKDIR /dockerdev

ENV DELVE_PORT 40000
ENV SERVICE_NAME service

EXPOSE 8000 $DELVE_PORT

ENTRYPOINT ["/entrypoint.sh"]


================================================
FILE: .docker/Dockerfile-distroless-static
================================================
FROM gcr.io/distroless/static-debian12:nonroot

COPY kratos /usr/bin/kratos
EXPOSE 4433 4434

ENTRYPOINT ["kratos"]
CMD ["serve"]


================================================
FILE: .docker/docker-compose.template.dbg
================================================
version: '3.7'

services:
  ${SERVICE_NAME}:
    build:
      dockerfile: ./.docker/Dockerfile-debug
    ports:
      - ${REMOTE_DEBUGGING_PORT}:40000
    security_opt:
      - apparmor=unconfined
    cap_add:
      - SYS_PTRACE
    volumes:
      - type: bind
        source: ${SERVICE_ROOT}
        target: /dockerdev
        read_only: false


================================================
FILE: .dockerignore
================================================
docs
.releaser
.github
.circleci
tmp
scripts
.idea
.git/
database.yaml
contrib/quickstart
node_modules/
./quickstart.yml
./quickstart-*.yml
.bin/
test/
pgked.go


================================================
FILE: .editorconfig
================================================
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.go]
indent_size = 4
indent_style = tab


================================================
FILE: .github/CODEOWNERS
================================================
*            @aeneasr @ory/product-development


================================================
FILE: .github/FUNDING.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/FUNDING.yml

# These are supported funding model platforms

# github:
patreon: _ory
open_collective: ory


================================================
FILE: .github/ISSUE_TEMPLATE/BUG-REPORT.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/ISSUE_TEMPLATE/BUG-REPORT.yml

description: "Create a bug report"
labels:
  - bug
name: "Bug Report"
body:
  - attributes:
      value: "Thank you for taking the time to fill out this bug report!\n"
    type: markdown
  - attributes:
      label: "Preflight checklist"
      options:
        - label:
            "I could not find a solution in the existing issues, docs, nor
            discussions."
          required: true
        - label:
            "I agree to follow this project's [Code of
            Conduct](https://github.com/ory/kratos/blob/master/CODE_OF_CONDUCT.md)."
          required: true
        - label:
            "I have read and am following this repository's [Contribution
            Guidelines](https://github.com/ory/kratos/blob/master/CONTRIBUTING.md)."
          required: true
        - label:
            "I have joined the [Ory Community Slack](https://slack.ory.com)."
        - label:
            "I am signed up to the [Ory Security Patch
            Newsletter](https://www.ory.com/l/sign-up-newsletter)."
    id: checklist
    type: checkboxes
  - attributes:
      description:
        "Enter the slug or API URL of the affected Ory Network project. Leave
        empty when you are self-hosting."
      label: "Ory Network Project"
      placeholder: "https://<your-project-slug>.projects.oryapis.com"
    id: ory-network-project
    type: input
  - attributes:
      description: "A clear and concise description of what the bug is."
      label: "Describe the bug"
      placeholder: "Tell us what you see!"
    id: describe-bug
    type: textarea
    validations:
      required: true
  - attributes:
      description: |
        Clear, formatted, and easy to follow steps to reproduce the behavior:
      placeholder: |
        Steps to reproduce the behavior:

        1. Run `docker run ....`
        2. Make API Request to with `curl ...`
        3. Request fails with response: `{"some": "error"}`
      label: "Reproducing the bug"
    id: reproduce-bug
    type: textarea
    validations:
      required: true
  - attributes:
      description:
        "Please copy and paste any relevant log output. This will be
        automatically formatted into code, so no need for backticks. Please
        redact any sensitive information"
      label: "Relevant log output"
      render: shell
      placeholder: |
        log=error ....
    id: logs
    type: textarea
  - attributes:
      description:
        "Please copy and paste any relevant configuration. This will be
        automatically formatted into code, so no need for backticks. Please
        redact any sensitive information!"
      label: "Relevant configuration"
      render: yml
      placeholder: |
        server:
          admin:
            port: 1234
    id: config
    type: textarea
  - attributes:
      description: "What version of our software are you running?"
      label: Version
    id: version
    type: input
    validations:
      required: true
  - attributes:
      label: "On which operating system are you observing this issue?"
      options:
        - Ory Network
        - macOS
        - Linux
        - Windows
        - FreeBSD
        - Other
    id: operating-system
    type: dropdown
  - attributes:
      label: "In which environment are you deploying?"
      options:
        - Ory Network
        - Docker
        - "Docker Compose"
        - "Kubernetes with Helm"
        - Kubernetes
        - Binary
        - Other
    id: deployment
    type: dropdown
  - attributes:
      description: "Add any other context about the problem here."
      label: Additional Context
    id: additional
    type: textarea


================================================
FILE: .github/ISSUE_TEMPLATE/DESIGN-DOC.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/ISSUE_TEMPLATE/DESIGN-DOC.yml

description:
  "A design document is needed for non-trivial changes to the code base."
labels:
  - rfc
name: "Design Document"
body:
  - attributes:
      value: |
        Thank you for writing this design document. 

        One of the key elements of Ory's software engineering culture is the use of defining software designs through design docs. These are relatively informal documents that the primary author or authors of a software system or application create before they embark on the coding project. The design doc documents the high level implementation strategy and key design decisions with emphasis on the trade-offs that were considered during those decisions.

        Ory is leaning heavily on [Google's design docs process](https://www.industrialempathy.com/posts/design-docs-at-google/)
        and [Golang Proposals](https://github.com/golang/proposal).

        Writing a design doc before contributing your change ensures that your ideas are checked with
        the community and maintainers. It will save you a lot of time developing things that might need to be changed
        after code reviews, and your pull requests will be merged faster.
    type: markdown
  - attributes:
      label: "Preflight checklist"
      options:
        - label:
            "I could not find a solution in the existing issues, docs, nor
            discussions."
          required: true
        - label:
            "I agree to follow this project's [Code of
            Conduct](https://github.com/ory/kratos/blob/master/CODE_OF_CONDUCT.md)."
          required: true
        - label:
            "I have read and am following this repository's [Contribution
            Guidelines](https://github.com/ory/kratos/blob/master/CONTRIBUTING.md)."
          required: true
        - label:
            "I have joined the [Ory Community Slack](https://slack.ory.com)."
        - label:
            "I am signed up to the [Ory Security Patch
            Newsletter](https://www.ory.com/l/sign-up-newsletter)."
    id: checklist
    type: checkboxes
  - attributes:
      description:
        "Enter the slug or API URL of the affected Ory Network project. Leave
        empty when you are self-hosting."
      label: "Ory Network Project"
      placeholder: "https://<your-project-slug>.projects.oryapis.com"
    id: ory-network-project
    type: input
  - attributes:
      description: |
        This section gives the reader a very rough overview of the landscape in which the new system is being built and what is actually being built. This isn’t a requirements doc. Keep it succinct! The goal is that readers are brought up to speed but some previous knowledge can be assumed and detailed info can be linked to. This section should be entirely focused on objective background facts.
      label: "Context and scope"
    id: scope
    type: textarea
    validations:
      required: true

  - attributes:
      description: |
        A short list of bullet points of what the goals of the system are, and, sometimes more importantly, what non-goals are. Note, that non-goals aren’t negated goals like “The system shouldn’t crash”, but rather things that could reasonably be goals, but are explicitly chosen not to be goals. A good example would be “ACID compliance”; when designing a database, you’d certainly want to know whether that is a goal or non-goal. And if it is a non-goal you might still select a solution that provides it, if it doesn’t introduce trade-offs that prevent achieving the goals.
      label: "Goals and non-goals"
    id: goals
    type: textarea
    validations:
      required: true

  - attributes:
      description: |
        This section should start with an overview and then go into details.
        The design doc is the place to write down the trade-offs you made in designing your software. Focus on those trade-offs to produce a useful document with long-term value. That is, given the context (facts), goals and non-goals (requirements), the design doc is the place to suggest solutions and show why a particular solution best satisfies those goals.

        The point of writing a document over a more formal medium is to provide the flexibility to express the problem at hand in an appropriate manner. Because of this, there is no explicit guidance on how to actually describe the design.
      label: "The design"
    id: design
    type: textarea
    validations:
      required: true

  - attributes:
      description: |
        If the system under design exposes an API, then sketching out that API is usually a good idea. In most cases, however, one should withstand the temptation to copy-paste formal interface or data definitions into the doc as these are often verbose, contain unnecessary detail and quickly get out of date. Instead, focus on the parts that are relevant to the design and its trade-offs.
      label: "APIs"
    id: apis
    type: textarea

  - attributes:
      description: |
        Systems that store data should likely discuss how and in what rough form this happens. Similar to the advice on APIs, and for the same reasons, copy-pasting complete schema definitions should be avoided. Instead, focus on the parts that are relevant to the design and its trade-offs.
      label: "Data storage"
    id: persistence
    type: textarea

  - attributes:
      description: |
        Design docs should rarely contain code, or pseudo-code except in situations where novel algorithms are described. As appropriate, link to prototypes that show the feasibility of the design.
      label: "Code and pseudo-code"
    id: pseudocode
    type: textarea

  - attributes:
      description: |
        One of the primary factors that would influence the shape of a software design and hence the design doc, is the degree of constraint of the solution space.

        On one end of the extreme is the “greenfield software project”, where all we know are the goals, and the solution can be whatever makes the most sense. Such a document may be wide-ranging, but it also needs to quickly define a set of rules that allow zooming in on a manageable set of solutions.

        On the other end are systems where the possible solutions are very well defined, but it isn't at all obvious how they could even be combined to achieve the goals. This may be a legacy system that is difficult to change and wasn't designed to do what you want it to do or a library design that needs to operate within the constraints of the host programming language.

        In this situation, you may be able to enumerate all the things you can do relatively easily, but you need to creatively put those things together to achieve the goals. There may be multiple solutions, and none of them are great, and hence such a document should focus on selecting the best way given all identified trade-offs.
      label: "Degree of constraint"
    id: constrait
    type: textarea

  - attributes:
      description: |
        This section lists alternative designs that would have reasonably achieved similar outcomes. The focus should be on the trade-offs that each respective design makes and how those trade-offs led to the decision to select the design that is the primary topic of the document.

        While it is fine to be succinct about a solution that ended up not being selected, this section is one of the most important ones as it shows very explicitly why the selected solution is the best given the project goals and how other solutions, that the reader may be wondering about, introduce trade-offs that are less desirable given the goals.

      label: Alternatives considered
    id: alternatives
    type: textarea


================================================
FILE: .github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml

description:
  "Suggest an idea for this project without a plan for implementation"
labels:
  - feat
name: "Feature Request"
body:
  - attributes:
      value: |
        Thank you for suggesting an idea for this project!

        If you already have a plan to implement a feature or a change, please create a [design document](https://github.com/aeneasr/gh-template-test/issues/new?assignees=&labels=rfc&template=DESIGN-DOC.yml) instead if the change is non-trivial!
    type: markdown
  - attributes:
      label: "Preflight checklist"
      options:
        - label:
            "I could not find a solution in the existing issues, docs, nor
            discussions."
          required: true
        - label:
            "I agree to follow this project's [Code of
            Conduct](https://github.com/ory/kratos/blob/master/CODE_OF_CONDUCT.md)."
          required: true
        - label:
            "I have read and am following this repository's [Contribution
            Guidelines](https://github.com/ory/kratos/blob/master/CONTRIBUTING.md)."
          required: true
        - label:
            "I have joined the [Ory Community Slack](https://slack.ory.com)."
        - label:
            "I am signed up to the [Ory Security Patch
            Newsletter](https://www.ory.com/l/sign-up-newsletter)."
    id: checklist
    type: checkboxes
  - attributes:
      description:
        "Enter the slug or API URL of the affected Ory Network project. Leave
        empty when you are self-hosting."
      label: "Ory Network Project"
      placeholder: "https://<your-project-slug>.projects.oryapis.com"
    id: ory-network-project
    type: input
  - attributes:
      description:
        "Is your feature request related to a problem? Please describe."
      label: "Describe your problem"
      placeholder:
        "A clear and concise description of what the problem is. Ex. I'm always
        frustrated when [...]"
    id: problem
    type: textarea
    validations:
      required: true
  - attributes:
      description: |
        Describe the solution you'd like
      placeholder: |
        A clear and concise description of what you want to happen.
      label: "Describe your ideal solution"
    id: solution
    type: textarea
    validations:
      required: true
  - attributes:
      description: "Describe alternatives you've considered"
      label: "Workarounds or alternatives"
    id: alternatives
    type: textarea
    validations:
      required: true
  - attributes:
      description: "What version of our software are you running?"
      label: Version
    id: version
    type: input
    validations:
      required: true
  - attributes:
      description:
        "Add any other context or screenshots about the feature request here."
      label: Additional Context
    id: additional
    type: textarea


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/ISSUE_TEMPLATE/config.yml

blank_issues_enabled: false
contact_links:
  - name: Ory Kratos Forum
    url: https://github.com/ory/kratos/discussions
    about:
      Please ask and answer questions here, show your implementations and
      discuss ideas.
  - name: Ory Chat
    url: https://www.ory.com/chat
    about:
      Hang out with other Ory community members to ask and answer questions.


================================================
FILE: .github/auto_assign.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/auto_assign.yml

# Set to true to add reviewers to pull requests
addReviewers: true

# Set to true to add assignees to pull requests
addAssignees: true

# A list of reviewers to be added to pull requests (GitHub user name)
assignees:
  - ory/maintainers

# A number of reviewers added to the pull request
# Set 0 to add all the reviewers (default: 0)
numberOfReviewers: 0


================================================
FILE: .github/codeql/codeql-config.yml
================================================
name: "CodeQL config"

queries:
  - uses: security-and-quality

paths-ignore:
  - "/test/"
  - "/pkg/testhelpers"


================================================
FILE: .github/config.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/config.yml

todo:
  keyword: "@todo"
  label: todo


================================================
FILE: .github/conventional_commits.json
================================================
{
  "$schema": "https://raw.githubusercontent.com/ory/ci/master/conventional_commit_config/dist/config.schema.json",
  "addTypes": ["improvement", "perf"],
  "addScopes": ["cli", "sql"]
}


================================================
FILE: .github/labels.json
================================================
[
  {
    "name": "package/2fa",
    "color": "0A28FD",
    "aliases": ["module:2fa"]
  },
  {
    "name": "package/cli",
    "color": "0A28FD",
    "aliases": ["module:cli"]
  },
  {
    "name": "package/courier",
    "color": "0A28FD",
    "aliases": ["module:courier"]
  },
  {
    "name": "package/courier",
    "color": "0A28FD",
    "aliases": ["module:docs"]
  },
  {
    "name": "package/selfservice/errorx",
    "color": "0A28FD",
    "aliases": ["module:errorx"]
  },
  {
    "name": "package/identity",
    "color": "0A28FD",
    "aliases": ["module:identity"]
  },
  {
    "name": "package/persistence/sql",
    "color": "0A28FD",
    "aliases": ["module:migrations"]
  },
  {
    "name": "package/selfservice",
    "color": "0A28FD",
    "aliases": ["module:selfservice"]
  },
  {
    "name": "package/selfservice/oidc",
    "color": "0A28FD",
    "aliases": ["module:ss/oidc"]
  },
  {
    "name": "package/selfservice/password",
    "color": "0A28FD",
    "aliases": ["module:ss/password"]
  },
  {
    "name": "package/selfservice/verification",
    "color": "0A28FD",
    "aliases": ["module:verification"]
  },
  {
    "name": "package/selfservice/recovery",
    "color": "0A28FD",
    "aliases": []
  },
  {
    "name": "package/session",
    "color": "0A28FD",
    "aliases": ["module:session"]
  }
]


================================================
FILE: .github/pull_request_template.md
================================================
<!--
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request.

This text will be included in the changelog. If applicable, include links to documentation or pieces of code.
If your change includes breaking changes please add a code block documenting the breaking change:

```
BREAKING CHANGES: This patch changes the behavior of configuration item `foo` to do bar. To keep the existing
behavior please do baz.
```
-->

## Related issue(s)

<!--
If this pull request

1. is a fix for a known bug, link the issue where the bug was reported in the format of `#1234`;
2. is a fix for a previously unknown bug, explain the bug and how to reproduce it in this pull request;
3. implements a new feature, link the issue containing the design document in the format of `#1234`;
4. improves the documentation, no issue reference is required.

Pull requests introducing new features, which do not have a design document linked are more likely to be rejected and take on average 2-8 weeks longer to
get merged.

You can discuss changes with maintainers either in the Github Discussions in this repository or
join the [Ory Chat](https://www.ory.com/chat).
-->

## Checklist

<!--
Put an `x` in the boxes that apply. You can also fill these out after creating the PR.

Please be aware that pull requests must have all boxes ticked in order to be merged.

If you're unsure about any of them, don't hesitate to ask. We're here to help!
-->

- [ ] I have read the [contributing guidelines](../blob/master/CONTRIBUTING.md).
- [ ] I have referenced an issue containing the design document if my change
      introduces a new feature.
- [ ] I am following the
      [contributing code guidelines](../blob/master/CONTRIBUTING.md#contributing-code).
- [ ] I have read the [security policy](../security/policy).
- [ ] I confirm that this pull request does not address a security
      vulnerability. If this pull request addresses a security vulnerability, I
      confirm that I got the approval (please contact
      [security@ory.com](mailto:security@ory.com)) from the maintainers to push
      the changes.
- [ ] I have added tests that prove my fix is effective or that my feature
      works.
- [ ] I have added or changed [the documentation](https://github.com/ory/docs).

## Further Comments

<!--
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution
you did and what alternatives you considered, etc...
-->


================================================
FILE: .github/workflows/ci.yaml
================================================
name: CI
on:
  push:
    branches:
      - master
    tags:
      - "*"
  pull_request:

# Cancel in-progress runs in current workflow.
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Run tests and lints
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:18
        env:
          POSTGRES_DB: postgres
          POSTGRES_PASSWORD: test
          POSTGRES_USER: test
        ports:
          - 5432:5432
      mysql:
        image: mysql:9.6
        env:
          MYSQL_ROOT_PASSWORD: test
        ports:
          - 3306:3306
    env:
      TEST_DATABASE_POSTGRESQL: "postgres://test:test@localhost:5432/postgres?sslmode=disable"
      TEST_DATABASE_MYSQL: "mysql://root:test@(localhost:3306)/mysql?parseTime=true&multiStatements=true"
      TEST_DATABASE_COCKROACHDB: "cockroach://root@localhost:26257/defaultdb?sslmode=disable"
    steps:
      - run: |
          docker create --name cockroach -p 26257:26257 \
           cockroachdb/cockroach:latest-v25.4 start-single-node --insecure \
            || true
          docker start cockroach
        name: Start CockroachDB
      - run: docker pull oryd/hydra:v2.2.0
        name: Pull Hydra
      - uses: ory/ci/checkout@master
        with:
          fetch-depth: 2
      - uses: actions/setup-go@v6
        with:
          check-latest: true
          go-version-file: go.mod
      - run: go list -json > go.list
      - name: Run nancy
        uses: sonatype-nexus-community/nancy-github-action@v1.0.3
        with:
          nancyVersion: v1.0.42
      - run: |
          sudo apt-get update
        name: apt-get update
      - run: npm install
        name: Install node deps
      - name: Run golangci-lint
        if: ${{ github.ref_type != 'tag' }}
        uses: golangci/golangci-lint-action@v9
        env:
          GOGC: 100
        with:
          args: --timeout 10m0s
          version: latest
          only-new-issues: "true"
      - name: Build Kratos
        run: make install
      - name: Run go tests
        run: make test-coverage
      - name: Submit to Codecov
        run: |
          bash <(curl -s https://codecov.io/bash)
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  test-e2e:
    name: Run end-to-end tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:18
        env:
          POSTGRES_DB: postgres
          POSTGRES_PASSWORD: test
          POSTGRES_USER: test
        ports:
          - 5432:5432
      mysql:
        image: mysql:9.6
        env:
          MYSQL_ROOT_PASSWORD: test
        ports:
          - 3306:3306
      mailslurper:
        image: oryd/mailslurper:latest-smtps
        ports:
          - 4436:4436
          - 4437:4437
          - 1025:1025
    env:
      TEST_DATABASE_POSTGRESQL: "postgres://test:test@localhost:5432/postgres?sslmode=disable"
      TEST_DATABASE_MYSQL: "mysql://root:test@(localhost:3306)/mysql?parseTime=true&multiStatements=true"
      TEST_DATABASE_COCKROACHDB: "cockroach://root@localhost:26257/defaultdb?sslmode=disable"
    strategy:
      fail-fast: false
      matrix:
        database: ["postgres", "sqlite"]
        # "cockroach", "mysql" TODO: fix tests and uncomment
    steps:
      - uses: actions/setup-node@v6
        with:
          node-version: "24"
      - run: |
          docker create --name cockroach -p 26257:26257 \
           cockroachdb/cockroach:latest-v25.4 start-single-node --insecure
          docker start cockroach
        name: Start CockroachDB
      - uses: browser-actions/setup-chrome@latest
        name: Install Chrome
      # - uses: browser-actions/setup-firefox@latest
      #   name: Install Firefox
      # - uses: browser-actions/setup-geckodriver@latest
      #   name: Install Geckodriver
      #   with:
      #     geckodriver-version: 0.32.0
      - uses: ory/ci/checkout@master
        with:
          fetch-depth: 2
      - run: |
          sudo apt-get update
        name: apt-get update
      - run: |
          npm ci
          cd test/e2e; npm ci
          npm i -g expo-cli
        name: Install node deps
      - run: |
          sudo apt-get install -y moreutils gettext
        name: Install tools
      - name: Setup Go
        uses: actions/setup-go@v6
        with:
          check-latest: true
          go-version-file: go.mod
      - name: Install selfservice-ui-react-native
        uses: actions/checkout@v6
        with:
          repository: ory/kratos-selfservice-ui-react-native
          path: react-native-ui
      - run: |
          cd react-native-ui
          npm install

      - name: Install selfservice-ui-node
        uses: actions/checkout@v6
        with:
          repository: ory/kratos-selfservice-ui-node
          path: node-ui
      - run: |
          cd node-ui
          npm install --legacy-peer-deps

      - name: Install selfservice-ui-react-nextjs
        uses: actions/checkout@v6
        with:
          repository: ory/kratos-selfservice-ui-react-nextjs
          path: react-ui
      - run: |
          cd react-ui
          npm ci

      - run: |
          echo 'RN_UI_PATH='"$(realpath react-native-ui)" >> "$GITHUB_ENV"
          echo 'NODE_UI_PATH='"$(realpath node-ui)" >> "$GITHUB_ENV"
          echo 'REACT_UI_PATH='"$(realpath react-ui)" >> "$GITHUB_ENV"
      - name: "Run Cypress tests"
        run: ./test/e2e/run.sh ${{ matrix.database }}
        env:
          RN_UI_PATH: react-native-ui
          NODE_UI_PATH: node-ui
          REACT_UI_PATH: react-ui
          CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
      - if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: cypress-${{ matrix.database }}-logs
          path: test/e2e/*.e2e.log

  test-e2e-playwright:
    name: Run Playwright end-to-end tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:18
        env:
          POSTGRES_DB: postgres
          POSTGRES_PASSWORD: test
          POSTGRES_USER: test
        ports:
          - 5432:5432
      mysql:
        image: mysql:9.6
        env:
          MYSQL_ROOT_PASSWORD: test
        ports:
          - 3306:3306
      mailslurper:
        image: oryd/mailslurper:latest-smtps
        ports:
          - 4436:4436
          - 4437:4437
          - 1025:1025
    env:
      TEST_DATABASE_POSTGRESQL: "postgres://test:test@localhost:5432/postgres?sslmode=disable"
      TEST_DATABASE_MYSQL: "mysql://root:test@(localhost:3306)/mysql?parseTime=true&multiStatements=true"
      TEST_DATABASE_COCKROACHDB: "cockroach://root@localhost:26257/defaultdb?sslmode=disable"
    strategy:
      fail-fast: false
      matrix:
        database: ["postgres", "cockroach", "sqlite", "mysql"]
    steps:
      - uses: actions/setup-node@v6
        with:
          node-version: "24"
      - run: |
          docker create --name cockroach -p 26257:26257 \
           cockroachdb/cockroach:latest-v25.4 start-single-node --insecure
          docker start cockroach
        name: Start CockroachDB
      - uses: ory/ci/checkout@master
        with:
          fetch-depth: 2
      - run: |
          sudo apt-get update
        name: apt-get update
      - run: |
          npm ci
          cd test/e2e; npm ci
          npx playwright install --with-deps
          npm i -g expo-cli
        name: Install node deps
      - run: |
          sudo apt-get install -y moreutils gettext
        name: Install tools
      - name: Setup Go
        uses: actions/setup-go@v6
        with:
          check-latest: true
          go-version-file: go.mod
      - run: go build -tags sqlite,json1 .

      - name: Install selfservice-ui-react-native
        uses: actions/checkout@v6
        with:
          repository: ory/kratos-selfservice-ui-react-native
          path: react-native-ui
      - run: |
          cd react-native-ui
          npm install

      - name: Install selfservice-ui-node
        uses: actions/checkout@v6
        with:
          repository: ory/kratos-selfservice-ui-node
          path: node-ui
      - run: |
          cd node-ui
          npm install --legacy-peer-deps

      - name: Install selfservice-ui-react-nextjs
        uses: actions/checkout@v6
        with:
          repository: ory/kratos-selfservice-ui-react-nextjs
          path: react-ui
      - run: |
          cd react-ui
          npm ci

      - run: |
          echo 'RN_UI_PATH='"$(realpath react-native-ui)" >> "$GITHUB_ENV"
          echo 'NODE_UI_PATH='"$(realpath node-ui)" >> "$GITHUB_ENV"
          echo 'REACT_UI_PATH='"$(realpath react-ui)" >> "$GITHUB_ENV"

      - name: "Set up environment"
        run: test/e2e/run.sh --only-setup
      - name: "Run Playwright tests"
        run: |
          cd test/e2e
          npm run playwright
        env:
          DB: ${{ matrix.database }}
          RN_UI_PATH: react-native-ui
          NODE_UI_PATH: node-ui
          REACT_UI_PATH: react-ui
      - if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: playwright-${{ matrix.database }}-logs
          path: test/e2e/*.e2e.log
      - if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: playwright-test-results-${{ matrix.database }}-${{ github.sha }}
          path: |
            test/e2e/test-results/
            test/e2e/playwright-report/

  docs-cli:
    runs-on: ubuntu-latest
    name: Build CLI docs
    needs:
      - test
    steps:
      - uses: ory/ci/docs/cli-next@master
        with:
          token: ${{ secrets.ORY_BOT_PAT }}
          arg: "."
          output-dir: docs/kratos

  release:
    name: Generate release
    runs-on: ubuntu-latest
    if: ${{ github.ref_type == 'tag' }}
    needs:
      - test
      - test-e2e
    steps:
      - uses: ory/ci/releaser@master
        with:
          token: ${{ secrets.ORY_BOT_PAT }}
          goreleaser_key: ${{ secrets.GORELEASER_KEY }}
          cosign_pwd: ${{ secrets.COSIGN_PWD }}
          docker_username: ${{ secrets.DOCKERHUB_USERNAME }}
          docker_password: ${{ secrets.DOCKERHUB_PASSWORD }}

  newsletter-draft:
    name: Draft newsletter
    runs-on: ubuntu-latest
    if: ${{ github.ref_type == 'tag' }}
    needs:
      - release
    steps:
      - uses: ory/ci/newsletter@master
        with:
          mailchimp_list_id: f605a41b53
          mailchmip_segment_id: 6479477
          mailchimp_api_key: ${{ secrets.MAILCHIMP_API_KEY }}
          draft: "true"
          ssh_key: ${{ secrets.ORY_BOT_SSH_KEY }}

  slack-approval-notification:
    name: Pending approval Slack notification
    runs-on: ubuntu-latest
    if: ${{ github.ref_type == 'tag' }}
    needs:
      - newsletter-draft
    steps:
      - uses: ory/ci/newsletter/slack-notify@master
        with:
          slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}

  newsletter-send:
    name: Send newsletter
    runs-on: ubuntu-latest
    needs:
      - newsletter-draft
    if: ${{ github.ref_type == 'tag' }}
    environment: production
    steps:
      - uses: ory/ci/newsletter@master
        with:
          mailchimp_list_id: f605a41b53
          mailchmip_segment_id: 6479477
          mailchimp_api_key: ${{ secrets.MAILCHIMP_API_KEY }}
          draft: "false"
          ssh_key: ${{ secrets.ORY_BOT_SSH_KEY }}


================================================
FILE: .github/workflows/closed_references.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/workflows/closed_references.yml

name: Closed Reference Notifier

on:
  schedule:
    - cron: "0 0 * * *"
  workflow_dispatch:
    inputs:
      issueLimit:
        description: Max. number of issues to create
        required: true
        default: "5"

jobs:
  find_closed_references:
    if: github.repository_owner == 'ory'
    runs-on: ubuntu-latest
    name: Find closed references
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: "24"
      - uses: ory/closed-reference-notifier@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          issueLabels: upstream,good first issue,help wanted
          issueLimit: ${{ github.event.inputs.issueLimit || '5' }}


================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
  push:
    branches: [master]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [master]
  schedule:
    - cron: "26 21 * * 3"

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        language: ["go", "javascript"]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
        # Learn more:
        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      # Initializes the CodeQL tools for scanning.
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: ${{ matrix.language }}
          config-file: ./.github/codeql/codeql-config.yml
          # If you wish to specify custom queries, you can do so here or in a config file.
          # By default, queries listed here will override any specified in a config file.
          # Prefix the list here with "+" to use these queries and those in the config file.
          # queries: ./path/to/local/query, your-org/your-repo/queries@main

      # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
      # If this step fails, then you should remove it and run the build manually (see below)
      - name: Autobuild
        uses: github/codeql-action/autobuild@v4

      # ℹ️ Command-line programs to run using the OS shell.
      # 📚 https://git.io/JvXDl

      # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
      #    and modify them (or add more) to build your code if your project
      #    uses a compiled language

      #- run: |
      #   make bootstrap
      #   make release

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4


================================================
FILE: .github/workflows/conventional_commits.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/workflows/conventional_commits.yml

name: Conventional commits

# This GitHub CI Action enforces that pull request titles follow conventional commits.
# More info at https://www.conventionalcommits.org.
#
# The Ory-wide defaults for commit titles and scopes are below.
# Your repository can add/replace elements via a configuration file at the path below.
# More info at https://github.com/ory/ci/blob/master/conventional_commit_config/README.md

on:
  pull_request_target:
    types:
      - edited
      - opened
      - ready_for_review
      - reopened
  # pull_request: # for debugging, uses config in local branch but supports only Pull Requests from this repo

jobs:
  main:
    name: Validate PR title
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - id: config
        uses: ory/ci/conventional_commit_config@master
        with:
          config_path: .github/conventional_commits.json
          default_types: |
            feat
            fix
            revert
            docs
            style
            refactor
            test
            build
            autogen
            security
            ci
            chore
          default_scopes: |
            deps
            docs
          default_require_scope: false
      - uses: amannn/action-semantic-pull-request@v6
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          types: ${{ steps.config.outputs.types }}
          scopes: ${{ steps.config.outputs.scopes }}
          requireScope: ${{ steps.config.outputs.requireScope }}
          subjectPattern: ^(?![A-Z]).+$
          subjectPatternError: |
            The subject should start with a lowercase letter, yours is uppercase:
            "{subject}"


================================================
FILE: .github/workflows/cve-scan.yaml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/server/.github/workflows/cve-scan.yaml

name: Docker Image Scanners
on:
  workflow_dispatch:
  push:
    branches:
      - "master"
    tags:
      - "v*.*.*"
  pull_request:
    branches:
      - "master"

permissions:
  contents: read
  security-events: write

jobs:
  scanners:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Env
        id: vars
        shell: bash
        run: |
          # Store values in local variables
          SHA_SHORT=$(git rev-parse --short HEAD)
          REPO_NAME=${{ github.event.repository.name }}

          IMAGE_NAME="oryd/${REPO_NAME}:${SHA_SHORT}"

          # Output values for debugging
          echo "Values to be set:"
          echo "SHA_SHORT:  ${SHA_SHORT}"
          echo "REPO_NAME:  ${REPO_NAME}"
          echo "IMAGE_NAME: ${IMAGE_NAME}"

          # Set GitHub Environment variables
          echo "SHA_SHORT=${SHA_SHORT}" >> "${GITHUB_ENV}"
          echo "IMAGE_NAME=${IMAGE_NAME}" >> "${GITHUB_ENV}"
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v4
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4
        with:
          driver: docker
      - name: Build images
        shell: bash
        run: |
          IMAGE_TAG="${{ env.SHA_SHORT }}" make docker

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v4
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Configure Trivy
        run: |
          mkdir -p "$HOME/.cache/trivy"
          echo "TRIVY_USERNAME=${{ github.actor }}" >> "$GITHUB_ENV"
          echo "TRIVY_PASSWORD=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"

      - name: Anchore Scanner
        uses: anchore/scan-action@v7
        id: grype-scan
        with:
          image: ${{ env.IMAGE_NAME }}
          fail-build: true
          severity-cutoff: high
          add-cpes-if-none: true
      - name: Inspect action SARIF report
        shell: bash
        if: ${{ always() }}
        run: |
          echo "::group::Anchore Scan Details"
          jq '.runs[0].results' ${{ steps.grype-scan.outputs.sarif }}
          echo "::endgroup::"
      - name: Anchore upload scan SARIF report
        if: always()
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: ${{ steps.grype-scan.outputs.sarif }}
      - name: Kubescape scanner
        uses: kubescape/github-action@main
        id: kubescape
        with:
          image: ${{ env.IMAGE_NAME }}
          verbose: true
          format: pretty-printer
          # can't whitelist CVE yet: https://github.com/kubescape/kubescape/pull/1568
          severityThreshold: critical
      - name: Trivy Scanner
        uses: aquasecurity/trivy-action@master
        if: ${{ always() }}
        with:
          image-ref: ${{ env.IMAGE_NAME }}
          format: "table"
          exit-code: "42"
          ignore-unfixed: true
          vuln-type: "os,library"
          severity: "CRITICAL,HIGH"
          scanners: "vuln,secret,misconfig"
        env:
          TRIVY_SKIP_JAVA_DB_UPDATE: "true"
          TRIVY_DISABLE_VEX_NOTICE: "true"
          TRIVY_DB_REPOSITORY: ghcr.io/aquasecurity/trivy-db,public.ecr.aws/aquasecurity/trivy-db

      - name: Dockle Linter
        uses: erzz/dockle-action@v1
        if: ${{ always() }}
        with:
          image: ${{ env.IMAGE_NAME }}
          exit-code: 42
          failure-threshold: high
      - name: Hadolint
        uses: hadolint/hadolint-action@v3.3.0
        id: hadolint
        if: ${{ always() }}
        with:
          dockerfile: .docker/Dockerfile-build
          verbose: true
          format: "json"
          failure-threshold: "error"
      - name: View Hadolint results
        if: ${{ always() }}
        shell: bash
        run: |
          echo "::group::Hadolint Scan Details"
          echo "${HADOLINT_RESULTS}" | jq '.'
          echo "::endgroup::"


================================================
FILE: .github/workflows/format.yml
================================================
name: Format

on:
  pull_request:
  merge_group:

jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v6
        with:
          check-latest: true
          go-version-file: go.mod
      - run: make format
      - name: Indicate formatting issues
        run: git diff HEAD --exit-code --color


================================================
FILE: .github/workflows/labels.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/workflows/labels.yml

name: Synchronize Issue Labels

on:
  workflow_dispatch:
  push:
    branches:
      - master

jobs:
  milestone:
    if: github.repository_owner == 'ory'
    name: Synchronize Issue Labels
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Synchronize Issue Labels
        uses: ory/label-sync-action@v0
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          dry: false
          forced: true


================================================
FILE: .github/workflows/milestone.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/server/.github/workflows/milestone.yml

name: Generate and Publish Milestone Document

on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * *"

jobs:
  milestone:
    if: github.repository_owner == 'ory'
    name: Generate and Publish Milestone Document
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          token: ${{ secrets.TOKEN_PRIVILEGED }}
      - name: Milestone Documentation Generator
        uses: ory/milestone-action@v0
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          outputFile: docs/docs/milestones.md
      - name: Commit Milestone Documentation
        uses: EndBug/add-and-commit@v9.1.4
        with:
          message: "autogen(docs): update milestone document"
          author_name: aeneasr
          author_email: "3372410+aeneasr@users.noreply.github.com"
        env:
          GITHUB_TOKEN: ${{ secrets.TOKEN_PRIVILEGED }}


================================================
FILE: .github/workflows/pm.yml
================================================
name: Synchronize with product board

on:
  issues:
    types:
      - opened
  pull_request:
    types:
      - opened
      - ready_for_review

jobs:
  automate:
    if: github.event.pull_request.head.repo.fork == false
    name: Add issue to project
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: ory-corp/planning-automation-action@v0.2
        with:
          project: 5
          organization: ory-corp
          token: ${{ secrets.ORY_BOT_PAT }}
          todoLabel: "Needs Triage"
          statusName: Status
          prStatusValue: "Needs Triage"
          issueStatusValue: "Needs Triage"
          includeEffort: "false"
          monthlyMilestoneName: Roadmap Monthly
          quarterlyMilestoneName: Roadmap


================================================
FILE: .github/workflows/stale.yml
================================================
# AUTO-GENERATED, DO NOT EDIT!
# Please edit the original at https://github.com/ory/meta/blob/master/templates/repository/common/.github/workflows/stale.yml

name: "Close Stale Issues"
on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * *"

jobs:
  stale:
    if: github.repository_owner == 'ory'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v10
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          stale-issue-message: |
            Hello contributors!

            I am marking this issue as stale as it has not received any engagement from the community or maintainers for a year. That does not imply that the issue has no merit! If you feel strongly about this issue

            - open a PR referencing and resolving the issue;
            - leave a comment on it and discuss ideas on how you could contribute towards resolving it;
            - leave a comment and describe in detail why this issue is critical for your use case;
            - open a new issue with updated details and a plan for resolving the issue.

            Throughout its lifetime, Ory has received over 10.000 issues and PRs. To sustain that growth, we need to prioritize and focus on issues that are important to the community. A good indication of importance, and thus priority, is activity on a topic.

            Unfortunately, [burnout](https://www.jeffgeerling.com/blog/2016/why-i-close-prs-oss-project-maintainer-notes) has become a [topic](https://opensource.guide/best-practices/#its-okay-to-hit-pause) of [concern](https://docs.brew.sh/Maintainers-Avoiding-Burnout) amongst open-source projects.

            It can lead to severe personal and health issues as well as [opening](https://haacked.com/archive/2019/05/28/maintainer-burnout/) catastrophic [attack vectors](https://www.gradiant.org/en/blog/open-source-maintainer-burnout-as-an-attack-surface/).

            The motivation for this automation is to help prioritize issues in the backlog and not ignore, reject, or belittle anyone.

            If this issue was marked as stale erroneously you can exempt it by adding the `backlog` label, assigning someone, or setting a milestone for it.

            Thank you for your understanding and to anyone who participated in the conversation! And as written above, please do participate in the conversation if this topic is important to you!

            Thank you 🙏✌️
          stale-issue-label: "stale"
          exempt-issue-labels: "bug,blocking,docs,backlog"
          days-before-stale: 365
          days-before-close: 30
          exempt-milestones: true
          exempt-assignees: true
          only-pr-labels: "stale"


================================================
FILE: .gitignore
================================================
cover.out
.idea/
tmp/
ddl/
.DS_Store
/kratos
packrd/
*-packr.go
dist/
node_modules
.bin/
test/e2e/cypress/videos
test/e2e/cypress/screenshots
test/e2e/.bin
pkged.go
coverage.*
schema.sql
*.sqlite
heap_profiler/
goroutine_dump/
inflight_trace_dump/

contrib/quickstart/kratos/oidc

e2e/*.log
e2e/kratos.*.yml
e2e/proxy.json
e2e/cypress/downloads

# Compiled Object files, Static and Dynamic libs (Shared Objects)
internal/httpclient/*.o
internal/httpclient/*.a
internal/httpclient/*.so

# Folders
internal/httpclient/_obj
internal/httpclient/_test

# Architecture specific extensions/prefixes
internal/httpclient/*.[568vq]
internal/httpclient/[568vq].out

internal/httpclient/*.cgo1.go
internal/httpclient/*.cgo2.c
internal/httpclient/_cgo_defun.c
internal/httpclient/_cgo_gotypes.go
internal/httpclient/_cgo_export.*

internal/httpclient/_testmain.go

internal/httpclient/*.exe
internal/httpclient/*.test
internal/httpclient/*.prof

test/e2e/hydra-login-consent/hydra-login-consent

persistence/sql/migrations/sql/schema.sql

test/e2e/hydra-kratos-login-consent/hydra-kratos-login-consent

*.log
test/e2e/proxy.json
test/e2e/kratos.*.yml

# VSCode debug artifact
__debug_bin
.debug.sqlite.db
.last-run.json

================================================
FILE: .golangci.yml
================================================
version: "2"

linters:
  enable:
    - gosec
    - govet
    - errcheck
    - ineffassign
    - staticcheck
    - unused
  disable:
    - bodyclose # too many false negatives

  settings:
    gosec:
      excludes:
        - G101
        - G117
        - G306
        - G704
        - G705
  exclusions:
    rules:
      - linters:
          - staticcheck
        text: "SA1019" # we do use deprecated APIs on purpose sometimes


================================================
FILE: .goreleaser.yml
================================================
version: 2

includes:
  - from_url:
      url: https://raw.githubusercontent.com/ory/xgoreleaser/master/build.tmpl.yml

variables:
  brew_name: kratos
  brew_description: "The Ory Identity Platform (Ory Kratos)"
  buildinfo_hash: "github.com/ory/kratos/driver/config.Commit"
  buildinfo_tag: "github.com/ory/kratos/driver/config.Version"
  buildinfo_date: "github.com/ory/kratos/driver/config.Date"
  dockerfile_alpine: ".docker/Dockerfile-alpine"
  dockerfile_static: ".docker/Dockerfile-distroless-static"

project_name: kratos

after:
  hooks:
  - cmd: "bash <(curl -s https://raw.githubusercontent.com/ory/xgoreleaser/master/docs.sh)"
    env:
      - "TAG_VERSION={{ .Tag }}"
      - "DOCS_VERSION={{ .Major }}.{{ .Minor }}"


================================================
FILE: .grype.yaml
================================================
#only-fixed: true
ignore:
  - vulnerability: GHSA-c5pj-mqfh-rvc3 # https://github.com/advisories/GHSA-c5pj-mqfh-rvc3
  - vulnerability: CVE-2015-5237
  - vulnerability: CVE-2022-30065
  - vulnerability: CVE-2023-2650
  - vulnerability: CVE-2023-4813
  - vulnerability: CVE-2023-4806
  - vulnerability: CVE-2025-0395 # no fix available


================================================
FILE: .mailmap
================================================
Aeneas Rekkas <aeneas@ory.sh> <arekkas@users.noreply.github.com>
Aeneas Rekkas <aeneas@ory.sh> <3372410+aeneasr@users.noreply.github.com>
Aeneas Rekkas <aeneas@ory.sh> <aeneasr@users.noreply.github.com>
Aeneas Rekkas <aeneas@ory.sh> <aeneas@ory.sh>
Ajay Kelkar <ajay.kelkar@ory.sh> <ajaykelkar@outlook.com>
Alano Terblanche <alano@ory.sh> <18033717+Benehiko@users.noreply.github.com>
Alano Terblanche <alano@ory.sh> <alanoterblanche@gmail.com>
Jonas Hungershausen <jonas.hungershausen@ory.sh> <jonas.hungershausen@gmail.com>
Matt Bonnell <matt.bonnell@icloud.com> <64976795+mbonnell-wish@users.noreply.github.com>
Nick Ufer <nick@ufer.dev> <me@nick-ufer.de>
Nick Ufer <nick@ufer.dev> <nick@ufer.dev>
Patrik Neu <patrik@ory.sh> <zepatrik@users.noreply.github.com>
Patrik Neu <patrik@ory.sh> <patrik@ory.sh>


================================================
FILE: .nancy-ignore
================================================
# HashiCorp Consul related CVEs
# Consul is not used but instead an indirect dependency to the pf13/viper config backend which is not actively used.
CVE-2020-7219
CVE-2019-12291
CVE-2020-7955
CVE-2020-12797
CVE-2020-13250
CVE-2020-13170
# End HashiCorp Consul

# etcd issues - can be ignored because etcd is not used.
CVE-2020-15114
CVE-2020-15136
CVE-2020-15115
# end


================================================
FILE: .nvmrc
================================================
v16.19.0


================================================
FILE: .orycli.yml
================================================
project: kratos

pre_release_hooks:
  - make sdk
  - ./script/render-schemas.sh
  - git config --unset user.email
  - git config --unset user.name


================================================
FILE: .prettierignore
================================================
.schema/
.github/ISSUE_TEMPLATE
oryx

================================================
FILE: .reference-ignore
================================================
**/node_modules
docs
CHANGELOG.md


================================================
FILE: .reports/dep-licenses.csv
================================================
"module name","licenses"

"github.com/arbovm/levenshtein","BSD-3-Clause"
"github.com/ory/x","Apache-2.0"
"github.com/stretchr/testify","MIT"
"go.opentelemetry.io/otel/sdk","Apache-2.0"
"golang.org/x/text","BSD-3-Clause"



================================================
FILE: .schema/api.openapi.json
================================================
{
  "components": {
    "responses": {
      "emptyResponse": {
        "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is\ntypically 201."
      },
      "errorContainer": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorContainer"
            }
          }
        },
        "description": "User-facing error response"
      },
      "identityList": {
        "content": {
          "application/json": {
            "schema": {
              "items": {
                "$ref": "#/components/schemas/Identity"
              },
              "type": "array"
            }
          }
        },
        "description": "A list of identities."
      },
      "identityResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Identity"
            }
          }
        },
        "description": "A single identity."
      }
    },
    "schemas": {
      "CompleteSelfServiceBrowserSettingsProfileStrategyFlow": {
        "description": "nolint:deadcode,unused",
        "properties": {
          "csrf_token": {
            "description": "The Anti-CSRF Token\n\nThis token is only required when performing browser flows.",
            "type": "string"
          },
          "traits": {
            "description": "Traits contains all of the identity's traits.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "CompleteSelfServiceLoginFlowWithPasswordMethod": {
        "properties": {
          "csrf_token": {
            "description": "Sending the anti-csrf token is only required for browser login flows.",
            "type": "string"
          },
          "identifier": {
            "description": "Identifier is the email or username of the user trying to log in.",
            "type": "string"
          },
          "password": {
            "description": "The user's password.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "CompleteSelfServiceSettingsFlowWithPasswordMethod": {
        "properties": {
          "csrf_token": {
            "description": "CSRFToken is the anti-CSRF token\n\ntype: string",
            "type": "string"
          },
          "password": {
            "description": "Password is the updated password\n\ntype: string",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "CreateIdentity": {
        "properties": {
          "schema_id": {
            "description": "SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.",
            "type": "string"
          },
          "traits": {
            "description": "Traits represent an identity's traits. The identity is able to create, modify, and delete traits\nin a self-service manner. The input will always be validated against the JSON Schema defined\nin `schema_url`.",
            "type": "object"
          }
        },
        "required": [
          "schema_id",
          "traits"
        ],
        "type": "object"
      },
      "CreateRecoveryLink": {
        "properties": {
          "expires_in": {
            "description": "Link Expires In\n\nThe recovery link will expire at that point in time. Defaults to the configuration value of\n`selfservice.flows.recovery.request_lifespan`.",
            "pattern": "^[0-9]+(ns|us|ms|s|m|h)$",
            "type": "string"
          },
          "identity_id": {
            "$ref": "#/components/schemas/UUID"
          }
        },
        "required": [
          "identity_id"
        ],
        "type": "object"
      },
      "CredentialsType": {
        "description": "and so on.",
        "title": "CredentialsType  represents several different credential types, like password credentials, passwordless credentials,",
        "type": "string"
      },
      "ID": {
        "format": "int64",
        "type": "integer"
      },
      "Identity": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "recovery_addresses": {
            "description": "RecoveryAddresses contains all the addresses that can be used to recover an identity.",
            "items": {
              "$ref": "#/components/schemas/RecoveryAddress"
            },
            "type": "array",
            "x-omitempty": true
          },
          "schema_id": {
            "description": "SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.",
            "type": "string"
          },
          "schema_url": {
            "description": "SchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from.\n\nformat: url",
            "type": "string"
          },
          "traits": {
            "$ref": "#/components/schemas/Traits"
          },
          "verifiable_addresses": {
            "description": "VerifiableAddresses contains all the addresses that can be verified by the user.",
            "items": {
              "$ref": "#/components/schemas/VerifiableAddress"
            },
            "type": "array",
            "x-omitempty": true
          }
        },
        "required": [
          "id",
          "schema_id",
          "schema_url",
          "traits"
        ],
        "type": "object"
      },
      "NullTime": {
        "format": "date-time",
        "title": "NullTime implements sql.NullTime functionality.",
        "type": "string"
      },
      "RecoveryAddress": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "value": {
            "type": "string"
          },
          "via": {
            "$ref": "#/components/schemas/RecoveryAddressType"
          }
        },
        "required": [
          "id",
          "value",
          "via"
        ],
        "type": "object"
      },
      "RecoveryAddressType": {
        "type": "string"
      },
      "State": {
        "type": "string"
      },
      "Traits": {
        "type": "object"
      },
      "Type": {
        "description": "The flow type can either be `api` or `browser`.",
        "title": "Type is the flow type.",
        "type": "string"
      },
      "UUID": {
        "format": "uuid4",
        "type": "string"
      },
      "UpdateIdentity": {
        "properties": {
          "schema_id": {
            "description": "SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. If set\nwill update the Identity's SchemaID.",
            "type": "string"
          },
          "traits": {
            "description": "Traits represent an identity's traits. The identity is able to create, modify, and delete traits\nin a self-service manner. The input will always be validated against the JSON Schema defined\nin `schema_id`.",
            "type": "object"
          }
        },
        "required": [
          "traits"
        ],
        "type": "object"
      },
      "VerifiableAddress": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "status": {
            "$ref": "#/components/schemas/VerifiableAddressStatus"
          },
          "value": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          },
          "verified_at": {
            "$ref": "#/components/schemas/NullTime"
          },
          "via": {
            "$ref": "#/components/schemas/VerifiableAddressType"
          }
        },
        "required": [
          "id",
          "value",
          "verified",
          "via",
          "status"
        ],
        "type": "object"
      },
      "VerifiableAddressStatus": {
        "type": "string"
      },
      "VerifiableAddressType": {
        "type": "string"
      },
      "completeSelfServiceBrowserSettingsOIDCFlowPayload": {
        "properties": {
          "flow": {
            "description": "Flow ID is the flow's ID.\n\nin: query",
            "type": "string"
          },
          "link": {
            "description": "Link this provider\n\nEither this or `unlink` must be set.\n\ntype: string\nin: body",
            "type": "string"
          },
          "unlink": {
            "description": "Unlink this provider\n\nEither this or `link` must be set.\n\ntype: string\nin: body",
            "type": "string"
          }
        },
        "type": "object"
      },
      "completeSelfServiceRecoveryFlowWithLinkMethod": {
        "properties": {
          "csrf_token": {
            "description": "Sending the anti-csrf token is only required for browser login flows.",
            "type": "string"
          },
          "email": {
            "description": "Email to Recover\n\nNeeds to be set when initiating the flow. If the email is a registered\nrecovery email, a recovery link will be sent. If the email is not known,\na email with details on what happened will be sent instead.\n\nformat: email\nin: body",
            "type": "string"
          }
        },
        "type": "object"
      },
      "completeSelfServiceVerificationFlowWithLinkMethod": {
        "properties": {
          "csrf_token": {
            "description": "Sending the anti-csrf token is only required for browser login flows.",
            "type": "string"
          },
          "email": {
            "description": "Email to Verify\n\nNeeds to be set when initiating the flow. If the email is a registered\nverification email, a verification link will be sent. If the email is not known,\na email with details on what happened will be sent instead.\n\nformat: email\nin: body",
            "type": "string"
          }
        },
        "type": "object"
      },
      "errorContainer": {
        "properties": {
          "errors": {
            "description": "Errors in the container",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          }
        },
        "required": [
          "id",
          "errors"
        ],
        "type": "object"
      },
      "genericError": {
        "description": "Error responses are sent when an error (e.g. unauthorized, bad request, ...) occurred.",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/genericErrorPayload"
          }
        },
        "title": "Error response",
        "type": "object"
      },
      "genericErrorPayload": {
        "properties": {
          "code": {
            "description": "Code represents the error status code (404, 403, 401, ...).",
            "example": 404,
            "format": "int64",
            "type": "integer"
          },
          "debug": {
            "description": "Debug contains debug information. This is usually not available and has to be enabled.",
            "example": "The database adapter was unable to find the element",
            "type": "string"
          },
          "details": {
            "additionalProperties": true,
            "type": "object"
          },
          "message": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "request": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "healthNotReadyStatus": {
        "properties": {
          "errors": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Errors contains a list of errors that caused the not ready status.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "healthStatus": {
        "properties": {
          "status": {
            "description": "Status always contains \"ok\".",
            "type": "string"
          }
        },
        "type": "object"
      },
      "jsonSchema": {
        "description": "Raw JSON Schema",
        "type": "object"
      },
      "loginFlow": {
        "description": "This object represents a login flow. A login flow is initiated at the \"Initiate Login API / Browser Flow\"\nendpoint by a client.\n\nOnce a login flow is completed successfully, a session cookie or session token will be issued.",
        "properties": {
          "active": {
            "$ref": "#/components/schemas/CredentialsType"
          },
          "expires_at": {
            "description": "ExpiresAt is the time (UTC) when the flow expires. If the user still wishes to log in,\na new flow has to be initiated.",
            "format": "date-time",
            "type": "string"
          },
          "forced": {
            "description": "Forced stores whether this login flow should enforce re-authentication.",
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "issued_at": {
            "description": "IssuedAt is the time (UTC) when the flow started.",
            "format": "date-time",
            "type": "string"
          },
          "request_url": {
            "description": "RequestURL is the initial URL that was requested from Ory Kratos. It can be used\nto forward information contained in the URL's path or query for example.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/Type"
          },
          "ui": {
            "$ref": "#/components/schemas/uiContainer"
          }
        },
        "required": [
          "id",
          "type",
          "expires_at",
          "issued_at",
          "request_url",
          "ui"
        ],
        "title": "Login Flow",
        "type": "object"
      },
      "loginViaApiResponse": {
        "description": "The Response for Login Flows via API",
        "properties": {
          "session": {
            "$ref": "#/components/schemas/session"
          },
          "session_token": {
            "description": "The Session Token\n\nA session token is equivalent to a session cookie, but it can be sent in the HTTP Authorization\nHeader:\n\nAuthorization: bearer ${session-token}\n\nThe session token is only issued for API flows, not for Browser flows!",
            "type": "string"
          }
        },
        "required": [
          "session_token",
          "session"
        ],
        "type": "object"
      },
      "recoveryFlow": {
        "description": "This request is used when an identity wants to recover their account.\n\nWe recommend reading the [Account Recovery Documentation](../self-service/flows/password-reset-account-recovery)",
        "properties": {
          "active": {
            "description": "Active, if set, contains the registration method that is being used. It is initially\nnot set.",
            "type": "string"
          },
          "expires_at": {
            "description": "ExpiresAt is the time (UTC) when the request expires. If the user still wishes to update the setting,\na new request has to be initiated.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "issued_at": {
            "description": "IssuedAt is the time (UTC) when the request occurred.",
            "format": "date-time",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "methods": {
            "additionalProperties": {
              "$ref": "#/components/schemas/recoveryFlowMethod"
            },
            "description": "Methods contains context for all account recovery methods. If a registration request has been\nprocessed, but for example the password is incorrect, this will contain error messages.",
            "type": "object"
          },
          "request_url": {
            "description": "RequestURL is the initial URL that was requested from Ory Kratos. It can be used\nto forward information contained in the URL's path or query for example.",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/State"
          },
          "type": {
            "$ref": "#/components/schemas/Type"
          }
        },
        "required": [
          "id",
          "expires_at",
          "issued_at",
          "request_url",
          "methods",
          "state"
        ],
        "title": "A Recovery Flow",
        "type": "object"
      },
      "recoveryFlowMethod": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/recoveryFlowMethodConfig"
          },
          "method": {
            "description": "Method contains the request credentials type.",
            "type": "string"
          }
        },
        "required": [
          "method",
          "config"
        ],
        "type": "object"
      },
      "recoveryFlowMethodConfig": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "recoveryFlowMethodConfigPayload": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "recoveryLink": {
        "properties": {
          "expires_at": {
            "description": "Recovery Link Expires At\n\nThe timestamp when the recovery link expires.",
            "format": "date-time",
            "type": "string"
          },
          "recovery_link": {
            "description": "Recovery Link\n\nThis link can be used to recover the account.",
            "type": "string"
          }
        },
        "required": [
          "recovery_link"
        ],
        "type": "object"
      },
      "registrationFlow": {
        "properties": {
          "active": {
            "$ref": "#/components/schemas/CredentialsType"
          },
          "expires_at": {
            "description": "ExpiresAt is the time (UTC) when the flow expires. If the user still wishes to log in,\na new flow has to be initiated.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "issued_at": {
            "description": "IssuedAt is the time (UTC) when the flow occurred.",
            "format": "date-time",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "methods": {
            "additionalProperties": {
              "$ref": "#/components/schemas/registrationFlowMethod"
            },
            "description": "Methods contains context for all enabled registration methods. If a registration flow has been\nprocessed, but for example the password is incorrect, this will contain error messages.",
            "type": "object"
          },
          "request_url": {
            "description": "RequestURL is the initial URL that was requested from Ory Kratos. It can be used\nto forward information contained in the URL's path or query for example.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/Type"
          }
        },
        "required": [
          "id",
          "expires_at",
          "issued_at",
          "request_url",
          "methods"
        ],
        "type": "object"
      },
      "registrationFlowMethod": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/registrationFlowMethodConfig"
          },
          "method": {
            "$ref": "#/components/schemas/CredentialsType"
          }
        },
        "required": [
          "method",
          "config"
        ],
        "type": "object"
      },
      "registrationFlowMethodConfig": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          },
          "providers": {
            "description": "Providers is set for the \"oidc\" registration method.",
            "items": {
              "$ref": "#/components/schemas/uiNodes"
            },
            "type": "array"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "registrationFlowMethodConfigPayload": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          },
          "providers": {
            "description": "Providers is set for the \"oidc\" registration method.",
            "items": {
              "$ref": "#/components/schemas/uiNodes"
            },
            "type": "array"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "registrationViaApiResponse": {
        "description": "The Response for Registration Flows via API",
        "properties": {
          "identity": {
            "$ref": "#/components/schemas/Identity"
          },
          "session": {
            "$ref": "#/components/schemas/session"
          },
          "session_token": {
            "description": "The Session Token\n\nThis field is only set when the session hook is configured as a post-registration hook.\n\nA session token is equivalent to a session cookie, but it can be sent in the HTTP Authorization\nHeader:\n\nAuthorization: bearer ${session-token}\n\nThe session token is only issued for API flows, not for Browser flows!",
            "type": "string"
          }
        },
        "required": [
          "session_token",
          "identity"
        ],
        "type": "object"
      },
      "revokeSession": {
        "properties": {
          "session_token": {
            "description": "The Session Token\n\nInvalidate this session token.",
            "type": "string"
          }
        },
        "required": [
          "session_token"
        ],
        "type": "object"
      },
      "session": {
        "properties": {
          "active": {
            "type": "boolean"
          },
          "authenticated_at": {
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "identity": {
            "$ref": "#/components/schemas/Identity"
          },
          "issued_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "expires_at",
          "authenticated_at",
          "issued_at",
          "identity"
        ],
        "type": "object"
      },
      "settingsFlow": {
        "description": "This flow is used when an identity wants to update settings\n(e.g. profile data, passwords, ...) in a selfservice manner.\n\nWe recommend reading the [User Settings Documentation](../self-service/flows/user-settings)",
        "properties": {
          "active": {
            "description": "Active, if set, contains the registration method that is being used. It is initially\nnot set.",
            "type": "string"
          },
          "expires_at": {
            "description": "ExpiresAt is the time (UTC) when the flow expires. If the user still wishes to update the setting,\na new flow has to be initiated.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "identity": {
            "$ref": "#/components/schemas/Identity"
          },
          "issued_at": {
            "description": "IssuedAt is the time (UTC) when the flow occurred.",
            "format": "date-time",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "methods": {
            "additionalProperties": {
              "$ref": "#/components/schemas/settingsFlowMethod"
            },
            "description": "Methods contains context for all enabled registration methods. If a settings flow has been\nprocessed, but for example the first name is empty, this will contain error messages.",
            "type": "object"
          },
          "request_url": {
            "description": "RequestURL is the initial URL that was requested from Ory Kratos. It can be used\nto forward information contained in the URL's path or query for example.",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/State"
          },
          "type": {
            "$ref": "#/components/schemas/Type"
          }
        },
        "required": [
          "id",
          "expires_at",
          "issued_at",
          "request_url",
          "methods",
          "identity",
          "state"
        ],
        "title": "Flow represents a Settings Flow",
        "type": "object"
      },
      "settingsFlowMethod": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/settingsFlowMethodConfig"
          },
          "method": {
            "description": "Method is the name of this flow method.",
            "type": "string"
          }
        },
        "required": [
          "method",
          "config"
        ],
        "type": "object"
      },
      "settingsFlowMethodConfig": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "settingsFlowMethodConfigPayload": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "settingsProfileFormConfig": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "settingsViaApiResponse": {
        "description": "The Response for Settings Flows via API",
        "properties": {
          "flow": {
            "$ref": "#/components/schemas/settingsFlow"
          },
          "identity": {
            "$ref": "#/components/schemas/Identity"
          }
        },
        "required": [
          "flow",
          "identity"
        ],
        "type": "object"
      },
      "uiContainer": {
        "description": "Container represents a HTML Form. The container can work with both HTTP Form and JSON requests",
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "uiNode": {
        "description": "Nodes are represented as HTML elements or their native UI equivalents. For example,\na node can be an `\u003cimg\u003e` tag, or an `\u003cinput element\u003e` but also `some plain text`.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/uiNodeAttributes"
          },
          "group": {
            "$ref": "#/components/schemas/uiNodeGroup"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "type": {
            "$ref": "#/components/schemas/uiNodeType"
          }
        },
        "required": [
          "type",
          "group",
          "attributes",
          "messages"
        ],
        "title": "Node represents a flow's nodes",
        "type": "object"
      },
      "uiNodeAnchorAttributes": {
        "properties": {
          "href": {
            "description": "The link's href (destination) URL.\n\nformat: uri",
            "type": "string"
          },
          "title": {
            "$ref": "#/components/schemas/uiText"
          }
        },
        "required": [
          "href",
          "title"
        ],
        "title": "AnchorAttributes represents the attributes of an anchor node.",
        "type": "object"
      },
      "uiNodeAttributes": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/uiNodeInputAttributes"
          },
          {
            "$ref": "#/components/schemas/uiNodeTextAttributes"
          },
          {
            "$ref": "#/components/schemas/uiNodeImageAttributes"
          },
          {
            "$ref": "#/components/schemas/uiNodeAnchorAttributes"
          }
        ],
        "title": "Attributes represents a list of attributes (e.g. `href=\"foo\"` for links)."
      },
      "uiNodeGroup": {
        "type": "string"
      },
      "uiNodeImageAttributes": {
        "properties": {
          "src": {
            "description": "The image's source URL.\n\nformat: uri",
            "type": "string"
          }
        },
        "required": [
          "src"
        ],
        "title": "ImageAttributes represents the attributes of an image node.",
        "type": "object"
      },
      "uiNodeInputAttributeType": {
        "type": "string"
      },
      "uiNodeInputAttributes": {
        "description": "InputAttributes represents the attributes of an input node",
        "properties": {
          "disabled": {
            "description": "Sets the input's disabled field to true or false.",
            "type": "boolean"
          },
          "label": {
            "$ref": "#/components/schemas/uiText"
          },
          "name": {
            "description": "The input's element name.",
            "type": "string"
          },
          "pattern": {
            "description": "The input's pattern.",
            "type": "string"
          },
          "required": {
            "description": "Mark this input field as required.",
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/uiNodeInputAttributeType"
          },
          "value": {
            "$ref": "#/components/schemas/uiNodeInputAttributesValue",
            "description": "The input's value.",
            "nullable": true
          }
        },
        "required": [
          "name",
          "type",
          "disabled"
        ],
        "type": "object"
      },
      "uiNodeInputAttributesValue": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          }
        ]
      },
      "uiNodeTextAttributes": {
        "properties": {
          "text": {
            "$ref": "#/components/schemas/uiText"
          }
        },
        "required": [
          "text"
        ],
        "title": "TextAttributes represents the attributes of a text node.",
        "type": "object"
      },
      "uiNodeType": {
        "type": "string"
      },
      "uiNodes": {
        "items": {
          "$ref": "#/components/schemas/uiNode"
        },
        "type": "array"
      },
      "uiText": {
        "properties": {
          "context": {
            "description": "The message's context. Useful when customizing messages.",
            "type": "object"
          },
          "id": {
            "$ref": "#/components/schemas/ID"
          },
          "text": {
            "description": "The message text. Written in american english.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/uiTextType"
          }
        },
        "required": [
          "id",
          "text",
          "type"
        ],
        "type": "object"
      },
      "uiTextType": {
        "type": "string"
      },
      "uiTexts": {
        "items": {
          "$ref": "#/components/schemas/uiText"
        },
        "type": "array"
      },
      "verificationFlow": {
        "description": "Used to verify an out-of-band communication\nchannel such as an email address or a phone number.\n\nFor more information head over to: https://www.ory.sh/docs/kratos/self-service/flows/verify-email-account-activation",
        "properties": {
          "active": {
            "description": "Active, if set, contains the registration method that is being used. It is initially\nnot set.",
            "type": "string"
          },
          "expires_at": {
            "description": "ExpiresAt is the time (UTC) when the request expires. If the user still wishes to verify the address,\na new request has to be initiated.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "issued_at": {
            "description": "IssuedAt is the time (UTC) when the request occurred.",
            "format": "date-time",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "methods": {
            "additionalProperties": {
              "$ref": "#/components/schemas/verificationFlowMethod"
            },
            "description": "Methods contains context for all account verification methods. If a registration request has been\nprocessed, but for example the password is incorrect, this will contain error messages.",
            "type": "object"
          },
          "request_url": {
            "description": "RequestURL is the initial URL that was requested from Ory Kratos. It can be used\nto forward information contained in the URL's path or query for example.",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/State"
          },
          "type": {
            "$ref": "#/components/schemas/Type"
          }
        },
        "required": [
          "id",
          "type",
          "methods",
          "state"
        ],
        "title": "A Verification Flow",
        "type": "object"
      },
      "verificationFlowMethod": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/verificationFlowMethodConfig"
          },
          "method": {
            "description": "Method contains the request credentials type.",
            "type": "string"
          }
        },
        "required": [
          "method",
          "config"
        ],
        "type": "object"
      },
      "verificationFlowMethodConfig": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "verificationFlowMethodConfigPayload": {
        "properties": {
          "action": {
            "description": "Action should be used as the form action URL `\u003cform action=\"{{ .Action }}\" method=\"post\"\u003e`.",
            "type": "string"
          },
          "messages": {
            "$ref": "#/components/schemas/uiTexts"
          },
          "method": {
            "description": "Method is the form method (e.g. POST)",
            "type": "string"
          },
          "nodes": {
            "$ref": "#/components/schemas/uiNodes"
          }
        },
        "required": [
          "action",
          "method",
          "nodes"
        ],
        "type": "object"
      },
      "version": {
        "properties": {
          "version": {
            "description": "Version is the service's version.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "sessionCookie": {
        "in": "cookie",
        "name": "ory_kratos_session",
        "type": "apiKey"
      },
      "sessionToken": {
        "in": "header",
        "name": "X-Session-Token",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "contact": {
      "email": "hi@ory.sh"
    },
    "description": "Documentation for all public and administrative Ory Kratos APIs. Public and administrative APIs\nare exposed on different ports. Public APIs can face the public internet without any protection\nwhile administrative APIs should never be exposed without prior authorization. To protect\nthe administative API port you should use something like Nginx, Ory Oathkeeper, or any other\ntechnology capable of authorizing incoming requests.\n",
    "license": {
      "name": "Apache 2.0"
    },
    "title": "Ory Kratos API",
    "version": ""
  },
  "openapi": "3.0.3",
  "paths": {
    "/health/alive": {
      "get": {
        "description": "This endpoint returns a HTTP 200 status code when Ory Kratos is accepting incoming\nHTTP requests. This status does currently not include checks whether the database connection is working.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.",
        "operationId": "isAlive",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "status": {
                      "description": "Always \"ok\".",
                      "type": "string"
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Ory Kratos is ready to accept connections."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Check HTTP Server Status",
        "tags": [
          "admin"
        ]
      }
    },
    "/health/ready": {
      "get": {
        "description": "This endpoint returns a HTTP 200 status code when Ory Kratos is up running and the environment dependencies (e.g.\nthe database) are responsive as well.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of Ory Kratos, the health status will never\nrefer to the cluster state, only to a single instance.",
        "operationId": "isReady",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "status": {
                      "description": "Always \"ok\".",
                      "type": "string"
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Ory Kratos is ready to accept requests."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "errors": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Errors contains a list of errors that caused the not ready status.",
                      "type": "object"
                    }
                  },
                  "required": [
                    "errors"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Ory Kratos is not yet ready to accept requests."
          }
        },
        "summary": "Check HTTP Server and Database Status",
        "tags": [
          "admin"
        ]
      }
    },
    "/identities": {
      "get": {
        "description": "Lists all identities. Does not support search at the moment.\n\nLearn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model).",
        "operationId": "listIdentities",
        "parameters": [
          {
            "description": "Items per Page\n\nThis is the number of items per page.",
            "in": "query",
            "name": "per_page",
            "schema": {
              "default": 100,
              "format": "int64",
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Pagination Page",
            "in": "query",
            "name": "page",
            "schema": {
              "default": 0,
              "format": "int64",
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/identityList"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "List Identities",
        "tags": [
          "admin"
        ]
      },
      "post": {
        "description": "This endpoint creates an identity. It is NOT possible to set an identity's credentials (password, ...)\nusing this method! A way to achieve that will be introduced in the future.\n\nLearn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model).",
        "operationId": "createIdentity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateIdentity"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/identityResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Create an Identity",
        "tags": [
          "admin"
        ]
      }
    },
    "/identities/{id}": {
      "delete": {
        "description": "Calling this endpoint irrecoverably and permanently deletes the identity given its ID. This action can not be undone.\nThis endpoint returns 204 when the identity was deleted or when the identity was not found, in which case it is\nassumed that is has been deleted already.\n\nLearn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model).",
        "operationId": "deleteIdentity",
        "parameters": [
          {
            "description": "ID is the identity's ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Delete an Identity",
        "tags": [
          "admin"
        ]
      },
      "get": {
        "description": "Learn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model).",
        "operationId": "getIdentity",
        "parameters": [
          {
            "description": "ID must be set to the ID of identity you want to get",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/identityResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Get an Identity",
        "tags": [
          "admin"
        ]
      },
      "put": {
        "description": "This endpoint updates an identity. It is NOT possible to set an identity's credentials (password, ...)\nusing this method! A way to achieve that will be introduced in the future.\n\nThe full identity payload (except credentials) is expected. This endpoint does not support patching.\n\nLearn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model).",
        "operationId": "updateIdentity",
        "parameters": [
          {
            "description": "ID must be set to the ID of identity you want to update",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateIdentity"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/identityResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Update an Identity",
        "tags": [
          "admin"
        ]
      }
    },
    "/metrics/prometheus": {
      "get": {
        "description": "```\nmetadata:\nannotations:\nprometheus.io/port: \"4434\"\nprometheus.io/path: \"/metrics/prometheus\"\n```",
        "operationId": "prometheus",
        "responses": {
          "200": {
            "$ref": "#/components/responses/emptyResponse"
          }
        },
        "summary": "Get snapshot metrics from the Kratos service. If you're using k8s, you can then add annotations to\nyour deployment like so:",
        "tags": [
          "admin"
        ]
      }
    },
    "/recovery/link": {
      "post": {
        "description": "This endpoint creates a recovery link which should be given to the user in order for them to recover\n(or activate) their account.",
        "operationId": "createRecoveryLink",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRecoveryLink"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/recoveryLink"
                }
              }
            },
            "description": "recoveryLink"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Create a Recovery Link",
        "tags": [
          "admin"
        ]
      }
    },
    "/schemas/{id}": {
      "get": {
        "description": "Get a Traits Schema Definition",
        "operationId": "getSchema",
        "parameters": [
          {
            "description": "ID must be set to the ID of schema you want to get",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/jsonSchema"
                }
              }
            },
            "description": "jsonSchema"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/browser/flows/logout": {
      "get": {
        "description": "This endpoint initializes a logout flow.\n\n\u003e This endpoint is NOT INTENDED for API clients and only works\nwith browsers (Chrome, Firefox, ...).\n\nOn successful logout, the browser will be redirected (HTTP 302 Found) to the `return_to` parameter of the initial request\nor fall back to `urls.default_return_to`.\n\nMore information can be found at [Ory Kratos User Logout Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-logout).",
        "operationId": "initializeSelfServiceBrowserLogoutFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Browser-Based Logout User Flow",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/browser/flows/registration/strategies/oidc/settings/connections": {
      "post": {
        "description": "This endpoint completes a browser-based settings flow. This is usually achieved by POSTing data to this\nendpoint.\n\n\u003e This endpoint is NOT INTENDED for API clients and only works with browsers (Chrome, Firefox, ...) and HTML Forms.\n\nMore information can be found at [Ory Kratos User Settings \u0026 Profile Management Documentation](../self-service/flows/user-settings).",
        "operationId": "completeSelfServiceBrowserSettingsOIDCSettingsFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Complete the Browser-Based Settings Flow for the OpenID Connect Strategy",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/errors": {
      "get": {
        "description": "This endpoint returns the error associated with a user-facing self service errors.\n\nThis endpoint supports stub values to help you implement the error UI:\n\n`?error=stub:500` - returns a stub 500 (Internal Server Error) error.\n\nMore information can be found at [Ory Kratos User User Facing Error Documentation](https://www.ory.sh/docs/kratos/self-service/flows/user-facing-errors).",
        "operationId": "getSelfServiceError",
        "parameters": [
          {
            "description": "Error is the container's ID",
            "in": "query",
            "name": "error",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/errorContainer"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Get User-Facing Self-Service Errors",
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/login/api": {
      "get": {
        "description": "This endpoint initiates a login flow for API clients such as mobile devices, smart TVs, and so on.\n\nIf a valid provided session cookie or session token is provided, a 400 Bad Request error\nwill be returned unless the URL query parameter `?refresh=true` is set.\n\nTo fetch an existing login flow call `/self-service/login/flows?flow=\u003cflow_id\u003e`.\n\n:::warning\n\nYou MUST NOT use this endpoint in client-side (Single Page Apps, ReactJS, AngularJS) nor server-side (Java Server\nPages, NodeJS, PHP, Golang, ...) browser applications. Using this endpoint in these applications will make\nyou vulnerable to a variety of CSRF attacks, including CSRF login attacks.\n\nThis endpoint MUST ONLY be used in scenarios such as native mobile apps (React Native, Objective C, Swift, Java, ...).\n\n:::\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "initializeSelfServiceLoginViaAPIFlow",
        "parameters": [
          {
            "description": "Refresh a login session\n\nIf set to true, this will refresh an existing login session by\nasking the user to sign in again. This will reset the\nauthenticated_at time of the session.",
            "in": "query",
            "name": "refresh",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loginFlow"
                }
              }
            },
            "description": "loginFlow"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Login Flow for API clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/login/browser": {
      "get": {
        "description": "This endpoint initializes a browser-based user login flow. Once initialized, the browser will be redirected to\n`selfservice.flows.login.ui_url` with the flow ID set as the query parameter `?flow=`. If a valid user session\nexists already, the browser will be redirected to `urls.default_redirect_url` unless the query parameter\n`?refresh=true` was set.\n\nThis endpoint is NOT INTENDED for API clients and only works with browsers (Chrome, Firefox, ...).\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "initializeSelfServiceLoginViaBrowserFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Login Flow for browsers",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/login/flows": {
      "get": {
        "description": "This endpoint returns a login flow's context with, for example, error details and other information.\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "getSelfServiceLoginFlow",
        "parameters": [
          {
            "description": "The Login Flow ID\n\nThe value for this parameter comes from `flow` URL Query parameter sent to your\napplication (e.g. `/login?flow=abcde`).",
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loginFlow"
                }
              }
            },
            "description": "loginFlow"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Get Login Flow",
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/login/methods/password": {
      "post": {
        "description": "Use this endpoint to complete a login flow by sending an identity's identifier and password. This endpoint\nbehaves differently for API and browser flows.\n\nAPI flows expect `application/json` to be sent in the body and responds with\nHTTP 200 and a application/json body with the session token on success;\nHTTP 302 redirect to a fresh login flow if the original flow expired with the appropriate error messages set;\nHTTP 400 on form validation errors.\n\nBrowser flows expect `application/x-www-form-urlencoded` to be sent in the body and responds with\na HTTP 302 redirect to the post/after login URL or the `return_to` value if it was set and if the login succeeded;\na HTTP 302 redirect to the login UI URL with the flow ID containing the validation errors otherwise.\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "completeSelfServiceLoginFlowWithPasswordMethod",
        "parameters": [
          {
            "description": "The Flow ID",
            "in": "query",
            "name": "flow",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteSelfServiceLoginFlowWithPasswordMethod"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CompleteSelfServiceLoginFlowWithPasswordMethod"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loginViaApiResponse"
                }
              }
            },
            "description": "loginViaApiResponse"
          },
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loginFlow"
                }
              }
            },
            "description": "loginFlow"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Complete Login Flow with Username/Email Password Method",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/recovery/api": {
      "get": {
        "description": "This endpoint initiates a recovery flow for API clients such as mobile devices, smart TVs, and so on.\n\nIf a valid provided session cookie or session token is provided, a 400 Bad Request error.\n\nTo fetch an existing recovery flow call `/self-service/recovery/flows?flow=\u003cflow_id\u003e`.\n\n:::warning\n\nYou MUST NOT use this endpoint in client-side (Single Page Apps, ReactJS, AngularJS) nor server-side (Java Server\nPages, NodeJS, PHP, Golang, ...) browser applications. Using this endpoint in these applications will make\nyou vulnerable to a variety of CSRF attacks.\n\nThis endpoint MUST ONLY be used in scenarios such as native mobile apps (React Native, Objective C, Swift, Java, ...).\n\n:::\n\nMore information can be found at [Ory Kratos Account Recovery Documentation](../self-service/flows/account-recovery.mdx).",
        "operationId": "initializeSelfServiceRecoveryViaAPIFlow",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/recoveryFlow"
                }
              }
            },
            "description": "recoveryFlow"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Recovery Flow for API Clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/recovery/browser": {
      "get": {
        "description": "This endpoint initializes a browser-based account recovery flow. Once initialized, the browser will be redirected to\n`selfservice.flows.recovery.ui_url` with the flow ID set as the query parameter `?flow=`. If a valid user session\nexists, the browser is returned to the configured return URL.\n\nThis endpoint is NOT INTENDED for API clients and only works with browsers (Chrome, Firefox, ...).\n\nMore information can be found at [Ory Kratos Account Recovery Documentation](../self-service/flows/account-recovery.mdx).",
        "operationId": "initializeSelfServiceRecoveryViaBrowserFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Recovery Flow for Browser Clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/recovery/flows": {
      "get": {
        "description": "This endpoint returns a recovery flow's context with, for example, error details and other information.\n\nMore information can be found at [Ory Kratos Account Recovery Documentation](../self-service/flows/account-recovery.mdx).",
        "operationId": "getSelfServiceRecoveryFlow",
        "parameters": [
          {
            "description": "The Flow ID\n\nThe value for this parameter comes from `request` URL Query parameter sent to your\napplication (e.g. `/recovery?flow=abcde`).",
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/recoveryFlow"
                }
              }
            },
            "description": "recoveryFlow"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Get information about a recovery flow",
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/recovery/methods/link": {
      "post": {
        "description": "Use this endpoint to complete a recovery flow using the link method. This endpoint\nbehaves differently for API and browser flows and has several states:\n\n`choose_method` expects `flow` (in the URL query) and `email` (in the body) to be sent\nand works with API- and Browser-initiated flows.\nFor API clients it either returns a HTTP 200 OK when the form is valid and HTTP 400 OK when the form is invalid\nand a HTTP 302 Found redirect with a fresh recovery flow if the flow was otherwise invalid (e.g. expired).\nFor Browser clients it returns a HTTP 302 Found redirect to the Recovery UI URL with the Recovery Flow ID appended.\n`sent_email` is the success state after `choose_method` and allows the user to request another recovery email. It\nworks for both API and Browser-initiated flows and returns the same responses as the flow in `choose_method` state.\n`passed_challenge` expects a `token` to be sent in the URL query and given the nature of the flow (\"sending a recovery link\")\ndoes not have any API capabilities. The server responds with a HTTP 302 Found redirect either to the Settings UI URL\n(if the link was valid) and instructs the user to update their password, or a redirect to the Recover UI URL with\na new Recovery Flow ID which contains an error message that the recovery link was invalid.\n\nMore information can be found at [Ory Kratos Account Recovery Documentation](../self-service/flows/account-recovery.mdx).",
        "operationId": "completeSelfServiceRecoveryFlowWithLinkMethod",
        "parameters": [
          {
            "description": "Recovery Token\n\nThe recovery token which completes the recovery request. If the token\nis invalid (e.g. expired) an error will be shown to the end-user.",
            "in": "query",
            "name": "token",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Flow ID\n\nformat: uuid",
            "in": "query",
            "name": "flow",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/completeSelfServiceRecoveryFlowWithLinkMethod"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/completeSelfServiceRecoveryFlowWithLinkMethod"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/recoveryFlow"
                }
              }
            },
            "description": "recoveryFlow"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Complete Recovery Flow with Link Method",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/registration/api": {
      "get": {
        "description": "This endpoint initiates a registration flow for API clients such as mobile devices, smart TVs, and so on.\n\nIf a valid provided session cookie or session token is provided, a 400 Bad Request error\nwill be returned unless the URL query parameter `?refresh=true` is set.\n\nTo fetch an existing registration flow call `/self-service/registration/flows?flow=\u003cflow_id\u003e`.\n\n:::warning\n\nYou MUST NOT use this endpoint in client-side (Single Page Apps, ReactJS, AngularJS) nor server-side (Java Server\nPages, NodeJS, PHP, Golang, ...) browser applications. Using this endpoint in these applications will make\nyou vulnerable to a variety of CSRF attacks.\n\nThis endpoint MUST ONLY be used in scenarios such as native mobile apps (React Native, Objective C, Swift, Java, ...).\n\n:::\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "initializeSelfServiceRegistrationViaAPIFlow",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/registrationFlow"
                }
              }
            },
            "description": "registrationFlow"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Registration Flow for API clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/registration/browser": {
      "get": {
        "description": "This endpoint initializes a browser-based user registration flow. Once initialized, the browser will be redirected to\n`selfservice.flows.registration.ui_url` with the flow ID set as the query parameter `?flow=`. If a valid user session\nexists already, the browser will be redirected to `urls.default_redirect_url` unless the query parameter\n`?refresh=true` was set.\n\n:::note\n\nThis endpoint is NOT INTENDED for API clients and only works with browsers (Chrome, Firefox, ...).\n\n:::\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "initializeSelfServiceRegistrationViaBrowserFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Registration Flow for browsers",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/registration/flows": {
      "get": {
        "description": "This endpoint returns a registration flow's context with, for example, error details and other information.\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "getSelfServiceRegistrationFlow",
        "parameters": [
          {
            "description": "The Registration Flow ID\n\nThe value for this parameter comes from `flow` URL Query parameter sent to your\napplication (e.g. `/registration?flow=abcde`).",
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/registrationFlow"
                }
              }
            },
            "description": "registrationFlow"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Get Registration Flow",
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/registration/methods/password": {
      "post": {
        "description": "Use this endpoint to complete a registration flow by sending an identity's traits and password. This endpoint\nbehaves differently for API and browser flows.\n\nAPI flows expect `application/json` to be sent in the body and respond with\nHTTP 200 and a application/json body with the created identity success - if the session hook is configured the\n`session` and `session_token` will also be included;\nHTTP 302 redirect to a fresh registration flow if the original flow expired with the appropriate error messages set;\nHTTP 400 on form validation errors.\n\nBrowser flows expect `application/x-www-form-urlencoded` to be sent in the body and responds with\na HTTP 302 redirect to the post/after registration URL or the `return_to` value if it was set and if the registration succeeded;\na HTTP 302 redirect to the registration UI URL with the flow ID containing the validation errors otherwise.\n\nMore information can be found at [Ory Kratos User Login and User Registration Documentation](https://www.ory.sh/docs/next/kratos/self-service/flows/user-login-user-registration).",
        "operationId": "completeSelfServiceRegistrationFlowWithPasswordMethod",
        "parameters": [
          {
            "description": "Flow is flow ID.",
            "in": "query",
            "name": "flow",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object"
              }
            }
          },
          "x-originalParamName": "Payload"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/registrationViaApiResponse"
                }
              }
            },
            "description": "registrationViaApiResponse"
          },
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/registrationFlow"
                }
              }
            },
            "description": "registrationFlow"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Complete Registration Flow with Username/Email Password Method",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/settings/api": {
      "get": {
        "description": "This endpoint initiates a settings flow for API clients such as mobile devices, smart TVs, and so on.\nYou must provide a valid Ory Kratos Session Token for this endpoint to respond with HTTP 200 OK.\n\nTo fetch an existing settings flow call `/self-service/settings/flows?flow=\u003cflow_id\u003e`.\n\n:::warning\n\nYou MUST NOT use this endpoint in client-side (Single Page Apps, ReactJS, AngularJS) nor server-side (Java Server\nPages, NodeJS, PHP, Golang, ...) browser applications. Using this endpoint in these applications will make\nyou vulnerable to a variety of CSRF attacks.\n\nThis endpoint MUST ONLY be used in scenarios such as native mobile apps (React Native, Objective C, Swift, Java, ...).\n\n:::\n\nMore information can be found at [Ory Kratos User Settings \u0026 Profile Management Documentation](../self-service/flows/user-settings).",
        "operationId": "initializeSelfServiceSettingsViaAPIFlow",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/settingsFlow"
                }
              }
            },
            "description": "settingsFlow"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "security": [
          {
            "sessionToken": []
          }
        ],
        "summary": "Initialize Settings Flow for API Clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/settings/browser": {
      "get": {
        "description": "This endpoint initializes a browser-based user settings flow. Once initialized, the browser will be redirected to\n`selfservice.flows.settings.ui_url` with the flow ID set as the query parameter `?flow=`. If no valid\nOry Kratos Session Cookie is included in the request, a login flow will be initialized.\n\n:::note\n\nThis endpoint is NOT INTENDED for API clients and only works with browsers (Chrome, Firefox, ...).\n\n:::\n\nMore information can be found at [Ory Kratos User Settings \u0026 Profile Management Documentation](../self-service/flows/user-settings).",
        "operationId": "initializeSelfServiceSettingsViaBrowserFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "security": [
          {
            "sessionToken": []
          }
        ],
        "summary": "Initialize Settings Flow for Browsers",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/settings/flows": {
      "get": {
        "description": "When accessing this endpoint through Ory Kratos' Public API you must ensure that either the Ory Kratos Session Cookie\nor the Ory Kratos Session Token are set. The public endpoint does not return 404 status codes\nbut instead 403 or 500 to improve data privacy.\n\nYou can access this endpoint without credentials when using Ory Kratos' Admin API.\n\nMore information can be found at [Ory Kratos User Settings \u0026 Profile Management Documentation](../self-service/flows/user-settings).",
        "operationId": "getSelfServiceSettingsFlow",
        "parameters": [
          {
            "description": "ID is the Settings Flow ID\n\nThe value for this parameter comes from `flow` URL Query parameter sent to your\napplication (e.g. `/settings?flow=abcde`).",
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/settingsFlow"
                }
              }
            },
            "description": "settingsFlow"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "security": [
          {
            "sessionToken": []
          }
        ],
        "summary": "Get Settings Flow",
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/settings/methods/password": {
      "post": {
        "description": "Use this endpoint to complete a settings flow by sending an identity's updated password. This endpoint\nbehaves differently for API and browser flows.\n\nAPI-initiated flows expect `application/json` to be sent in the body and respond with\nHTTP 200 and an application/json body with the session token on success;\nHTTP 302 redirect to a fresh settings flow if the original flow expired with the appropriate error messages set;\nHTTP 400 on form validation errors.\nHTTP 401 when the endpoint is called without a valid session token.\nHTTP 403 when `selfservice.flows.settings.privileged_session_max_age` was reached.\nImplies that the user needs to re-authenticate.\n\nBrowser flows expect `application/x-www-form-urlencoded` to be sent in the body and responds with\na HTTP 302 redirect to the post/after settings URL or the `return_to` value if it was set and if the flow succeeded;\na HTTP 302 redirect to the Settings UI URL with the flow ID containing the validation errors otherwise.\na HTTP 302 redirect to the login endpoint when `selfservice.flows.settings.privileged_session_max_age` was reached.\n\nMore information can be found at [Ory Kratos User Settings \u0026 Profile Management Documentation](../self-service/flows/user-settings).",
        "operationId": "completeSelfServiceSettingsFlowWithPasswordMethod",
        "parameters": [
          {
            "description": "Flow is flow ID.",
            "in": "query",
            "name": "flow",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteSelfServiceSettingsFlowWithPasswordMethod"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CompleteSelfServiceSettingsFlowWithPasswordMethod"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/settingsViaApiResponse"
                }
              }
            },
            "description": "settingsViaApiResponse"
          },
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/settingsFlow"
                }
              }
            },
            "description": "settingsFlow"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "security": [
          {
            "sessionToken": []
          }
        ],
        "summary": "Complete Settings Flow with Username/Email Password Method",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/settings/methods/profile": {
      "post": {
        "description": "Use this endpoint to complete a settings flow by sending an identity's updated traits. This endpoint\nbehaves differently for API and browser flows.\n\nAPI-initiated flows expect `application/json` to be sent in the body and respond with\nHTTP 200 and an application/json body with the session token on success;\nHTTP 302 redirect to a fresh settings flow if the original flow expired with the appropriate error messages set;\nHTTP 400 on form validation errors.\nHTTP 401 when the endpoint is called without a valid session token.\nHTTP 403 when `selfservice.flows.settings.privileged_session_max_age` was reached and a sensitive field was\nupdated (e.g. recovery email). Implies that the user needs to re-authenticate.\n\nBrowser flows expect `application/x-www-form-urlencoded` to be sent in the body and responds with\na HTTP 302 redirect to the post/after settings URL or the `return_to` value if it was set and if the flow succeeded;\na HTTP 302 redirect to the settings UI URL with the flow ID containing the validation errors otherwise.\na HTTP 302 redirect to the login endpoint when `selfservice.flows.settings.privileged_session_max_age` was reached.\n\nMore information can be found at [Ory Kratos User Settings \u0026 Profile Management Documentation](../self-service/flows/user-settings).",
        "operationId": "completeSelfServiceSettingsFlowWithProfileMethod",
        "parameters": [
          {
            "description": "Flow is flow ID.",
            "in": "query",
            "name": "flow",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object"
              }
            }
          },
          "x-originalParamName": "Payload"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/settingsFlow"
                }
              }
            },
            "description": "settingsFlow"
          },
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/settingsFlow"
                }
              }
            },
            "description": "settingsFlow"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "security": [
          {
            "sessionToken": []
          }
        ],
        "summary": "Complete Settings Flow with Profile Method",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/verification/api": {
      "get": {
        "description": "This endpoint initiates a verification flow for API clients such as mobile devices, smart TVs, and so on.\n\nTo fetch an existing verification flow call `/self-service/verification/flows?flow=\u003cflow_id\u003e`.\n\n:::warning\n\nYou MUST NOT use this endpoint in client-side (Single Page Apps, ReactJS, AngularJS) nor server-side (Java Server\nPages, NodeJS, PHP, Golang, ...) browser applications. Using this endpoint in these applications will make\nyou vulnerable to a variety of CSRF attacks.\n\nThis endpoint MUST ONLY be used in scenarios such as native mobile apps (React Native, Objective C, Swift, Java, ...).\n\n:::\n\nMore information can be found at [Ory Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/self-service/flows/verify-email-account-activation).",
        "operationId": "initializeSelfServiceVerificationViaAPIFlow",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/verificationFlow"
                }
              }
            },
            "description": "verificationFlow"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Verification Flow for API Clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/verification/browser": {
      "get": {
        "description": "This endpoint initializes a browser-based account verification flow. Once initialized, the browser will be redirected to\n`selfservice.flows.verification.ui_url` with the flow ID set as the query parameter `?flow=`.\n\nThis endpoint is NOT INTENDED for API clients and only works with browsers (Chrome, Firefox, ...).\n\nMore information can be found at [Ory Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/self-service/flows/verify-email-account-activation).",
        "operationId": "initializeSelfServiceVerificationViaBrowserFlow",
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Initialize Verification Flow for Browser Clients",
        "tags": [
          "public"
        ]
      }
    },
    "/self-service/verification/flows": {
      "get": {
        "description": "This endpoint returns a verification flow's context with, for example, error details and other information.\n\nMore information can be found at [Ory Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/self-service/flows/verify-email-account-activation).",
        "operationId": "getSelfServiceVerificationFlow",
        "parameters": [
          {
            "description": "The Flow ID\n\nThe value for this parameter comes from `request` URL Query parameter sent to your\napplication (e.g. `/verification?flow=abcde`).",
            "in": "query",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/verificationFlow"
                }
              }
            },
            "description": "verificationFlow"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Get Verification Flow",
        "tags": [
          "public",
          "admin"
        ]
      }
    },
    "/self-service/verification/methods/link": {
      "post": {
        "description": "Use this endpoint to complete a verification flow using the link method. This endpoint\nbehaves differently for API and browser flows and has several states:\n\n`choose_method` expects `flow` (in the URL query) and `email` (in the body) to be sent\nand works with API- and Browser-initiated flows.\nFor API clients it either returns a HTTP 200 OK when the form is valid and HTTP 400 OK when the form is invalid\nand a HTTP 302 Found redirect with a fresh verification flow if the flow was otherwise invalid (e.g. expired).\nFor Browser clients it returns a HTTP 302 Found redirect to the Verification UI URL with the Verification Flow ID appended.\n`sent_email` is the success state after `choose_method` and allows the user to request another verification email. It\nworks for both API and Browser-initiated flows and returns the same responses as the flow in `choose_method` state.\n`passed_challenge` expects a `token` to be sent in the URL query and given the nature of the flow (\"sending a verification link\")\ndoes not have any API capabilities. The server responds with a HTTP 302 Found redirect either to the Settings UI URL\n(if the link was valid) and instructs the user to update their password, or a redirect to the Verification UI URL with\na new Verification Flow ID which contains an error message that the verification link was invalid.\n\nMore information can be found at [Ory Kratos Email and Phone Verification Documentation](https://www.ory.sh/docs/kratos/self-service/flows/verify-email-account-activation).",
        "operationId": "completeSelfServiceVerificationFlowWithLinkMethod",
        "parameters": [
          {
            "description": "Verification Token\n\nThe verification token which completes the verification request. If the token\nis invalid (e.g. expired) an error will be shown to the end-user.",
            "in": "query",
            "name": "token",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Flow ID\n\nformat: uuid",
            "in": "query",
            "name": "flow",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/completeSelfServiceVerificationFlowWithLinkMethod"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/completeSelfServiceVerificationFlowWithLinkMethod"
              }
            }
          },
          "x-originalParamName": "Body"
        },
        "responses": {
          "302": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/verificationFlow"
                }
              }
            },
            "description": "verificationFlow"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Complete Verification Flow with Link Method",
        "tags": [
          "public"
        ]
      }
    },
    "/sessions": {
      "delete": {
        "description": "Use this endpoint to revoke a session using its token. This endpoint is particularly useful for API clients\nsuch as mobile apps to log the user out of the system and invalidate the session.\n\nThis endpoint does not remove any HTTP Cookies - use the Self-Service Logout Flow instead.",
        "operationId": "revokeSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/revokeSession"
              }
            }
          },
          "required": true,
          "x-originalParamName": "Body"
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/emptyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "summary": "Revoke and Invalidate a Session",
        "tags": [
          "public"
        ]
      }
    },
    "/sessions/whoami": {
      "get": {
        "description": "Uses the HTTP Headers in the GET request to determine (e.g. by using checking the cookies) who is authenticated.\nReturns a session object in the body or 401 if the credentials are invalid or no credentials were sent.\nAdditionally when the request it successful it adds the user ID to the 'X-Kratos-Authenticated-Identity-Id' header in the response.\n\nThis endpoint is useful for reverse proxies and API Gateways.",
        "operationId": "whoami",
        "parameters": [
          {
            "in": "header",
            "name": "Cookie",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "in: authorization",
            "in": "query",
            "name": "Authorization",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/session"
                }
              }
            },
            "description": "session"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/genericError"
                }
              }
            },
            "description": "genericError"
          }
        },
        "security": [
          {
            "sessionToken": []
          }
        ],
        "summary": "Check Who the Current HTTP Session Belongs To",
        "tags": [
          "public"
        ]
      }
    },
    "/version": {
      "get": {
        "description": "This endpoint returns the version of Ory Kratos.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the version will never\nrefer to the cluster state, only to a single instance.",
        "operationId": "getVersion",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "version": {
                      "description": "The version of Ory Kratos.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "version"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Returns the Ory Kratos version."
          }
        },
        "summary": "Return Running Software Version.",
        "tags": [
          "admin"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://{tenant}.tenants.oryapis.com/api/kratos/{api}",
      "variables": {
        "api": {
          "default": "public",
          "description": "Target the public or administrative API.",
          "enum": [
            "public",
            "admin"
          ]
        },
        "tenant": {
          "default": "demo",
          "description": "Tenant ID as provided by Ory Cloud."
        }
      }
    }
  ],
  "tags": [
    {
      "description": "All administrative API endpoints exposed at the admin API port.",
      "externalDocs": {
        "url": "https://www.ory.sh/kratos/docs/reference/api"
      },
      "name": "admin"
    },
    {
      "description": "All public API endpoints exposed at the public API port.",
      "externalDocs": {
        "url": "https://www.ory.sh/kratos/docs/reference/api"
      },
      "name": "public"
    }
  ],
  "x-forwarded-proto": "string",
  "x-request-id": "string"
}


================================================
FILE: .schema/openapi/gen.go.yml
================================================
disallowAdditionalPropertiesIfNotPresent: false
packageName: client
generateInterfaces: true
structPrefix: true
enumClassPrefix: true
useOneOfDiscriminatorLookup: true
isGoSubmodule: false


================================================
FILE: .schema/openapi/gen.typescript.yml
================================================
npmName: "@ory/kratos-client"
npmVersion: 0.0.0
# typescriptThreePlus: true
#npmRepository: https://github.com/ory/sdk.git
supportsES6: true
ensureUniqueParams: true
modelPropertyNaming: original
disallowAdditionalPropertiesIfNotPresent: false
withInterfaces: false
useSingleRequestParameter: true
enumUnknownDefaultCase: true


================================================
FILE: .schema/openapi/patches/common.yaml
================================================
[]


================================================
FILE: .schema/openapi/patches/courier.yaml
================================================
# Makes courierMessageStatus a string enum
- op: remove
  path: /components/schemas/courierMessageStatus/format
- op: replace
  path: /components/schemas/courierMessageStatus/type
  value: string
- op: add
  path: /components/schemas/courierMessageStatus/enum
  value:
    - queued
    - sent
    - processing
    - abandoned
# Makes courierMessageType a string enum
- op: remove
  path: /components/schemas/courierMessageType/format
- op: replace
  path: /components/schemas/courierMessageType/type
  value: string
- op: add
  path: /components/schemas/courierMessageType/enum
  value:
    - email
    - phone
# Fix courierMessageStatus query parameter in listMessages endpoint
- op: replace
  path: /paths/~1admin~1courier~1messages/get/parameters/2/schema
  value:
    $ref: "#/components/schemas/courierMessageStatus"


================================================
FILE: .schema/openapi/patches/generic_error.yaml
================================================
- op: add
  path: /paths/~1sessions~1whoami/get/parameters/0/example
  value: MP2YWEMeM8MxjkGKpH4dqOQ4Q4DlSPaj
- op: add
  path: /paths/~1sessions~1whoami/get/parameters/1/example
  value: ory_session=a19iOVAbdzdgl70Rq1QZmrKmcjDtdsviCTZx7m9a9yHIUS8Wa9T7hvqyGTsLHi6Qifn2WUfpAKx9DWp0SJGleIn9vh2YF4A16id93kXFTgIgmwIOvbVAScyrx7yVl6bPZnCx27ec4WQDtaTewC1CpgudeDV2jQQnSaCP6ny3xa8qLH-QUgYqdQuoA_LF1phxgRCUfIrCLQOkolX5nv3ze_f==


================================================
FILE: .schema/openapi/patches/identity.yaml
================================================
- op: remove
  path: /components/schemas/updateIdentityBody/properties/metadata_admin/type
- op: remove
  path: /components/schemas/updateIdentityBody/properties/metadata_public/type
- op: remove
  path: /components/schemas/createIdentityBody/properties/metadata_admin/type
- op: remove
  path: /components/schemas/createIdentityBody/properties/metadata_public/type
- op: remove
  path: /components/schemas/nullJsonRawMessage/type
- op: add
  path: /components/schemas/nullJsonRawMessage/nullable
  value: true


================================================
FILE: .schema/openapi/patches/meta.yaml
================================================
- op: replace
  path: /info
  value:
    title: Ory Identities API
    description: |
      This is the API specification for Ory Identities with features such as registration, login, recovery, account verification, profile settings, password reset, identity management, session management, email and sms delivery, and more.
    version: >-
      {{ getenv "CIRCLE_TAG" }}
    license:
      name: Apache 2.0
    contact:
      email: "office@ory.sh"
- op: replace
  path: /tags
  value:
    - name: identity
      description: APIs for managing identities.
    - name: frontend
      description: Endpoints used by frontend applications (e.g. Single-Page-App, Native Apps, Server Apps, ...) to manage a user's own profile.
    - name: courier
      description: APIs for managing email and SMS message delivery.
    - name: metadata
      description: Server Metadata provides relevant information about the running server. Only available when self-hosting this service.


================================================
FILE: .schema/openapi/patches/nulls.yaml
================================================
- op: replace
  path: "#/components/schemas/NullUUID"
  value:
    type: string
    format: uuid4
    nullable: true
- op: replace
  path: "#/components/schemas/NullTime"
  value:
    format: date-time
    type: string
    nullable: true
- op: replace
  path: "#/components/schemas/Time"
  value:
    format: date-time
    type: string
- op: replace
  path: "#/components/schemas/NullString"
  value:
    type: string
    nullable: true
- op: replace
  path: "#/components/schemas/NullBool"
  value:
    type: boolean
    nullable: true
- op: replace
  path: "#/components/schemas/NullInt"
  value:
    type: integer
    nullable: true
- op: replace
  path: "#/components/schemas/nullInt64"
  value:
    type: integer
    nullable: true
- op: replace
  path: "#/components/schemas/nullDuration"
  value:
    type: string
    nullable: true
    pattern: ^[0-9]+(ns|us|ms|s|m|h)$


================================================
FILE: .schema/openapi/patches/schema.yaml
================================================
# Makes uiNodeAttributes polymorph
- op: remove
  path: /components/schemas/uiNodeAttributes/type
- op: add
  path: /components/schemas/uiNodeAttributes/discriminator
  value:
    propertyName: node_type
    mapping:
      input: "#/components/schemas/uiNodeInputAttributes"
      text: "#/components/schemas/uiNodeTextAttributes"
      img: "#/components/schemas/uiNodeImageAttributes"
      a: "#/components/schemas/uiNodeAnchorAttributes"
      script: "#/components/schemas/uiNodeScriptAttributes"
      div: "#/components/schemas/uiNodeDivisionAttributes"
- op: add
  path: /components/schemas/uiNodeAttributes/oneOf
  value:
    - "$ref": "#/components/schemas/uiNodeInputAttributes"
    - "$ref": "#/components/schemas/uiNodeTextAttributes"
    - "$ref": "#/components/schemas/uiNodeImageAttributes"
    - "$ref": "#/components/schemas/uiNodeAnchorAttributes"
    - "$ref": "#/components/schemas/uiNodeScriptAttributes"
    - "$ref": "#/components/schemas/uiNodeDivisionAttributes"

- op: replace
  path: /components/schemas/uiNodeDivisionAttributes/properties/node_type/enum
  value:
    - div

- op: replace
  path: /components/schemas/uiNodeInputAttributes/properties/node_type/enum
  value:
    - input

- op: replace
  path: /components/schemas/uiNodeTextAttributes/properties/node_type/enum
  value:
    - text

- op: replace
  path: /components/schemas/uiNodeImageAttributes/properties/node_type/enum
  value:
    - img

- op: replace
  path: /components/schemas/uiNodeAnchorAttributes/properties/node_type/enum
  value:
    - a

- op: replace
  path: /components/schemas/uiNodeScriptAttributes/properties/node_type/enum
  value:
    - script

# Makes the uiNodeInputAttributes value attribute polymorph
- op: add
  path: /components/schemas/uiNodeInputAttributes/properties/value/nullable
  value: true

- op: replace
  path: /components/schemas/flowError/properties/error
  value:
    type: object

- op: remove
  path: "#/components/schemas/identityTraits/type"

- op: add
  path: /components/schemas/continueWith/discriminator
  value:
    propertyName: action
    mapping:
      show_verification_ui: "#/components/schemas/continueWithVerificationUi"
      set_ory_session_token: "#/components/schemas/continueWithSetOrySessionToken"
      show_settings_ui: "#/components/schemas/continueWithSettingsUi"
      show_recovery_ui: "#/components/schemas/continueWithRecoveryUi"
      redirect_browser_to: "#/components/schemas/continueWithRedirectBrowserTo"

- op: add
  path: /components/schemas/continueWith/oneOf
  value:
    - "$ref": "#/components/schemas/continueWithVerificationUi"
    - "$ref": "#/components/schemas/continueWithSetOrySessionToken"
    - "$ref": "#/components/schemas/continueWithSettingsUi"
    - "$ref": "#/components/schemas/continueWithRecoveryUi"
    - "$ref": "#/components/schemas/continueWithRedirectBrowserTo"


================================================
FILE: .schema/openapi/patches/security.yaml
================================================
- op: replace
  path: /components/schemas/genericError/properties/details/additionalProperties
  value: false


================================================
FILE: .schema/openapi/patches/selfservice.yaml
================================================
# Makes updateLoginFlowPayload polymorph
#- op: remove
#  path: /components/schemas/updateLoginFlowBody/type
#- op: add
#  path: /components/schemas/updateLoginFlowBody/oneOf
#  value:
#    - "$ref": "#/components/schemas/updateLoginFlowWithPasswordMethod"

# Makes updateRegistrationFlowPayload polymorph

# All modifications for the registration flow
- op: remove
  path: /components/schemas/updateRegistrationFlowBody/type
- op: add
  path: /components/schemas/updateRegistrationFlowBody/oneOf
  value:
    - "$ref": "#/components/schemas/updateRegistrationFlowWithPasswordMethod"
    - "$ref": "#/components/schemas/updateRegistrationFlowWithOidcMethod"
    - "$ref": "#/components/schemas/updateRegistrationFlowWithSamlMethod"
    - "$ref": "#/components/schemas/updateRegistrationFlowWithWebAuthnMethod"
    - "$ref": "#/components/schemas/updateRegistrationFlowWithCodeMethod"
    - "$ref": "#/components/schemas/updateRegistrationFlowWithPasskeyMethod"
    - "$ref": "#/components/schemas/updateRegistrationFlowWithProfileMethod"
- op: add
  path: /components/schemas/updateRegistrationFlowBody/discriminator
  value:
    propertyName: method
    mapping:
      password: "#/components/schemas/updateRegistrationFlowWithPasswordMethod"
      oidc: "#/components/schemas/updateRegistrationFlowWithOidcMethod"
      saml: "#/components/schemas/updateRegistrationFlowWithSamlMethod"
      webauthn: "#/components/schemas/updateRegistrationFlowWithWebAuthnMethod"
      code: "#/components/schemas/updateRegistrationFlowWithCodeMethod"
      passkey: "#/components/schemas/updateRegistrationFlowWithPasskeyMethod"
      profile: "#/components/schemas/updateRegistrationFlowWithProfileMethod"
- op: add
  path: /components/schemas/registrationFlowState
  value:
    title: Registration flow state (experimental)
    description: The experimental state represents the state of a registration flow. This field is EXPERIMENTAL and subject to change!
    type: string
    enum:
      - choose_method
      - sent_email
      - passed_challenge
# end

# All modifications for the login flow
- op: remove
  path: /components/schemas/updateLoginFlowBody/type
- op: add
  path: /components/schemas/updateLoginFlowBody/oneOf
  value:
    - "$ref": "#/components/schemas/updateLoginFlowWithPasswordMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithOidcMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithSamlMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithTotpMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithWebAuthnMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithLookupSecretMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithCodeMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithPasskeyMethod"
    - "$ref": "#/components/schemas/updateLoginFlowWithIdentifierFirstMethod"
- op: add
  path: /components/schemas/updateLoginFlowBody/discriminator
  value:
    propertyName: method
    mapping:
      password: "#/components/schemas/updateLoginFlowWithPasswordMethod"
      oidc: "#/components/schemas/updateLoginFlowWithOidcMethod"
      saml: "#/components/schemas/updateLoginFlowWithSamlMethod"
      totp: "#/components/schemas/updateLoginFlowWithTotpMethod"
      webauthn: "#/components/schemas/updateLoginFlowWithWebAuthnMethod"
      lookup_secret: "#/components/schemas/updateLoginFlowWithLookupSecretMethod"
      code: "#/components/schemas/updateLoginFlowWithCodeMethod"
      passkey: "#/components/schemas/updateLoginFlowWithPasskeyMethod"
      identifier_first: "#/components/schemas/updateLoginFlowWithIdentifierFirstMethod"
- op: add
  path: /components/schemas/loginFlowState
  value:
    title: Login flow state (experimental)
    description: The experimental state represents the state of a login flow. This field is EXPERIMENTAL and subject to change!
    type: string
    enum:
      - choose_method
      - sent_email
      - passed_challenge
# end

# All modifications for the recovery flow
- op: remove
  path: /components/schemas/updateRecoveryFlowBody/type
- op: add
  path: /components/schemas/updateRecoveryFlowBody/oneOf
  value:
    - "$ref": "#/components/schemas/updateRecoveryFlowWithLinkMethod"
    - "$ref": "#/components/schemas/updateRecoveryFlowWithCodeMethod"
- op: add
  path: /components/schemas/updateRecoveryFlowBody/discriminator
  value:
    propertyName: method
    mapping:
      link: "#/components/schemas/updateRecoveryFlowWithLinkMethod"
      code: "#/components/schemas/updateRecoveryFlowWithCodeMethod"
- op: add
  path: /components/schemas/recoveryFlowState
  type: string
  value:
    title: Recovery flow state (experimental)
    description: The experimental state represents the state of a recovery flow. This field is EXPERIMENTAL and subject to change!
    enum:
      - choose_method
      - sent_email
      - passed_challenge
# End

# All modifications for the verification flow
- op: remove
  path: /components/schemas/updateVerificationFlowBody/type
- op: add
  path: /components/schemas/updateVerificationFlowBody/oneOf
  value:
    - "$ref": "#/components/schemas/updateVerificationFlowWithLinkMethod"
    - "$ref": "#/components/schemas/updateVerificationFlowWithCodeMethod"
- op: add
  path: /components/schemas/updateVerificationFlowBody/discriminator
  value:
    propertyName: method
    mapping:
      link: "#/components/schemas/updateVerificationFlowWithLinkMethod"
      code: "#/components/schemas/updateVerificationFlowWithCodeMethod"
- op: add
  path: /components/schemas/verificationFlowState
  type: string
  value:
    title: Verification flow state (experimental)
    description: The experimental state represents the state of a verification flow. This field is EXPERIMENTAL and subject to change!
    enum:
      - choose_method
      - sent_email
      - passed_challenge
# End

# All modifications for the settings flow
- op: remove
  path: /components/schemas/updateSettingsFlowBody/type
- op: add
  path: /components/schemas/updateSettingsFlowBody/oneOf
  value:
    - "$ref": "#/components/schemas/updateSettingsFlowWithPasswordMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithProfileMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithOidcMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithSamlMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithTotpMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithWebAuthnMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithLookupMethod"
    - "$ref": "#/components/schemas/updateSettingsFlowWithPasskeyMethod"
- op: add
  path: /components/schemas/updateSettingsFlowBody/discriminator
  value:
    propertyName: method
    mapping:
      password: "#/components/schemas/updateSettingsFlowWithPasswordMethod"
      profile: "#/components/schemas/updateSettingsFlowWithProfileMethod"
      oidc: "#/components/schemas/updateSettingsFlowWithOidcMethod"
      saml: "#/components/schemas/updateSettingsFlowWithSamlMethod"
      totp: "#/components/schemas/updateSettingsFlowWithTotpMethod"
      webauthn: "#/components/schemas/updateSettingsFlowWithWebAuthnMethod"
      passkey: "#/components/schemas/updateSettingsFlowWithPasskeyMethod"
      lookup_secret: "#/components/schemas/updateSettingsFlowWithLookupMethod"
- op: add
  path: /components/schemas/settingsFlowState
  value:
    title: Settings flow state (experimental)
    description: The experimental state represents the state of a settings flow. This field is EXPERIMENTAL and subject to change!
    type: string
    enum:
      - show_form
      - success
# end

# Some issues with AdditionalProperties
- op: remove
  path: "#/components/schemas/OAuth2LoginRequest/properties/AdditionalProperties"
- op: remove
  path: "#/components/schemas/OAuth2ConsentRequestOpenIDConnectContext/properties/AdditionalProperties"
- op: remove
  path: "#/components/schemas/OAuth2Client/properties/AdditionalProperties"


================================================
FILE: .schema/openapi/patches/session.yaml
================================================
- op: add
  path: /paths/~1sessions~1whoami/get/parameters/0/example
  value: MP2YWEMeM8MxjkGKpH4dqOQ4Q4DlSPaj
- op: add
  path: /paths/~1sessions~1whoami/get/parameters/1/example
  value: ory_kratos_session=a19iOVAbdzdgl70Rq1QZmrKmcjDtdsviCTZx7m9a9yHIUS8Wa9T7hvqyGTsLHi6Qifn2WUfpAKx9DWp0SJGleIn9vh2YF4A16id93kXFTgIgmwIOvbVAScyrx7yVl6bPZnCx27ec4WQDtaTewC1CpgudeDV2jQQnSaCP6ny3xa8qLH-QUgYqdQuoA_LF1phxgRCUfIrCLQOkolX5nv3ze_f==
- op: add
  path: /components/schemas/authenticatorAssuranceLevel/enum
  value:
    - aal0
    - aal1
    - aal2
    - aal3


================================================
FILE: .schema/openapi.json
================================================
{
  "components": {
    "responses": {
      "emptyResponse": {
        "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is\ntypically 201."
      },
      "errorContainer": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorContainer"
            }
          }
        },
        "description": "User-facing error response"
      },
      "identityList": {
        "content": {
          "application/json": {
            "schema": {
              "items": {
                "$ref": "#/components/schemas/Identity"
              },
              "type": "array"
            }
          }
        },
        "description": "A list of identities."
      },
      "identityResponse": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Identity"
            }
          }
        },
        "description": "A single identity."
      },
      "schemaResponse": {
        "content": {
          "application/json": {
            "schema": {
              "type": "object"
            }
          }
        },
        "description": "The raw identity traits schema"
      }
    },
    "schemas": {
      "CompleteSelfServiceBrowserSettingsProfileStrategyFlow": {
        "description": "nolint:deadcode,unused",
        "properties": {
          "csrf_token": {
            "description": "The Anti-CSRF Token\n\nThis token is only required when performing browser flows.",
            "type": "string"
          },
          "traits": {
            "description": "Traits contains all of the identity's traits.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "CompleteSelfServiceLoginFlowWithPasswordMethod": {
        "properties": {
          "csrf_token": {
            "description": "Sending the anti-csrf token is only required for browser login flows.",
            "type": "string"
          },
          "identifier": {
            "description": "Identifier is the email or username of the user trying to log in.",
            "type": "string"
          },
          "password": {
            "description": "The user's password.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "CompleteSelfServiceSettingsFlowWithPasswordMethod": {
        "properties": {
          "csrf_token": {
            "description": "CSRFToken is the anti-CSRF token\n\ntype: string",
            "type": "string"
          },
          "password": {
            "description": "Password is the updated password\n\ntype: string",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "CreateIdentity": {
        "properties": {
          "schema_id": {
            "description": "SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.",
            "type": "string"
          },
          "traits": {
            "description": "Traits represent an identity's traits. The identity is able to create, modify, and delete traits\nin a self-service manner. The input will always be validated against the JSON Schema defined\nin `schema_url`.",
            "type": "object"
          }
        },
        "required": [
          "schema_id",
          "traits"
        ],
        "type": "object"
      },
      "CreateRecoveryLink": {
        "properties": {
          "expires_in": {
            "description": "Link Expires In\n\nThe recovery link will expire at that point in time. Defaults to the configuration value of\n`selfservice.flows.recovery.request_lifespan`.",
            "pattern": "^[0-9]+(ns|us|ms|s|m|h)$",
            "type": "string"
          },
          "identity_id": {
            "$ref": "#/components/schemas/UUID"
          }
        },
        "required": [
          "identity_id"
        ],
        "type": "object"
      },
      "CredentialsType": {
        "description": "and so on.",
        "title": "CredentialsType  represents several different credential types, like password credentials, passwordless credentials,",
        "type": "string"
      },
      "ID": {
        "format": "int64",
        "type": "integer"
      },
      "Identity": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "recovery_addresses": {
            "description": "RecoveryAddresses contains all the addresses that can be used to recover an identity.",
            "items": {
              "$ref": "#/components/schemas/RecoveryAddress"
            },
            "type": "array",
            "x-omitempty": true
          },
          "schema_id": {
            "description": "SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.",
            "type": "string"
          },
          "schema_url": {
            "description": "SchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from.\n\nformat: url",
            "type": "string"
          },
          "traits": {
            "$ref": "#/components/schemas/Traits"
          },
          "verifiable_addresses": {
            "description": "VerifiableAddresses contains all the addresses that can be verified by the user.",
            "items": {
              "$ref": "#/components/schemas/VerifiableAddress"
            },
            "type": "array",
            "x-omitempty": true
          }
        },
        "required": [
          "id",
          "schema_id",
          "schema_url",
          "traits"
        ],
        "type": "object"
      },
      "NullTime": {
        "format": "date-time",
        "title": "NullTime implements sql.NullTime functionality.",
        "type": "string"
      },
      "RecoveryAddress": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID"
          },
          "value": {
            "type": "string"
          },
          "via": {
            "$ref": "#/components/schemas/RecoveryAddressType"
          }
        },
        "required": [
          "id",
          "value",
          "via"
        ],
        "type": "object"
      },
      "RecoveryAddressType": {
        "type": "string"
      },
      "State": {
        "type": "string"
      },
      "Traits": {
        "type": "object"
      },
      "Type": {
        "description": "The flow type can either be `api` or `browser`.",
        "title": "Type is the flow type.",
        "type": "string"
      },
      "UUID": {
        "format": "uuid4",
        "type": "string"
      },
      "UpdateIdentity": {
        "properties": {
          "schema_id": {
            "description": "SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. If set\nwill update the Identity's SchemaID.",
            "type": "string"
          },
          "traits": {
            "description": "Traits represent an identity's traits. The identity is able to create, modify, and delete traits\nin a self-service manner. The input will always be validated against the JSON Schema defined\nin `schema_id`.",
            "type": "object"
          }
        },
        "required": [
          "traits"
        ],
        "type": "object"
      },
      "VerifiableAddress": 
Download .txt
Showing preview only (534K chars total). Download the full file or copy to clipboard to get everything.
gitextract_41u59ogb/

├── .docker/
│   ├── Dockerfile-alpine
│   ├── Dockerfile-build
│   ├── Dockerfile-debug
│   ├── Dockerfile-distroless-static
│   └── docker-compose.template.dbg
├── .dockerignore
├── .editorconfig
├── .github/
│   ├── CODEOWNERS
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── BUG-REPORT.yml
│   │   ├── DESIGN-DOC.yml
│   │   ├── FEATURE-REQUEST.yml
│   │   └── config.yml
│   ├── auto_assign.yml
│   ├── codeql/
│   │   └── codeql-config.yml
│   ├── config.yml
│   ├── conventional_commits.json
│   ├── labels.json
│   ├── pull_request_template.md
│   └── workflows/
│       ├── ci.yaml
│       ├── closed_references.yml
│       ├── codeql-analysis.yml
│       ├── conventional_commits.yml
│       ├── cve-scan.yaml
│       ├── format.yml
│       ├── labels.yml
│       ├── milestone.yml
│       ├── pm.yml
│       └── stale.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yml
├── .grype.yaml
├── .mailmap
├── .nancy-ignore
├── .nvmrc
├── .orycli.yml
├── .prettierignore
├── .reference-ignore
├── .reports/
│   └── dep-licenses.csv
├── .schema/
│   ├── api.openapi.json
│   ├── openapi/
│   │   ├── gen.go.yml
│   │   ├── gen.typescript.yml
│   │   └── patches/
│   │       ├── common.yaml
│   │       ├── courier.yaml
│   │       ├── generic_error.yaml
│   │       ├── identity.yaml
│   │       ├── meta.yaml
│   │       ├── nulls.yaml
│   │       ├── schema.yaml
│   │       ├── security.yaml
│   │       ├── selfservice.yaml
│   │       └── session.yaml
│   ├── openapi.json
│   └── version.schema.json
├── .schemastore/
│   ├── README.md
│   └── config.schema.json
├── .trivyignore
├── .vscode/
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── AUTHORS
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOP.md
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── anonymous_sessions.md
├── buf.gen.yaml
├── buf.yaml
├── cipher/
│   ├── aes.go
│   ├── chacha20.go
│   ├── cipher.go
│   ├── cipher_test.go
│   └── noop.go
├── cmd/
│   ├── cleanup/
│   │   ├── root.go
│   │   ├── sql.go
│   │   └── sql_test.go
│   ├── cliclient/
│   │   ├── cleanup.go
│   │   ├── client.go
│   │   └── migrate.go
│   ├── clidoc/
│   │   ├── main.go
│   │   └── main_test.go
│   ├── courier/
│   │   ├── root.go
│   │   ├── watch.go
│   │   └── watch_test.go
│   ├── daemon/
│   │   ├── serve.go
│   │   └── serve_test.go
│   ├── hashers/
│   │   ├── argon2/
│   │   │   ├── calibrate.go
│   │   │   ├── hash.go
│   │   │   ├── loadtest.go
│   │   │   └── root.go
│   │   └── root.go
│   ├── identities/
│   │   ├── definitions.go
│   │   ├── delete.go
│   │   ├── delete_test.go
│   │   ├── get.go
│   │   ├── get_test.go
│   │   ├── helpers.go
│   │   ├── helpers_test.go
│   │   ├── import.go
│   │   ├── import_test.go
│   │   ├── list.go
│   │   ├── list_test.go
│   │   ├── stubs/
│   │   │   └── identity.schema.json
│   │   ├── validate.go
│   │   └── validate_test.go
│   ├── jsonnet/
│   │   ├── format.go
│   │   ├── lint.go
│   │   └── root.go
│   ├── migrate/
│   │   ├── root.go
│   │   └── sql.go
│   ├── remote/
│   │   ├── root.go
│   │   ├── status.go
│   │   └── version.go
│   ├── root.go
│   ├── root_test.go
│   └── serve/
│       ├── root.go
│       ├── root_test.go
│       └── stub/
│           ├── identity.schema.json
│           └── kratos.yml
├── codecov.yml
├── continuity/
│   ├── container.go
│   ├── container_test.go
│   ├── manager.go
│   ├── manager_cookie.go
│   ├── manager_options_test.go
│   ├── manager_test.go
│   ├── persistence.go
│   └── test/
│       └── persistence.go
├── contrib/
│   └── quickstart/
│       ├── .dockerignore
│       ├── kratos/
│       │   ├── all-strategies/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   ├── cloud/
│       │   │   ├── Caddyfile
│       │   │   ├── identity.schema.json
│       │   │   ├── kratos.yml
│       │   │   └── quickstart.yml
│       │   ├── email-password/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   ├── passkey/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   ├── phone-password/
│       │   │   ├── identity.schema.json
│       │   │   └── kratos.yml
│       │   └── webauthn/
│       │       ├── identity.schema.json
│       │       └── kratos.yml
│       └── oathkeeper/
│           ├── access-rules.yml
│           ├── id_token.jwks.json
│           └── oathkeeper.yml
├── corpx/
│   └── faker.go
├── courier/
│   ├── .snapshots/
│   │   ├── TestHandler-handler=getCourierMessage-case=returns_an_error_if_no_message_is_found-endpoint=admin.json
│   │   ├── TestHandler-handler=getCourierMessage-case=returns_an_error_if_no_message_is_found-endpoint=public.json
│   │   ├── TestHandler-handler=getCourierMessage-case=returns_an_error_if_parameter_is_malformed-endpoint=admin.json
│   │   └── TestHandler-handler=getCourierMessage-case=returns_an_error_if_parameter_is_malformed-endpoint=public.json
│   ├── channel.go
│   ├── courier.go
│   ├── courier_dispatcher.go
│   ├── courier_dispatcher_test.go
│   ├── email_templates.go
│   ├── email_templates_test.go
│   ├── handler.go
│   ├── handler_test.go
│   ├── http_channel.go
│   ├── http_test.go
│   ├── message.go
│   ├── message_dispatch.go
│   ├── message_test.go
│   ├── persistence.go
│   ├── sms.go
│   ├── sms_templates.go
│   ├── sms_templates_test.go
│   ├── sms_test.go
│   ├── smtp.go
│   ├── smtp_channel.go
│   ├── smtp_test.go
│   ├── stub/
│   │   ├── request.config.mailer.jsonnet
│   │   └── request.config.twilio.jsonnet
│   ├── template/
│   │   ├── courier/
│   │   │   └── builtin/
│   │   │       └── templates/
│   │   │           ├── login_code/
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       ├── email.subject.gotmpl
│   │   │           │       └── sms.body.gotmpl
│   │   │           ├── otp/
│   │   │           │   └── sms.body.gotmpl
│   │   │           ├── recovery/
│   │   │           │   ├── invalid/
│   │   │           │   │   ├── email.body.gotmpl
│   │   │           │   │   ├── email.body.plaintext.gotmpl
│   │   │           │   │   └── email.subject.gotmpl
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       └── email.subject.gotmpl
│   │   │           ├── recovery_code/
│   │   │           │   ├── invalid/
│   │   │           │   │   ├── email.body.gotmpl
│   │   │           │   │   ├── email.body.plaintext.gotmpl
│   │   │           │   │   └── email.subject.gotmpl
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       ├── email.subject.gotmpl
│   │   │           │       └── sms.body.gotmpl
│   │   │           ├── registration_code/
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       ├── email.subject.gotmpl
│   │   │           │       └── sms.body.gotmpl
│   │   │           ├── test_stub/
│   │   │           │   ├── email.body.gotmpl
│   │   │           │   ├── email.body.html.en_US.gotmpl
│   │   │           │   ├── email.body.html.gotmpl
│   │   │           │   ├── email.body.plaintext.gotmpl
│   │   │           │   ├── email.body.sprig.gotmpl
│   │   │           │   └── email.subject.gotmpl
│   │   │           ├── verification/
│   │   │           │   ├── invalid/
│   │   │           │   │   ├── email.body.gotmpl
│   │   │           │   │   ├── email.body.plaintext.gotmpl
│   │   │           │   │   └── email.subject.gotmpl
│   │   │           │   └── valid/
│   │   │           │       ├── email.body.gotmpl
│   │   │           │       ├── email.body.plaintext.gotmpl
│   │   │           │       └── email.subject.gotmpl
│   │   │           └── verification_code/
│   │   │               ├── invalid/
│   │   │               │   ├── email.body.gotmpl
│   │   │               │   ├── email.body.plaintext.gotmpl
│   │   │               │   └── email.subject.gotmpl
│   │   │               └── valid/
│   │   │                   ├── email.body.gotmpl
│   │   │                   ├── email.body.plaintext.gotmpl
│   │   │                   ├── email.subject.gotmpl
│   │   │                   └── sms.body.gotmpl
│   │   ├── email/
│   │   │   ├── login_code_valid.go
│   │   │   ├── login_code_valid_test.go
│   │   │   ├── recovery_code_invalid.go
│   │   │   ├── recovery_code_invalid_test.go
│   │   │   ├── recovery_code_valid.go
│   │   │   ├── recovery_code_valid_test.go
│   │   │   ├── recovery_invalid.go
│   │   │   ├── recovery_invalid_test.go
│   │   │   ├── recovery_valid.go
│   │   │   ├── recovery_valid_test.go
│   │   │   ├── registration_code_valid.go
│   │   │   ├── registration_code_valid_test.go
│   │   │   ├── stub.go
│   │   │   ├── verification_code_invalid.go
│   │   │   ├── verification_code_invalid_test.go
│   │   │   ├── verification_code_valid.go
│   │   │   ├── verification_code_valid_test.go
│   │   │   ├── verification_invalid.go
│   │   │   ├── verification_invalid_test.go
│   │   │   ├── verification_valid.go
│   │   │   └── verification_valid_test.go
│   │   ├── load_template.go
│   │   ├── load_template_test.go
│   │   ├── sms/
│   │   │   ├── login_code_valid.go
│   │   │   ├── login_code_valid_test.go
│   │   │   ├── recovery_code.go
│   │   │   ├── registration_code_valid.go
│   │   │   ├── registration_code_valid_test.go
│   │   │   ├── stub.go
│   │   │   ├── verification_code.go
│   │   │   └── verification_code_test.go
│   │   ├── template.go
│   │   ├── testhelpers/
│   │   │   └── testhelpers.go
│   │   └── type.go
│   └── test/
│       └── persistence.go
├── docs/
│   ├── README.md
│   └── sidebar.json
├── driver/
│   ├── config/
│   │   ├── .snapshots/
│   │   │   ├── TestCourierEmailHTTP-case=configs_set.json
│   │   │   ├── TestCourierSMS-case=configs_set.json
│   │   │   ├── TestCourierSMS-case=defaults.json
│   │   │   └── TestDefaultWebhookHeaderAllowlist.json
│   │   ├── buildinfo.go
│   │   ├── config.go
│   │   ├── config_test.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   └── stub/
│   │       ├── .defaults-password.yml
│   │       ├── .defaults-verification.yml
│   │       ├── .defaults.yml
│   │       ├── .identity.invalid.json
│   │       ├── .identity.other.json
│   │       ├── .identity.test.json
│   │       ├── .kratos.courier.channels.yaml
│   │       ├── .kratos.courier.email.http.yaml
│   │       ├── .kratos.courier.message_retries.yaml
│   │       ├── .kratos.courier.remote.invalid.subject.yaml
│   │       ├── .kratos.courier.remote.partial.templates.yaml
│   │       ├── .kratos.courier.remote.templates.yaml
│   │       ├── .kratos.courier.sms.yaml
│   │       ├── .kratos.invalid.identities.yaml
│   │       ├── .kratos.mock.identities.yaml
│   │       ├── .kratos.notify-unknown-recipients.yml
│   │       ├── .kratos.oauth2_provider.yaml
│   │       ├── .kratos.webauthn.invalid.yaml
│   │       ├── .kratos.webauthn.origin.yaml
│   │       ├── .kratos.webauthn.origins.yaml
│   │       └── .kratos.yaml
│   ├── factory.go
│   ├── factory_test.go
│   ├── registry.go
│   ├── registry_default.go
│   ├── registry_default_hooks.go
│   ├── registry_default_login.go
│   ├── registry_default_recovery.go
│   ├── registry_default_registration.go
│   ├── registry_default_schemas.go
│   ├── registry_default_schemas_test.go
│   ├── registry_default_sessiontokenexchange.go
│   ├── registry_default_settings.go
│   ├── registry_default_test.go
│   └── registry_default_verification.go
├── embedx/
│   ├── config.schema.json
│   ├── embedx.go
│   ├── embedx_test.go
│   ├── identity_extension.schema.json
│   ├── identity_meta.schema.json
│   └── testdata/
│       ├── identity_meta.no_traits.invalid.schema.json
│       ├── identity_meta.simple.valid.schema.json
│       └── identity_meta.verification_format.invalid.schema.json
├── examples/
│   └── go/
│       ├── identity/
│       │   ├── create/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── delete/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── get/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   └── update/
│       │       ├── main.go
│       │       └── main_test.go
│       ├── pkg/
│       │   ├── common.go
│       │   ├── resources.go
│       │   └── stub/
│       │       ├── identity.schema.json
│       │       └── kratos.yaml
│       ├── selfservice/
│       │   ├── error/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── login/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── logout/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── recovery/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── registration/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   ├── settings/
│       │   │   ├── main.go
│       │   │   └── main_test.go
│       │   └── verification/
│       │       ├── main.go
│       │       └── main_test.go
│       └── session/
│           └── tosession/
│               ├── main.go
│               └── main_test.go
├── gen/
│   └── oidc/
│       └── v1/
│           └── state.pb.go
├── go.mod
├── go.sum
├── hash/
│   ├── hash_comparator.go
│   ├── hasher.go
│   ├── hasher_argon2.go
│   ├── hasher_bcrypt.go
│   ├── hasher_pbkdf2.go
│   ├── hasher_scrypt.go
│   └── hasher_test.go
├── hydra/
│   ├── fake.go
│   ├── hydra.go
│   └── hydra_test.go
├── identity/
│   ├── .snapshots/
│   │   ├── TestHandler-case=PATCH_should_allow_to_update_credential_password-endpoint=admin.json
│   │   ├── TestHandler-case=PATCH_should_allow_to_update_credential_password-endpoint=public.json
│   │   ├── TestHandler-case=PATCH_should_allow_to_update_credential_password.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_cleartext_password_and_oidc_credentials.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=SSHA.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=SSHA256.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=SSHA512.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=argon2i.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=argon2id.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=bcrypt2.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=hmac.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=md5.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=pkbdf2.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_hashed_passwords-hash=scrypt.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_not-normalized_email.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_organization_oidc_and_saml_credentials.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-with_password_migration_hook_enabled.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-without_any_credentials.json
│   │   ├── TestHandler-case=should_be_able_to_import_users-without_traits.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_and_multiple_fido_mfa_type-admin.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_and_multiple_fido_mfa_type-public.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_type-admin.json
│   │   ├── TestHandler-case=should_delete_credential_of_a_specific_user_and_no_longer_be_able_to_retrieve_it-type=remove_webauthn_passwordless_type-public.json
│   │   ├── TestHandler-case=should_list_all_identities_with_credentials-include_credential=oidc_should_include_OIDC_credentials_config.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_0.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_1.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_2.json
│   │   ├── TestHandler-suite=PATCH_identities-case=success-assert=identity_3.json
│   │   ├── TestHandler-suite=create_and_update-case=should_get_identity_with_credentials-case=should_get_identity_with_password_and_webauthn_credentials_included.json
│   │   ├── TestHandler-suite=create_and_update-case=should_get_identity_with_credentials-case=should_get_identity_with_password_credentials_included.json
│   │   ├── TestHandler-suite=create_and_update-case=should_get_identity_with_credentials-case=should_get_identity_without_credentials_included.json
│   │   ├── TestImportCredentials-OIDC_new_credential_with_organization.json
│   │   ├── TestImportCredentials-OIDC_new_credential_without_organization.json
│   │   ├── TestImportCredentials-OIDC_update_credential_with_organization.json
│   │   ├── TestImportCredentials-OIDC_update_credential_without_organization.json
│   │   ├── TestImportCredentials-OIDC_update_with_multiple_providers.json
│   │   ├── TestImportCredentials-SAML_new_credential_with_organization.json
│   │   ├── TestImportCredentials-SAML_new_credential_without_organization.json
│   │   ├── TestImportCredentials-SAML_update_credential_with_organization.json
│   │   ├── TestImportCredentials-SAML_update_credential_without_organization.json
│   │   ├── TestImportCredentials-SAML_update_with_multiple_providers.json
│   │   ├── TestMarshalIdentityWithAll.json
│   │   ├── TestSchemaExtensionCredentials-case=0.json
│   │   ├── TestSchemaExtensionCredentials-case=1.json
│   │   ├── TestSchemaExtensionCredentials-case=10.json
│   │   ├── TestSchemaExtensionCredentials-case=11.json
│   │   ├── TestSchemaExtensionCredentials-case=12.json
│   │   ├── TestSchemaExtensionCredentials-case=13.json
│   │   ├── TestSchemaExtensionCredentials-case=2.json
│   │   ├── TestSchemaExtensionCredentials-case=3.json
│   │   ├── TestSchemaExtensionCredentials-case=4.json
│   │   ├── TestSchemaExtensionCredentials-case=5.json
│   │   ├── TestSchemaExtensionCredentials-case=6.json
│   │   ├── TestSchemaExtensionCredentials-case=7.json
│   │   ├── TestSchemaExtensionCredentials-case=8.json
│   │   ├── TestSchemaExtensionCredentials-case=9.json
│   │   ├── TestToNode.json
│   │   ├── TestUpgradeCredentials-empty_credentials.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_correct_value.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_email_empty_space_value-with_one_identifier.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_email_empty_space_value-with_two_identifiers.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_empty_value.json
│   │   ├── TestUpgradeCredentials-type=code-from=v0_with_unknown_value.json
│   │   ├── TestUpgradeCredentials-type=code-from=v2_with_empty_value.json
│   │   ├── TestUpgradeCredentials-type=webauthn-from=v0.json
│   │   ├── TestUpgradeCredentials-type=webauthn-from=v1.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-multi-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=include-webauthn-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=no-include-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=saml.json
│   │   ├── TestWithDeclassifiedCredentials-case=oidc-credential=webauthn.json
│   │   ├── TestWithDeclassifiedCredentials-case=saml-credential=oidc.json
│   │   ├── TestWithDeclassifiedCredentials-case=saml-credential=password.json
│   │   ├── TestWithDeclassifiedCredentials-case=saml-credential=saml.json
│   │   └── TestWithDeclassifiedCredentials-case=saml-credential=webauthn.json
│   ├── address.go
│   ├── credentials.go
│   ├── credentials_code.go
│   ├── credentials_code_test.go
│   ├── credentials_lookup.go
│   ├── credentials_lookup_test.go
│   ├── credentials_migrate.go
│   ├── credentials_migrate_test.go
│   ├── credentials_oidc.go
│   ├── credentials_oidc_test.go
│   ├── credentials_password.go
│   ├── credentials_password_test.go
│   ├── credentials_test.go
│   ├── credentials_totp.go
│   ├── credentials_webauthn.go
│   ├── credentials_webauthn_test.go
│   ├── error_test.go
│   ├── expandables.go
│   ├── extension_credentials.go
│   ├── extension_credentials_test.go
│   ├── extension_recovery.go
│   ├── extension_recovery_test.go
│   ├── extension_verification.go
│   ├── extension_verification_test.go
│   ├── handler.go
│   ├── handler_import.go
│   ├── handler_import_test.go
│   ├── handler_test.go
│   ├── identity.go
│   ├── identity_recovery.go
│   ├── identity_recovery_test.go
│   ├── identity_test.go
│   ├── identity_verification.go
│   ├── identity_verification_test.go
│   ├── manager.go
│   ├── manager_test.go
│   ├── pool.go
│   ├── registry.go
│   ├── stub/
│   │   ├── aal.json
│   │   ├── expand.schema.json
│   │   ├── extension/
│   │   │   ├── credentials/
│   │   │   │   ├── code-phone-email.schema.json
│   │   │   │   ├── code.schema.json
│   │   │   │   ├── email.schema.json
│   │   │   │   ├── multi.schema.json
│   │   │   │   ├── schema.json
│   │   │   │   └── webauthn.schema.json
│   │   │   ├── recovery/
│   │   │   │   ├── email.schema.json
│   │   │   │   ├── schema.json
│   │   │   │   └── sms.schema.json
│   │   │   └── verify/
│   │   │       ├── email.schema.json
│   │   │       ├── legacy-email-missing-format.schema.json
│   │   │       ├── missing-format.schema.json
│   │   │       ├── no-validate.schema.json
│   │   │       └── phone.schema.json
│   │   ├── extension.schema.json
│   │   ├── handler/
│   │   │   ├── customer.schema.json
│   │   │   ├── employee.schema.json
│   │   │   └── multiple_emails.schema.json
│   │   ├── identity-2.schema.json
│   │   ├── identity.schema.json
│   │   ├── localhost-ref.schema.json
│   │   ├── manager.schema.json
│   │   └── webauthn/
│   │       ├── v0.json
│   │       └── v1.json
│   ├── test/
│   │   └── pool.go
│   ├── validator.go
│   └── validator_test.go
├── install.sh
├── main.go
├── openapitools.json
├── oryx/
│   ├── .gitignore
│   ├── .goimportsignore
│   ├── .golangci.yml
│   ├── .nancy-ignore
│   ├── .prettierignore
│   ├── .reference-ignore
│   ├── .schemas/
│   │   ├── corsx/
│   │   │   └── viper.schema.json
│   │   ├── logrusx/
│   │   │   └── viper.schema.json
│   │   ├── profilingx/
│   │   │   └── viper.schema.json
│   │   └── tlsx/
│   │       └── viper.schema.json
│   ├── LICENSE
│   ├── Makefile
│   ├── assertx/
│   │   └── assertx.go
│   ├── cachex/
│   │   └── ristretto.go
│   ├── castx/
│   │   └── castx.go
│   ├── clidoc/
│   │   ├── generate.go
│   │   ├── md_docs.go
│   │   ├── testdata/
│   │   │   ├── hydra-client-admin.md
│   │   │   ├── hydra-client-public.md
│   │   │   ├── hydra-client.md
│   │   │   ├── hydra-serve.md
│   │   │   └── hydra.md
│   │   └── util.go
│   ├── cmdx/
│   │   ├── args.go
│   │   ├── env.go
│   │   ├── helper.go
│   │   ├── http.go
│   │   ├── noise_printer.go
│   │   ├── output.go
│   │   ├── pagination.go
│   │   ├── printing.go
│   │   ├── usage.go
│   │   ├── user_input.go
│   │   └── version.go
│   ├── configx/
│   │   ├── .snapshots/
│   │   │   └── TestKoanfSchemaDefaults.json
│   │   ├── context.go
│   │   ├── cors.go
│   │   ├── cors.schema.json
│   │   ├── error.go
│   │   ├── helpers.go
│   │   ├── koanf_confmap.go
│   │   ├── koanf_env.go
│   │   ├── koanf_file.go
│   │   ├── koanf_full_merge.go
│   │   ├── koanf_memory.go
│   │   ├── koanf_schema_defaults.go
│   │   ├── options.go
│   │   ├── permission.go
│   │   ├── pflag.go
│   │   ├── provider.go
│   │   ├── schema.go
│   │   ├── schema_cache.go
│   │   ├── schema_path_cache.go
│   │   ├── serve.go
│   │   ├── serve.schema.json
│   │   ├── span.go
│   │   ├── stub/
│   │   │   ├── benchmark/
│   │   │   │   ├── benchmark.yaml
│   │   │   │   └── schema.config.json
│   │   │   ├── domain-aliases/
│   │   │   │   └── config.schema.json
│   │   │   ├── from-files/
│   │   │   │   ├── a.yaml
│   │   │   │   ├── b.yaml
│   │   │   │   ├── config.schema.json
│   │   │   │   └── expected.json
│   │   │   ├── hydra/
│   │   │   │   ├── config.schema.json
│   │   │   │   ├── expected.json
│   │   │   │   └── hydra.yaml
│   │   │   ├── kratos/
│   │   │   │   ├── config.schema.json
│   │   │   │   ├── expected.json
│   │   │   │   └── kratos.yaml
│   │   │   ├── multi/
│   │   │   │   ├── a.yaml
│   │   │   │   ├── b.yaml
│   │   │   │   ├── config.schema.json
│   │   │   │   └── expected.json
│   │   │   ├── nested-array/
│   │   │   │   ├── config.schema.json
│   │   │   │   ├── expected.json
│   │   │   │   └── kratos.yaml
│   │   │   └── watch/
│   │   │       └── config.schema.json
│   │   └── tls.schema.json
│   ├── contextx/
│   │   ├── contextual.go
│   │   ├── contextual_mock.go
│   │   ├── default.go
│   │   ├── testhelpers.go
│   │   └── tree.go
│   ├── corsx/
│   │   ├── check_origin.go
│   │   ├── cmd.go
│   │   ├── defaults.go
│   │   ├── middleware.go
│   │   └── normalize.go
│   ├── crdbx/
│   │   ├── readonly.go
│   │   └── staleness.go
│   ├── dbal/
│   │   ├── canonicalize.go
│   │   ├── driver.go
│   │   ├── dsn.go
│   │   └── testhelpers.go
│   ├── decoderx/
│   │   ├── http.go
│   │   └── stub/
│   │       ├── consent.json
│   │       ├── dynamic-object.json
│   │       ├── nested.json
│   │       ├── person.json
│   │       ├── required-defaults.json
│   │       └── schema.json
│   ├── errorsx/
│   │   └── errors.go
│   ├── fetcher/
│   │   └── fetcher.go
│   ├── flagx/
│   │   └── flagx.go
│   ├── fsx/
│   │   ├── dirhash.go
│   │   └── merge.go
│   ├── go.mod
│   ├── go.sum
│   ├── hasherx/
│   │   ├── hash_comparator.go
│   │   ├── hasher.go
│   │   ├── hasher_argon2.go
│   │   ├── hasher_bcrypt.go
│   │   └── hasher_pbkdf2.go
│   ├── healthx/
│   │   ├── doc.go
│   │   ├── handler.go
│   │   └── openapi/
│   │       └── patch.yaml
│   ├── httprouterx/
│   │   └── router.go
│   ├── httpx/
│   │   ├── assert.go
│   │   ├── chan_handler.go
│   │   ├── client_info.go
│   │   ├── content_type.go
│   │   ├── gzip_server.go
│   │   ├── private_ip_validator.go
│   │   ├── request.go
│   │   ├── resilient_client.go
│   │   ├── ssrf.go
│   │   ├── transports.go
│   │   ├── url.go
│   │   └── wait_for.go
│   ├── ioutilx/
│   │   └── pkger.go
│   ├── ipx/
│   │   ├── cidr.go
│   │   └── ip_validator.go
│   ├── josex/
│   │   ├── encoding.go
│   │   ├── generate.go
│   │   ├── public.go
│   │   └── utils.go
│   ├── jsonnetsecure/
│   │   ├── cmd/
│   │   │   └── root.go
│   │   ├── cmd.go
│   │   ├── jsonnet.go
│   │   ├── jsonnet_pool.go
│   │   ├── limit_unix.go
│   │   ├── limit_windows.go
│   │   ├── null.go
│   │   ├── provider.go
│   │   └── stub/
│   │       └── import.jsonnet
│   ├── jsonnetx/
│   │   ├── format.go
│   │   ├── lint.go
│   │   └── root.go
│   ├── jsonschemax/
│   │   ├── .snapshots/
│   │   │   ├── TestListPaths-case=0.json
│   │   │   ├── TestListPaths-case=1.json
│   │   │   ├── TestListPaths-case=2.json
│   │   │   ├── TestListPaths-case=3.json
│   │   │   ├── TestListPaths-case=4.json
│   │   │   ├── TestListPaths-case=5.json
│   │   │   ├── TestListPaths-case=6.json
│   │   │   ├── TestListPaths-case=7.json
│   │   │   ├── TestListPaths-case=8.json
│   │   │   ├── TestListPaths-case=9.json
│   │   │   └── TestListPathsWithRecursion-case=0.json
│   │   ├── README.md
│   │   ├── error.go
│   │   ├── keys.go
│   │   ├── pointer.go
│   │   ├── print.go
│   │   └── stub/
│   │       ├── .config.yaml
│   │       ├── .oathkeeper.schema.json
│   │       ├── config.schema.json
│   │       ├── json/
│   │       │   └── .project-stub-name.json
│   │       ├── nested-array.schema.json
│   │       ├── nested-simple-array.schema.json
│   │       ├── toml/
│   │       │   └── .project-stub-name.toml
│   │       ├── yaml/
│   │       │   └── .project-stub-name.yaml
│   │       └── yml/
│   │           └── .project-stub-name.yml
│   ├── jsonx/
│   │   ├── .snapshots/
│   │   │   ├── TestEmbedSources-fixtures-fixture=1.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=2.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=3.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=4.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=5.json.json
│   │   │   ├── TestEmbedSources-fixtures-fixture=6.json.json
│   │   │   └── TestEmbedSources-only_embeds_base64.json
│   │   ├── debug.go
│   │   ├── decoder.go
│   │   ├── embed.go
│   │   ├── fixture/
│   │   │   └── embed/
│   │   │       ├── 1.json
│   │   │       ├── 2.json
│   │   │       ├── 3.json
│   │   │       ├── 4.json
│   │   │       ├── 5.json
│   │   │       └── 6.json
│   │   ├── flatten.go
│   │   ├── get.go
│   │   ├── helpers.go
│   │   ├── patch.go
│   │   └── stub/
│   │       └── random.json
│   ├── jwksx/
│   │   ├── .snapshots/
│   │   │   ├── TestFetcherNext-case=resolve_multiple_source_urls-case=succeeds_with_forced_kid.json
│   │   │   ├── TestFetcherNext-case=resolve_single_source_url-case=with_cache.json
│   │   │   ├── TestFetcherNext-case=resolve_single_source_url-case=with_cache_and_TTL.json
│   │   │   ├── TestFetcherNext-case=resolve_single_source_url-case=with_forced_key.json
│   │   │   └── TestFetcherNext-case=resolve_single_source_url-case=without_cache.json
│   │   ├── fetcher.go
│   │   ├── fetcher_v2.go
│   │   └── generator.go
│   ├── jwtmiddleware/
│   │   ├── middleware.go
│   │   └── stub/
│   │       └── jwks.json
│   ├── jwtx/
│   │   └── claims.go
│   ├── logrusx/
│   │   ├── config.schema.json
│   │   ├── helper.go
│   │   └── logrus.go
│   ├── mapx/
│   │   └── type_assert.go
│   ├── metricsx/
│   │   ├── metrics.go
│   │   └── middleware.go
│   ├── migratest/
│   │   ├── refresh.go
│   │   ├── run.go
│   │   └── strict.go
│   ├── networkx/
│   │   ├── listener.go
│   │   ├── manager.go
│   │   ├── migrations/
│   │   │   ├── sql/
│   │   │   │   ├── 20150100000001000000_networks.cockroach.down.sql
│   │   │   │   ├── 20150100000001000000_networks.cockroach.up.sql
│   │   │   │   ├── 20150100000001000000_networks.mysql.down.sql
│   │   │   │   ├── 20150100000001000000_networks.mysql.up.sql
│   │   │   │   ├── 20150100000001000000_networks.postgres.down.sql
│   │   │   │   ├── 20150100000001000000_networks.postgres.up.sql
│   │   │   │   ├── 20150100000001000000_networks.sqlite3.down.sql
│   │   │   │   └── 20150100000001000000_networks.sqlite3.up.sql
│   │   │   └── templates/
│   │   │       ├── 20150100000001_networks.down.fizz
│   │   │       └── 20150100000001_networks.up.fizz
│   │   └── network.go
│   ├── openapix/
│   │   ├── doc.go
│   │   ├── jsonpatch.go
│   │   └── pagination.go
│   ├── osx/
│   │   ├── env.go
│   │   ├── file.go
│   │   └── stub/
│   │       └── text.txt
│   ├── otelx/
│   │   ├── attribute.go
│   │   ├── config.go
│   │   ├── config.schema.json
│   │   ├── jaeger.go
│   │   ├── middleware.go
│   │   ├── otel.go
│   │   ├── otlp.go
│   │   ├── semconv/
│   │   │   ├── context.go
│   │   │   ├── deprecated.go
│   │   │   ├── events.go
│   │   │   └── warning.go
│   │   ├── withspan.go
│   │   └── zipkin.go
│   ├── package.go
│   ├── package.json
│   ├── pagination/
│   │   ├── README.md
│   │   ├── header.go
│   │   ├── items.go
│   │   ├── keysetpagination/
│   │   │   ├── header.go
│   │   │   ├── page_token.go
│   │   │   ├── paginator.go
│   │   │   └── parse_header.go
│   │   ├── keysetpagination_v2/
│   │   │   ├── .snapshots/
│   │   │   │   └── TestPageToken-Marshal_snapshot.json
│   │   │   ├── page_token.go
│   │   │   ├── paginator.go
│   │   │   ├── parse_header.go
│   │   │   ├── query_builder.go
│   │   │   └── request_params.go
│   │   ├── limit.go
│   │   ├── migrationpagination/
│   │   │   ├── .snapshots/
│   │   │   │   ├── TestPaginationHeader-Create_next_and_last,_but_not_previous_or_first_if_at_the_beginning.json
│   │   │   │   ├── TestPaginationHeader-Create_only_first_if_the_limits_provided_exceeds_the_number_of_clients_found.json
│   │   │   │   ├── TestPaginationHeader-Create_previous,_next,_first,_and_last_if_in_the_middle.json
│   │   │   │   ├── TestPaginationHeader-Create_previous,_next,_first,_but_not_last_if_in_the_middle_and_no_total_was_provided.json
│   │   │   │   ├── TestPaginationHeader-Create_previous_and_first_but_not_next_or_last_if_at_the_end.json
│   │   │   │   └── TestPaginationHeader-Header_should_default_limit_to_1_no_limit_was_provided.json
│   │   │   ├── header.go
│   │   │   └── pagination.go
│   │   ├── pagepagination/
│   │   │   ├── header.go
│   │   │   └── pagination.go
│   │   ├── paginationplanner/
│   │   │   └── planner.go
│   │   ├── parse.go
│   │   └── tokenpagination/
│   │       ├── .snapshots/
│   │       │   ├── TestPaginationHeader-Create_next_and_last,_but_not_previous_or_first_if_at_the_beginning.json
│   │       │   ├── TestPaginationHeader-Create_only_first_if_the_limits_provided_exceeds_the_number_of_clients_found.json
│   │       │   ├── TestPaginationHeader-Create_previous,_next,_first,_and_last_if_in_the_middle.json
│   │       │   ├── TestPaginationHeader-Create_previous,_next,_first,_but_not_last_if_in_the_middle_and_no_total_was_provided.json
│   │       │   ├── TestPaginationHeader-Create_previous_and_first_but_not_next_or_last_if_at_the_end.json
│   │       │   └── TestPaginationHeader-Header_should_default_limit_to_1_no_limit_was_provided.json
│   │       ├── header.go
│   │       └── pagination.go
│   ├── pointerx/
│   │   └── pointerx.go
│   ├── popx/
│   │   ├── .snapshots/
│   │   │   ├── TestMigrateSQLUp-final_status.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_but_do_not_confirm.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_but_no_steps.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_four_steps.txt
│   │   │   ├── TestMigrateSQLUp-migrate_down_two_steps.txt
│   │   │   ├── TestMigrateSQLUp-migrate_rollbacks_up_again.txt
│   │   │   ├── TestMigrateSQLUp-migrate_rollbacks_up_without_confirm.txt
│   │   │   ├── TestMigrateSQLUp-migrate_up.txt
│   │   │   ├── TestMigrateSQLUp-status_migrated.txt
│   │   │   ├── TestMigrateSQLUp-status_pre.txt
│   │   │   ├── TestMigrateSQLUp-status_two_steps_rolled_back.txt
│   │   │   └── TestMigrateSQLUp-status_two_versions_rolled_back.txt
│   │   ├── cmd.go
│   │   ├── db_columns.go
│   │   ├── loggers.go
│   │   ├── match.go
│   │   ├── migration_box.go
│   │   ├── migration_content.go
│   │   ├── migration_info.go
│   │   ├── migrator.go
│   │   ├── span.go
│   │   ├── sql_template_funcs.go
│   │   ├── stub/
│   │   │   └── migrations/
│   │   │       ├── check/
│   │   │       │   └── valid/
│   │   │       │       ├── 123_a.down.sql
│   │   │       │       ├── 123_a.mysql.up.sql
│   │   │       │       └── 123_a.postgres.up.sql
│   │   │       ├── legacy/
│   │   │       │   ├── 20191100000001_identities.cockroach.down.sql
│   │   │       │   ├── 20191100000001_identities.cockroach.up.sql
│   │   │       │   ├── 20191100000001_identities.mysql.down.sql
│   │   │       │   ├── 20191100000001_identities.mysql.up.sql
│   │   │       │   ├── 20191100000001_identities.postgres.down.sql
│   │   │       │   ├── 20191100000001_identities.postgres.up.sql
│   │   │       │   ├── 20191100000001_identities.sqlite3.down.sql
│   │   │       │   ├── 20191100000001_identities.sqlite3.up.sql
│   │   │       │   ├── 20191100000002_requests.cockroach.down.sql
│   │   │       │   ├── 20191100000002_requests.cockroach.up.sql
│   │   │       │   ├── 20191100000002_requests.mysql.down.sql
│   │   │       │   ├── 20191100000002_requests.mysql.up.sql
│   │   │       │   ├── 20191100000002_requests.postgres.down.sql
│   │   │       │   ├── 20191100000002_requests.postgres.up.sql
│   │   │       │   ├── 20191100000002_requests.sqlite3.down.sql
│   │   │       │   ├── 20191100000002_requests.sqlite3.up.sql
│   │   │       │   ├── 20191100000003_sessions.cockroach.down.sql
│   │   │       │   ├── 20191100000003_sessions.cockroach.up.sql
│   │   │       │   ├── 20191100000003_sessions.mysql.down.sql
│   │   │       │   ├── 20191100000003_sessions.mysql.up.sql
│   │   │       │   ├── 20191100000003_sessions.postgres.down.sql
│   │   │       │   ├── 20191100000003_sessions.postgres.up.sql
│   │   │       │   ├── 20191100000003_sessions.sqlite3.down.sql
│   │   │       │   ├── 20191100000003_sessions.sqlite3.up.sql
│   │   │       │   ├── 20191100000004_errors.cockroach.down.sql
│   │   │       │   ├── 20191100000004_errors.cockroach.up.sql
│   │   │       │   ├── 20191100000004_errors.mysql.down.sql
│   │   │       │   ├── 20191100000004_errors.mysql.up.sql
│   │   │       │   ├── 20191100000004_errors.postgres.down.sql
│   │   │       │   ├── 20191100000004_errors.postgres.up.sql
│   │   │       │   ├── 20191100000004_errors.sqlite3.down.sql
│   │   │       │   ├── 20191100000004_errors.sqlite3.up.sql
│   │   │       │   ├── 20191100000005_identities.mysql.down.sql
│   │   │       │   ├── 20191100000005_identities.mysql.up.sql
│   │   │       │   ├── 20191100000006_courier.cockroach.down.sql
│   │   │       │   ├── 20191100000006_courier.cockroach.up.sql
│   │   │       │   ├── 20191100000006_courier.mysql.down.sql
│   │   │       │   ├── 20191100000006_courier.mysql.up.sql
│   │   │       │   ├── 20191100000006_courier.postgres.down.sql
│   │   │       │   ├── 20191100000006_courier.postgres.up.sql
│   │   │       │   ├── 20191100000006_courier.sqlite3.down.sql
│   │   │       │   ├── 20191100000006_courier.sqlite3.up.sql
│   │   │       │   ├── 20191100000007_errors.cockroach.down.sql
│   │   │       │   ├── 20191100000007_errors.cockroach.up.sql
│   │   │       │   ├── 20191100000007_errors.mysql.down.sql
│   │   │       │   ├── 20191100000007_errors.mysql.up.sql
│   │   │       │   ├── 20191100000007_errors.postgres.down.sql
│   │   │       │   ├── 20191100000007_errors.postgres.up.sql
│   │   │       │   ├── 20191100000007_errors.sqlite3.down.sql
│   │   │       │   ├── 20191100000007_errors.sqlite3.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.cockroach.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.cockroach.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.mysql.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.mysql.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.postgres.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.postgres.up.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.sqlite3.down.sql
│   │   │       │   ├── 20191100000008_selfservice_verification.sqlite3.up.sql
│   │   │       │   ├── 20191100000009_verification.mysql.down.sql
│   │   │       │   ├── 20191100000009_verification.mysql.up.sql
│   │   │       │   ├── 20191100000010_errors.cockroach.down.sql
│   │   │       │   ├── 20191100000010_errors.cockroach.up.sql
│   │   │       │   ├── 20191100000010_errors.mysql.down.sql
│   │   │       │   ├── 20191100000010_errors.mysql.up.sql
│   │   │       │   ├── 20191100000010_errors.postgres.down.sql
│   │   │       │   ├── 20191100000010_errors.postgres.up.sql
│   │   │       │   ├── 20191100000010_errors.sqlite3.down.sql
│   │   │       │   ├── 20191100000010_errors.sqlite3.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.cockroach.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.mysql.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.postgres.up.sql
│   │   │       │   ├── 20191100000011_courier_body_type.sqlite3.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.cockroach.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.cockroach.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.mysql.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.mysql.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.postgres.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.postgres.up.sql
│   │   │       │   ├── 20191100000012_login_request_forced.sqlite3.down.sql
│   │   │       │   ├── 20191100000012_login_request_forced.sqlite3.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.cockroach.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.cockroach.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.mysql.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.mysql.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.postgres.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.postgres.up.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.sqlite3.down.sql
│   │   │       │   ├── 20200317160354_create_profile_request_forms.sqlite3.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.cockroach.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.cockroach.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.mysql.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.mysql.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.postgres.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.postgres.up.sql
│   │   │       │   ├── 20200401183443_continuity_containers.sqlite3.down.sql
│   │   │       │   ├── 20200401183443_continuity_containers.sqlite3.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.cockroach.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.cockroach.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.mysql.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.mysql.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.postgres.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.postgres.up.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.sqlite3.down.sql
│   │   │       │   ├── 20200402142539_rename_profile_flows.sqlite3.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.cockroach.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.cockroach.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.mysql.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.mysql.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.postgres.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.postgres.up.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.sqlite3.down.sql
│   │   │       │   ├── 20200519101057_create_recovery_addresses.sqlite3.up.sql
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.down.sql
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.up.sql
│   │   │       │   ├── 20200601101000_create_messages.cockroach.down.sql
│   │   │       │   ├── 20200601101000_create_messages.cockroach.up.sql
│   │   │       │   ├── 20200601101000_create_messages.mysql.down.sql
│   │   │       │   ├── 20200601101000_create_messages.mysql.up.sql
│   │   │       │   ├── 20200601101000_create_messages.postgres.down.sql
│   │   │       │   ├── 20200601101000_create_messages.postgres.up.sql
│   │   │       │   ├── 20200601101000_create_messages.sqlite3.down.sql
│   │   │       │   ├── 20200601101000_create_messages.sqlite3.up.sql
│   │   │       │   ├── 20200601101001_verification.mysql.down.sql
│   │   │       │   ├── 20200601101001_verification.mysql.up.sql
│   │   │       │   ├── 20200605111551_messages.cockroach.down.sql
│   │   │       │   ├── 20200605111551_messages.cockroach.up.sql
│   │   │       │   ├── 20200605111551_messages.mysql.down.sql
│   │   │       │   ├── 20200605111551_messages.mysql.up.sql
│   │   │       │   ├── 20200605111551_messages.postgres.down.sql
│   │   │       │   ├── 20200605111551_messages.postgres.up.sql
│   │   │       │   ├── 20200605111551_messages.sqlite3.down.sql
│   │   │       │   ├── 20200605111551_messages.sqlite3.up.sql
│   │   │       │   ├── 20200607165100_settings.cockroach.down.sql
│   │   │       │   ├── 20200607165100_settings.cockroach.up.sql
│   │   │       │   ├── 20200607165100_settings.mysql.down.sql
│   │   │       │   ├── 20200607165100_settings.mysql.up.sql
│   │   │       │   ├── 20200607165100_settings.postgres.down.sql
│   │   │       │   ├── 20200607165100_settings.postgres.up.sql
│   │   │       │   ├── 20200607165100_settings.sqlite3.down.sql
│   │   │       │   ├── 20200607165100_settings.sqlite3.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.cockroach.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.cockroach.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.mysql.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.mysql.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.postgres.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.postgres.up.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.sqlite3.down.sql
│   │   │       │   ├── 20200705105359_rename_identities_schema.sqlite3.up.sql
│   │   │       │   ├── 20200810141652_flow_type.cockroach.down.sql
│   │   │       │   ├── 20200810141652_flow_type.cockroach.up.sql
│   │   │       │   ├── 20200810141652_flow_type.mysql.down.sql
│   │   │       │   ├── 20200810141652_flow_type.mysql.up.sql
│   │   │       │   ├── 20200810141652_flow_type.postgres.down.sql
│   │   │       │   ├── 20200810141652_flow_type.postgres.up.sql
│   │   │       │   ├── 20200810141652_flow_type.sqlite3.down.sql
│   │   │       │   ├── 20200810141652_flow_type.sqlite3.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.cockroach.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.cockroach.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.mysql.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.mysql.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.postgres.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.postgres.up.sql
│   │   │       │   ├── 20200810161022_flow_rename.sqlite3.down.sql
│   │   │       │   ├── 20200810161022_flow_rename.sqlite3.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.cockroach.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.cockroach.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.mysql.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.mysql.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.postgres.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.postgres.up.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.sqlite3.down.sql
│   │   │       │   ├── 20200810162450_flow_fields_rename.sqlite3.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.cockroach.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.cockroach.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.mysql.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.mysql.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.postgres.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.postgres.up.sql
│   │   │       │   ├── 20200812124254_add_session_token.sqlite3.down.sql
│   │   │       │   ├── 20200812124254_add_session_token.sqlite3.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.cockroach.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.cockroach.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.mysql.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.mysql.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.postgres.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.postgres.up.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.sqlite3.down.sql
│   │   │       │   ├── 20200812160551_add_session_revoke.sqlite3.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.cockroach.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.cockroach.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.mysql.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.mysql.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.postgres.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.postgres.up.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.sqlite3.down.sql
│   │   │       │   ├── 20200830121710_update_recovery_token.sqlite3.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.cockroach.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.mysql.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.postgres.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.sqlite3.down.sql
│   │   │       │   ├── 20200830130642_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130643_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130644_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130645_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.cockroach.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.mysql.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.postgres.up.sql
│   │   │       │   ├── 20200830130646_add_verification_methods.sqlite3.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.cockroach.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.cockroach.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.mysql.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.mysql.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.postgres.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.postgres.up.sql
│   │   │       │   ├── 20200830154602_add_verification_token.sqlite3.down.sql
│   │   │       │   ├── 20200830154602_add_verification_token.sqlite3.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.cockroach.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.cockroach.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.mysql.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.mysql.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.postgres.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.postgres.up.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.sqlite3.down.sql
│   │   │       │   ├── 20200830172221_recovery_token_expires.sqlite3.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.cockroach.down.sql
│   │   │       │   ├── 20201201161451_credential_types_values.cockroach.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.mysql.down.sql
│   │   │       │   ├── 20201201161451_credential_types_values.mysql.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.postgres.down.sql
│   │   │       │   ├── 20201201161451_credential_types_values.postgres.up.sql
│   │   │       │   ├── 20201201161451_credential_types_values.sqlite3.down.sql
│   │   │       │   └── 20201201161451_credential_types_values.sqlite3.up.sql
│   │   │       ├── notx/
│   │   │       │   ├── 20241031_notx.autocommit.down.sql
│   │   │       │   └── 20241031_notx.autocommit.up.sql
│   │   │       ├── source/
│   │   │       │   ├── 20191100000001_identities.down.fizz
│   │   │       │   ├── 20191100000001_identities.up.fizz
│   │   │       │   ├── 20191100000002_requests.down.fizz
│   │   │       │   ├── 20191100000002_requests.up.fizz
│   │   │       │   ├── 20191100000003_sessions.down.fizz
│   │   │       │   ├── 20191100000003_sessions.up.fizz
│   │   │       │   ├── 20191100000004_errors.down.fizz
│   │   │       │   ├── 20191100000004_errors.up.fizz
│   │   │       │   ├── 20191100000005_identities.mysql.down.sql
│   │   │       │   ├── 20191100000005_identities.mysql.up.sql
│   │   │       │   ├── 20191100000006_courier.down.fizz
│   │   │       │   ├── 20191100000006_courier.up.fizz
│   │   │       │   ├── 20191100000007_errors.down.fizz
│   │   │       │   ├── 20191100000007_errors.up.fizz
│   │   │       │   ├── 20191100000008_selfservice_verification.down.fizz
│   │   │       │   ├── 20191100000008_selfservice_verification.up.fizz
│   │   │       │   ├── 20191100000009_verification.mysql.down.sql
│   │   │       │   ├── 20191100000009_verification.mysql.up.sql
│   │   │       │   ├── 20191100000010_errors.down.fizz
│   │   │       │   ├── 20191100000010_errors.up.fizz
│   │   │       │   ├── 20191100000011_courier_body_type.down.fizz
│   │   │       │   ├── 20191100000011_courier_body_type.up.fizz
│   │   │       │   ├── 20191100000012_login_request_forced.down.fizz
│   │   │       │   ├── 20191100000012_login_request_forced.up.fizz
│   │   │       │   ├── 20200317160354_create_profile_request_forms.down.fizz
│   │   │       │   ├── 20200317160354_create_profile_request_forms.up.fizz
│   │   │       │   ├── 20200401183443_continuity_containers.down.fizz
│   │   │       │   ├── 20200401183443_continuity_containers.up.fizz
│   │   │       │   ├── 20200402142539_rename_profile_flows.down.fizz
│   │   │       │   ├── 20200402142539_rename_profile_flows.up.fizz
│   │   │       │   ├── 20200519101057_create_recovery_addresses.down.fizz
│   │   │       │   ├── 20200519101057_create_recovery_addresses.up.fizz
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.down.sql
│   │   │       │   ├── 20200519101058_create_recovery_addresses.mysql.up.sql
│   │   │       │   ├── 20200601101000_create_messages.down.fizz
│   │   │       │   ├── 20200601101000_create_messages.up.fizz
│   │   │       │   ├── 20200601101001_verification.mysql.down.sql
│   │   │       │   ├── 20200601101001_verification.mysql.up.sql
│   │   │       │   ├── 20200605111551_messages.down.fizz
│   │   │       │   ├── 20200605111551_messages.up.fizz
│   │   │       │   ├── 20200607165100_settings.down.fizz
│   │   │       │   ├── 20200607165100_settings.up.fizz
│   │   │       │   ├── 20200705105359_rename_identities_schema.down.fizz
│   │   │       │   ├── 20200705105359_rename_identities_schema.up.fizz
│   │   │       │   ├── 20200810141652_flow_type.down.fizz
│   │   │       │   ├── 20200810141652_flow_type.up.fizz
│   │   │       │   ├── 20200810161022_flow_rename.down.fizz
│   │   │       │   ├── 20200810161022_flow_rename.up.fizz
│   │   │       │   ├── 20200810162450_flow_fields_rename.down.fizz
│   │   │       │   ├── 20200810162450_flow_fields_rename.up.fizz
│   │   │       │   ├── 20200812124254_add_session_token.down.fizz
│   │   │       │   ├── 20200812124254_add_session_token.up.fizz
│   │   │       │   ├── 20200812160551_add_session_revoke.down.fizz
│   │   │       │   ├── 20200812160551_add_session_revoke.up.fizz
│   │   │       │   ├── 20200830121710_update_recovery_token.down.fizz
│   │   │       │   ├── 20200830121710_update_recovery_token.up.fizz
│   │   │       │   ├── 20200830130642_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130642_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130643_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130643_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130644_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130644_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130645_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130645_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830130646_add_verification_methods.down.fizz
│   │   │       │   ├── 20200830130646_add_verification_methods.up.fizz
│   │   │       │   ├── 20200830154602_add_verification_token.down.fizz
│   │   │       │   ├── 20200830154602_add_verification_token.up.fizz
│   │   │       │   ├── 20200830172221_recovery_token_expires.down.fizz
│   │   │       │   ├── 20200830172221_recovery_token_expires.up.fizz
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.down.fizz
│   │   │       │   ├── 20200831110752_identity_verifiable_address_remove_code.up.fizz
│   │   │       │   ├── 20201201161451_credential_types_values.down.fizz
│   │   │       │   └── 20201201161451_credential_types_values.up.fizz
│   │   │       ├── templating/
│   │   │       │   ├── 0_sql_create_tablename_template.down.sql
│   │   │       │   └── 0_sql_create_tablename_template.up.sql
│   │   │       ├── testdata/
│   │   │       │   ├── 20220513_testdata.invalid
│   │   │       │   ├── 20220513_testdata.sql
│   │   │       │   ├── 20220514_testdata.sql
│   │   │       │   ├── invalid
│   │   │       │   └── invalid_testdata.sql
│   │   │       ├── testdata_migrations/
│   │   │       │   ├── 20220513_create_table.down.sql
│   │   │       │   └── 20220513_create_table.up.sql
│   │   │       └── transactional/
│   │   │           ├── 20191100000001000000_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000000_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000000_identities.mysql.down.sql
│   │   │           ├── 20191100000001000000_identities.mysql.up.sql
│   │   │           ├── 20191100000001000000_identities.postgres.down.sql
│   │   │           ├── 20191100000001000000_identities.postgres.up.sql
│   │   │           ├── 20191100000001000000_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000000_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000001_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000001_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000001_identities.mysql.down.sql
│   │   │           ├── 20191100000001000001_identities.mysql.up.sql
│   │   │           ├── 20191100000001000001_identities.postgres.down.sql
│   │   │           ├── 20191100000001000001_identities.postgres.up.sql
│   │   │           ├── 20191100000001000001_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000001_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000002_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000002_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000002_identities.mysql.down.sql
│   │   │           ├── 20191100000001000002_identities.mysql.up.sql
│   │   │           ├── 20191100000001000002_identities.postgres.down.sql
│   │   │           ├── 20191100000001000002_identities.postgres.up.sql
│   │   │           ├── 20191100000001000002_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000002_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000003_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000003_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000003_identities.mysql.down.sql
│   │   │           ├── 20191100000001000003_identities.mysql.up.sql
│   │   │           ├── 20191100000001000003_identities.postgres.down.sql
│   │   │           ├── 20191100000001000003_identities.postgres.up.sql
│   │   │           ├── 20191100000001000003_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000003_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000004_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000004_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000004_identities.mysql.down.sql
│   │   │           ├── 20191100000001000004_identities.mysql.up.sql
│   │   │           ├── 20191100000001000004_identities.postgres.down.sql
│   │   │           ├── 20191100000001000004_identities.postgres.up.sql
│   │   │           ├── 20191100000001000004_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000004_identities.sqlite3.up.sql
│   │   │           ├── 20191100000001000005_identities.cockroach.down.sql
│   │   │           ├── 20191100000001000005_identities.cockroach.up.sql
│   │   │           ├── 20191100000001000005_identities.mysql.down.sql
│   │   │           ├── 20191100000001000005_identities.mysql.up.sql
│   │   │           ├── 20191100000001000005_identities.postgres.down.sql
│   │   │           ├── 20191100000001000005_identities.postgres.up.sql
│   │   │           ├── 20191100000001000005_identities.sqlite3.down.sql
│   │   │           ├── 20191100000001000005_identities.sqlite3.up.sql
│   │   │           ├── 20191100000002000000_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000000_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000000_requests.mysql.down.sql
│   │   │           ├── 20191100000002000000_requests.mysql.up.sql
│   │   │           ├── 20191100000002000000_requests.postgres.down.sql
│   │   │           ├── 20191100000002000000_requests.postgres.up.sql
│   │   │           ├── 20191100000002000000_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000000_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000001_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000001_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000001_requests.mysql.down.sql
│   │   │           ├── 20191100000002000001_requests.mysql.up.sql
│   │   │           ├── 20191100000002000001_requests.postgres.down.sql
│   │   │           ├── 20191100000002000001_requests.postgres.up.sql
│   │   │           ├── 20191100000002000001_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000001_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000002_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000002_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000002_requests.mysql.down.sql
│   │   │           ├── 20191100000002000002_requests.mysql.up.sql
│   │   │           ├── 20191100000002000002_requests.postgres.down.sql
│   │   │           ├── 20191100000002000002_requests.postgres.up.sql
│   │   │           ├── 20191100000002000002_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000002_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000003_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000003_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000003_requests.mysql.down.sql
│   │   │           ├── 20191100000002000003_requests.mysql.up.sql
│   │   │           ├── 20191100000002000003_requests.postgres.down.sql
│   │   │           ├── 20191100000002000003_requests.postgres.up.sql
│   │   │           ├── 20191100000002000003_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000003_requests.sqlite3.up.sql
│   │   │           ├── 20191100000002000004_requests.cockroach.down.sql
│   │   │           ├── 20191100000002000004_requests.cockroach.up.sql
│   │   │           ├── 20191100000002000004_requests.mysql.down.sql
│   │   │           ├── 20191100000002000004_requests.mysql.up.sql
│   │   │           ├── 20191100000002000004_requests.postgres.down.sql
│   │   │           ├── 20191100000002000004_requests.postgres.up.sql
│   │   │           ├── 20191100000002000004_requests.sqlite3.down.sql
│   │   │           ├── 20191100000002000004_requests.sqlite3.up.sql
│   │   │           ├── 20191100000003000000_sessions.cockroach.down.sql
│   │   │           ├── 20191100000003000000_sessions.cockroach.up.sql
│   │   │           ├── 20191100000003000000_sessions.mysql.down.sql
│   │   │           ├── 20191100000003000000_sessions.mysql.up.sql
│   │   │           ├── 20191100000003000000_sessions.postgres.down.sql
│   │   │           ├── 20191100000003000000_sessions.postgres.up.sql
│   │   │           ├── 20191100000003000000_sessions.sqlite3.down.sql
│   │   │           ├── 20191100000003000000_sessions.sqlite3.up.sql
│   │   │           ├── 20191100000004000000_errors.cockroach.down.sql
│   │   │           ├── 20191100000004000000_errors.cockroach.up.sql
│   │   │           ├── 20191100000004000000_errors.mysql.down.sql
│   │   │           ├── 20191100000004000000_errors.mysql.up.sql
│   │   │           ├── 20191100000004000000_errors.postgres.down.sql
│   │   │           ├── 20191100000004000000_errors.postgres.up.sql
│   │   │           ├── 20191100000004000000_errors.sqlite3.down.sql
│   │   │           ├── 20191100000004000000_errors.sqlite3.up.sql
│   │   │           ├── 20191100000005000000_identities.mysql.down.sql
│   │   │           ├── 20191100000005000000_identities.mysql.up.sql
│   │   │           ├── 20191100000005000001_identities.mysql.down.sql
│   │   │           ├── 20191100000005000001_identities.mysql.up.sql
│   │   │           ├── 20191100000006000000_courier.cockroach.down.sql
│   │   │           ├── 20191100000006000000_courier.cockroach.up.sql
│   │   │           ├── 20191100000006000000_courier.mysql.down.sql
│   │   │           ├── 20191100000006000000_courier.mysql.up.sql
│   │   │           ├── 20191100000006000000_courier.postgres.down.sql
│   │   │           ├── 20191100000006000000_courier.postgres.up.sql
│   │   │           ├── 20191100000006000000_courier.sqlite3.down.sql
│   │   │           ├── 20191100000006000000_courier.sqlite3.up.sql
│   │   │           ├── 20191100000007000000_errors.cockroach.down.sql
│   │   │           ├── 20191100000007000000_errors.cockroach.up.sql
│   │   │           ├── 20191100000007000000_errors.mysql.down.sql
│   │   │           ├── 20191100000007000000_errors.mysql.up.sql
│   │   │           ├── 20191100000007000000_errors.postgres.down.sql
│   │   │           ├── 20191100000007000000_errors.postgres.up.sql
│   │   │           ├── 20191100000007000000_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000000_errors.sqlite3.up.sql
│   │   │           ├── 20191100000007000001_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000001_errors.sqlite3.up.sql
│   │   │           ├── 20191100000007000002_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000002_errors.sqlite3.up.sql
│   │   │           ├── 20191100000007000003_errors.sqlite3.down.sql
│   │   │           ├── 20191100000007000003_errors.sqlite3.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000000_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000001_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000002_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000003_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000004_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.cockroach.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.cockroach.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.mysql.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.mysql.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.postgres.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.postgres.up.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.sqlite3.down.sql
│   │   │           ├── 20191100000008000005_selfservice_verification.sqlite3.up.sql
│   │   │           ├── 20191100000009000000_verification.mysql.down.sql
│   │   │           ├── 20191100000009000000_verification.mysql.up.sql
│   │   │           ├── 20191100000009000001_verification.mysql.down.sql
│   │   │           ├── 20191100000009000001_verification.mysql.up.sql
│   │   │           ├── 20191100000010000000_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000000_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000000_errors.mysql.down.sql
│   │   │           ├── 20191100000010000000_errors.mysql.up.sql
│   │   │           ├── 20191100000010000000_errors.postgres.down.sql
│   │   │           ├── 20191100000010000000_errors.postgres.up.sql
│   │   │           ├── 20191100000010000000_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000000_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000001_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000001_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000001_errors.mysql.down.sql
│   │   │           ├── 20191100000010000001_errors.mysql.up.sql
│   │   │           ├── 20191100000010000001_errors.postgres.down.sql
│   │   │           ├── 20191100000010000001_errors.postgres.up.sql
│   │   │           ├── 20191100000010000001_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000001_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000002_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000002_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000002_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000002_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000003_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000003_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000003_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000003_errors.sqlite3.up.sql
│   │   │           ├── 20191100000010000004_errors.cockroach.down.sql
│   │   │           ├── 20191100000010000004_errors.cockroach.up.sql
│   │   │           ├── 20191100000010000004_errors.sqlite3.down.sql
│   │   │           ├── 20191100000010000004_errors.sqlite3.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.mysql.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.mysql.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.postgres.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.postgres.up.sql
│   │   │           ├── 20191100000011000000_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000000_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000001_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000001_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000001_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000001_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000002_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000002_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000002_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000002_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000003_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000003_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000011000003_courier_body_type.sqlite3.down.sql
│   │   │           ├── 20191100000011000003_courier_body_type.sqlite3.up.sql
│   │   │           ├── 20191100000011000004_courier_body_type.cockroach.down.sql
│   │   │           ├── 20191100000011000004_courier_body_type.cockroach.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.cockroach.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.cockroach.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.mysql.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.mysql.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.postgres.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.postgres.up.sql
│   │   │           ├── 20191100000012000000_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000000_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20191100000012000001_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000001_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20191100000012000002_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000002_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20191100000012000003_login_request_forced.sqlite3.down.sql
│   │   │           ├── 20191100000012000003_login_request_forced.sqlite3.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000000_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000001_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000002_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.cockroach.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.cockroach.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000003_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.mysql.down.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.mysql.up.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.postgres.down.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.postgres.up.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000004_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000005_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000005_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200317160354000006_create_profile_request_forms.sqlite3.down.sql
│   │   │           ├── 20200317160354000006_create_profile_request_forms.sqlite3.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.cockroach.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.cockroach.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.mysql.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.mysql.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.postgres.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.postgres.up.sql
│   │   │           ├── 20200401183443000000_continuity_containers.sqlite3.down.sql
│   │   │           ├── 20200401183443000000_continuity_containers.sqlite3.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.cockroach.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.cockroach.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.mysql.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.mysql.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.postgres.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.postgres.up.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.sqlite3.down.sql
│   │   │           ├── 20200402142539000000_rename_profile_flows.sqlite3.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.cockroach.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.cockroach.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.mysql.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.mysql.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.postgres.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.postgres.up.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.sqlite3.down.sql
│   │   │           ├── 20200402142539000001_rename_profile_flows.sqlite3.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.cockroach.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.cockroach.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.mysql.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.mysql.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.postgres.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.postgres.up.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.sqlite3.down.sql
│   │   │           ├── 20200402142539000002_rename_profile_flows.sqlite3.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000000_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000001_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000002_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000003_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000004_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000005_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000006_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.cockroach.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.cockroach.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.postgres.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.postgres.up.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.sqlite3.down.sql
│   │   │           ├── 20200519101057000007_create_recovery_addresses.sqlite3.up.sql
│   │   │           ├── 20200519101058000000_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101058000000_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200519101058000001_create_recovery_addresses.mysql.down.sql
│   │   │           ├── 20200519101058000001_create_recovery_addresses.mysql.up.sql
│   │   │           ├── 20200601101000000000_create_messages.cockroach.down.sql
│   │   │           ├── 20200601101000000000_create_messages.cockroach.up.sql
│   │   │           ├── 20200601101000000000_create_messages.mysql.down.sql
│   │   │           ├── 20200601101000000000_create_messages.mysql.up.sql
│   │   │           ├── 20200601101000000000_create_messages.postgres.down.sql
│   │   │           ├── 20200601101000000000_create_messages.postgres.up.sql
│   │   │           ├── 20200601101000000000_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000000_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101000000001_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000001_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101000000002_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000002_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101000000003_create_messages.sqlite3.down.sql
│   │   │           ├── 20200601101000000003_create_messages.sqlite3.up.sql
│   │   │           ├── 20200601101001000000_verification.mysql.down.sql
│   │   │           ├── 20200601101001000000_verification.mysql.up.sql
│   │   │           ├── 20200601101001000001_verification.mysql.down.sql
│   │   │           ├── 20200601101001000001_verification.mysql.up.sql
│   │   │           ├── 20200605111551000000_messages.cockroach.down.sql
│   │   │           ├── 20200605111551000000_messages.cockroach.up.sql
│   │   │           ├── 20200605111551000000_messages.mysql.down.sql
│   │   │           ├── 20200605111551000000_messages.mysql.up.sql
│   │   │           ├── 20200605111551000000_messages.postgres.down.sql
│   │   │           ├── 20200605111551000000_messages.postgres.up.sql
│   │   │           ├── 20200605111551000000_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000000_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000001_messages.cockroach.down.sql
│   │   │           ├── 20200605111551000001_messages.cockroach.up.sql
│   │   │           ├── 20200605111551000001_messages.mysql.down.sql
│   │   │           ├── 20200605111551000001_messages.mysql.up.sql
│   │   │           ├── 20200605111551000001_messages.postgres.down.sql
│   │   │           ├── 20200605111551000001_messages.postgres.up.sql
│   │   │           ├── 20200605111551000001_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000001_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000002_messages.cockroach.down.sql
│   │   │           ├── 20200605111551000002_messages.cockroach.up.sql
│   │   │           ├── 20200605111551000002_messages.mysql.down.sql
│   │   │           ├── 20200605111551000002_messages.mysql.up.sql
│   │   │           ├── 20200605111551000002_messages.postgres.down.sql
│   │   │           ├── 20200605111551000002_messages.postgres.up.sql
│   │   │           ├── 20200605111551000002_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000002_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000003_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000003_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000004_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000004_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000005_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000005_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000006_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000006_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000007_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000007_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000008_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000008_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000009_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000009_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000010_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000010_messages.sqlite3.up.sql
│   │   │           ├── 20200605111551000011_messages.sqlite3.down.sql
│   │   │           ├── 20200605111551000011_messages.sqlite3.up.sql
│   │   │           ├── 20200607165100000000_settings.cockroach.down.sql
│   │   │           ├── 20200607165100000000_settings.cockroach.up.sql
│   │   │           ├── 20200607165100000000_settings.mysql.down.sql
│   │   │           ├── 20200607165100000000_settings.mysql.up.sql
│   │   │           ├── 20200607165100000000_settings.postgres.down.sql
│   │   │           ├── 20200607165100000000_settings.postgres.up.sql
│   │   │           ├── 20200607165100000000_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000000_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000001_settings.cockroach.down.sql
│   │   │           ├── 20200607165100000001_settings.cockroach.up.sql
│   │   │           ├── 20200607165100000001_settings.mysql.down.sql
│   │   │           ├── 20200607165100000001_settings.mysql.up.sql
│   │   │           ├── 20200607165100000001_settings.postgres.down.sql
│   │   │           ├── 20200607165100000001_settings.postgres.up.sql
│   │   │           ├── 20200607165100000001_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000001_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000002_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000002_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000003_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000003_settings.sqlite3.up.sql
│   │   │           ├── 20200607165100000004_settings.sqlite3.down.sql
│   │   │           ├── 20200607165100000004_settings.sqlite3.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.cockroach.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.cockroach.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.mysql.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.mysql.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.postgres.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.postgres.up.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.sqlite3.down.sql
│   │   │           ├── 20200705105359000000_rename_identities_schema.sqlite3.up.sql
│   │   │           ├── 20200810141652000000_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000000_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000000_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000000_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000000_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000000_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000000_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000000_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000001_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000001_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000001_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000001_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000001_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000001_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000001_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000001_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000002_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000002_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000002_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000002_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000002_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000002_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000002_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000002_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000003_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000003_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000003_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000003_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000003_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000003_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000003_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000003_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000004_flow_type.cockroach.down.sql
│   │   │           ├── 20200810141652000004_flow_type.cockroach.up.sql
│   │   │           ├── 20200810141652000004_flow_type.mysql.down.sql
│   │   │           ├── 20200810141652000004_flow_type.mysql.up.sql
│   │   │           ├── 20200810141652000004_flow_type.postgres.down.sql
│   │   │           ├── 20200810141652000004_flow_type.postgres.up.sql
│   │   │           ├── 20200810141652000004_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000004_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000005_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000005_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000006_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000006_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000007_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000007_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000008_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000008_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000009_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000009_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000010_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000010_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000011_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000011_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000012_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000012_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000013_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000013_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000014_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000014_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000015_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000015_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000016_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000016_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000017_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000017_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000018_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000018_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810141652000019_flow_type.sqlite3.down.sql
│   │   │           ├── 20200810141652000019_flow_type.sqlite3.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000000_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000000_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000001_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000001_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000002_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000002_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000003_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000003_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000004_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000004_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000005_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000005_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000006_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000006_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000007_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000007_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.cockroach.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.cockroach.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.mysql.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.mysql.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.postgres.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.postgres.up.sql
│   │   │           ├── 20200810161022000008_flow_rename.sqlite3.down.sql
│   │   │           ├── 20200810161022000008_flow_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000000_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000001_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000002_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.cockroach.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.cockroach.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.mysql.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.mysql.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.postgres.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.postgres.up.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.sqlite3.down.sql
│   │   │           ├── 20200810162450000003_flow_fields_rename.sqlite3.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000000_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000000_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000001_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000001_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000002_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000002_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000003_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000003_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.mysql.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.mysql.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.postgres.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.postgres.up.sql
│   │   │           ├── 20200812124254000004_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000004_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000005_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000005_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000005_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000005_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000006_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000006_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000006_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000006_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812124254000007_add_session_token.cockroach.down.sql
│   │   │           ├── 20200812124254000007_add_session_token.cockroach.up.sql
│   │   │           ├── 20200812124254000007_add_session_token.sqlite3.down.sql
│   │   │           ├── 20200812124254000007_add_session_token.sqlite3.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.cockroach.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.cockroach.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.mysql.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.mysql.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.postgres.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.postgres.up.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000000_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000001_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000001_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000002_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000002_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000003_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000003_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000004_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000004_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000005_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000005_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000006_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000006_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200812160551000007_add_session_revoke.sqlite3.down.sql
│   │   │           ├── 20200812160551000007_add_session_revoke.sqlite3.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.cockroach.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.cockroach.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.mysql.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.mysql.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.postgres.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.postgres.up.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.sqlite3.down.sql
│   │   │           ├── 20200830121710000000_update_recovery_token.sqlite3.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000001_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000002_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000003_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000004_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000005_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000006_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000007_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000008_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000008_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000009_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000009_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130642000010_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130642000010_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130643000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130644000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130644000001_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130645000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000000_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000001_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.cockroach.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.cockroach.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.mysql.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.mysql.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.postgres.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.postgres.up.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000002_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000003_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000003_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000004_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000004_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000005_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000005_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000006_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000006_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000007_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000007_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000008_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000008_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000009_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000009_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000010_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000010_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830130646000011_add_verification_methods.sqlite3.down.sql
│   │   │           ├── 20200830130646000011_add_verification_methods.sqlite3.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000000_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000000_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000001_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000001_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000002_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000002_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000003_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000003_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.cockroach.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.cockroach.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.mysql.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.mysql.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.postgres.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.postgres.up.sql
│   │   │           ├── 20200830154602000004_add_verification_token.sqlite3.down.sql
│   │   │           ├── 20200830154602000004_add_verification_token.sqlite3.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000000_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000001_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000002_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.mysql.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.mysql.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.postgres.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.postgres.up.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000003_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000004_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000005_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000006_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000007_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000008_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.cockroach.down.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.cockroach.up.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000009_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000010_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000010_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000011_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000011_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000012_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000012_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000013_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000013_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000014_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000014_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000015_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000015_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000016_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000016_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000017_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000017_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000018_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000018_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000019_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000019_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000020_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000020_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000021_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000021_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000022_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000022_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000023_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000023_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200830172221000024_recovery_token_expires.sqlite3.down.sql
│   │   │           ├── 20200830172221000024_recovery_token_expires.sqlite3.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000000_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000001_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000002_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000003_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000004_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000005_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000006_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.mysql.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.mysql.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.postgres.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.postgres.up.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000007_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000008_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000009_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000010_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000011_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000012_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000013_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.cockroach.down.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.cockroach.up.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000014_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000015_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000015_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000016_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000016_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000017_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000017_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000018_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000018_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000019_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000019_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000020_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000020_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20200831110752000021_identity_verifiable_address_remove_code.sqlite3.down.sql
│   │   │           ├── 20200831110752000021_identity_verifiable_address_remove_code.sqlite3.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.cockroach.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.cockroach.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.mysql.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.mysql.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.postgres.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.postgres.up.sql
│   │   │           ├── 20201201161451000000_credential_types_values.sqlite3.down.sql
│   │   │           ├── 20201201161451000000_credential_types_values.sqlite3.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.cockroach.down.sql
│   │   │           ├── 20201201161451000001_credential_types_values.cockroach.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.mysql.down.sql
│   │   │           ├── 20201201161451000001_credential_types_values.mysql.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.postgres.down.sql
│   │   │           ├── 20201201161451000001_credential_types_values.postgres.up.sql
│   │   │           ├── 20201201161451000001_credential_types_values.sqlite3.down.sql
│   │   │           └── 20201201161451000001_credential_types_values.sqlite3.up.sql
│   │   └── transaction.go
│   ├── profilex/
│   │   └── profiling.go
│   ├── prometheusx/
│   │   ├── handler.go
│   │   └── metrics.go
│   ├── proxy/
│   │   ├── proxy.go
│   │   ├── rewrites.go
│   │   └── stubs/
│   │       └── auth.example.com.json
│   ├── randx/
│   │   ├── README.md
│   │   ├── sequence.go
│   │   └── strength/
│   │       ├── go.mod
│   │       ├── go.sum
│   │       └── main.go
│   ├── reqlog/
│   │   ├── LICENSE
│   │   ├── external_latency.go
│   │   └── middleware.go
│   ├── resilience/
│   │   └── retry.go
│   ├── safecast/
│   │   └── safecast.go
│   ├── serverx/
│   │   ├── 404.go
│   │   ├── 404.html
│   │   └── 404.json
│   ├── servicelocatorx/
│   │   └── options.go
│   ├── snapshotx/
│   │   ├── .snapshots/
│   │   │   ├── TestDeleteMatches-file=1.json-fn.json
│   │   │   ├── TestDeleteMatches-file=2.json-fn.json
│   │   │   └── TestDeleteMatches-file=3.json-fn.json
│   │   ├── fixtures/
│   │   │   ├── 1.json
│   │   │   ├── 2.json
│   │   │   └── 3.json
│   │   └── snapshot.go
│   ├── sqlcon/
│   │   ├── connector.go
│   │   ├── dockertest/
│   │   │   ├── cockroach.go
│   │   │   └── test_helper.go
│   │   ├── error.go
│   │   ├── error_nosqlite.go
│   │   ├── error_sqlite.go
│   │   ├── message.go
│   │   └── parse_opts.go
│   ├── sqlxx/
│   │   ├── batch/
│   │   │   ├── .snapshots/
│   │   │   │   ├── Test_buildInsertQueryArgs-case=cockroach.json
│   │   │   │   ├── Test_buildInsertQueryArgs-case=testModel.json
│   │   │   │   └── Test_buildInsertQueryValues-case=testModel-case=cockroach.json
│   │   │   └── create.go
│   │   ├── expand.go
│   │   ├── sqlxx.go
│   │   └── types.go
│   ├── stringslice/
│   │   └── unique.go
│   ├── stringsx/
│   │   ├── case.go
│   │   ├── split.go
│   │   ├── switch_case.go
│   │   └── truncate.go
│   ├── swaggerx/
│   │   └── error.go
│   ├── testingx/
│   │   └── helpers.go
│   ├── tlsx/
│   │   ├── cert.go
│   │   └── termination.go
│   ├── urlx/
│   │   ├── copy.go
│   │   ├── extract.go
│   │   ├── join.go
│   │   ├── parse.go
│   │   ├── path.go
│   │   └── path_windows.go
│   ├── uuidx/
│   │   └── uuid.go
│   └── watcherx/
│       ├── definitions.go
│       ├── directory.go
│       ├── event.go
│       ├── file.go
│       ├── integrationtest/
│       │   ├── .dockerignore
│       │   ├── .gitignore
│       │   ├── Dockerfile
│       │   ├── Makefile
│       │   ├── README.md
│       │   ├── configmap.yml
│       │   ├── event_logger.yml
│       │   ├── eventlog_snapshot
│       │   └── main.go
│       └── test_helpers.go
├── otp/
│   └── otp.go
├── package.json
├── persistence/
│   ├── reference.go
│   └── sql/
│       ├── .soda.yml
│       ├── README.md
│       ├── batch/
│       │   ├── .snapshots/
│       │   │   ├── Test_buildInsertQueryArgs-case=Identities.json
│       │   │   ├── Test_buildInsertQueryArgs-case=RecoveryAddress#01.json
│       │   │   ├── Test_buildInsertQueryArgs-case=RecoveryAddress.json
│       │   │   ├── Test_buildInsertQueryArgs-case=cockroach.json
│       │   │   ├── Test_buildInsertQueryArgs-case=testModel.json
│       │   │   └── Test_buildInsertQueryValues-case=testModel-case=cockroach.json
│       │   ├── create.go
│       │   ├── create_test.go
│       │   └── test_persister.go
│       ├── devices/
│       │   └── persister_devices.go
│       ├── identity/
│       │   └── persister_identity.go
│       ├── migratest/
│       │   ├── fixtures/
│       │   │   ├── identity/
│       │   │   │   ├── 0149ce5f-76a8-4efe-b2e3-431b8c6cceb6.json
│       │   │   │   ├── 0149ce5f-76a8-4efe-b2e3-431b8c6cceb7.json
│       │   │   │   ├── 196d8c1e-4f04-40f0-94b3-5ec43996b28a.json
│       │   │   │   ├── 28ff0031-190b-4253-bd15-14308dec013e.json
│       │   │   │   ├── 2ae6a5a7-2983-49e7-a4d8-7740b37c88cb.json
│       │   │   │   ├── 308929d3-41a2-43fe-a33c-75308539d841.json
│       │   │   │   ├── 359963ec-b09b-4ea0-aece-fb4dd95f304a.json
│       │   │   │   ├── 5ff66179-c240-4703-b0d8-494592cefff5.json
│       │   │   │   ├── a251ebc2-880c-4f76-a8f3-38e6940eab0e.json
│       │   │   │   ├── d7b9addb-ac15-4bc2-9fa5-562e0bf48755.json
│       │   │   │   └── ed253b2c-48ed-4c58-9b6f-1dc963c30a66.json
│       │   │   ├── identity_recovery_address/
│       │   │   │   └── b8293f1c-010f-45d9-b809-f3fc5365ba80.json
│       │   │   ├── identity_verification_address/
│       │   │   │   ├── 45e867e9-2745-4f16-8dd4-84334a252b61.json
│       │   │   │   ├── b2d59320-8564-4400-a39f-a22a497a23f1.json
│       │   │   │   ├── c2427b6d-312b-46d9-9285-536db7ae11fd.json
│       │   │   │   └── d4718a67-aec2-418d-8173-6ebc7bde3b86.json
│       │   │   ├── login_code/
│       │   │   │   └── bd292366-af32-4ba6-bdf0-11d6d1a217f3.json
│       │   │   ├── login_flow/
│       │   │   │   ├── 00b1517f-2467-4aaf-b0a5-82b4a27dcaf5.json
│       │   │   │   ├── 0bc96cc9-dda4-4700-9e42-35731f2af91e.json
│       │   │   │   ├── 1fb23c75-b809-42cc-8984-6ca2d0a1192f.json
│       │   │   │   ├── 202c1981-1e25-47f0-8764-75ad506c2bec.json
│       │   │   │   ├── 349c945a-60f8-436a-a301-7a42c92604f9.json
│       │   │   │   ├── 38caf592-b042-4551-b92f-8d5223c2a4e2.json
│       │   │   │   ├── 3a9ea34f-0f12-469b-9417-3ae5795a7baa.json
│       │   │   │   ├── 43c99182-bb67-47e1-b564-bb23bd8d4393.json
│       │   │   │   ├── 47edd3a8-0998-4779-9469-f4b8ee4430df.json
│       │   │   │   ├── 56d94e8b-8a5d-4b7f-8a6e-3259d2b2903e.json
│       │   │   │   ├── 6d387820-f2f4-4f9f-9980-a90d89e7811f.json
│       │   │   │   ├── 916ded11-aa64-4a27-b06e-96e221a509d7.json
│       │   │   │   ├── 99974ce6-388c-4669-a95a-7757ee724020.json
│       │   │   │   ├── b1fac7fb-d016-4a06-a7fe-e4eab2a0429f.json
│       │   │   │   ├── cccccccc-dda4-4700-9e42-35731f2af911.json
│       │   │   │   ├── cccccccc-dda4-4700-9e42-35731f2af91e.json
│       │   │   │   └── d6aa1f23-88c9-4b9b-a850-392f48c7f9e8.json
│       │   │   ├── recovery_code/
│       │   │   │   └── 8f75f5d9-9cb4-4848-9a73-9344f686f8a6.json
│       │   │   ├── recovery_flow/
│       │   │   │   ├── 0d14427f-e16d-43a5-8695-8278bf85d4eb.json
│       │   │   │   ├── 13178936-095a-466b-abe0-36d977d3dc18.json
│       │   │   │   ├── 4963f305-e874-4a68-8424-a00bec679e7b.json
│       │   │   │   ├── 68fb4010-84a9-4d1e-9f92-2705978ee891.json
│       │   │   │   ├── 68fb4010-84a9-4d1e-9f92-2705978ee89e.json
│       │   │   │   └── 87e871e1-a45f-4ed0-ba4e-a03063c774dc.json
│       │   │   ├── recovery_token/
│       │   │   │   ├── 1b667e6d-8fda-4194-a765-08185185d7e4.json
│       │   │   │   ├── 5529d454-2946-404e-b681-d950f8657fd0.json
│       │   │   │   └── 77ca3f5c-cd39-488b-9f1d-cc7166d14bdc.json
│       │   │   ├── registration_code/
│       │   │   │   └── f1f66a69-ce02-4a12-9591-9e02dda30a0d.json
│       │   │   ├── registration_flow/
│       │   │   │   ├── 05a7f09d-4ef3-41fb-958a-6ad74584b36a.json
│       │   │   │   ├── 22d58184-b97d-44a5-bbaf-0aa8b4000d81.json
│       │   │   │   ├── 2bf132e0-5d40-4df9-9a11-9106e5333735.json
│       │   │   │   ├── 696e7022-c466-44f6-89c6-8cf93c06a62a.json
│       │   │   │   ├── 69c80296-36cd-4afc-921a-15369cac5bf0.json
│       │   │   │   ├── 87fa3f43-5155-42b4-a1ad-174c2595fdaf.json
│       │   │   │   ├── 8ef215a9-e8d5-43b3-9aa3-cb4333562e36.json
│       │   │   │   ├── 8f32efdc-f6fc-4c27-a3c2-579d109eff60.json
│       │   │   │   ├── 9edcf051-1cd0-44cc-bd2f-6ac21f0c24dd.json
│       │   │   │   ├── e2150cdc-23ac-4940-a240-6c79c27ab029.json
│       │   │   │   ├── ef18b06e-4700-4021-9949-ef783cd86be1.json
│       │   │   │   ├── ef18b06e-4700-4021-9949-ef783cd86be8.json
│       │   │   │   └── f1b5ed18-113a-4a98-aae7-d4eba007199c.json
│       │   │   ├── session/
│       │   │   │   ├── 068f6bb6-d15f-436d-94f7-b3fd0489c9ef.json
│       │   │   │   ├── 7458af86-c1d8-401c-978a-8da89133f78b.json
│       │   │   │   ├── 7458af86-c1d8-401c-978a-8da89133f98b.json
│       │   │   │   ├── 8571e374-38f2-4f46-8ad3-b9d914e174d3.json
│       │   │   │   ├── dcde5aaa-f789-4d3d-ae1f-76da8d57e67c.json
│       │   │   │   └── f38cdebe-e567-42c9-a562-1bd4dee40998.json
│       │   │   ├── settings_flow/
│       │   │   │   ├── 194c5b05-0487-4a11-bcbc-f301c9ff9678.json
│       │   │   │   ├── 19ede218-928c-4e02-ab49-b76e12b34f31.json
│       │   │   │   ├── 19ede218-928c-4e02-ab49-b76e12b34f32.json
│       │   │   │   ├── 21c5f714-3089-49d2-b387-f244d4dd9e00.json
│       │   │   │   ├── 74fd6c53-7651-453e-90b8-2c5adbf911bb.json
│       │   │   │   ├── 77fe4fb3-2d4e-4532-b568-c44b0aece0aa.json
│       │   │   │   ├── 8248bb5d-8ef7-45e3-8e07-9e2003dd5352.json
│       │   │   │   ├── 90b4f970-b9ae-42bc-a0a7-73ec750e0aa1.json
│       │   │   │   ├── a79bfcf1-68ae-49de-8b23-4f96921b8341.json
│       │   │   │   ├── aeba85bd-1a8c-44bf-8fc3-3be83c01a3dc.json
│       │   │   │   └── cdfd1eed-34a4-491d-ad0a-7579d3a0a7ba.json
│       │   │   ├── verification_flow/
│       │   │   │   ├── 29b2c16e-2955-4faa-bd16-33af098cdf83.json
│       │   │   │   ├── 3631e880-ce59-4cbd-a705-0d825eea590d.json
│       │   │   │   ├── 42f31e47-65e1-4be9-80ea-e5d8ed64b236.json
│       │   │   │   ├── 5385c962-0295-4575-9b1b-d7eef13c0eda.json
│       │   │   │   ├── 6aae3159-b880-4cfb-a863-03b114b1371b.json
│       │   │   │   ├── 7be6c72c-c868-4b61-a1f0-1130603665d1.json
│       │   │   │   ├── 7be6c72c-c868-4b61-a1f0-1130603665d8.json
│       │   │   │   ├── 81f74e5d-1fa5-4e1b-a9bf-e95119260471.json
│       │   │   │   ├── 81f74e5d-1fa5-4e1b-a9bf-e9511926047c.json
│       │   │   │   ├── a8e2b810-a561-4a9e-bbd8-37f649bc26fa.json
│       │   │   │   └── b37d34c2-4290-4be4-9e3a-c6263ee77082.json
│       │   │   └── verification_token/
│       │   │       ├── ee56574d-2f0c-43f6-8d26-0062938ae330.json
│       │   │       ├── ee56574d-2f1c-43f6-8d26-0062938ae330.json
│       │   │       └── f81fd924-23bb-4cdf-8fa0-56253eff6cc9.json
│       │   ├── migration_test.go
│       │   ├── stub/
│       │   │   └── default.schema.json
│       │   └── testdata/
│       │       ├── 20150100000001_testdata.sql
│       │       ├── 20191100000001_testdata.sql
│       │       ├── 20191100000002_testdata.sql
│       │       ├── 20191100000003_testdata.sql
│       │       ├── 20191100000004_testdata.sql
│       │       ├── 20191100000005_testdata.mysql.sql
│       │       ├── 20191100000006_testdata.sql
│       │       ├── 20191100000007_testdata.sql
│       │       ├── 20191100000008_testdata.sql
│       │       ├── 20191100000009_testdata.mysql.sql
│       │       ├── 20191100000010_testdata.sql
│       │       ├── 20191100000011_testdata.sql
│       │       ├── 20191100000012_testdata.sql
│       │       ├── 20200317160354_testdata.sql
│       │       ├── 20200401183443_testdata.sql
│       │       ├── 20200402142539_testdata.sql
│       │       ├── 20200519101057_testdata.sql
│       │       ├── 20200519101058_testdata.mysql.sql
│       │       ├── 20200601101000_testdata.sql
│       │       ├── 20200601101001_testdata.mysql.sql
│       │       ├── 20200605111551_testdata.sql
│       │       ├── 20200607165100_testdata.sql
│       │       ├── 20200705105359_testdata.sql
│       │       ├── 20200810141652_testdata.sql
│       │       ├── 20200810161022_testdata.sql
│       │       ├── 20200810162450_testdata.sql
│       │       ├── 20200812124254_testdata.sql
│       │       ├── 20200812160551_testdata.sql
│       │       ├── 20200830121710_testdata.sql
│       │       ├── 20200830130642_testdata.sql
│       │       ├── 20200830130643_testdata.sql
│       │       ├── 20200830130644_testdata.sql
│       │       ├── 20200830130645_testdata.sql
│       │       ├── 20200830130646_testdata.sql
│       │       ├── 20200830154602_testdata.sql
│       │       ├── 20200830172221_testdata.sql
│       │       ├── 20200831110752_testdata.sql
│       │       ├── 20201201161451_testdata.sql
│       │       ├── 20210118113234_testdata.sql
│       │       ├── 20210126114619_testdata.sql
│       │       ├── 20210307130558_testdata.sql
│       │       ├── 20210307130559_testdata.sql
│       │       ├── 20210311102338_testdata.sql
│       │       ├── 20210410175418_testdata.sql
│       │       ├── 20210504121624_testdata.sql
│       │       ├── 20210618103120_testdata.sql
│       │       ├── 20210805112414_testdata.sql
│       │       ├── 20210805122535_testdata.sql
│       │       ├── 20210810153530_testdata.sql
│       │       ├── 20210813150152_testdata.sql
│       │       ├── 20210816113956_testdata.sql
│       │       ├── 20210816142650_testdata.sql
│       │       ├── 20210817181232_testdata.sql
│       │       ├── 20210829131458_testdata.sql
│       │       ├── 20210913095309_testdata.sql
│       │       ├── 20220118104539_testdata.sql
│       │       ├── 20220301102701_testdata.sql
│       │       ├── 20220420102701_testdata.sql
│       │       ├── 20220607000001_testdata.sql
│       │       ├── 20220902141902_testdata.sql
│       │       ├── 20220907132836_testdata.sql
│       │       ├── 20220929124401_testdata.sql
│       │       ├── 20221103120601_testdata.sql
│       │       ├── 20221205095201_testdata.sql
│       │       ├── 20230313141439_testdata.sql
│       │       ├── 20230614205200_testdata.sql
│       │       ├── 20230705000000_testdata.sql
│       │       ├── 20230706000000_testdata.sql
│       │       ├── 20230707133700_testdata.sql
│       │       └── 20230707133701_testdata.sql
│       ├── migrations/
│       │   ├── go/
│       │   │   ├── 20251105000000000000_identity_id_not_null_fks.go
│       │   │   └── gomigrations.go
│       │   ├── legacy/
│       │   │   ├── 20191100000001_identities.cockroach.down.sql
│       │   │   ├── 20191100000001_identities.cockroach.up.sql
│       │   │   ├── 20191100000001_identities.mysql.down.sql
│       │   │   ├── 20191100000001_identities.mysql.up.sql
│       │   │   ├── 20191100000001_identities.postgres.down.sql
│       │   │   ├── 20191100000001_identities.postgres.up.sql
│       │   │   ├── 20191100000001_identities.sqlite3.down.sql
│       │   │   ├── 20191100000001_identities.sqlite3.up.sql
│       │   │   ├── 20191100000002_requests.cockroach.down.sql
│       │   │   ├── 20191100000002_requests.cockroach.up.sql
│       │   │   ├── 20191100000002_requests.mysql.down.sql
│       │   │   ├── 20191100000002_requests.mysql.up.sql
│       │   │   ├── 20191100000002_requests.postgres.down.sql
│       │   │   ├── 20191100000002_requests.postgres.up.sql
│       │   │   ├── 20191100000002_requests.sqlite3.down.sql
│       │   │   ├── 20191100000002_requests.sqlite3.up.sql
│       │   │   ├── 20191100000003_sessions.cockroach.down.sql
│       │   │   ├── 20191100000003_sessions.cockroach.up.sql
│       │   │   ├── 20191100000003_sessions.mysql.down.sql
│       │   │   ├── 20191100000003_sessions.mysql.up.sql
│       │   │   ├── 20191100000003_sessions.postgres.down.sql
│       │   │   ├── 20191100000003_sessions.postgres.up.sql
│       │   │   ├── 20191100000003_sessions.sqlite3.down.sql
│       │   │   ├── 20191100000003_sessions.sqlite3.up.sql
│       │   │   ├── 20191100000004_errors.cockroach.down.sql
│       │   │   ├── 20191100000004_errors.cockroach.up.sql
│       │   │   ├── 20191100000004_errors.mysql.down.sql
│       │   │   ├── 20191100000004_errors.mysql.up.sql
│       │   │   ├── 20191100000004_errors.postgres.down.sql
│       │   │   ├── 20191100000004_errors.postgres.up.sql
│       │   │   ├── 20191100000004_errors.sqlite3.down.sql
│       │   │   ├── 20191100000004_errors.sqlite3.up.sql
│       │   │   ├── 20191100000005_identities.mysql.down.sql
│       │   │   ├── 20191100000005_identities.mysql.up.sql
│       │   │   ├── 20191100000006_courier.cockroach.down.sql
│       │   │   ├── 20191100000006_courier.cockroach.up.sql
│       │   │   ├── 20191100000006_courier.mysql.down.sql
│       │   │   ├── 20191100000006_courier.mysql.up.sql
│       │   │   ├── 20191100000006_courier.postgres.down.sql
│       │   │   ├── 20191100000006_courier.postgres.up.sql
│       │   │   ├── 20191100000006_courier.sqlite3.down.sql
│       │   │   ├── 20191100000006_courier.sqlite3.up.sql
│       │   │   ├── 20191100000007_errors.cockroach.down.sql
│       │   │   ├── 20191100000007_errors.cockroach.up.sql
│       │   │   ├── 20191100000007_errors.mysql.down.sql
│       │   │   ├── 20191100000007_errors.mysql.up.sql
│       │   │   ├── 20191100000007_errors.postgres.down.sql
│       │   │   ├── 20191100000007_errors.postgres.up.sql
│       │   │   ├── 20191100000007_errors.sqlite3.down.sql
│       │   │   ├── 20191100000007_errors.sqlite3.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.cockroach.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.cockroach.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.mysql.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.mysql.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.postgres.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.postgres.up.sql
│       │   │   ├── 20191100000008_selfservice_verification.sqlite3.down.sql
│       │   │   ├── 20191100000008_selfservice_verification.sqlite3.up.sql
│       │   │   ├── 20191100000009_verification.mysql.down.sql
│       │   │   ├── 20191100000009_verification.mysql.up.sql
│       │   │   ├── 20191100000010_errors.cockroach.down.sql
│       │   │   ├── 20191100000010_errors.cockroach.up.sql
│       │   │   ├── 20191100000010_errors.mysql.down.sql
│       │   │   ├── 20191100000010_errors.mysql.up.sql
│       │   │   ├── 20191100000010_errors.postgres.down.sql
│       │   │   ├── 20191100000010_errors.postgres.up.sql
│       │   │   ├── 20191100000010_errors.sqlite3.down.sql
│       │   │   ├── 20191100000010_errors.sqlite3.up.sql
│       │   │   ├── 20191100000011_courier_body_type.cockroach.up.sql
│       │   │   ├── 20191100000011_courier_body_type.down.sql
│       │   │   ├── 20191100000011_courier_body_type.mysql.up.sql
│       │   │   ├── 20191100000011_courier_body_type.postgres.up.sql
│       │   │   ├── 20191100000011_courier_body_type.sqlite3.up.sql
│       │   │   ├── 20191100000012_login_request_forced.cockroach.down.sql
│       │   │   ├── 20191100000012_login_request_forced.cockroach.up.sql
│       │   │   ├── 20191100000012_login_request_forced.mysql.down.sql
│       │   │   ├── 20191100000012_login_request_forced.mysql.up.sql
│       │   │   ├── 20191100000012_login_request_forced.postgres.down.sql
│       │   │   ├── 20191100000012_login_request_forced.postgres.up.sql
│       │   │   ├── 20191100000012_login_request_forced.sqlite3.down.sql
│       │   │   ├── 20191100000012_login_request_forced.sqlite3.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.cockroach.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.cockroach.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.mysql.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.mysql.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.postgres.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.postgres.up.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.sqlite3.down.sql
│       │   │   ├── 20200317160354_create_profile_request_forms.sqlite3.up.sql
│       │   │   ├── 20200401183443_continuity_containers.cockroach.down.sql
│       │   │   ├── 20200401183443_continuity_containers.cockroach.up.sql
│       │   │   ├── 20200401183443_continuity_containers.mysql.down.sql
│       │   │   ├── 20200401183443_continuity_containers.mysql.up.sql
│       │   │   ├── 20200401183443_continuity_containers.postgres.down.sql
│       │   │   ├── 20200401183443_continuity_containers.postgres.up.sql
│       │   │   ├── 20200401183443_continuity_containers.sqlite3.down.sql
│       │   │   ├── 20200401183443_continuity_containers.sqlite3.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.cockroach.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.cockroach.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.mysql.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.mysql.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.postgres.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.postgres.up.sql
│       │   │   ├── 20200402142539_rename_profile_flows.sqlite3.down.sql
│       │   │   ├── 20200402142539_rename_profile_flows.sqlite3.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.cockroach.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.cockroach.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.mysql.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.mysql.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.postgres.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.postgres.up.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.sqlite3.down.sql
│       │   │   ├── 20200519101057_create_recovery_addresses.sqlite3.up.sql
│       │   │   ├── 20200519101058_create_recovery_addresses.mysql.down.sql
│       │   │   ├── 20200519101058_create_recovery_addresses.mysql.up.sql
│       │   │   ├── 20200601101000_create_messages.cockroach.down.sql
│       │   │   ├── 20200601101000_create_messages.cockroach.up.sql
│       │   │   ├── 20200601101000_create_messages.mysql.down.sql
│       │   │   ├── 20200601101000_create_messages.mysql.up.sql
│       │   │   ├── 20200601101000_create_messages.postgres.down.sql
│       │   │   ├── 20200601101000_create_messages.postgres.up.sql
│       │   │   ├── 20200601101000_create_messages.sqlite3.down.sql
│       │   │   ├── 20200601101000_create_messages.sqlite3.up.sql
│       │   │   ├── 20200601101001_verification.mysql.down.sql
│       │   │   ├── 20200601101001_verification.mysql.up.sql
│       │   │   ├── 20200605111551_messages.cockroach.down.sql
│       │   │   ├── 20200605111551_messages.cockroach.up.sql
│       │   │   ├── 20200605111551_messages.mysql.down.sql
│       │   │   ├── 20200605111551_messages.mysql.up.sql
│       │   │   ├── 20200605111551_messages.postgres.down.sql
│       │   │   ├── 20200605111551_messages.postgres.up.sql
│       │   │   ├── 20200605111551_messages.sqlite3.down.sql
│       │   │   ├── 20200605111551_messages.sqlite3.up.sql
│       │   │   ├── 20200607165100_settings.cockroach.down.sql
│       │   │   ├── 20200607165100_settings.cockroach.up.sql
│       │   │   ├── 20200607165100_settings.mysql.down.sql
│       │   │   ├── 20200607165100_settings.mysql.up.sql
│       │   │   ├── 20200607165100_settings.postgres.down.sql
│       │   │   ├── 20200607165100_settings.postgres.up.sql
│       │   │   ├── 20200607165100_settings.sqlite3.down.sql
│       │   │   ├── 20200607165100_settings.sqlite3.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.cockroach.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.cockroach.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.mysql.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.mysql.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.postgres.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.postgres.up.sql
│       │   │   ├── 20200705105359_rename_identities_schema.sqlite3.down.sql
│       │   │   ├── 20200705105359_rename_identities_schema.sqlite3.up.sql
│       │   │   ├── 20200810141652_flow_type.cockroach.down.sql
│       │   │   ├── 20200810141652_flow_type.cockroach.up.sql
│       │   │   ├── 20200810141652_flow_type.mysql.down.sql
│       │   │   ├── 20200810141652_flow_type.mysql.up.sql
│       │   │   ├── 20200810141652_flow_type.postgres.down.sql
│       │   │   ├── 20200810141652_flow_type.postgres.up.sql
│       │   │   ├── 20200810141652_flow_type.sqlite3.down.sql
│       │   │   ├── 20200810141652_flow_type.sqlite3.up.sql
│       │   │   ├── 20200810161022_flow_rename.cockroach.down.sql
│       │   │   ├── 20200810161022_flow_rename.cockroach.up.sql
│       │   │   ├── 20200810161022_flow_rename.mysql.down.sql
│       │   │   ├── 20200810161022_flow_rename.mysql.up.sql
│       │   │   ├── 20200810161022_flow_rename.postgres.down.sql
│       │   │   ├── 20200810161022_flow_rename.postgres.up.sql
│       │   │   ├── 20200810161022_flow_rename.sqlite3.down.sql
│       │   │   ├── 20200810161022_flow_rename.sqlite3.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.cockroach.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.cockroach.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.mysql.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.mysql.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.postgres.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.postgres.up.sql
│       │   │   ├── 20200810162450_flow_fields_rename.sqlite3.down.sql
│       │   │   ├── 20200810162450_flow_fields_rename.sqlite3.up.sql
│       │   │   ├── 20200812124254_add_session_token.cockroach.down.sql
│       │   │   ├── 20200812124254_add_session_token.cockroach.up.sql
│       │   │   ├── 20200812124254_add_session_token.mysql.down.sql
│       │   │   ├── 20200812124254_add_session_token.mysql.up.sql
│       │   │   ├── 20200812124254_add_session_token.postgres.down.sql
│       │   │   ├── 20200812124254_add_session_token.postgres.up.sql
│       │   │   ├── 20200812124254_add_session_token.sqlite3.down.sql
│       │   │   ├── 20200812124254_add_session_token.sqlite3.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.cockroach.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.cockroach.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.mysql.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.mysql.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.postgres.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.postgres.up.sql
│       │   │   ├── 20200812160551_add_session_revoke.sqlite3.down.sql
│       │   │   ├── 20200812160551_add_session_revoke.sqlite3.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.cockroach.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.cockroach.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.mysql.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.mysql.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.postgres.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.postgres.up.sql
│       │   │   ├── 20200830121710_update_recovery_token.sqlite3.down.sql
│       │   │   ├── 20200830121710_update_recovery_token.sqlite3.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.cockroach.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.mysql.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.postgres.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130642_add_verification_methods.sqlite3.down.sql
│       │   │   ├── 20200830130642_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.down.sql
│       │   │   ├── 20200830130643_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130643_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.down.sql
│       │   │   ├── 20200830130644_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130644_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.down.sql
│       │   │   ├── 20200830130645_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130645_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.cockroach.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.down.sql
│       │   │   ├── 20200830130646_add_verification_methods.mysql.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.postgres.up.sql
│       │   │   ├── 20200830130646_add_verification_methods.sqlite3.up.sql
│       │   │   ├── 20200830154602_add_verification_token.cockroach.down.sql
│       │   │   ├── 20200830154602_add_verification_token.cockroach.up.sql
│       │   │   ├── 20200830154602_add_verification_token.mysql.down.sql
│       │   │   ├── 20200830154602_add_verification_token.mysql.up.sql
│       │   │   ├── 20200830154602_add_verification_token.postgres.down.sql
│       │   │   ├── 20200830154602_add_verification_token.postgres.up.sql
│       │   │   ├── 20200830154602_add_verification_token.sqlite3.down.sql
│       │   │   ├── 20200830154602_add_verification_token.sqlite3.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.cockroach.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.cockroach.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.mysql.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.mysql.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.postgres.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.postgres.up.sql
│       │   │   ├── 20200830172221_recovery_token_expires.sqlite3.down.sql
│       │   │   ├── 20200830172221_recovery_token_expires.sqlite3.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.cockroach.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.mysql.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.postgres.up.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.down.sql
│       │   │   ├── 20200831110752_identity_verifiable_address_remove_code.sqlite3.up.sql
│       │   │   ├── 20201201161451_credential_types_values.cockroach.down.sql
│       │   │   ├── 20201201161451_credential_types_values.cockroach.up.sql
│       │   │   ├── 20201201161451_credential_types_values.mysql.down.sql
│       │   │   ├── 20201201161451_credential_types_values.mysql.up.sql
│       │   │   ├── 20201201161451_credential_types_values.postgres.down.sql
│       │   │   ├── 20201201161451_credential_types_values.postgres.up.sql
│       │   │   ├── 20201201161451_credential_types_values.sqlite3.down.sql
│       │   │   └── 20201201161451_credential_types_values.sqlite3.up.sql
│       │   └── sql/
│       │       ├── 20150100000001000000_networks.cockroach.down.sql
│       │       ├── 20150100000001000000_networks.cockroach.up.sql
│       │       ├── 20150100000001000000_networks.mysql.down.sql
│       │       ├── 20150100000001000000_networks.mysql.up.sql
│       │       ├── 20150100000001000000_networks.postgres.down.sql
│       │       ├── 20150100000001000000_networks.postgres.up.sql
│       │       ├── 20150100000001000000_networks.sqlite3.down.sql
│       │       ├── 20150100000001000000_networks.sqlite3.up.sql
│       │       ├── 20191100000001000000_identities.cockroach.down.sql
│       │       ├── 20191100000001000000_identities.cockroach.up.sql
│       │       ├── 20191100000001000000_identities.mysql.down.sql
│       │       ├── 20191100000001000000_identities.mysql.up.sql
│       │       ├── 20191100000001000000_identities.postgres.down.sql
│       │       ├── 20191100000001000000_identities.postgres.up.sql
│       │       ├── 20191100000001000000_identities.sqlite3.down.sql
│       │       ├── 20191100000001000000_identities.sqlite3.up.sql
│       │       ├── 20191100000001000001_identities.cockroach.down.sql
│       │       ├── 20191100000001000001_identities.cockroach.up.sql
│       │       ├── 20191100000001000001_identities.mysql.down.sql
│       │       ├── 20191100000001000001_identities.mysql.up.sql
│       │       ├── 20191100000001000001_identities.postgres.down.sql
│       │       ├── 20191100000001000001_identities.postgres.up.sql
│       │       ├── 20191100000001000001_identities.sqlite3.down.sql
│       │       ├── 20191100000001000001_identities.sqlite3.up.sql
│       │       ├── 20191100000001000002_identities.cockroach.down.sql
│       │       ├── 20191100000001000002_identities.cockroach.up.sql
│       │       ├── 20191100000001000002_identities.mysql.down.sql
│       │       ├── 20191100000001000002_identities.mysql.up.sql
│       │       ├── 20191100000001000002_identities.postgres.down.sql
│       │       ├── 20191100000001000002_identities.postgres.up.sql
│       │       ├── 20191100000001000002_identities.sqlite3.down.sql
│       │       ├── 20191100000001000002_identities.sqlite3.up.sql
│       │       ├── 20191100000001000003_identities.cockroach.down.sql
│       │       ├── 20191100000001000003_identities.cockroach.up.sql
│       │       ├── 20191100000001000003_identities.mysql.down.sql
│       │       ├── 20191100000001000003_identities.mysql.up.sql
│       │       ├── 20191100000001000003_identities.postgres.down.sql
│       │       ├── 20191100000001000003_identities.postgres.up.sql
│       │       ├── 20191100000001000003_identities.sqlite3.down.sql
│       │       ├── 20191100000001000003_identities.sqlite3.up.sql
│       │       ├── 20191100000001000004_identities.cockroach.down.sql
│       │       ├── 20191100000001000004_identities.cockroach.up.sql
│       │       ├── 20191100000001000004_identities.mysql.down.sql
│       │       ├── 20191100000001000004_identities.mysql.up.sql
│       │       ├── 20191100000001000004_identities.postgres.down.sql
│       │       ├── 20191100000001000004_identities.postgres.up.sql
│       │       ├── 20191100000001000004_identities.sqlite3.down.sql
│       │       ├── 20191100000001000004_identities.sqlite3.up.sql
│       │       ├── 20191100000001000005_identities.cockroach.down.sql
│       │       ├── 20191100000001000005_identities.cockroach.up.sql
│       │       ├── 20191100000001000005_identities.mysql.down.sql
│       │       ├── 20191100000001000005_identities.mysql.up.sql
│       │       ├── 20191100000001000005_identities.postgres.down.sql
│       │       ├── 20191100000001000005_identities.postgres.up.sql
│       │       ├── 20191100000001000005_identities.sqlite3.down.sql
│       │       ├── 20191100000001000005_identities.sqlite3.up.sql
│       │       ├── 20191100000002000000_requests.cockroach.down.sql
│       │       ├── 20191100000002000000_requests.cockroach.up.sql
│       │       ├── 20191100000002000000_requests.mysql.down.sql
│       │       ├── 20191100000002000000_requests.mysql.up.sql
│       │       ├── 20191100000002000000_requests.postgres.down.sql
│       │       ├── 20191100000002000000_requests.postgres.up.sql
│       │       ├── 20191100000002000000_requests.sqlite3.down.sql
│       │       ├── 20191100000002000000_requests.sqlite3.up.sql
│       │       ├── 20191100000002000001_requests.cockroach.down.sql
│       │       ├── 20191100000002000001_requests.cockroach.up.sql
│       │       ├── 20191100000002000001_requests.mysql.down.sql
│       │       ├── 20191100000002000001_requests.mysql.up.sql
│       │       ├── 20191100000002000001_requests.postgres.down.sql
│       │       ├── 20191100000002000001_requests.postgres.up.sql
│       │       ├── 20191100000002000001_requests.sqlite3.down.sql
│       │       ├── 20191100000002000001_requests.sqlite3.up.sql
│       │       ├── 20191100000002000002_requests.cockroach.down.sql
│       │       ├── 20191100000002000002_requests.cockroach.up.sql
│       │       ├── 20191100000002000002_requests.mysql.down.sql
│       │       ├── 20191100000002000002_requests.mysql.up.sql
│       │       ├── 20191100000002000002_requests.postgres.down.sql
│       │       ├── 20191100000002000002_requests.postgres.up.sql
│       │       ├── 20191100000002000002_requests.sqlite3.down.sql
│       │       ├── 20191100000002000002_requests.sqlite3.up.sql
│       │       ├── 20191100000002000003_requests.cockroach.down.sql
│       │       ├── 20191100000002000003_requests.cockroach.up.sql
│       │       ├── 20191100000002000003_requests.mysql.down.sql
│       │       ├── 20191100000002000003_requests.mysql.up.sql
│       │       ├── 20191100000002000003_requests.postgres.down.sql
│       │       ├── 20191100000002000003_requests.postgres.up.sql
│       │       ├── 20191100000002000003_requests.sqlite3.down.sql
│       │       ├── 20191100000002000003_requests.sqlite3.up.sql
│       │       ├── 20191100000002000004_requests.cockroach.down.sql
│       │       ├── 20191100000002000004_requests.cockroach.up.sql
│       │       ├── 20191100000002000004_requests.mysql.down.sql
│       │       ├── 20191100000002000004_requests.mysql.up.sql
│       │       ├── 20191100000002000004_requests.postgres.down.sql
│       │       ├── 20191100000002000004_requests.postgres.up.sql
│       │       ├── 20191100000002000004_requests.sqlite3.down.sql
│       │       ├── 20191100000002000004_requests.sqlite3.up.sql
│       │       ├── 20191100000003000000_sessions.cockroach.down.sql
│       │       ├── 20191100000003000000_sessions.cockroach.up.sql
│       │       ├── 20191100000003000000_sessions.mysql.down.sql
│       │       ├── 20191100000003000000_sessions.mysql.up.sql
│       │       ├── 20191100000003000000_sessions.postgres.down.sql
│       │       ├── 20191100000003000000_sessions.postgres.up.sql
│       │       ├── 20191100000003000000_sessions.sqlite3.down.sql
│       │       ├── 20191100000003000000_sessions.sqlite3.up.sql
│       │       ├── 20191100000004000000_errors.cockroach.down.sql
│       │       ├── 20191100000004000000_errors.cockroach.up.sql
│       │       ├── 20191100000004000000_errors.mysql.down.sql
│       │       ├── 20191100000004000000_errors.mysql.up.sql
│       │       ├── 20191100000004000000_errors.postgres.down.sql
│       │       ├── 20191100000004000000_errors.postgres.up.sql
│       │       ├── 20191100000004000000_errors.sqlite3.down.sql
│       │       ├── 20191100000004000000_errors.sqlite3.up.sql
│       │       ├── 20191100000005000000_identities.mysql.down.sql
│       │       ├── 20191100000005000000_identities.mysql.up.sql
│       │       ├── 20191100000005000001_identities.mysql.down.sql
│       │       ├── 20191100000005000001_identities.mysql.up.sql
│       │       ├── 20191100000006000000_courier.cockroach.down.sql
│       │       ├── 20191100000006000000_courier.cockroach.up.sql
│       │       ├── 20191100000006000000_courier.mysql.down.sql
│       │       ├── 20191100000006000000_courier.mysql.up.sql
│       │       ├── 20191100000006000000_courier.postgres.down.sql
│       │       ├── 20191100000006000000_courier.postgres.up.sql
│       │       ├── 20191100000006000000_courier.sqlite3.down.sql
│       │       ├── 20191100000006000000_courier.sqlite3.up.sql
│       │       ├── 20191100000007000000_errors.cockroach.down.sql
│       │       ├── 20191100000007000000_errors.cockroach.up.sql
│       │       ├── 20191100000007000000_errors.mysql.down.sql
│       │       ├── 20191100000007000000_errors.mysql.up.sql
│       │       ├── 20191100000007000000_errors.postgres.down.sql
│       │       ├── 20191100000007000000_errors.postgres.up.sql
│       │       ├── 20191100000007000000_errors.sqlite3.down.sql
│       │       ├── 20191100000007000000_errors.sqlite3.up.sql
│       │       ├── 20191100000007000001_errors.sqlite3.down.sql
│       │       ├── 20191100000007000001_errors.sqlite3.up.sql
│       │       ├── 20191100000007000002_errors.sqlite3.down.sql
│       │       ├── 20191100000007000002_errors.sqlite3.up.sql
│       │       ├── 20191100000007000003_errors.sqlite3.down.sql
│       │       ├── 20191100000007000003_errors.sqlite3.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000000_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000000_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000001_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000001_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000002_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000002_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000003_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000003_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000004_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000004_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.cockroach.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.cockroach.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.mysql.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.mysql.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.postgres.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.postgres.up.sql
│       │       ├── 20191100000008000005_selfservice_verification.sqlite3.down.sql
│       │       ├── 20191100000008000005_selfservice_verification.sqlite3.up.sql
│       │       ├── 20191100000009000000_verification.mysql.down.sql
│       │       ├── 20191100000009000000_verification.mysql.up.sql
│       │       ├── 20191100000009000001_verification.mysql.down.sql
│       │       ├── 20191100000009000001_verification.mysql.up.sql
│       │       ├── 20191100000010000000_errors.cockroach.down.sql
│       │       ├── 20191100000010000000_errors.cockroach.up.sql
│       │       ├── 20191100000010000000_errors.mysql.down.sql
│       │       ├── 20191100000010000000_errors.mysql.up.sql
│       │       ├── 20191100000010000000_errors.postgres.down.sql
│       │       ├── 20191100000010000000_errors.postgres.up.sql
│       │       ├── 20191100000010000000_errors.sqlite3.down.sql
│       │       ├── 20191100000010000000_errors.sqlite3.up.sql
│       │       ├── 20191100000010000001_errors.cockroach.down.sql
│       │       ├── 20191100000010000001_errors.cockroach.up.sql
│       │       ├── 20191100000010000001_errors.mysql.down.sql
│       │       ├── 20191100000010000001_errors.mysql.up.sql
│       │       ├── 20191100000010000001_errors.postgres.down.sql
│       │       ├── 20191100000010000001_errors.postgres.up.sql
│       │       ├── 20191100000010000001_errors.sqlite3.down.sql
│       │       ├── 20191100000010000001_errors.sqlite3.up.sql
│       │       ├── 20191100000010000002_errors.cockroach.down.sql
│       │       ├── 20191100000010000002_errors.cockroach.up.sql
│       │       ├── 20191100000010000002_errors.sqlite3.down.sql
│       │       ├── 20191100000010000002_errors.sqlite3.up.sql
│       │       ├── 20191100000010000003_errors.cockroach.down.sql
│       │       ├── 20191100000010000003_errors.cockroach.up.sql
│       │       ├── 20191100000010000003_errors.sqlite3.down.sql
│       │       ├── 20191100000010000003_errors.sqlite3.up.sql
│       │       ├── 20191100000010000004_errors.cockroach.down.sql
│       │       ├── 20191100000010000004_errors.cockroach.up.sql
│       │       ├── 20191100000010000004_errors.sqlite3.down.sql
│       │       ├── 20191100000010000004_errors.sqlite3.up.sql
│       │       ├── 20191100000011000000_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000000_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000000_courier_body_type.mysql.down.sql
│       │       ├── 20191100000011000000_courier_body_type.mysql.up.sql
│       │       ├── 20191100000011000000_courier_body_type.postgres.down.sql
│       │       ├── 20191100000011000000_courier_body_type.postgres.up.sql
│       │       ├── 20191100000011000000_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000000_courier_body_type.sqlite3.up.sql
│       │       ├── 20191100000011000001_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000001_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000001_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000001_courier_body_type.sqlite3.up.sql
│       │       ├── 20191100000011000002_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000002_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000002_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000002_courier_body_type.sqlite3.up.sql
│       │       ├── 20191100000011000003_courier_body_type.cockroach.down.sql
│       │       ├── 20191100000011000003_courier_body_type.cockroach.up.sql
│       │       ├── 20191100000011000003_courier_body_type.sqlite3.down.sql
│       │       ├── 20191100000011000003_courier_body_type.sqlite3
Download .txt
Showing preview only (1,899K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17522 symbols across 2187 files)

FILE: cipher/aes.go
  type AES (line 17) | type AES struct
    method Encrypt (line 26) | func (a *AES) Encrypt(ctx context.Context, message []byte) (string, er...
    method Decrypt (line 45) | func (a *AES) Decrypt(ctx context.Context, ciphertext string) ([]byte,...
  function NewCryptAES (line 21) | func NewCryptAES(c SecretsProvider) *AES {

FILE: cipher/chacha20.go
  type XChaCha20Poly1305 (line 19) | type XChaCha20Poly1305 struct
    method Encrypt (line 28) | func (c *XChaCha20Poly1305) Encrypt(ctx context.Context, message []byt...
    method Decrypt (line 58) | func (c *XChaCha20Poly1305) Decrypt(ctx context.Context, ciphertext st...
  function NewCryptChaCha20 (line 23) | func NewCryptChaCha20(c SecretsProvider) *XChaCha20Poly1305 {

FILE: cipher/cipher.go
  type Cipher (line 9) | type Cipher interface
  type Provider (line 23) | type Provider interface
  type SecretsProvider (line 27) | type SecretsProvider interface

FILE: cipher/cipher_test.go
  function TestCipher (line 25) | func TestCipher(t *testing.T) {
  function testAllWork (line 86) | func testAllWork(ctx context.Context, t *testing.T, c cipher.Cipher) {

FILE: cipher/noop.go
  type Noop (line 12) | type Noop struct
    method Encrypt (line 19) | func (*Noop) Encrypt(_ context.Context, message []byte) (string, error) {
    method Decrypt (line 24) | func (*Noop) Decrypt(_ context.Context, ciphertext string) ([]byte, er...
  function NewNoop (line 14) | func NewNoop() *Noop {

FILE: cmd/cleanup/root.go
  function NewCleanupCmd (line 12) | func NewCleanupCmd() *cobra.Command {
  function RegisterCommandRecursive (line 21) | func RegisterCommandRecursive(parent *cobra.Command) {

FILE: cmd/cleanup/sql.go
  function NewCleanupSQLCmd (line 21) | func NewCleanupSQLCmd() *cobra.Command {

FILE: cmd/cleanup/sql_test.go
  function Test_ExecuteCleanupFailedDSN (line 13) | func Test_ExecuteCleanupFailedDSN(t *testing.T) {

FILE: cmd/cliclient/cleanup.go
  type CleanupHandler (line 20) | type CleanupHandler struct
    method CleanupSQL (line 26) | func (h *CleanupHandler) CleanupSQL(cmd *cobra.Command, args []string)...
  function NewCleanupHandler (line 22) | func NewCleanupHandler() *CleanupHandler {

FILE: cmd/cliclient/client.go
  constant envKeyEndpoint (line 25) | envKeyEndpoint = "KRATOS_ADMIN_URL"
  constant FlagEndpoint (line 26) | FlagEndpoint   = "endpoint"
  type ContextKey (line 29) | type ContextKey
  constant ClientContextKey (line 32) | ClientContextKey ContextKey = iota + 1
  type ClientContext (line 35) | type ClientContext struct
  function NewClient (line 40) | func NewClient(cmd *cobra.Command) (*kratos.APIClient, error) {
  function RegisterClientFlags (line 80) | func RegisterClientFlags(flags *pflag.FlagSet) {

FILE: cmd/cliclient/migrate.go
  type MigrateHandler (line 25) | type MigrateHandler struct
    method getPersister (line 31) | func (h *MigrateHandler) getPersister(cmd *cobra.Command, args []strin...
    method MigrateSQLDown (line 75) | func (h *MigrateHandler) MigrateSQLDown(cmd *cobra.Command, args []str...
    method MigrateSQLStatus (line 83) | func (h *MigrateHandler) MigrateSQLStatus(cmd *cobra.Command, args []s...
    method MigrateSQLUp (line 91) | func (h *MigrateHandler) MigrateSQLUp(cmd *cobra.Command, args []strin...
  function NewMigrateHandler (line 27) | func NewMigrateHandler() *MigrateHandler {

FILE: cmd/clidoc/main.go
  function init (line 37) | func init() {
  function main (line 197) | func main() {
  function codeEncode (line 243) | func codeEncode(in interface{}) string {
  function sortMessages (line 253) | func sortMessages() []*text.Message {
  function writeMessages (line 269) | func writeMessages(path string, sortedMessages []*text.Message) error {
  function writeMessagesJson (line 304) | func writeMessagesJson(path string, sortedMessages []*text.Message) error {
  function validateAllMessages (line 323) | func validateAllMessages(path string) error {
  function generateElements (line 402) | func generateElements(messageFilePath string) error {

FILE: cmd/clidoc/main_test.go
  function TestMessages (line 12) | func TestMessages(t *testing.T) {

FILE: cmd/courier/root.go
  function NewCourierCmd (line 14) | func NewCourierCmd() *cobra.Command {
  function RegisterCommandRecursive (line 23) | func RegisterCommandRecursive(parent *cobra.Command, dOpts []driver.Regi...

FILE: cmd/courier/watch.go
  function NewWatchCmd (line 22) | func NewWatchCmd(dOpts []driver.RegistryOption) *cobra.Command {
  function StartCourier (line 39) | func StartCourier(ctx context.Context, r driver.Registry) error {
  function ServeMetrics (line 55) | func ServeMetrics(ctx context.Context, r driver.Registry, port int) error {
  function Watch (line 84) | func Watch(ctx context.Context, r driver.Registry) error {

FILE: cmd/courier/watch_test.go
  function TestStartCourier (line 19) | func TestStartCourier(t *testing.T) {

FILE: cmd/daemon/serve.go
  function init (line 49) | func init() {
  function servePublic (line 55) | func servePublic(ctx context.Context, r *driver.RegistryDefault, cmd *co...
  function serveAdmin (line 148) | func serveAdmin(ctx context.Context, r *driver.RegistryDefault, cmd *cob...
  function sqa (line 229) | func sqa(ctx context.Context, cmd *cobra.Command, d driver.Registry) *me...
  function courierTask (line 320) | func courierTask(ctx context.Context, d driver.Registry) func() error {
  function ServeAll (line 329) | func ServeAll(d *driver.RegistryDefault) func(cmd *cobra.Command, args [...

FILE: cmd/daemon/serve_test.go
  function TestMetricsRouterPaths (line 24) | func TestMetricsRouterPaths(t *testing.T) {

FILE: cmd/hashers/argon2/calibrate.go
  constant FlagStartMemory (line 26) | FlagStartMemory     = "start-memory"
  constant FlagMaxMemory (line 27) | FlagMaxMemory       = "max-memory"
  constant FlagAdjustMemory (line 28) | FlagAdjustMemory    = "adjust-memory-by"
  constant FlagStartIterations (line 29) | FlagStartIterations = "start-iterations"
  constant FlagMaxConcurrent (line 30) | FlagMaxConcurrent   = "max-concurrent"
  constant FlagRuns (line 32) | FlagRuns = "probe-runs"
  type colorWriter (line 36) | type colorWriter struct
    method Write (line 71) | func (c *colorWriter) Write(o []byte) (int, error) {
  type loadResult (line 40) | type loadResult struct
  type loadResults (line 44) | type loadResults
    method Header (line 49) | func (l loadResults) Header() []string {
    method Table (line 53) | func (l loadResults) Table() [][]string {
    method Interface (line 63) | func (l loadResults) Interface() interface{} {
    method Len (line 67) | func (l loadResults) Len() int {
  function newCalibrateCmd (line 75) | func newCalibrateCmd() *cobra.Command {
  function probe (line 314) | func probe(cmd *cobra.Command, hasher hash.Hasher, runs int, progressPri...

FILE: cmd/hashers/argon2/hash.go
  constant FlagParallel (line 19) | FlagParallel = "parallel"
  function newHashCmd (line 22) | func newHashCmd() *cobra.Command {

FILE: cmd/hashers/argon2/loadtest.go
  type resultTable (line 27) | type resultTable struct
    method Header (line 43) | func (r *resultTable) Header() []string {
    method Columns (line 47) | func (r *resultTable) Columns() []string {
    method Interface (line 58) | func (r *resultTable) Interface() interface{} {
  function newLoadTestCmd (line 62) | func newLoadTestCmd() *cobra.Command {
  function runLoadTest (line 105) | func runLoadTest(cmd *cobra.Command, conf *argon2Config, reqPerMin int) ...

FILE: cmd/hashers/argon2/root.go
  constant FlagIterations (line 24) | FlagIterations        = "iterations"
  constant FlagParallelism (line 25) | FlagParallelism       = "parallelism"
  constant FlagSaltLength (line 26) | FlagSaltLength        = "salt-length"
  constant FlagKeyLength (line 27) | FlagKeyLength         = "key-length"
  constant FlagMemory (line 28) | FlagMemory            = "memory"
  constant FlagDedicatedMemory (line 29) | FlagDedicatedMemory   = "dedicated-memory"
  constant FlagMinimalDuration (line 30) | FlagMinimalDuration   = "min-duration"
  constant FlagExpectedDeviation (line 31) | FlagExpectedDeviation = "expected-deviation"
  function RegisterCommandRecursive (line 38) | func RegisterCommandRecursive(parent *cobra.Command) {
  function registerArgon2ConstantConfigFlags (line 44) | func registerArgon2ConstantConfigFlags(flags *pflag.FlagSet, c *argon2Co...
  function registerArgon2ConfigFlags (line 57) | func registerArgon2ConfigFlags(flags *pflag.FlagSet, c *argon2Config) {
  function configProvider (line 67) | func configProvider(cmd *cobra.Command, flagConf *argon2Config) (*argon2...
  type argon2Config (line 116) | type argon2Config struct
    method Header (line 125) | func (c *argon2Config) Header() []string {
    method Columns (line 136) | func (c *argon2Config) Columns() []string {
    method Interface (line 150) | func (c *argon2Config) Interface() interface{} {
    method Config (line 155) | func (c *argon2Config) Config() *config.Config {
    method HasherArgon2 (line 172) | func (c *argon2Config) HasherArgon2() (*config.Argon2, error) {

FILE: cmd/hashers/root.go
  function NewRootCmd (line 12) | func NewRootCmd() *cobra.Command {
  function RegisterCommandRecursive (line 20) | func RegisterCommandRecursive(parent *cobra.Command) {

FILE: cmd/identities/definitions.go
  type outputIdentity (line 15) | type outputIdentity
    method Header (line 23) | func (outputIdentity) Header() []string {
    method Columns (line 27) | func (i outputIdentity) Columns() []string {
    method Interface (line 57) | func (i outputIdentity) Interface() interface{} {
  type outputIdentityCollection (line 16) | type outputIdentityCollection struct
    method Header (line 61) | func (outputIdentityCollection) Header() []string {
    method Table (line 65) | func (c outputIdentityCollection) Table() [][]string {
    method Interface (line 76) | func (c outputIdentityCollection) Interface() interface{} {
    method Len (line 83) | func (c *outputIdentityCollection) Len() int {

FILE: cmd/identities/delete.go
  function NewDeleteCmd (line 16) | func NewDeleteCmd() *cobra.Command {
  function NewDeleteIdentityCmd (line 27) | func NewDeleteIdentityCmd() *cobra.Command {

FILE: cmd/identities/delete_test.go
  function TestDeleteCmd (line 25) | func TestDeleteCmd(t *testing.T) {

FILE: cmd/identities/get.go
  constant FlagIncludeCreds (line 22) | FlagIncludeCreds = "include-credentials"
  function NewGetCmd (line 25) | func NewGetCmd() *cobra.Command {
  function NewGetIdentityCmd (line 36) | func NewGetIdentityCmd() *cobra.Command {

FILE: cmd/identities/get_test.go
  function TestGetCmd (line 23) | func TestGetCmd(t *testing.T) {

FILE: cmd/identities/helpers.go
  function parseIdentities (line 17) | func parseIdentities(raw []byte) (rawIdentities []string) {
  function readIdentities (line 29) | func readIdentities(cmd *cobra.Command, args []string) (map[string]strin...

FILE: cmd/identities/helpers_test.go
  function setup (line 24) | func setup(t *testing.T, newCmd func() *cobra.Command) (*driver.Registry...
  function makeIdentities (line 40) | func makeIdentities(t *testing.T, reg driver.Registry, n int) (is []*ide...

FILE: cmd/identities/import.go
  function NewImportCmd (line 19) | func NewImportCmd() *cobra.Command {
  function NewImportIdentitiesCmd (line 31) | func NewImportIdentitiesCmd() *cobra.Command {

FILE: cmd/identities/import_test.go
  function TestImportCmd (line 26) | func TestImportCmd(t *testing.T) {

FILE: cmd/identities/list.go
  function NewListCmd (line 17) | func NewListCmd() *cobra.Command {
  function NewListIdentitiesCmd (line 29) | func NewListIdentitiesCmd() *cobra.Command {

FILE: cmd/identities/list_test.go
  function TestListCmd (line 22) | func TestListCmd(t *testing.T) {

FILE: cmd/identities/validate.go
  function NewValidateCmd (line 27) | func NewValidateCmd() *cobra.Command {
  function NewValidateIdentityCmd (line 39) | func NewValidateIdentityCmd() *cobra.Command {
  constant createIdentityPath (line 76) | createIdentityPath = "api.json#/components/schemas/createIdentityBody"
  function ValidateIdentity (line 83) | func ValidateIdentity(cmd *cobra.Command, src, i string, getRemoteSchema...

FILE: cmd/identities/validate_test.go
  function TestValidateIdentity (line 19) | func TestValidateIdentity(t *testing.T) {

FILE: cmd/jsonnet/format.go
  function NewFormatCmd (line 18) | func NewFormatCmd() *cobra.Command {
  function NewJsonnetFormatCmd (line 27) | func NewJsonnetFormatCmd() *cobra.Command {

FILE: cmd/jsonnet/lint.go
  function NewLintCmd (line 20) | func NewLintCmd() *cobra.Command {
  function NewJsonnetLintCmd (line 29) | func NewJsonnetLintCmd() *cobra.Command {

FILE: cmd/jsonnet/root.go
  constant GlobHelp (line 6) | GlobHelp = `Glob Syntax:

FILE: cmd/migrate/root.go
  function NewMigrateCmd (line 15) | func NewMigrateCmd() *cobra.Command {
  function RegisterCommandRecursive (line 22) | func RegisterCommandRecursive(parent *cobra.Command) {
  function NewMigrateSQLDownCmd (line 31) | func NewMigrateSQLDownCmd(opts ...driver.RegistryOption) *cobra.Command {
  function NewMigrateSQLUpCmd (line 37) | func NewMigrateSQLUpCmd(opts ...driver.RegistryOption) *cobra.Command {
  function NewMigrateSQLStatusCmd (line 43) | func NewMigrateSQLStatusCmd(opts ...driver.RegistryOption) *cobra.Command {

FILE: cmd/migrate/sql.go
  function NewMigrateSQLCmd (line 14) | func NewMigrateSQLCmd(opts ...driver.RegistryOption) *cobra.Command {

FILE: cmd/remote/root.go
  function RegisterCommandRecursive (line 19) | func RegisterCommandRecursive(parent *cobra.Command) {
  function init (line 26) | func init() {

FILE: cmd/remote/status.go
  type statusState (line 14) | type statusState struct
    method Header (line 19) | func (s *statusState) Header() []string {
    method Columns (line 23) | func (s *statusState) Columns() []string {
    method Interface (line 37) | func (s *statusState) Interface() interface{} {

FILE: cmd/remote/version.go
  type versionValue (line 13) | type versionValue struct
    method Header (line 17) | func (v *versionValue) Header() []string {
    method Columns (line 21) | func (v *versionValue) Columns() []string {
    method Interface (line 25) | func (v *versionValue) Interface() interface{} {

FILE: cmd/root.go
  function NewRootCmd (line 28) | func NewRootCmd(driverOpts ...driver.RegistryOption) (cmd *cobra.Command) {
  function Execute (line 57) | func Execute() int {

FILE: cmd/root_test.go
  function TestUsageStrings (line 12) | func TestUsageStrings(t *testing.T) {

FILE: cmd/serve/root.go
  function NewServeCmd (line 16) | func NewServeCmd(dOpts ...driver.RegistryOption) (serveCmd *cobra.Comman...
  function RegisterCommandRecursive (line 56) | func RegisterCommandRecursive(parent *cobra.Command, dOpts []driver.Regi...

FILE: cmd/serve/root_test.go
  function TestServe (line 12) | func TestServe(t *testing.T) {
  function TestServeTLSBase64 (line 16) | func TestServeTLSBase64(t *testing.T) {
  function TestServeTLSPaths (line 31) | func TestServeTLSPaths(t *testing.T) {

FILE: continuity/container.go
  type Container (line 19) | type Container struct
    method UTC (line 38) | func (c *Container) UTC() *Container {
    method TableName (line 45) | func (Container) TableName() string { return "continuity_containers" }
    method Valid (line 57) | func (c *Container) Valid(identity uuid.UUID) error {
  function NewContainer (line 47) | func NewContainer(name string, o managerOptions) *Container {

FILE: continuity/container_test.go
  function TestContainer (line 17) | func TestContainer(t *testing.T) {

FILE: continuity/manager.go
  type ManagementProvider (line 19) | type ManagementProvider interface
  type Manager (line 23) | type Manager interface
  type managerOptions (line 29) | type managerOptions struct
  type ManagerOption (line 37) | type ManagerOption
  function newManagerOptions (line 39) | func newManagerOptions(opts []ManagerOption) (*managerOptions, error) {
  function WithIdentity (line 51) | func WithIdentity(i *identity.Identity) ManagerOption {
  function WithLifespan (line 60) | func WithLifespan(ttl time.Duration) ManagerOption {
  function WithPayload (line 67) | func WithPayload(payload interface{}) ManagerOption {
  function WithExpireInsteadOfDelete (line 79) | func WithExpireInsteadOfDelete(duration time.Duration) ManagerOption {

FILE: continuity/manager_cookie.go
  constant CookieName (line 29) | CookieName = "ory_kratos_continuity"
  type managerCookieDependencies (line 32) | type managerCookieDependencies interface
  type ManagerCookie (line 38) | type ManagerCookie struct
    method Pause (line 47) | func (m *ManagerCookie) Pause(ctx context.Context, w http.ResponseWrit...
    method Continue (line 73) | func (m *ManagerCookie) Continue(ctx context.Context, w http.ResponseW...
    method sessionID (line 118) | func (m *ManagerCookie) sessionID(ctx context.Context, w http.Response...
    method container (line 134) | func (m *ManagerCookie) container(ctx context.Context, w http.Response...
    method Abort (line 158) | func (m ManagerCookie) Abort(ctx context.Context, w http.ResponseWrite...
  function NewManagerCookie (line 43) | func NewManagerCookie(d managerCookieDependencies) *ManagerCookie {

FILE: continuity/manager_options_test.go
  function TestManagerOptions (line 15) | func TestManagerOptions(t *testing.T) {

FILE: continuity/manager_test.go
  type persisterTestCase (line 31) | type persisterTestCase struct
  type persisterTestPayload (line 38) | type persisterTestPayload struct
  function TestManager (line 42) | func TestManager(t *testing.T) {

FILE: continuity/persistence.go
  type PersistenceProvider (line 13) | type PersistenceProvider interface
  type Persister (line 17) | type Persister interface

FILE: continuity/test/persistence.go
  function TestPersister (line 26) | func TestPersister(ctx context.Context, p interface {

FILE: corpx/faker.go
  function RegisterFakes (line 26) | func RegisterFakes() {
  function registerFakes (line 30) | func registerFakes() {

FILE: courier/channel.go
  type Channel (line 10) | type Channel interface

FILE: courier/courier.go
  type Dependencies (line 24) | type Dependencies interface
  type Courier (line 33) | type Courier interface
  type Provider (line 43) | type Provider interface
  type ConfigProvider (line 47) | type ConfigProvider interface
  type courier (line 51) | type courier struct
    method FailOnDispatchError (line 71) | func (c *courier) FailOnDispatchError() {
    method Work (line 75) | func (c *courier) Work(ctx context.Context) error {
    method UseBackoff (line 92) | func (c *courier) UseBackoff(b backoff.BackOff) {
    method watchMessages (line 96) | func (c *courier) watchMessages(ctx context.Context, errChan chan erro...
  function NewCourier (line 59) | func NewCourier(ctx context.Context, deps Dependencies) (Courier, error) {
  function NewCourierWithCustomTemplates (line 63) | func NewCourierWithCustomTemplates(_ context.Context, deps Dependencies,...

FILE: courier/courier_dispatcher.go
  method channels (line 18) | func (c *courier) channels(ctx context.Context, id string) (Channel, err...
  method DispatchMessage (line 45) | func (c *courier) DispatchMessage(ctx context.Context, msg Message) (err...
  method DispatchQueue (line 97) | func (c *courier) DispatchQueue(ctx context.Context) (err error) {

FILE: courier/courier_dispatcher_test.go
  function queueNewMessage (line 22) | func queueNewMessage(t *testing.T, c courier.Courier) uuid.UUID {
  function TestDispatchMessageWithInvalidSMTP (line 33) | func TestDispatchMessageWithInvalidSMTP(t *testing.T) {
  function TestDispatchMessage (line 58) | func TestDispatchMessage(t *testing.T) {
  function TestDispatchQueue (line 81) | func TestDispatchQueue(t *testing.T) {

FILE: courier/email_templates.go
  type Template (line 19) | type Template interface
  type EmailTemplate (line 24) | type EmailTemplate interface
  type RequestHeadersCarrier (line 32) | type RequestHeadersCarrier interface
  function NewEmailTemplateFromMessage (line 37) | func NewEmailTemplateFromMessage(d template.Dependencies, msg Message) (...

FILE: courier/email_templates_test.go
  function TestNewEmailTemplateFromMessage (line 20) | func TestNewEmailTemplateFromMessage(t *testing.T) {

FILE: courier/handler.go
  constant AdminRouteCourier (line 23) | AdminRouteCourier      = "/courier"
  constant AdminRouteListMessages (line 24) | AdminRouteListMessages = AdminRouteCourier + "/messages"
  constant AdminRouteGetMessage (line 25) | AdminRouteGetMessage   = AdminRouteCourier + "/messages/{msgID}"
  type handlerDependencies (line 29) | type handlerDependencies interface
  type Handler (line 36) | type Handler struct
    method RegisterPublicRoutes (line 48) | func (h *Handler) RegisterPublicRoutes(public *httprouterx.RouterPubli...
    method RegisterAdminRoutes (line 54) | func (h *Handler) RegisterAdminRoutes(admin *httprouterx.RouterAdmin) {
    method listCourierMessages (line 116) | func (h *Handler) listCourierMessages(w http.ResponseWriter, r *http.R...
    method getCourierMessage (line 200) | func (h *Handler) getCourierMessage(w http.ResponseWriter, r *http.Req...
  type HandlerProvider (line 39) | type HandlerProvider interface
  function NewHandler (line 44) | func NewHandler(r handlerDependencies) *Handler {
  type listCourierMessagesResponse (line 65) | type listCourierMessagesResponse struct
  type ListCourierMessagesParameters (line 77) | type ListCourierMessagesParameters struct
  function parseMessagesFilter (line 142) | func parseMessagesFilter(r *http.Request, keys [][32]byte) (ListCourierM...
  type getCourierMessage (line 171) | type getCourierMessage struct

FILE: courier/handler_test.go
  function TestHandler (line 34) | func TestHandler(t *testing.T) {

FILE: courier/http_channel.go
  type httpChannel (line 25) | type httpChannel struct
    method ID (line 49) | func (c *httpChannel) ID() string {
    method Dispatch (line 65) | func (c *httpChannel) Dispatch(ctx context.Context, msg Message) (err ...
    method tryPopulateHTMLBody (line 135) | func (c *httpChannel) tryPopulateHTMLBody(ctx context.Context, tmpl Te...
  type channelDependencies (line 30) | type channelDependencies interface
  function newHttpChannel (line 41) | func newHttpChannel(id string, requestConfig *request.Config, d channelD...
  type httpDataModel (line 53) | type httpDataModel struct
  function newTemplate (line 147) | func newTemplate(d template.Dependencies, msg Message) (Template, error) {

FILE: courier/http_test.go
  function TestQueueHTTPEmail (line 24) | func TestQueueHTTPEmail(t *testing.T) {

FILE: courier/message.go
  type MessageStatus (line 23) | type MessageStatus
    method String (line 54) | func (ms MessageStatus) String() string {
    method IsValid (line 69) | func (ms MessageStatus) IsValid() error {
    method MarshalJSON (line 78) | func (ms MessageStatus) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 85) | func (ms *MessageStatus) UnmarshalJSON(data []byte) error {
  constant MessageStatusQueued (line 26) | MessageStatusQueued MessageStatus = iota + 1
  constant MessageStatusSent (line 27) | MessageStatusSent
  constant MessageStatusProcessing (line 28) | MessageStatusProcessing
  constant MessageStatusAbandoned (line 29) | MessageStatusAbandoned
  constant messageStatusQueuedText (line 33) | messageStatusQueuedText     = "queued"
  constant messageStatusSentText (line 34) | messageStatusSentText       = "sent"
  constant messageStatusProcessingText (line 35) | messageStatusProcessingText = "processing"
  constant messageStatusAbandonedText (line 36) | messageStatusAbandonedText  = "abandoned"
  function ToMessageStatus (line 39) | func ToMessageStatus(str string) (MessageStatus, error) {
  type MessageType (line 105) | type MessageType
    method String (line 128) | func (mt MessageType) String() string {
    method IsValid (line 139) | func (mt MessageType) IsValid() error {
    method MarshalJSON (line 148) | func (mt MessageType) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 155) | func (mt *MessageType) UnmarshalJSON(data []byte) error {
  constant MessageTypeEmail (line 108) | MessageTypeEmail MessageType = iota + 1
  constant MessageTypeSMS (line 109) | MessageTypeSMS
  constant messageTypeEmailText (line 113) | messageTypeEmailText = "email"
  constant messageTypeSMSText (line 114) | messageTypeSMSText   = "sms"
  function ToMessageType (line 117) | func ToMessageType(str string) (MessageType, error) {
  type Message (line 171) | type Message struct
    method PageToken (line 208) | func (m Message) PageToken() keysetpagination.PageToken {
    method DefaultPageToken (line 221) | func (m Message) DefaultPageToken() keysetpagination.PageToken {
    method TableName (line 225) | func (m Message) TableName() string { return "courier_messages" }
    method GetID (line 226) | func (m *Message) GetID() uuid.UUID { return m.ID }

FILE: courier/message_dispatch.go
  type CourierMessageDispatchStatus (line 15) | type CourierMessageDispatchStatus
  constant CourierMessageDispatchStatusFailed (line 18) | CourierMessageDispatchStatusFailed  CourierMessageDispatchStatus = "failed"
  constant CourierMessageDispatchStatusSuccess (line 19) | CourierMessageDispatchStatusSuccess CourierMessageDispatchStatus = "succ...
  type MessageDispatch (line 26) | type MessageDispatch struct
    method TableName (line 53) | func (MessageDispatch) TableName() string {

FILE: courier/message_test.go
  function TestMessageStatusValidity (line 15) | func TestMessageStatusValidity(t *testing.T) {
  function TestToMessageStatus (line 20) | func TestToMessageStatus(t *testing.T) {
  function TestMessageTypeValidity (line 40) | func TestMessageTypeValidity(t *testing.T) {
  function TestToMessageType (line 45) | func TestToMessageType(t *testing.T) {

FILE: courier/persistence.go
  type Persister (line 18) | type Persister interface
  type PersistenceProvider (line 40) | type PersistenceProvider interface

FILE: courier/sms.go
  method QueueSMS (line 13) | func (c *courier) QueueSMS(ctx context.Context, t SMSTemplate) (uuid.UUI...

FILE: courier/sms_templates.go
  type SMSTemplate (line 16) | type SMSTemplate interface
  function NewSMSTemplateFromMessage (line 22) | func NewSMSTemplateFromMessage(d template.Dependencies, m Message) (SMST...

FILE: courier/sms_templates_test.go
  function TestSMSTemplateType (line 20) | func TestSMSTemplateType(t *testing.T) {
  function TestNewSMSTemplateFromMessage (line 31) | func TestNewSMSTemplateFromMessage(t *testing.T) {

FILE: courier/sms_test.go
  function TestQueueSMS (line 24) | func TestQueueSMS(t *testing.T) {
  function TestDisallowedInternalNetwork (line 110) | func TestDisallowedInternalNetwork(t *testing.T) {

FILE: courier/smtp.go
  type SMTPClient (line 25) | type SMTPClient struct
  function NewSMTPClient (line 29) | func NewSMTPClient(deps Dependencies, cfg *config.SMTPConfig) (*SMTPClie...
  method QueueEmail (line 99) | func (c *courier) QueueEmail(ctx context.Context, t EmailTemplate) (uuid...

FILE: courier/smtp_channel.go
  type SMTPChannel (line 25) | type SMTPChannel struct
    method ID (line 51) | func (c *SMTPChannel) ID() string {
    method Dispatch (line 55) | func (c *SMTPChannel) Dispatch(ctx context.Context, msg Message) (err ...
  function NewSMTPChannel (line 35) | func NewSMTPChannel(deps Dependencies, cfg *config.SMTPConfig) (*SMTPCha...
  function NewSMTPChannelWithCustomTemplates (line 39) | func NewSMTPChannelWithCustomTemplates(deps Dependencies, cfg *config.SM...

FILE: courier/smtp_test.go
  function TestNewSMTPClientPreventLeak (line 36) | func TestNewSMTPClientPreventLeak(t *testing.T) {
  function TestNewSMTP (line 51) | func TestNewSMTP(t *testing.T) {
  function TestQueueEmail (line 104) | func TestQueueEmail(t *testing.T) {
  function generateTestClientCert (line 176) | func generateTestClientCert(t *testing.T) (clientCert *os.File, clientKe...

FILE: courier/template/email/login_code_valid.go
  type LoginCodeValid (line 17) | type LoginCodeValid struct
    method EmailRecipient (line 36) | func (t *LoginCodeValid) EmailRecipient() (string, error) {
    method EmailSubject (line 40) | func (t *LoginCodeValid) EmailSubject(ctx context.Context) (string, er...
    method EmailBody (line 46) | func (t *LoginCodeValid) EmailBody(ctx context.Context) (string, error) {
    method EmailBodyPlaintext (line 50) | func (t *LoginCodeValid) EmailBodyPlaintext(ctx context.Context) (stri...
    method MarshalJSON (line 54) | func (t *LoginCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 58) | func (t *LoginCodeValid) TemplateType() template.TemplateType {
    method RequestHeaders (line 61) | func (t *LoginCodeValid) RequestHeaders() http.Header {
  type LoginCodeValidModel (line 21) | type LoginCodeValidModel struct
  function NewLoginCodeValid (line 32) | func NewLoginCodeValid(d template.Dependencies, m *LoginCodeValidModel) ...

FILE: courier/template/email/login_code_valid_test.go
  function TestLoginCodeValid (line 16) | func TestLoginCodeValid(t *testing.T) {

FILE: courier/template/email/recovery_code_invalid.go
  type RecoveryCodeInvalid (line 16) | type RecoveryCodeInvalid struct
    method EmailRecipient (line 31) | func (t *RecoveryCodeInvalid) EmailRecipient() (string, error) {
    method EmailSubject (line 35) | func (t *RecoveryCodeInvalid) EmailSubject(ctx context.Context) (strin...
    method EmailBody (line 44) | func (t *RecoveryCodeInvalid) EmailBody(ctx context.Context) (string, ...
    method EmailBodyPlaintext (line 48) | func (t *RecoveryCodeInvalid) EmailBodyPlaintext(ctx context.Context) ...
    method MarshalJSON (line 52) | func (t *RecoveryCodeInvalid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 56) | func (t *RecoveryCodeInvalid) TemplateType() template.TemplateType {
  type RecoveryCodeInvalidModel (line 20) | type RecoveryCodeInvalidModel struct
  function NewRecoveryCodeInvalid (line 27) | func NewRecoveryCodeInvalid(d template.Dependencies, m *RecoveryCodeInva...

FILE: courier/template/email/recovery_code_invalid_test.go
  function TestRecoveryCodeInvalid (line 16) | func TestRecoveryCodeInvalid(t *testing.T) {

FILE: courier/template/email/recovery_code_valid.go
  type RecoveryCodeValid (line 17) | type RecoveryCodeValid struct
    method EmailRecipient (line 36) | func (t *RecoveryCodeValid) EmailRecipient() (string, error) {
    method EmailSubject (line 40) | func (t *RecoveryCodeValid) EmailSubject(ctx context.Context) (string,...
    method EmailBody (line 46) | func (t *RecoveryCodeValid) EmailBody(ctx context.Context) (string, er...
    method EmailBodyPlaintext (line 50) | func (t *RecoveryCodeValid) EmailBodyPlaintext(ctx context.Context) (s...
    method MarshalJSON (line 54) | func (t *RecoveryCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 58) | func (t *RecoveryCodeValid) TemplateType() template.TemplateType {
    method RequestHeaders (line 61) | func (t *RecoveryCodeValid) RequestHeaders() http.Header {
  type RecoveryCodeValidModel (line 21) | type RecoveryCodeValidModel struct
  function NewRecoveryCodeValid (line 32) | func NewRecoveryCodeValid(d template.Dependencies, m *RecoveryCodeValidM...

FILE: courier/template/email/recovery_code_valid_test.go
  function TestRecoveryCodeValid (line 16) | func TestRecoveryCodeValid(t *testing.T) {

FILE: courier/template/email/recovery_invalid.go
  type RecoveryInvalid (line 16) | type RecoveryInvalid struct
    method EmailRecipient (line 31) | func (t *RecoveryInvalid) EmailRecipient() (string, error) {
    method EmailSubject (line 35) | func (t *RecoveryInvalid) EmailSubject(ctx context.Context) (string, e...
    method EmailBody (line 41) | func (t *RecoveryInvalid) EmailBody(ctx context.Context) (string, erro...
    method EmailBodyPlaintext (line 45) | func (t *RecoveryInvalid) EmailBodyPlaintext(ctx context.Context) (str...
    method MarshalJSON (line 49) | func (t *RecoveryInvalid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 53) | func (t *RecoveryInvalid) TemplateType() template.TemplateType {
  type RecoveryInvalidModel (line 20) | type RecoveryInvalidModel struct
  function NewRecoveryInvalid (line 27) | func NewRecoveryInvalid(d template.Dependencies, m *RecoveryInvalidModel...

FILE: courier/template/email/recovery_invalid_test.go
  function TestRecoverInvalid (line 16) | func TestRecoverInvalid(t *testing.T) {

FILE: courier/template/email/recovery_valid.go
  type RecoveryValid (line 16) | type RecoveryValid struct
    method EmailRecipient (line 34) | func (t *RecoveryValid) EmailRecipient() (string, error) {
    method EmailSubject (line 38) | func (t *RecoveryValid) EmailSubject(ctx context.Context) (string, err...
    method EmailBody (line 44) | func (t *RecoveryValid) EmailBody(ctx context.Context) (string, error) {
    method EmailBodyPlaintext (line 48) | func (t *RecoveryValid) EmailBodyPlaintext(ctx context.Context) (strin...
    method MarshalJSON (line 52) | func (t *RecoveryValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 56) | func (t *RecoveryValid) TemplateType() template.TemplateType {
  type RecoveryValidModel (line 20) | type RecoveryValidModel struct
  function NewRecoveryValid (line 30) | func NewRecoveryValid(d template.Dependencies, m *RecoveryValidModel) *R...

FILE: courier/template/email/recovery_valid_test.go
  function TestRecoverValid (line 16) | func TestRecoverValid(t *testing.T) {

FILE: courier/template/email/registration_code_valid.go
  type RegistrationCodeValid (line 17) | type RegistrationCodeValid struct
    method EmailRecipient (line 36) | func (t *RegistrationCodeValid) EmailRecipient() (string, error) {
    method EmailSubject (line 40) | func (t *RegistrationCodeValid) EmailSubject(ctx context.Context) (str...
    method EmailBody (line 46) | func (t *RegistrationCodeValid) EmailBody(ctx context.Context) (string...
    method EmailBodyPlaintext (line 50) | func (t *RegistrationCodeValid) EmailBodyPlaintext(ctx context.Context...
    method MarshalJSON (line 54) | func (t *RegistrationCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 58) | func (t *RegistrationCodeValid) TemplateType() template.TemplateType {
    method RequestHeaders (line 61) | func (t *RegistrationCodeValid) RequestHeaders() http.Header {
  type RegistrationCodeValidModel (line 21) | type RegistrationCodeValidModel struct
  function NewRegistrationCodeValid (line 32) | func NewRegistrationCodeValid(d template.Dependencies, m *RegistrationCo...

FILE: courier/template/email/registration_code_valid_test.go
  function TestRegistrationCodeValid (line 16) | func TestRegistrationCodeValid(t *testing.T) {

FILE: courier/template/email/stub.go
  type TestStub (line 14) | type TestStub struct
    method EmailRecipient (line 29) | func (t *TestStub) EmailRecipient() (string, error)              { ret...
    method EmailSubject (line 30) | func (t *TestStub) EmailSubject(context.Context) (string, error) { ret...
    method EmailBody (line 32) | func (t *TestStub) EmailBody(ctx context.Context) (string, error) {
    method EmailBodyPlaintext (line 39) | func (t *TestStub) EmailBodyPlaintext(context.Context) (string, error)...
    method MarshalJSON (line 40) | func (t *TestStub) MarshalJSON() ([]byte, error)                      ...
    method TemplateType (line 41) | func (t *TestStub) TemplateType() template.TemplateType               ...
  type TestStubModel (line 17) | type TestStubModel struct
  function NewTestStub (line 25) | func NewTestStub(m *TestStubModel) *TestStub {

FILE: courier/template/email/verification_code_invalid.go
  type VerificationCodeInvalid (line 16) | type VerificationCodeInvalid struct
    method EmailRecipient (line 31) | func (t *VerificationCodeInvalid) EmailRecipient() (string, error) {
    method EmailSubject (line 35) | func (t *VerificationCodeInvalid) EmailSubject(ctx context.Context) (s...
    method EmailBody (line 49) | func (t *VerificationCodeInvalid) EmailBody(ctx context.Context) (stri...
    method EmailBodyPlaintext (line 61) | func (t *VerificationCodeInvalid) EmailBodyPlaintext(ctx context.Conte...
    method MarshalJSON (line 73) | func (t *VerificationCodeInvalid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 77) | func (t *VerificationCodeInvalid) TemplateType() template.TemplateType {
  type VerificationCodeInvalidModel (line 20) | type VerificationCodeInvalidModel struct
  function NewVerificationCodeInvalid (line 27) | func NewVerificationCodeInvalid(d template.Dependencies, m *Verification...

FILE: courier/template/email/verification_code_invalid_test.go
  function TestVerifyCodeInvalid (line 16) | func TestVerifyCodeInvalid(t *testing.T) {

FILE: courier/template/email/verification_code_valid.go
  type VerificationCodeValid (line 16) | type VerificationCodeValid struct
    method EmailRecipient (line 35) | func (t *VerificationCodeValid) EmailRecipient() (string, error) {
    method EmailSubject (line 39) | func (t *VerificationCodeValid) EmailSubject(ctx context.Context) (str...
    method EmailBody (line 53) | func (t *VerificationCodeValid) EmailBody(ctx context.Context) (string...
    method EmailBodyPlaintext (line 64) | func (t *VerificationCodeValid) EmailBodyPlaintext(ctx context.Context...
    method MarshalJSON (line 75) | func (t *VerificationCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 79) | func (t *VerificationCodeValid) TemplateType() template.TemplateType {
  type VerificationCodeValidModel (line 20) | type VerificationCodeValidModel struct
  function NewVerificationCodeValid (line 31) | func NewVerificationCodeValid(d template.Dependencies, m *VerificationCo...

FILE: courier/template/email/verification_code_valid_test.go
  function TestVerifyCodeValid (line 16) | func TestVerifyCodeValid(t *testing.T) {

FILE: courier/template/email/verification_invalid.go
  type VerificationInvalid (line 16) | type VerificationInvalid struct
    method EmailRecipient (line 31) | func (t *VerificationInvalid) EmailRecipient() (string, error) {
    method EmailSubject (line 35) | func (t *VerificationInvalid) EmailSubject(ctx context.Context) (strin...
    method EmailBody (line 41) | func (t *VerificationInvalid) EmailBody(ctx context.Context) (string, ...
    method EmailBodyPlaintext (line 45) | func (t *VerificationInvalid) EmailBodyPlaintext(ctx context.Context) ...
    method MarshalJSON (line 49) | func (t *VerificationInvalid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 53) | func (t *VerificationInvalid) TemplateType() template.TemplateType {
  type VerificationInvalidModel (line 20) | type VerificationInvalidModel struct
  function NewVerificationInvalid (line 27) | func NewVerificationInvalid(d template.Dependencies, m *VerificationInva...

FILE: courier/template/email/verification_invalid_test.go
  function TestVerifyInvalid (line 16) | func TestVerifyInvalid(t *testing.T) {

FILE: courier/template/email/verification_valid.go
  type VerificationValid (line 16) | type VerificationValid struct
    method EmailRecipient (line 34) | func (t *VerificationValid) EmailRecipient() (string, error) {
    method EmailSubject (line 38) | func (t *VerificationValid) EmailSubject(ctx context.Context) (string,...
    method EmailBody (line 44) | func (t *VerificationValid) EmailBody(ctx context.Context) (string, er...
    method EmailBodyPlaintext (line 48) | func (t *VerificationValid) EmailBodyPlaintext(ctx context.Context) (s...
    method MarshalJSON (line 52) | func (t *VerificationValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 56) | func (t *VerificationValid) TemplateType() template.TemplateType {
  type VerificationValidModel (line 20) | type VerificationValidModel struct
  function NewVerificationValid (line 30) | func NewVerificationValid(d template.Dependencies, m *VerificationValidM...

FILE: courier/template/email/verification_valid_test.go
  function TestVerifyValid (line 16) | func TestVerifyValid(t *testing.T) {

FILE: courier/template/load_template.go
  type Template (line 29) | type Template interface
  type templateDependencies (line 33) | type templateDependencies interface
  function loadBuiltInTemplate (line 37) | func loadBuiltInTemplate(filesystem fs.FS, name string, html bool) (Temp...
  function loadRemoteTemplate (line 79) | func loadRemoteTemplate(ctx context.Context, d templateDependencies, url...
  function loadTemplate (line 107) | func loadTemplate(filesystem fs.FS, name, pattern string, html bool) (Te...
  function LoadText (line 148) | func LoadText(ctx context.Context, d templateDependencies, filesystem fs...
  function LoadHTML (line 170) | func LoadHTML(ctx context.Context, d templateDependencies, filesystem fs...

FILE: courier/template/load_template_test.go
  function TestLoadTextTemplate (line 29) | func TestLoadTextTemplate(t *testing.T) {

FILE: courier/template/sms/login_code_valid.go
  type LoginCodeValid (line 16) | type LoginCodeValid struct
    method PhoneNumber (line 35) | func (t *LoginCodeValid) PhoneNumber() (string, error) {
    method SMSBody (line 39) | func (t *LoginCodeValid) SMSBody(ctx context.Context) (string, error) {
    method MarshalJSON (line 51) | func (t *LoginCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 55) | func (t *LoginCodeValid) TemplateType() template.TemplateType {
    method RequestHeaders (line 58) | func (t *LoginCodeValid) RequestHeaders() http.Header {
  type LoginCodeValidModel (line 20) | type LoginCodeValidModel struct
  function NewLoginCodeValid (line 31) | func NewLoginCodeValid(d template.Dependencies, m *LoginCodeValidModel) ...

FILE: courier/template/sms/login_code_valid_test.go
  function TestNewLoginCodeValid (line 18) | func TestNewLoginCodeValid(t *testing.T) {

FILE: courier/template/sms/recovery_code.go
  type RecoveryCodeValid (line 16) | type RecoveryCodeValid struct
    method PhoneNumber (line 37) | func (t *RecoveryCodeValid) PhoneNumber() (string, error) {
    method SMSBody (line 41) | func (t *RecoveryCodeValid) SMSBody(ctx context.Context) (string, erro...
    method MarshalJSON (line 53) | func (t *RecoveryCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 56) | func (t *RecoveryCodeValid) TemplateType() template.TemplateType {
    method RequestHeaders (line 59) | func (t *RecoveryCodeValid) RequestHeaders() http.Header {
  type RecoveryCodeValidModel (line 21) | type RecoveryCodeValidModel struct
  function NewRecoveryCodeValid (line 33) | func NewRecoveryCodeValid(d template.Dependencies, m *RecoveryCodeValidM...

FILE: courier/template/sms/registration_code_valid.go
  type RegistrationCodeValid (line 16) | type RegistrationCodeValid struct
    method PhoneNumber (line 35) | func (t *RegistrationCodeValid) PhoneNumber() (string, error) {
    method SMSBody (line 39) | func (t *RegistrationCodeValid) SMSBody(ctx context.Context) (string, ...
    method MarshalJSON (line 51) | func (t *RegistrationCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 55) | func (t *RegistrationCodeValid) TemplateType() template.TemplateType {
    method RequestHeaders (line 59) | func (t *RegistrationCodeValid) RequestHeaders() http.Header {
  type RegistrationCodeValidModel (line 20) | type RegistrationCodeValidModel struct
  function NewRegistrationCodeValid (line 31) | func NewRegistrationCodeValid(d template.Dependencies, m *RegistrationCo...

FILE: courier/template/sms/registration_code_valid_test.go
  function TestNewRegistrationCodeValid (line 18) | func TestNewRegistrationCodeValid(t *testing.T) {

FILE: courier/template/sms/stub.go
  type TestStub (line 14) | type TestStub struct
    method PhoneNumber (line 24) | func (t *TestStub) PhoneNumber() (string, error)            { return t...
    method SMSBody (line 25) | func (t *TestStub) SMSBody(context.Context) (string, error) { return t...
    method MarshalJSON (line 26) | func (t *TestStub) MarshalJSON() ([]byte, error)            { return j...
    method TemplateType (line 27) | func (t *TestStub) TemplateType() template.TemplateType     { return t...
  type TestStubModel (line 16) | type TestStubModel struct
  function NewTestStub (line 23) | func NewTestStub(m *TestStubModel) *TestStub                { return &Te...

FILE: courier/template/sms/verification_code.go
  type VerificationCodeValid (line 15) | type VerificationCodeValid struct
    method PhoneNumber (line 34) | func (t *VerificationCodeValid) PhoneNumber() (string, error) {
    method SMSBody (line 38) | func (t *VerificationCodeValid) SMSBody(ctx context.Context) (string, ...
    method MarshalJSON (line 50) | func (t *VerificationCodeValid) MarshalJSON() ([]byte, error) {
    method TemplateType (line 54) | func (t *VerificationCodeValid) TemplateType() template.TemplateType {
  type VerificationCodeValidModel (line 20) | type VerificationCodeValidModel struct
  function NewVerificationCodeValid (line 30) | func NewVerificationCodeValid(d template.Dependencies, m *VerificationCo...

FILE: courier/template/sms/verification_code_test.go
  function TestNewOTPMessage (line 18) | func TestNewOTPMessage(t *testing.T) {

FILE: courier/template/template.go
  type Dependencies (line 11) | type Dependencies interface

FILE: courier/template/testhelpers/testhelpers.go
  function SetupRemoteConfig (line 26) | func SetupRemoteConfig(t *testing.T, ctx context.Context, plaintext stri...
  function TestRendered (line 38) | func TestRendered(t *testing.T, ctx context.Context, tpl interface {
  function TestRemoteTemplates (line 52) | func TestRemoteTemplates(t *testing.T, basePath string, tmplType templat...

FILE: courier/template/type.go
  type TemplateType (line 9) | type TemplateType
  constant TypeRecoveryInvalid (line 12) | TypeRecoveryInvalid         TemplateType = "recovery_invalid"
  constant TypeRecoveryValid (line 13) | TypeRecoveryValid           TemplateType = "recovery_valid"
  constant TypeRecoveryCodeInvalid (line 14) | TypeRecoveryCodeInvalid     TemplateType = "recovery_code_invalid"
  constant TypeRecoveryCodeValid (line 15) | TypeRecoveryCodeValid       TemplateType = "recovery_code_valid"
  constant TypeVerificationInvalid (line 16) | TypeVerificationInvalid     TemplateType = "verification_invalid"
  constant TypeVerificationValid (line 17) | TypeVerificationValid       TemplateType = "verification_valid"
  constant TypeVerificationCodeInvalid (line 18) | TypeVerificationCodeInvalid TemplateType = "verification_code_invalid"
  constant TypeVerificationCodeValid (line 19) | TypeVerificationCodeValid   TemplateType = "verification_code_valid"
  constant TypeTestStub (line 20) | TypeTestStub                TemplateType = "stub"
  constant TypeLoginCodeValid (line 21) | TypeLoginCodeValid          TemplateType = "login_code_valid"
  constant TypeRegistrationCodeValid (line 22) | TypeRegistrationCodeValid   TemplateType = "registration_code_valid"

FILE: courier/test/persistence.go
  type PersisterWrapper (line 27) | type PersisterWrapper interface
  type NetworkWrapper (line 33) | type NetworkWrapper
  function TestPersister (line 35) | func TestPersister(ctx context.Context, newNetworkUnlessExisting Network...

FILE: driver/config/config.go
  constant DefaultIdentityTraitsSchemaID (line 49) | DefaultIdentityTraitsSchemaID                            = "default"
  constant DefaultBrowserReturnURL (line 50) | DefaultBrowserReturnURL                                  = "default_brow...
  constant DefaultSQLiteMemoryDSN (line 51) | DefaultSQLiteMemoryDSN                                   = "sqlite://fil...
  constant DefaultPasswordHashingAlgorithm (line 52) | DefaultPasswordHashingAlgorithm                          = "argon2"
  constant DefaultCipherAlgorithm (line 53) | DefaultCipherAlgorithm                                   = "noop"
  constant UnknownVersion (line 54) | UnknownVersion                                           = "unknown vers...
  constant ViperKeyDSN (line 55) | ViperKeyDSN                                              = "dsn"
  constant ViperKeyCourierSMTPURL (line 56) | ViperKeyCourierSMTPURL                                   = "courier.smtp...
  constant ViperKeyCourierSMTPClientCertPath (line 57) | ViperKeyCourierSMTPClientCertPath                        = "courier.smtp...
  constant ViperKeyCourierSMTPClientKeyPath (line 58) | ViperKeyCourierSMTPClientKeyPath                         = "courier.smtp...
  constant ViperKeyCourierTemplatesPath (line 59) | ViperKeyCourierTemplatesPath                             = "courier.temp...
  constant ViperKeyCourierTemplatesRecoveryInvalidEmail (line 60) | ViperKeyCourierTemplatesRecoveryInvalidEmail             = "courier.temp...
  constant ViperKeyCourierTemplatesRecoveryValidEmail (line 61) | ViperKeyCourierTemplatesRecoveryValidEmail               = "courier.temp...
  constant ViperKeyCourierTemplatesRecoveryCodeInvalidEmail (line 62) | ViperKeyCourierTemplatesRecoveryCodeInvalidEmail         = "courier.temp...
  constant ViperKeyCourierTemplatesRecoveryCodeValidEmail (line 63) | ViperKeyCourierTemplatesRecoveryCodeValidEmail           = "courier.temp...
  constant ViperKeyCourierTemplatesVerificationInvalidEmail (line 64) | ViperKeyCourierTemplatesVerificationInvalidEmail         = "courier.temp...
  constant ViperKeyCourierTemplatesVerificationValidEmail (line 65) | ViperKeyCourierTemplatesVerificationValidEmail           = "courier.temp...
  constant ViperKeyCourierTemplatesVerificationCodeInvalidEmail (line 66) | ViperKeyCourierTemplatesVerificationCodeInvalidEmail     = "courier.temp...
  constant ViperKeyCourierTemplatesVerificationCodeValidEmail (line 67) | ViperKeyCourierTemplatesVerificationCodeValidEmail       = "courier.temp...
  constant ViperKeyCourierTemplatesVerificationCodeValidSMS (line 68) | ViperKeyCourierTemplatesVerificationCodeValidSMS         = "courier.temp...
  constant ViperKeyCourierTemplatesRecoveryCodeValidSMS (line 69) | ViperKeyCourierTemplatesRecoveryCodeValidSMS             = "courier.temp...
  constant ViperKeyCourierTemplatesLoginCodeValidSMS (line 70) | ViperKeyCourierTemplatesLoginCodeValidSMS                = "courier.temp...
  constant ViperKeyCourierTemplatesRegistrationCodeValidSMS (line 71) | ViperKeyCourierTemplatesRegistrationCodeValidSMS         = "courier.temp...
  constant ViperKeyCourierDeliveryStrategy (line 72) | ViperKeyCourierDeliveryStrategy                          = "courier.deli...
  constant ViperKeyCourierHTTPRequestConfig (line 73) | ViperKeyCourierHTTPRequestConfig                         = "courier.http...
  constant ViperKeyCourierTemplatesLoginCodeValidEmail (line 74) | ViperKeyCourierTemplatesLoginCodeValidEmail              = "courier.temp...
  constant ViperKeyCourierTemplatesRegistrationCodeValidEmail (line 75) | ViperKeyCourierTemplatesRegistrationCodeValidEmail       = "courier.temp...
  constant ViperKeyCourierSMTP (line 76) | ViperKeyCourierSMTP                                      = "courier.smtp"
  constant ViperKeyCourierSMTPFrom (line 77) | ViperKeyCourierSMTPFrom                                  = "courier.smtp...
  constant ViperKeyCourierSMTPFromName (line 78) | ViperKeyCourierSMTPFromName                              = "courier.smtp...
  constant ViperKeyCourierSMTPHeaders (line 79) | ViperKeyCourierSMTPHeaders                               = "courier.smtp...
  constant ViperKeyCourierSMTPLocalName (line 80) | ViperKeyCourierSMTPLocalName                             = "courier.smtp...
  constant ViperKeyCourierMessageRetries (line 81) | ViperKeyCourierMessageRetries                            = "courier.mess...
  constant ViperKeyCourierWorkerPullCount (line 82) | ViperKeyCourierWorkerPullCount                           = "courier.work...
  constant ViperKeyCourierWorkerPullWait (line 83) | ViperKeyCourierWorkerPullWait                            = "courier.work...
  constant ViperKeyCourierChannels (line 84) | ViperKeyCourierChannels                                  = "courier.chan...
  constant ViperKeySecretsDefault (line 85) | ViperKeySecretsDefault                                   = "secrets.defa...
  constant ViperKeySecretsCookie (line 86) | ViperKeySecretsCookie                                    = "secrets.cookie"
  constant ViperKeySecretsCipher (line 87) | ViperKeySecretsCipher                                    = "secrets.cipher"
  constant ViperKeySecretsPagination (line 88) | ViperKeySecretsPagination                                = "secrets.pagi...
  constant ViperKeyPublicBaseURL (line 89) | ViperKeyPublicBaseURL                                    = "serve.public...
  constant ViperKeyAdminBaseURL (line 90) | ViperKeyAdminBaseURL                                     = "serve.admin....
  constant ViperKeySessionLifespan (line 91) | ViperKeySessionLifespan                                  = "session.life...
  constant ViperKeySessionSameSite (line 92) | ViperKeySessionSameSite                                  = "session.cook...
  constant ViperKeySessionSecure (line 93) | ViperKeySessionSecure                                    = "session.cook...
  constant ViperKeySessionDomain (line 94) | ViperKeySessionDomain                                    = "session.cook...
  constant ViperKeySessionName (line 95) | ViperKeySessionName                                      = "session.cook...
  constant ViperKeySessionPath (line 96) | ViperKeySessionPath                                      = "session.cook...
  constant ViperKeySessionPersistentCookie (line 97) | ViperKeySessionPersistentCookie                          = "session.cook...
  constant ViperKeySessionTokenizerTemplates (line 98) | ViperKeySessionTokenizerTemplates                        = "session.whoa...
  constant ViperKeySessionWhoAmIAAL (line 99) | ViperKeySessionWhoAmIAAL                                 = "session.whoa...
  constant ViperKeySessionWhoAmICaching (line 100) | ViperKeySessionWhoAmICaching                             = "feature_flag...
  constant ViperKeyFeatureFlagFasterSessionExtend (line 101) | ViperKeyFeatureFlagFasterSessionExtend                   = "feature_flag...
  constant ViperKeySessionWhoAmICachingMaxAge (line 102) | ViperKeySessionWhoAmICachingMaxAge                       = "feature_flag...
  constant ViperKeyUseContinueWithTransitions (line 103) | ViperKeyUseContinueWithTransitions                       = "feature_flag...
  constant ViperKeyChooseRecoveryAddress (line 104) | ViperKeyChooseRecoveryAddress                            = "feature_flag...
  constant ViperKeyUseLegacyShowVerificationUI (line 105) | ViperKeyUseLegacyShowVerificationUI                      = "feature_flag...
  constant ViperKeyLegacyOIDCRegistrationGroup (line 106) | ViperKeyLegacyOIDCRegistrationGroup                      = "feature_flag...
  constant ViperKeyUseLegacyRequireVerifiedLoginError (line 107) | ViperKeyUseLegacyRequireVerifiedLoginError               = "feature_flag...
  constant ViperKeySessionRefreshMinTimeLeft (line 108) | ViperKeySessionRefreshMinTimeLeft                        = "session.earl...
  constant ViperKeyCookieSameSite (line 109) | ViperKeyCookieSameSite                                   = "cookies.same...
  constant ViperKeyCookieDomain (line 110) | ViperKeyCookieDomain                                     = "cookies.domain"
  constant ViperKeyCookiePath (line 111) | ViperKeyCookiePath                                       = "cookies.path"
  constant ViperKeyCookieSecure (line 112) | ViperKeyCookieSecure                                     = "cookies.secure"
  constant ViperKeySelfServiceStrategyConfig (line 113) | ViperKeySelfServiceStrategyConfig                        = "selfservice....
  constant ViperKeySelfServiceBrowserDefaultReturnTo (line 114) | ViperKeySelfServiceBrowserDefaultReturnTo                = "selfservice....
  constant ViperKeyURLsAllowedReturnToDomains (line 115) | ViperKeyURLsAllowedReturnToDomains                       = "selfservice....
  constant ViperKeySelfServiceRegistrationEnabled (line 116) | ViperKeySelfServiceRegistrationEnabled                   = "selfservice....
  constant ViperKeySelfServiceRegistrationLoginHints (line 117) | ViperKeySelfServiceRegistrationLoginHints                = "selfservice....
  constant ViperKeySelfServiceRegistrationEnableLegacyOneStep (line 118) | ViperKeySelfServiceRegistrationEnableLegacyOneStep       = "selfservice....
  constant ViperKeySelfServiceRegistrationFlowStyle (line 119) | ViperKeySelfServiceRegistrationFlowStyle                 = "selfservice....
  constant ViperKeySelfServiceRegistrationUI (line 120) | ViperKeySelfServiceRegistrationUI                        = "selfservice....
  constant ViperKeySelfServiceRegistrationRequestLifespan (line 121) | ViperKeySelfServiceRegistrationRequestLifespan           = "selfservice....
  constant ViperKeySelfServiceRegistrationAfter (line 122) | ViperKeySelfServiceRegistrationAfter                     = "selfservice....
  constant ViperKeySelfServiceRegistrationBeforeHooks (line 123) | ViperKeySelfServiceRegistrationBeforeHooks               = "selfservice....
  constant ViperKeySelfServiceLoginUI (line 124) | ViperKeySelfServiceLoginUI                               = "selfservice....
  constant ViperKeySelfServiceLoginFlowStyle (line 125) | ViperKeySelfServiceLoginFlowStyle                        = "selfservice....
  constant ViperKeySecurityAccountEnumerationMitigate (line 126) | ViperKeySecurityAccountEnumerationMitigate               = "security.acc...
  constant ViperKeySelfServiceLoginRequestLifespan (line 127) | ViperKeySelfServiceLoginRequestLifespan                  = "selfservice....
  constant ViperKeySelfServiceLoginAfter (line 128) | ViperKeySelfServiceLoginAfter                            = "selfservice....
  constant ViperKeySelfServiceLoginBeforeHooks (line 129) | ViperKeySelfServiceLoginBeforeHooks                      = "selfservice....
  constant ViperKeySelfServiceErrorUI (line 130) | ViperKeySelfServiceErrorUI                               = "selfservice....
  constant ViperKeySelfServiceLogoutBrowserDefaultReturnTo (line 131) | ViperKeySelfServiceLogoutBrowserDefaultReturnTo          = "selfservice....
  constant ViperKeySelfServiceSettingsURL (line 132) | ViperKeySelfServiceSettingsURL                           = "selfservice....
  constant ViperKeySelfServiceSettingsAfter (line 133) | ViperKeySelfServiceSettingsAfter                         = "selfservice....
  constant ViperKeySelfServiceSettingsBeforeHooks (line 134) | ViperKeySelfServiceSettingsBeforeHooks                   = "selfservice....
  constant ViperKeySelfServiceSettingsRequestLifespan (line 135) | ViperKeySelfServiceSettingsRequestLifespan               = "selfservice....
  constant ViperKeySelfServiceSettingsPrivilegedAuthenticationAfter (line 136) | ViperKeySelfServiceSettingsPrivilegedAuthenticationAfter = "selfservice....
  constant ViperKeySelfServiceSettingsRequiredAAL (line 137) | ViperKeySelfServiceSettingsRequiredAAL                   = "selfservice....
  constant ViperKeySelfServiceRecoveryAfter (line 138) | ViperKeySelfServiceRecoveryAfter                         = "selfservice....
  constant ViperKeySelfServiceRecoveryBeforeHooks (line 139) | ViperKeySelfServiceRecoveryBeforeHooks                   = "selfservice....
  constant ViperKeySelfServiceRecoveryEnabled (line 140) | ViperKeySelfServiceRecoveryEnabled                       = "selfservice....
  constant ViperKeySelfServiceRecoveryUse (line 141) | ViperKeySelfServiceRecoveryUse                           = "selfservice....
  constant ViperKeySelfServiceRecoveryUI (line 142) | ViperKeySelfServiceRecoveryUI                            = "selfservice....
  constant ViperKeySelfServiceRecoveryRequestLifespan (line 143) | ViperKeySelfServiceRecoveryRequestLifespan               = "selfservice....
  constant ViperKeySelfServiceRecoveryBrowserDefaultReturnTo (line 144) | ViperKeySelfServiceRecoveryBrowserDefaultReturnTo        = "selfservice....
  constant ViperKeySelfServiceRecoveryNotifyUnknownRecipients (line 145) | ViperKeySelfServiceRecoveryNotifyUnknownRecipients       = "selfservice....
  constant ViperKeySelfServiceVerificationEnabled (line 146) | ViperKeySelfServiceVerificationEnabled                   = "selfservice....
  constant ViperKeySelfServiceVerificationUI (line 147) | ViperKeySelfServiceVerificationUI                        = "selfservice....
  constant ViperKeySelfServiceVerificationRequestLifespan (line 148) | ViperKeySelfServiceVerificationRequestLifespan           = "selfservice....
  constant ViperKeySelfServiceVerificationBrowserDefaultReturnTo (line 149) | ViperKeySelfServiceVerificationBrowserDefaultReturnTo    = "selfservice....
  constant ViperKeySelfServiceVerificationAfter (line 150) | ViperKeySelfServiceVerificationAfter                     = "selfservice....
  constant ViperKeySelfServiceVerificationBeforeHooks (line 151) | ViperKeySelfServiceVerificationBeforeHooks               = "selfservice....
  constant ViperKeySelfServiceVerificationUse (line 152) | ViperKeySelfServiceVerificationUse                       = "selfservice....
  constant ViperKeySelfServiceVerificationNotifyUnknownRecipients (line 153) | ViperKeySelfServiceVerificationNotifyUnknownRecipients   = "selfservice....
  constant ViperKeyDefaultIdentitySchemaID (line 154) | ViperKeyDefaultIdentitySchemaID                          = "identity.def...
  constant ViperKeyIdentitySchemas (line 155) | ViperKeyIdentitySchemas                                  = "identity.sch...
  constant ViperKeyHasherAlgorithm (line 156) | ViperKeyHasherAlgorithm                                  = "hashers.algo...
  constant ViperKeyHasherArgon2ConfigMemory (line 157) | ViperKeyHasherArgon2ConfigMemory                         = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigIterations (line 158) | ViperKeyHasherArgon2ConfigIterations                     = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigParallelism (line 159) | ViperKeyHasherArgon2ConfigParallelism                    = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigSaltLength (line 160) | ViperKeyHasherArgon2ConfigSaltLength                     = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigKeyLength (line 161) | ViperKeyHasherArgon2ConfigKeyLength                      = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigExpectedDuration (line 162) | ViperKeyHasherArgon2ConfigExpectedDuration               = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigExpectedDeviation (line 163) | ViperKeyHasherArgon2ConfigExpectedDeviation              = "hashers.argo...
  constant ViperKeyHasherArgon2ConfigDedicatedMemory (line 164) | ViperKeyHasherArgon2ConfigDedicatedMemory                = "hashers.argo...
  constant ViperKeyHasherBcryptCost (line 165) | ViperKeyHasherBcryptCost                                 = "hashers.bcry...
  constant ViperKeyCipherAlgorithm (line 166) | ViperKeyCipherAlgorithm                                  = "ciphers.algo...
  constant ViperKeyDatabaseCleanupSleepTables (line 167) | ViperKeyDatabaseCleanupSleepTables                       = "database.cle...
  constant ViperKeyDatabaseCleanupBatchSize (line 168) | ViperKeyDatabaseCleanupBatchSize                         = "database.cle...
  constant ViperKeyLinkLifespan (line 169) | ViperKeyLinkLifespan                                     = "selfservice....
  constant ViperKeyCodeLifespan (line 170) | ViperKeyCodeLifespan                                     = "selfservice....
  constant ViperKeyCodeMaxSubmissions (line 171) | ViperKeyCodeMaxSubmissions                               = "selfservice....
  constant ViperKeyCodeConfigMissingCredentialFallbackEnabled (line 172) | ViperKeyCodeConfigMissingCredentialFallbackEnabled       = "selfservice....
  constant ViperKeyPasswordHaveIBeenPwnedHost (line 173) | ViperKeyPasswordHaveIBeenPwnedHost                       = "selfservice....
  constant ViperKeyPasswordHaveIBeenPwnedEnabled (line 174) | ViperKeyPasswordHaveIBeenPwnedEnabled                    = "selfservice....
  constant ViperKeyPasswordMaxBreaches (line 175) | ViperKeyPasswordMaxBreaches                              = "selfservice....
  constant ViperKeyPasswordMinLength (line 176) | ViperKeyPasswordMinLength                                = "selfservice....
  constant ViperKeyPasswordIdentifierSimilarityCheckEnabled (line 177) | ViperKeyPasswordIdentifierSimilarityCheckEnabled         = "selfservice....
  constant ViperKeyIgnoreNetworkErrors (line 178) | ViperKeyIgnoreNetworkErrors                              = "selfservice....
  constant ViperKeyPasswordRegistrationProfileGroup (line 179) | ViperKeyPasswordRegistrationProfileGroup                 = "selfservice....
  constant ViperKeyTOTPIssuer (line 180) | ViperKeyTOTPIssuer                                       = "selfservice....
  constant ViperKeyOIDCBaseRedirectURL (line 181) | ViperKeyOIDCBaseRedirectURL                              = "selfservice....
  constant ViperKeySAMLBaseRedirectURL (line 182) | ViperKeySAMLBaseRedirectURL                              = "selfservice....
  constant ViperKeyWebAuthnRPDisplayName (line 183) | ViperKeyWebAuthnRPDisplayName                            = "selfservice....
  constant ViperKeyWebAuthnRPID (line 184) | ViperKeyWebAuthnRPID                                     = "selfservice....
  constant ViperKeyWebAuthnRPOrigin (line 185) | ViperKeyWebAuthnRPOrigin                                 = "selfservice....
  constant ViperKeyWebAuthnRPOrigins (line 186) | ViperKeyWebAuthnRPOrigins                                = "selfservice....
  constant ViperKeyWebAuthnPasswordless (line 187) | ViperKeyWebAuthnPasswordless                             = "selfservice....
  constant ViperKeyPasskeyEnabled (line 188) | ViperKeyPasskeyEnabled                                   = "selfservice....
  constant ViperKeyPasskeyRPDisplayName (line 189) | ViperKeyPasskeyRPDisplayName                             = "selfservice....
  constant ViperKeyPasskeyRPID (line 190) | ViperKeyPasskeyRPID                                      = "selfservice....
  constant ViperKeyPasskeyRPOrigins (line 191) | ViperKeyPasskeyRPOrigins                                 = "selfservice....
  constant ViperKeyOAuth2ProviderURL (line 192) | ViperKeyOAuth2ProviderURL                                = "oauth2_provi...
  constant ViperKeyOAuth2ProviderHeader (line 193) | ViperKeyOAuth2ProviderHeader                             = "oauth2_provi...
  constant ViperKeyOAuth2ProviderOverrideReturnTo (line 194) | ViperKeyOAuth2ProviderOverrideReturnTo                   = "oauth2_provi...
  constant ViperKeyClientHTTPNoPrivateIPRanges (line 195) | ViperKeyClientHTTPNoPrivateIPRanges                      = "clients.http...
  constant ViperKeyClientHTTPPrivateIPExceptionURLs (line 196) | ViperKeyClientHTTPPrivateIPExceptionURLs                 = "clients.http...
  constant ViperKeyWebhookHeaderAllowlist (line 197) | ViperKeyWebhookHeaderAllowlist                           = "clients.web_...
  constant ViperKeyPreviewDefaultReadConsistencyLevel (line 198) | ViperKeyPreviewDefaultReadConsistencyLevel               = "preview.defa...
  constant ViperKeyVersion (line 199) | ViperKeyVersion                                          = "version"
  constant ViperKeyPasswordMigrationHook (line 200) | ViperKeyPasswordMigrationHook                            = "selfservice....
  constant HighestAvailableAAL (line 204) | HighestAvailableAAL                 = "highest_available"
  constant Argon2DefaultMemory (line 205) | Argon2DefaultMemory                 = 128 * bytesize.MB
  constant Argon2DefaultIterations (line 206) | Argon2DefaultIterations      uint32 = 1
  constant Argon2DefaultSaltLength (line 207) | Argon2DefaultSaltLength      uint32 = 16
  constant Argon2DefaultKeyLength (line 208) | Argon2DefaultKeyLength       uint32 = 32
  constant Argon2DefaultDuration (line 209) | Argon2DefaultDuration               = 500 * time.Millisecond
  constant Argon2DefaultDeviation (line 210) | Argon2DefaultDeviation              = 500 * time.Millisecond
  constant Argon2DefaultDedicatedMemory (line 211) | Argon2DefaultDedicatedMemory        = 1 * bytesize.GB
  constant BcryptDefaultCost (line 212) | BcryptDefaultCost            uint32 = 12
  constant DefaultSessionCookieName (line 216) | DefaultSessionCookieName = "ory_kratos_session"
  type Argon2 (line 219) | type Argon2 struct
    method MarshalJSON (line 325) | func (c *Argon2) MarshalJSON() ([]byte, error) {
  type Bcrypt (line 229) | type Bcrypt struct
  type SelfServiceHook (line 232) | type SelfServiceHook struct
  type SelfServiceStrategy (line 236) | type SelfServiceStrategy struct
  type SelfServiceStrategyCode (line 240) | type SelfServiceStrategyCode struct
  type Schema (line 245) | type Schema struct
  type PasswordPolicy (line 250) | type PasswordPolicy struct
  type Schemas (line 258) | type Schemas
    method FindSchemaByID (line 361) | func (s Schemas) FindSchemaByID(id string) (*Schema, error) {
  type CourierEmailBodyTemplate (line 259) | type CourierEmailBodyTemplate struct
  type CourierEmailTemplate (line 263) | type CourierEmailTemplate struct
  type CourierSMSTemplate (line 267) | type CourierSMSTemplate struct
  type CourierSMSTemplateBody (line 270) | type CourierSMSTemplateBody struct
  type CourierChannel (line 273) | type CourierChannel struct
  type SMTPConfig (line 279) | type SMTPConfig struct
  type PasswordMigrationHook (line 288) | type PasswordMigrationHook struct
  type Config (line 292) | type Config struct
    method getIdentitySchemaValidator (line 422) | func (p *Config) getIdentitySchemaValidator(ctx context.Context) (*jso...
    method validateIdentitySchemas (line 446) | func (p *Config) validateIdentitySchemas(ctx context.Context) error {
    method formatJsonErrors (line 493) | func (p *Config) formatJsonErrors(schema []byte, err error) {
    method ServePublic (line 498) | func (p *Config) ServePublic(ctx context.Context) *configx.Serve {
    method ServeAdmin (line 504) | func (p *Config) ServeAdmin(ctx context.Context) *configx.Serve {
    method CORSPublic (line 510) | func (p *Config) CORSPublic(ctx context.Context) (cors.Options, bool) {
    method Set (line 520) | func (p *Config) Set(_ context.Context, key string, value interface{})...
    method MustSet (line 525) | func (p *Config) MustSet(_ context.Context, key string, value interfac...
    method SessionName (line 531) | func (p *Config) SessionName(ctx context.Context) string {
    method HasherArgon2 (line 535) | func (p *Config) HasherArgon2(ctx context.Context) *Argon2 {
    method HasherBcrypt (line 554) | func (p *Config) HasherBcrypt(ctx context.Context) *Bcrypt {
    method DefaultIdentityTraitsSchemaURL (line 563) | func (p *Config) DefaultIdentityTraitsSchemaURL(ctx context.Context) (...
    method DefaultIdentityTraitsSchemaID (line 578) | func (p *Config) DefaultIdentityTraitsSchemaID(ctx context.Context) st...
    method IdentityTraitsSchemaURL (line 582) | func (p *Config) IdentityTraitsSchemaURL(ctx context.Context, schemaID...
    method TOTPIssuer (line 601) | func (p *Config) TOTPIssuer(ctx context.Context) string {
    method OIDCRedirectURIBase (line 605) | func (p *Config) OIDCRedirectURIBase(ctx context.Context) *url.URL {
    method SAMLRedirectURIBase (line 609) | func (p *Config) SAMLRedirectURIBase(ctx context.Context) *url.URL {
    method IdentityTraitsSchemas (line 613) | func (p *Config) IdentityTraitsSchemas(ctx context.Context) (ss Schema...
    method DSN (line 621) | func (p *Config) DSN(ctx context.Context) string {
    method DisableAPIFlowEnforcement (line 638) | func (p *Config) DisableAPIFlowEnforcement(ctx context.Context) bool {
    method ClientHTTPNoPrivateIPRanges (line 646) | func (p *Config) ClientHTTPNoPrivateIPRanges(ctx context.Context) bool {
    method ClientHTTPPrivateIPExceptionURLs (line 650) | func (p *Config) ClientHTTPPrivateIPExceptionURLs(ctx context.Context)...
    method SelfServiceFlowRegistrationEnabled (line 654) | func (p *Config) SelfServiceFlowRegistrationEnabled(ctx context.Contex...
    method SelfServiceFlowRegistrationLoginHints (line 658) | func (p *Config) SelfServiceFlowRegistrationLoginHints(ctx context.Con...
    method SelfServiceFlowRegistrationPasswordMethodProfileGroup (line 662) | func (p *Config) SelfServiceFlowRegistrationPasswordMethodProfileGroup...
    method SelfServiceLegacyOIDCRegistrationGroup (line 671) | func (p *Config) SelfServiceLegacyOIDCRegistrationGroup(ctx context.Co...
    method SelfServiceFlowRegistrationTwoSteps (line 675) | func (p *Config) SelfServiceFlowRegistrationTwoSteps(ctx context.Conte...
    method SelfServiceFlowIdentitySchema (line 692) | func (p *Config) SelfServiceFlowIdentitySchema(ctx context.Context, re...
    method SelfServiceFlowVerificationEnabled (line 711) | func (p *Config) SelfServiceFlowVerificationEnabled(ctx context.Contex...
    method UseLegacyShowVerificationUI (line 715) | func (p *Config) UseLegacyShowVerificationUI(ctx context.Context) bool {
    method UseLegacyRequireVerifiedLoginError (line 719) | func (p *Config) UseLegacyRequireVerifiedLoginError(ctx context.Contex...
    method SelfServiceFlowRecoveryEnabled (line 723) | func (p *Config) SelfServiceFlowRecoveryEnabled(ctx context.Context) b...
    method SelfServiceFlowRecoveryUse (line 727) | func (p *Config) SelfServiceFlowRecoveryUse(ctx context.Context) string {
    method SelfServiceFlowLoginBeforeHooks (line 731) | func (p *Config) SelfServiceFlowLoginBeforeHooks(ctx context.Context) ...
    method SelfServiceFlowRecoveryBeforeHooks (line 735) | func (p *Config) SelfServiceFlowRecoveryBeforeHooks(ctx context.Contex...
    method SelfServiceFlowVerificationBeforeHooks (line 739) | func (p *Config) SelfServiceFlowVerificationBeforeHooks(ctx context.Co...
    method SelfServiceFlowVerificationUse (line 743) | func (p *Config) SelfServiceFlowVerificationUse(ctx context.Context) s...
    method SelfServiceFlowVerificationNotifyUnknownRecipients (line 747) | func (p *Config) SelfServiceFlowVerificationNotifyUnknownRecipients(ct...
    method SelfServiceFlowSettingsBeforeHooks (line 751) | func (p *Config) SelfServiceFlowSettingsBeforeHooks(ctx context.Contex...
    method SelfServiceFlowRegistrationBeforeHooks (line 755) | func (p *Config) SelfServiceFlowRegistrationBeforeHooks(ctx context.Co...
    method selfServiceHooks (line 764) | func (p *Config) selfServiceHooks(ctx context.Context, key string) []S...
    method SelfServiceFlowLoginAfterHooks (line 790) | func (p *Config) SelfServiceFlowLoginAfterHooks(ctx context.Context, s...
    method SelfServiceFlowSettingsAfterHooks (line 794) | func (p *Config) SelfServiceFlowSettingsAfterHooks(ctx context.Context...
    method SelfServiceFlowRegistrationAfterHooks (line 798) | func (p *Config) SelfServiceFlowRegistrationAfterHooks(ctx context.Con...
    method SelfServiceStrategy (line 802) | func (p *Config) SelfServiceStrategy(ctx context.Context, strategy str...
    method SelfServiceCodeStrategy (line 837) | func (p *Config) SelfServiceCodeStrategy(ctx context.Context) *SelfSer...
    method SecretsDefault (line 859) | func (p *Config) SecretsDefault(ctx context.Context) [][]byte {
    method SecretsSession (line 876) | func (p *Config) SecretsSession(ctx context.Context) [][]byte {
    method SecretsCipher (line 890) | func (p *Config) SecretsCipher(ctx context.Context) [][32]byte {
    method SecretsPagination (line 914) | func (p *Config) SecretsPagination(ctx context.Context) [][32]byte {
    method SelfServiceBrowserDefaultReturnTo (line 925) | func (p *Config) SelfServiceBrowserDefaultReturnTo(ctx context.Context...
    method SelfPublicURL (line 929) | func (p *Config) SelfPublicURL(ctx context.Context) *url.URL {
    method SelfAdminURL (line 934) | func (p *Config) SelfAdminURL(ctx context.Context) *url.URL {
    method WebhookHeaderAllowlist (line 939) | func (p *Config) WebhookHeaderAllowlist(ctx context.Context) []string {
    method OAuth2ProviderHeader (line 943) | func (p *Config) OAuth2ProviderHeader(ctx context.Context) http.Header {
    method OAuth2ProviderOverrideReturnTo (line 959) | func (p *Config) OAuth2ProviderOverrideReturnTo(ctx context.Context) b...
    method OAuth2ProviderURL (line 963) | func (p *Config) OAuth2ProviderURL(ctx context.Context) *url.URL {
    method SelfServiceFlowLoginUI (line 978) | func (p *Config) SelfServiceFlowLoginUI(ctx context.Context) *url.URL {
    method SelfServiceFlowSettingsUI (line 982) | func (p *Config) SelfServiceFlowSettingsUI(ctx context.Context) *url.U...
    method SelfServiceFlowErrorURL (line 986) | func (p *Config) SelfServiceFlowErrorURL(ctx context.Context) *url.URL {
    method SelfServiceFlowRegistrationUI (line 990) | func (p *Config) SelfServiceFlowRegistrationUI(ctx context.Context) *u...
    method SelfServiceFlowRecoveryUI (line 994) | func (p *Config) SelfServiceFlowRecoveryUI(ctx context.Context) *url.U...
    method SessionLifespan (line 999) | func (p *Config) SessionLifespan(ctx context.Context) time.Duration {
    method SessionPersistentCookie (line 1003) | func (p *Config) SessionPersistentCookie(ctx context.Context) bool {
    method SelfServiceBrowserAllowedReturnToDomains (line 1007) | func (p *Config) SelfServiceBrowserAllowedReturnToDomains(ctx context....
    method SelfServiceFlowLoginRequestLifespan (line 1038) | func (p *Config) SelfServiceFlowLoginRequestLifespan(ctx context.Conte...
    method SelfServiceFlowSettingsFlowLifespan (line 1042) | func (p *Config) SelfServiceFlowSettingsFlowLifespan(ctx context.Conte...
    method SelfServiceFlowRegistrationRequestLifespan (line 1046) | func (p *Config) SelfServiceFlowRegistrationRequestLifespan(ctx contex...
    method SelfServiceFlowLogoutRedirectURL (line 1050) | func (p *Config) SelfServiceFlowLogoutRedirectURL(ctx context.Context)...
    method CourierEmailStrategy (line 1054) | func (p *Config) CourierEmailStrategy(ctx context.Context) string {
    method CourierEmailRequestConfig (line 1058) | func (p *Config) CourierEmailRequestConfig(ctx context.Context) json.R...
    method CourierTemplatesRoot (line 1072) | func (p *Config) CourierTemplatesRoot(ctx context.Context) string {
    method CourierEmailTemplatesHelper (line 1076) | func (p *Config) CourierEmailTemplatesHelper(ctx context.Context, key ...
    method CourierSMSTemplatesHelper (line 1102) | func (p *Config) CourierSMSTemplatesHelper(ctx context.Context, key st...
    method CourierTemplatesVerificationInvalid (line 1126) | func (p *Config) CourierTemplatesVerificationInvalid(ctx context.Conte...
    method CourierTemplatesVerificationValid (line 1130) | func (p *Config) CourierTemplatesVerificationValid(ctx context.Context...
    method CourierTemplatesRecoveryInvalid (line 1134) | func (p *Config) CourierTemplatesRecoveryInvalid(ctx context.Context) ...
    method CourierTemplatesRecoveryValid (line 1138) | func (p *Config) CourierTemplatesRecoveryValid(ctx context.Context) *C...
    method CourierTemplatesRecoveryCodeInvalid (line 1142) | func (p *Config) CourierTemplatesRecoveryCodeInvalid(ctx context.Conte...
    method CourierTemplatesRecoveryCodeValid (line 1146) | func (p *Config) CourierTemplatesRecoveryCodeValid(ctx context.Context...
    method CourierTemplatesVerificationCodeInvalid (line 1150) | func (p *Config) CourierTemplatesVerificationCodeInvalid(ctx context.C...
    method CourierTemplatesVerificationCodeValid (line 1154) | func (p *Config) CourierTemplatesVerificationCodeValid(ctx context.Con...
    method CourierSMSTemplatesVerificationCodeValid (line 1158) | func (p *Config) CourierSMSTemplatesVerificationCodeValid(ctx context....
    method CourierSMSTemplatesRecoveryCodeValid (line 1162) | func (p *Config) CourierSMSTemplatesRecoveryCodeValid(ctx context.Cont...
    method CourierSMSTemplatesLoginCodeValid (line 1166) | func (p *Config) CourierSMSTemplatesLoginCodeValid(ctx context.Context...
    method CourierSMSTemplatesRegistrationCodeValid (line 1170) | func (p *Config) CourierSMSTemplatesRegistrationCodeValid(ctx context....
    method CourierTemplatesLoginCodeValid (line 1174) | func (p *Config) CourierTemplatesLoginCodeValid(ctx context.Context) *...
    method CourierTemplatesRegistrationCodeValid (line 1178) | func (p *Config) CourierTemplatesRegistrationCodeValid(ctx context.Con...
    method CourierMessageRetries (line 1182) | func (p *Config) CourierMessageRetries(ctx context.Context) int {
    method CourierWorkerPullCount (line 1186) | func (p *Config) CourierWorkerPullCount(ctx context.Context) int {
    method CourierWorkerPullWait (line 1190) | func (p *Config) CourierWorkerPullWait(ctx context.Context) time.Durat...
    method CourierSMTPHeaders (line 1194) | func (p *Config) CourierSMTPHeaders(ctx context.Context) map[string]st...
    method CourierChannels (line 1198) | func (p *Config) CourierChannels(ctx context.Context) (ccs []*CourierC...
    method ParseAbsoluteOrRelativeURIOrFail (line 1229) | func (p *Config) ParseAbsoluteOrRelativeURIOrFail(ctx context.Context,...
    method ParseURIOrFail (line 1238) | func (p *Config) ParseURIOrFail(ctx context.Context, key string) *url....
    method ParseAbsoluteOrRelativeURI (line 1247) | func (p *Config) ParseAbsoluteOrRelativeURI(rawUrl string) (*url.URL, ...
    method ParseURI (line 1261) | func (p *Config) ParseURI(rawUrl string) (*url.URL, error) {
    method Tracing (line 1272) | func (p *Config) Tracing(ctx context.Context) *otelx.Config {
    method IsInsecureDevMode (line 1276) | func (p *Config) IsInsecureDevMode(ctx context.Context) bool {
    method IsBackgroundCourierEnabled (line 1280) | func (p *Config) IsBackgroundCourierEnabled(ctx context.Context) bool {
    method CourierExposeMetricsPort (line 1284) | func (p *Config) CourierExposeMetricsPort(ctx context.Context) int {
    method SelfServiceFlowVerificationUI (line 1288) | func (p *Config) SelfServiceFlowVerificationUI(ctx context.Context) *u...
    method SelfServiceFlowVerificationRequestLifespan (line 1292) | func (p *Config) SelfServiceFlowVerificationRequestLifespan(ctx contex...
    method SelfServiceFlowVerificationReturnTo (line 1296) | func (p *Config) SelfServiceFlowVerificationReturnTo(ctx context.Conte...
    method SelfServiceFlowVerificationAfterHooks (line 1300) | func (p *Config) SelfServiceFlowVerificationAfterHooks(ctx context.Con...
    method SelfServiceFlowRecoveryReturnTo (line 1304) | func (p *Config) SelfServiceFlowRecoveryReturnTo(ctx context.Context, ...
    method SelfServiceFlowRecoveryRequestLifespan (line 1308) | func (p *Config) SelfServiceFlowRecoveryRequestLifespan(ctx context.Co...
    method SelfServiceFlowRecoveryNotifyUnknownRecipients (line 1312) | func (p *Config) SelfServiceFlowRecoveryNotifyUnknownRecipients(ctx co...
    method SelfServiceLinkMethodLifespan (line 1316) | func (p *Config) SelfServiceLinkMethodLifespan(ctx context.Context) ti...
    method SelfServiceLinkMethodBaseURL (line 1320) | func (p *Config) SelfServiceLinkMethodBaseURL(ctx context.Context) *ur...
    method SelfServiceCodeMethodLifespan (line 1324) | func (p *Config) SelfServiceCodeMethodLifespan(ctx context.Context) ti...
    method SelfServiceCodeMethodMaxSubmissions (line 1328) | func (p *Config) SelfServiceCodeMethodMaxSubmissions(ctx context.Conte...
    method SelfServiceCodeMethodMissingCredentialFallbackEnabled (line 1332) | func (p *Config) SelfServiceCodeMethodMissingCredentialFallbackEnabled...
    method DatabaseCleanupSleepTables (line 1336) | func (p *Config) DatabaseCleanupSleepTables(ctx context.Context) time....
    method DatabaseCleanupBatchSize (line 1340) | func (p *Config) DatabaseCleanupBatchSize(ctx context.Context) int {
    method SelfServiceFlowRecoveryAfterHooks (line 1344) | func (p *Config) SelfServiceFlowRecoveryAfterHooks(ctx context.Context...
    method SelfServiceFlowSettingsPrivilegedSessionMaxAge (line 1348) | func (p *Config) SelfServiceFlowSettingsPrivilegedSessionMaxAge(ctx co...
    method SessionSameSiteMode (line 1352) | func (p *Config) SessionSameSiteMode(ctx context.Context) http.SameSite {
    method SessionDomain (line 1368) | func (p *Config) SessionDomain(ctx context.Context) string {
    method SessionCookieSecure (line 1375) | func (p *Config) SessionCookieSecure(ctx context.Context) bool {
    method CookieDomain (line 1382) | func (p *Config) CookieDomain(ctx context.Context) string {
    method SessionWhoAmIAAL (line 1386) | func (p *Config) SessionWhoAmIAAL(ctx context.Context) string {
    method SessionWhoAmICaching (line 1390) | func (p *Config) SessionWhoAmICaching(ctx context.Context) bool {
    method FeatureFlagFasterSessionExtend (line 1394) | func (p *Config) FeatureFlagFasterSessionExtend(ctx context.Context) b...
    method SessionWhoAmICachingMaxAge (line 1398) | func (p *Config) SessionWhoAmICachingMaxAge(ctx context.Context) time....
    method UseContinueWithTransitions (line 1402) | func (p *Config) UseContinueWithTransitions(ctx context.Context) bool {
    method ChooseRecoveryAddress (line 1406) | func (p *Config) ChooseRecoveryAddress(ctx context.Context) bool {
    method SessionRefreshMinTimeLeft (line 1410) | func (p *Config) SessionRefreshMinTimeLeft(ctx context.Context) time.D...
    method SelfServiceSettingsRequiredAAL (line 1414) | func (p *Config) SelfServiceSettingsRequiredAAL(ctx context.Context) s...
    method CookieSameSiteMode (line 1418) | func (p *Config) CookieSameSiteMode(ctx context.Context) http.SameSite {
    method SessionPath (line 1430) | func (p *Config) SessionPath(ctx context.Context) string {
    method CookiePath (line 1437) | func (p *Config) CookiePath(ctx context.Context) string {
    method CookieSecure (line 1441) | func (p *Config) CookieSecure(ctx context.Context) bool {
    method SelfServiceFlowLoginReturnTo (line 1448) | func (p *Config) SelfServiceFlowLoginReturnTo(ctx context.Context, str...
    method SelfServiceFlowRegistrationReturnTo (line 1452) | func (p *Config) SelfServiceFlowRegistrationReturnTo(ctx context.Conte...
    method SelfServiceFlowSettingsReturnTo (line 1456) | func (p *Config) SelfServiceFlowSettingsReturnTo(ctx context.Context, ...
    method selfServiceReturnTo (line 1465) | func (p *Config) selfServiceReturnTo(ctx context.Context, key string, ...
    method ConfigVersion (line 1474) | func (p *Config) ConfigVersion(ctx context.Context) string {
    method PasswordPolicyConfig (line 1478) | func (p *Config) PasswordPolicyConfig(ctx context.Context) *PasswordPo...
    method WebAuthnForPasswordless (line 1489) | func (p *Config) WebAuthnForPasswordless(ctx context.Context) bool {
    method WebAuthnConfig (line 1493) | func (p *Config) WebAuthnConfig(ctx context.Context) *webauthn.Config {
    method PasskeyConfig (line 1509) | func (p *Config) PasskeyConfig(ctx context.Context) *webauthn.Config {
    method HasherPasswordHashingAlgorithm (line 1527) | func (p *Config) HasherPasswordHashingAlgorithm(ctx context.Context) s...
    method CipherAlgorithm (line 1539) | func (p *Config) CipherAlgorithm(ctx context.Context) string {
    method GetProvider (line 1553) | func (p *Config) GetProvider(ctx context.Context) *configx.Provider {
    method TokenizeTemplate (line 1564) | func (p *Config) TokenizeTemplate(ctx context.Context, key string) (_ ...
    method DefaultConsistencyLevel (line 1578) | func (p *Config) DefaultConsistencyLevel(ctx context.Context) crdbx.Co...
    method PasswordMigrationHook (line 1582) | func (p *Config) PasswordMigrationHook(ctx context.Context) *PasswordM...
    method SelfServiceLoginFlowIdentifierFirstEnabled (line 1595) | func (p *Config) SelfServiceLoginFlowIdentifierFirstEnabled(ctx contex...
    method SecurityAccountEnumerationMitigate (line 1604) | func (p *Config) SecurityAccountEnumerationMitigate(ctx context.Contex...
  type Provider (line 299) | type Provider interface
  type CourierConfigs (line 302) | type CourierConfigs interface
  constant HookGlobal (line 351) | HookGlobal = "global"
  function HookStrategyKey (line 353) | func HookStrategyKey(key, strategy string) string {
  function MustNew (line 371) | func MustNew(t testing.TB, l *logrusx.Logger, ctxer contextx.Contextuali...
  function New (line 377) | func New(ctx context.Context, l *logrusx.Logger, stdOutOrErr io.Writer, ...
  function NewCustom (line 417) | func NewCustom(l *logrusx.Logger, p *configx.Provider, stdOutOrErr io.Wr...
  type validateIdentitySchemasContextKey (line 438) | type validateIdentitySchemasContextKey
  constant validateIdentitySchemasClientKey (line 440) | validateIdentitySchemasClientKey validateIdentitySchemasContextKey = 1
  function SetValidateIdentitySchemaResilientClientOptions (line 442) | func SetValidateIdentitySchemaResilientClientOptions(ctx context.Context...
  function ToCipherSecrets (line 895) | func ToCipherSecrets(secrets []string) [][32]byte {
  function splitUrlAndFragment (line 1221) | func splitUrlAndFragment(s string) (string, string) {
  type SessionTokenizeFormat (line 1557) | type SessionTokenizeFormat struct

FILE: driver/config/config_test.go
  function TestViperProvider (line 49) | func TestViperProvider(t *testing.T) {
  function TestBcrypt (line 405) | func TestBcrypt(t *testing.T) {
  function TestProviderBaseURLs (line 421) | func TestProviderBaseURLs(t *testing.T) {
  function TestDefaultWebhookHeaderAllowlist (line 461) | func TestDefaultWebhookHeaderAllowlist(t *testing.T) {
  function TestViperProvider_Secrets (line 468) | func TestViperProvider_Secrets(t *testing.T) {
  function TestViperProvider_Defaults (line 483) | func TestViperProvider_Defaults(t *testing.T) {
  function TestViperProvider_ReturnTo (line 594) | func TestViperProvider_ReturnTo(t *testing.T) {
  function TestSession (line 611) | func TestSession(t *testing.T) {
  function TestCookies (line 638) | func TestCookies(t *testing.T) {
  function TestViperProvider_DSN (line 684) | func TestViperProvider_DSN(t *testing.T) {
  function TestViperProvider_ParseURIOrFail (line 718) | func TestViperProvider_ParseURIOrFail(t *testing.T) {
  function TestViperProvider_HaveIBeenPwned (line 777) | func TestViperProvider_HaveIBeenPwned(t *testing.T) {
  function newTestConfig (line 813) | func newTestConfig(t *testing.T, opts ...configx.OptionModifier) (c *con...
  function TestLoadingTLSConfig (line 823) | func TestLoadingTLSConfig(t *testing.T) {
  function TestIdentitySchemaValidation (line 947) | func TestIdentitySchemaValidation(t *testing.T) {
  function TestPasswordless (line 1101) | func TestPasswordless(t *testing.T) {
  function TestPasswordlessCode (line 1115) | func TestPasswordlessCode(t *testing.T) {
  function TestChangeMinPasswordLength (line 1132) | func TestChangeMinPasswordLength(t *testing.T) {
  function TestCourierEmailHTTP (line 1155) | func TestCourierEmailHTTP(t *testing.T) {
  function TestCourierChannels (line 1173) | func TestCourierChannels(t *testing.T) {
  function TestCourierMessageTTL (line 1219) | func TestCourierMessageTTL(t *testing.T) {
  function TestTwoStep (line 1235) | func TestTwoStep(t *testing.T) {
  function TestOAuth2Provider (line 1292) | func TestOAuth2Provider(t *testing.T) {
  function TestWebauthn (line 1312) | func TestWebauthn(t *testing.T) {
  function TestCourierTemplatesConfig (line 1358) | func TestCourierTemplatesConfig(t *testing.T) {
  function TestCleanup (line 1413) | func TestCleanup(t *testing.T) {
  constant keyPublicTLSCertBase64 (line 1430) | keyPublicTLSCertBase64 = "serve.public.tls.cert.base64"
  constant keyPublicTLSKeyBase64 (line 1431) | keyPublicTLSKeyBase64  = "serve.public.tls.key.base64"
  constant keyPublicTLSCertPath (line 1432) | keyPublicTLSCertPath   = "serve.public.tls.cert.path"
  constant keyPublicTLSKeyPath (line 1433) | keyPublicTLSKeyPath    = "serve.public.tls.key.path"
  constant keyAdminTLSCertBase64 (line 1434) | keyAdminTLSCertBase64  = "serve.admin.tls.cert.base64"
  constant keyAdminTLSKeyBase64 (line 1435) | keyAdminTLSKeyBase64   = "serve.admin.tls.key.base64"
  constant keyAdminTLSCertPath (line 1436) | keyAdminTLSCertPath    = "serve.admin.tls.cert.path"
  constant keyAdminTLSKeyPath (line 1437) | keyAdminTLSKeyPath     = "serve.admin.tls.key.path"

FILE: driver/config/handler.go
  function RegisterConfigHashRoute (line 16) | func RegisterConfigHashRoute(c Provider, router *httprouterx.RouterAdmin) {

FILE: driver/config/handler_test.go
  type configProvider (line 20) | type configProvider struct
    method Config (line 24) | func (c *configProvider) Config() *config.Config {
  function TestNewConfigHashHandler (line 28) | func TestNewConfigHashHandler(t *testing.T) {

FILE: driver/factory.go
  function New (line 16) | func New(ctx context.Context, stdOutOrErr io.Writer, dOpts ...RegistryOp...
  function NewWithoutInit (line 31) | func NewWithoutInit(ctx context.Context, stdOutOrErr io.Writer, dOpts .....

FILE: driver/factory_test.go
  function TestDriverNew (line 23) | func TestDriverNew(t *testing.T) {

FILE: driver/registry.go
  type Registry (line 49) | type Registry interface
  function NewRegistryFromDSN (line 156) | func NewRegistryFromDSN(ctx context.Context, c *config.Config, l *logrus...
  type options (line 171) | type options struct
  type RegistryOption (line 189) | type RegistryOption
  function WithDBOptions (line 193) | func WithDBOptions(opts ...func(details *pop.ConnectionDetails)) Registr...
  function SkipNetworkInit (line 199) | func SkipNetworkInit(o *options) {
  function WithJsonnetPool (line 203) | func WithJsonnetPool(pool jsonnetsecure.Pool) RegistryOption {
  function WithConfig (line 209) | func WithConfig(config *config.Config) RegistryOption {
  function WithConfigOptions (line 215) | func WithConfigOptions(opts ...configx.OptionModifier) RegistryOption {
  function WithIdentitySchemaProvider (line 221) | func WithIdentitySchemaProvider(f func(r Registry) schema.IdentitySchema...
  function ReplaceTracer (line 227) | func ReplaceTracer(f func(*otelx.Tracer) *otelx.Tracer) RegistryOption {
  type NewStrategy (line 233) | type NewStrategy
  function WithReplaceStrategies (line 238) | func WithReplaceStrategies(s ...NewStrategy) RegistryOption {
  function WithExtraHooks (line 244) | func WithExtraHooks(hooks map[string]func(config.SelfServiceHook) any) R...
  type NewHandler (line 250) | type NewHandler
  function WithExtraHandlers (line 252) | func WithExtraHandlers(handlers ...NewHandler) RegistryOption {
  function Inspect (line 258) | func Inspect(f func(reg Registry) error) RegistryOption {
  function WithExtraMigrations (line 264) | func WithExtraMigrations(m ...fs.FS) RegistryOption {
  function WithExtraGoMigrations (line 270) | func WithExtraGoMigrations(m ...popx.Migration) RegistryOption {
  function WithDisabledMigrationLogging (line 276) | func WithDisabledMigrationLogging() RegistryOption {
  function WithServiceLocatorOptions (line 282) | func WithServiceLocatorOptions(opts ...servicelocatorx.Option) RegistryO...
  function newOptions (line 288) | func newOptions(os []RegistryOption) *options {

FILE: driver/registry_default.go
  type RegistryDefault (line 74) | type RegistryDefault struct
    method JsonnetVM (line 161) | func (m *RegistryDefault) JsonnetVM(ctx context.Context) (jsonnetsecur...
    method Audit (line 167) | func (m *RegistryDefault) Audit() *logrusx.Logger {
    method RegisterPublicRoutes (line 171) | func (m *RegistryDefault) RegisterPublicRoutes(ctx context.Context, ro...
    method RegisterAdminRoutes (line 200) | func (m *RegistryDefault) RegisterAdminRoutes(ctx context.Context, rou...
    method HTTPMiddlewares (line 231) | func (m *RegistryDefault) HTTPMiddlewares() []negroni.Handler {
    method SetLogger (line 245) | func (m *RegistryDefault) SetLogger(l *logrusx.Logger) {
    method SetJSONNetVMProvider (line 249) | func (m *RegistryDefault) SetJSONNetVMProvider(p jsonnetsecure.VMProvi...
    method LogoutHandler (line 253) | func (m *RegistryDefault) LogoutHandler() *logout.Handler {
    method HealthHandler (line 260) | func (m *RegistryDefault) HealthHandler(_ context.Context) *healthx.Ha...
    method WithCSRFHandler (line 290) | func (m *RegistryDefault) WithCSRFHandler(c nosurf.Handler) {
    method CSRFHandler (line 294) | func (m *RegistryDefault) CSRFHandler() nosurf.Handler {
    method Config (line 301) | func (m *RegistryDefault) Config() *config.Config {
    method CourierConfig (line 308) | func (m *RegistryDefault) CourierConfig() config.CourierConfigs {
    method selfServiceStrategies (line 312) | func (m *RegistryDefault) selfServiceStrategies() []any {
    method strategyRegistrationEnabled (line 339) | func (m *RegistryDefault) strategyRegistrationEnabled(ctx context.Cont...
    method strategyLoginEnabled (line 346) | func (m *RegistryDefault) strategyLoginEnabled(ctx context.Context, id...
    method RegistrationStrategies (line 350) | func (m *RegistryDefault) RegistrationStrategies(ctx context.Context, ...
    method AllRegistrationStrategies (line 367) | func (m *RegistryDefault) AllRegistrationStrategies() registration.Str...
    method LoginStrategies (line 378) | func (m *RegistryDefault) LoginStrategies(ctx context.Context, filters...
    method AllLoginStrategies (line 396) | func (m *RegistryDefault) AllLoginStrategies() login.Strategies {
    method ActiveCredentialsCounterStrategies (line 406) | func (m *RegistryDefault) ActiveCredentialsCounterStrategies(_ context...
    method IdentityValidator (line 415) | func (m *RegistryDefault) IdentityValidator() *identity.Validator {
    method SetConfig (line 419) | func (m *RegistryDefault) SetConfig(c *config.Config) {
    method WithSelfserviceStrategies (line 425) | func (m *RegistryDefault) WithSelfserviceStrategies(t testing.TB, stra...
    method Writer (line 433) | func (m *RegistryDefault) Writer() herodot.Writer {
    method Logger (line 441) | func (m *RegistryDefault) Logger() *logrusx.Logger {
    method IdentityHandler (line 448) | func (m *RegistryDefault) IdentityHandler() *identity.Handler {
    method CourierHandler (line 455) | func (m *RegistryDefault) CourierHandler() *courier.Handler {
    method SchemaHandler (line 462) | func (m *RegistryDefault) SchemaHandler() *schema.Handler {
    method SessionHandler (line 469) | func (m *RegistryDefault) SessionHandler() *session.Handler {
    method Cipher (line 476) | func (m *RegistryDefault) Cipher(ctx context.Context) cipher.Cipher {
    method Hasher (line 490) | func (m *RegistryDefault) Hasher(ctx context.Context) hash.Hasher {
    method PasswordValidator (line 499) | func (m *RegistryDefault) PasswordValidator() password.Validator {
    method SelfServiceErrorHandler (line 510) | func (m *RegistryDefault) SelfServiceErrorHandler() *errorx.Handler {
    method CookieManager (line 517) | func (m *RegistryDefault) CookieManager(ctx context.Context) sessions....
    method ContinuityCookieManager (line 548) | func (m *RegistryDefault) ContinuityCookieManager(ctx context.Context)...
    method Tracer (line 557) | func (m *RegistryDefault) Tracer(context.Context) *otelx.Tracer {
    method SetTracer (line 564) | func (m *RegistryDefault) SetTracer(t *otelx.Tracer) {
    method SessionManager (line 568) | func (m *RegistryDefault) SessionManager() session.Manager {
    method Hydra (line 572) | func (m *RegistryDefault) Hydra() hydra.Hydra {
    method SetHydra (line 578) | func (m *RegistryDefault) SetHydra(h hydra.Hydra) {
    method SelfServiceErrorManager (line 582) | func (m *RegistryDefault) SelfServiceErrorManager() *errorx.Manager {
    method Init (line 586) | func (m *RegistryDefault) Init(ctx context.Context, ctxer contextx.Con...
    method SetPersister (line 711) | func (m *RegistryDefault) SetPersister(p persistence.Persister) {
    method Courier (line 715) | func (m *RegistryDefault) Courier(ctx context.Context) (courier.Courie...
    method ContinuityManager (line 719) | func (m *RegistryDefault) ContinuityManager() continuity.Manager {
    method Persister (line 723) | func (m *RegistryDefault) Persister() persistence.Persister           ...
    method ContinuityPersister (line 724) | func (m *RegistryDefault) ContinuityPersister() continuity.Persister  ...
    method IdentityPool (line 725) | func (m *RegistryDefault) IdentityPool() identity.Pool                ...
    method PrivilegedIdentityPool (line 726) | func (m *RegistryDefault) PrivilegedIdentityPool() identity.Privileged...
    method RegistrationFlowPersister (line 727) | func (m *RegistryDefault) RegistrationFlowPersister() registration.Flo...
    method RecoveryFlowPersister (line 728) | func (m *RegistryDefault) RecoveryFlowPersister() recovery.FlowPersist...
    method LoginFlowPersister (line 729) | func (m *RegistryDefault) LoginFlowPersister() login.FlowPersister    ...
    method SettingsFlowPersister (line 730) | func (m *RegistryDefault) SettingsFlowPersister() settings.FlowPersist...
    method SelfServiceErrorPersister (line 731) | func (m *RegistryDefault) SelfServiceErrorPersister() errorx.Persister...
    method SessionPersister (line 732) | func (m *RegistryDefault) SessionPersister() session.Persister        ...
    method CourierPersister (line 733) | func (m *RegistryDefault) CourierPersister() courier.Persister        ...
    method RecoveryTokenPersister (line 734) | func (m *RegistryDefault) RecoveryTokenPersister() link.RecoveryTokenP...
    method RecoveryCodePersister (line 735) | func (m *RegistryDefault) RecoveryCodePersister() code.RecoveryCodePer...
    method LoginCodePersister (line 736) | func (m *RegistryDefault) LoginCodePersister() code.LoginCodePersister...
    method VerificationTokenPersister (line 737) | func (m *RegistryDefault) VerificationTokenPersister() link.Verificati...
    method VerificationCodePersister (line 740) | func (m *RegistryDefault) VerificationCodePersister() code.Verificatio...
    method RegistrationCodePersister (line 743) | func (m *RegistryDefault) RegistrationCodePersister() code.Registratio...
    method TransactionalPersisterProvider (line 746) | func (m *RegistryDefault) TransactionalPersisterProvider() x.Transacti...
    method PingContext (line 750) | func (m *RegistryDefault) PingContext(ctx context.Context) error {
    method Ping (line 754) | func (m *RegistryDefault) Ping() error {
    method WithCSRFTokenGenerator (line 758) | func (m *RegistryDefault) WithCSRFTokenGenerator(cg nosurfx.CSRFToken) {
    method GenerateCSRFToken (line 762) | func (m *RegistryDefault) GenerateCSRFToken(r *http.Request) string {
    method IdentityManager (line 769) | func (m *RegistryDefault) IdentityManager() *identity.Manager {
    method HTTPClient (line 773) | func (m *RegistryDefault) HTTPClient(_ context.Context, opts ...httpx....
    method SetContextualizer (line 792) | func (m *RegistryDefault) SetContextualizer(ctxer contextx.Contextuali...
    method Contextualizer (line 796) | func (m *RegistryDefault) Contextualizer() contextx.Contextualizer {
    method JWKSFetcher (line 803) | func (m *RegistryDefault) JWKSFetcher() *jwksx.FetcherNext {
    method SessionTokenizer (line 820) | func (m *RegistryDefault) SessionTokenizer() *session.Tokenizer {
    method ExtraHandlers (line 824) | func (m *RegistryDefault) ExtraHandlers() []x.Handler {
    method initCheapMembers (line 834) | func (m *RegistryDefault) initCheapMembers() {
  function NewRegistryDefault (line 235) | func NewRegistryDefault() *RegistryDefault {
  type initOnce (line 842) | type initOnce struct
  method Set (line 848) | func (o *initOnce[T]) Set(val T) {
  method Get (line 858) | func (o *initOnce[T]) Get(newT func() T) T {

FILE: driver/registry_default_hooks.go
  method HookVerifier (line 17) | func (m *RegistryDefault) HookVerifier() *hook.Verifier {
  method HookSessionIssuer (line 24) | func (m *RegistryDefault) HookSessionIssuer() *hook.SessionIssuer {
  method HookSessionDestroyer (line 31) | func (m *RegistryDefault) HookSessionDestroyer() *hook.SessionDestroyer {
  method HookAddressVerifier (line 38) | func (m *RegistryDefault) HookAddressVerifier() *hook.AddressVerifier {
  method HookShowVerificationUI (line 45) | func (m *RegistryDefault) HookShowVerificationUI() *hook.ShowVerificatio...
  method WithHooks (line 52) | func (m *RegistryDefault) WithHooks(hooks map[string]func(config.SelfSer...
  method WithExtraHandlers (line 55) | func (m *RegistryDefault) WithExtraHandlers(handlers []NewHandler) {
  function getHooks (line 59) | func getHooks[T any](m *RegistryDefault, credentialsType string, configs...

FILE: driver/registry_default_login.go
  method LoginHookExecutor (line 14) | func (m *RegistryDefault) LoginHookExecutor() *login.HookExecutor {
  method PreLoginHooks (line 21) | func (m *RegistryDefault) PreLoginHooks(ctx context.Context) ([]login.Pr...
  method PostLoginHooks (line 25) | func (m *RegistryDefault) PostLoginHooks(ctx context.Context, credential...
  method LoginHandler (line 39) | func (m *RegistryDefault) LoginHandler() *login.Handler {
  method LoginFlowErrorHandler (line 47) | func (m *RegistryDefault) LoginFlowErrorHandler() *login.ErrorHandler {

FILE: driver/registry_default_recovery.go
  method RecoveryFlowErrorHandler (line 17) | func (m *RegistryDefault) RecoveryFlowErrorHandler() *recovery.ErrorHand...
  method RecoveryHandler (line 25) | func (m *RegistryDefault) RecoveryHandler() *recovery.Handler {
  method RecoveryStrategies (line 33) | func (m *RegistryDefault) RecoveryStrategies(ctx context.Context) (recov...
  method GetActiveRecoveryStrategies (line 47) | func (m *RegistryDefault) GetActiveRecoveryStrategies(ctx context.Contex...
  method AllRecoveryStrategies (line 57) | func (m *RegistryDefault) AllRecoveryStrategies() (recoveryStrategies re...
  method RecoveryExecutor (line 66) | func (m *RegistryDefault) RecoveryExecutor() *recovery.HookExecutor {
  method PreRecoveryHooks (line 73) | func (m *RegistryDefault) PreRecoveryHooks(ctx context.Context) ([]recov...
  method PostRecoveryHooks (line 77) | func (m *RegistryDefault) PostRecoveryHooks(ctx context.Context) ([]reco...
  method CodeSender (line 81) | func (m *RegistryDefault) CodeSender() *code.Sender {

FILE: driver/registry_default_registration.go
  method PostRegistrationPrePersistHooks (line 15) | func (m *RegistryDefault) PostRegistrationPrePersistHooks(ctx context.Co...
  method PostRegistrationPostPersistHooks (line 24) | func (m *RegistryDefault) PostRegistrationPostPersistHooks(ctx context.C...
  method PreRegistrationHooks (line 46) | func (m *RegistryDefault) PreRegistrationHooks(ctx context.Context) ([]r...
  method RegistrationExecutor (line 50) | func (m *RegistryDefault) RegistrationExecutor() *registration.HookExecu...
  method RegistrationHookExecutor (line 57) | func (m *RegistryDefault) RegistrationHookExecutor() *registration.HookE...
  method RegistrationErrorHandler (line 64) | func (m *RegistryDefault) RegistrationErrorHandler() *registration.Error...
  method RegistrationHandler (line 71) | func (m *RegistryDefault) RegistrationHandler() *registration.Handler {
  method RegistrationFlowErrorHandler (line 79) | func (m *RegistryDefault) RegistrationFlowErrorHandler() *registration.E...

FILE: driver/registry_default_schemas.go
  method IdentityTraitsSchemas (line 12) | func (m *RegistryDefault) IdentityTraitsSchemas(ctx context.Context) (sc...

FILE: driver/registry_default_schemas_test.go
  function TestRegistryDefault_IdentityTraitsSchemas (line 20) | func TestRegistryDefault_IdentityTraitsSchemas(t *testing.T) {

FILE: driver/registry_default_sessiontokenexchange.go
  method SessionTokenExchangePersister (line 8) | func (m *RegistryDefault) SessionTokenExchangePersister() sessiontokenex...

FILE: driver/registry_default_settings.go
  method PostSettingsPrePersistHooks (line 14) | func (m *RegistryDefault) PostSettingsPrePersistHooks(ctx context.Contex...
  method PreSettingsHooks (line 18) | func (m *RegistryDefault) PreSettingsHooks(ctx context.Context) ([]setti...
  method PostSettingsPostPersistHooks (line 22) | func (m *RegistryDefault) PostSettingsPostPersistHooks(ctx context.Conte...
  method SettingsHookExecutor (line 43) | func (m *RegistryDefault) SettingsHookExecutor() *settings.HookExecutor {
  method SettingsHandler (line 50) | func (m *RegistryDefault) SettingsHandler() *settings.Handler {
  method SettingsFlowErrorHandler (line 57) | func (m *RegistryDefault) SettingsFlowErrorHandler() *settings.ErrorHand...
  method SettingsStrategies (line 64) | func (m *RegistryDefault) SettingsStrategies(ctx context.Context) (profi...
  method AllSettingsStrategies (line 75) | func (m *RegistryDefault) AllSettingsStrategies() settings.Strategies {

FILE: driver/registry_default_test.go
  function TestDriverDefault_Hooks (line 31) | func TestDriverDefault_Hooks(t *testing.T) {
  function TestDriverDefault_Strategies (line 627) | func TestDriverDefault_Strategies(t *testing.T) {
  function TestDefaultRegistry_AllStrategies (line 868) | func TestDefaultRegistry_AllStrategies(t *testing.T) {
  function TestGetActiveRecoveryStrategy (line 909) | func TestGetActiveRecoveryStrategy(t *testing.T) {
  function TestGetActiveVerificationStrategy (line 943) | func TestGetActiveVerificationStrategy(t *testing.T) {

FILE: driver/registry_default_verification.go
  method VerificationFlowPersister (line 18) | func (m *RegistryDefault) VerificationFlowPersister() verification.FlowP...
  method VerificationFlowErrorHandler (line 22) | func (m *RegistryDefault) VerificationFlowErrorHandler() *verification.E...
  method VerificationManager (line 30) | func (m *RegistryDefault) VerificationManager() *identity.Manager {
  method VerificationHandler (line 38) | func (m *RegistryDefault) VerificationHandler() *verification.Handler {
  method LinkSender (line 46) | func (m *RegistryDefault) LinkSender() *link.Sender {
  method GetActiveVerificationStrategies (line 57) | func (m *RegistryDefault) GetActiveVerificationStrategies(ctx context.Co...
  method VerificationStrategies (line 67) | func (m *RegistryDefault) VerificationStrategies(ctx context.Context) (v...
  method AllVerificationStrategies (line 78) | func (m *RegistryDefault) AllVerificationStrategies() (verificationStrat...
  method VerificationExecutor (line 88) | func (m *RegistryDefault) VerificationExecutor() *verification.HookExecu...
  method PreVerificationHooks (line 95) | func (m *RegistryDefault) PreVerificationHooks(ctx context.Context) ([]v...
  method PostVerificationHooks (line 99) | func (m *RegistryDefault) PostVerificationHooks(ctx context.Context) ([]...

FILE: embedx/embedx.go
  type SchemaType (line 27) | type SchemaType
    method GetSchemaID (line 72) | func (s SchemaType) GetSchemaID() string {
  constant Config (line 30) | Config SchemaType = iota + 1
  constant IdentityMeta (line 31) | IdentityMeta
  constant IdentityExtension (line 32) | IdentityExtension
  type Schema (line 35) | type Schema struct
  function getSchema (line 65) | func getSchema(schema SchemaType) (*Schema, error) {
  function AddSchemaResources (line 78) | func AddSchemaResources(c interface {
  function addSchemaResources (line 102) | func addSchemaResources(c interface {

FILE: embedx/embedx_test.go
  function TestAddSchemaResources (line 20) | func TestAddSchemaResources(t *testing.T) {
  function TestIdentityMetaSchema (line 79) | func TestIdentityMetaSchema(t *testing.T) {

FILE: examples/go/identity/create/main.go
  function createIdentity (line 19) | func createIdentity() *ory.Identity {
  function main (line 34) | func main() {

FILE: examples/go/identity/create/main_test.go
  function TestFunc (line 14) | func TestFunc(t *testing.T) {

FILE: examples/go/identity/delete/main.go
  function deleteIdentity (line 18) | func deleteIdentity() {
  function main (line 27) | func main() {

FILE: examples/go/identity/delete/main_test.go
  function TestFunc (line 14) | func TestFunc(t *testing.T) {

FILE: examples/go/identity/get/main.go
  function getIdentity (line 18) | func getIdentity() *ory.Identity {
  function main (line 28) | func main() {

FILE: examples/go/identity/get/main_test.go
  function TestFunc (line 14) | func TestFunc(t *testing.T) {

FILE: examples/go/identity/update/main.go
  function updateIdentity (line 19) | func updateIdentity() *ory.Identity {
  function main (line 33) | func main() {

FILE: examples/go/identity/update/main_test.go
  function TestFunc (line 17) | func TestFunc(t *testing.T) {

FILE: examples/go/pkg/common.go
  function PrintJSONPretty (line 19) | func PrintJSONPretty(v interface{}) {
  function TestClient (line 24) | func TestClient(t *testing.T) *ory.APIClient {
  function NewSDK (line 29) | func NewSDK(project string) *ory.APIClient {
  function NewSDKForSelfHosted (line 33) | func NewSDKForSelfHosted(endpoint string) *ory.APIClient {
  function ExitOnError (line 41) | func ExitOnError(err error) {
  function SDKExitOnError (line 50) | func SDKExitOnError(err error, res *http.Response) {

FILE: examples/go/pkg/resources.go
  function RandomCredentials (line 16) | func RandomCredentials() (email, password string) {
  function CreateIdentityWithSession (line 23) | func CreateIdentityWithSession(c *ory.APIClient, email, password string)...
  function CreateIdentity (line 55) | func CreateIdentity(c *ory.APIClient) *ory.Identity {

FILE: examples/go/selfservice/error/main.go
  function getError (line 19) | func getError() *ory.FlowError {
  function main (line 25) | func main() {

FILE: examples/go/selfservice/error/main_test.go
  function TestError (line 16) | func TestError(t *testing.T) {

FILE: examples/go/selfservice/login/main.go
  function performLogin (line 19) | func performLogin() *ory.SuccessfulNativeLogin {
  function main (line 47) | func main() {

FILE: examples/go/selfservice/login/main_test.go
  function TestFunc (line 16) | func TestFunc(t *testing.T) {

FILE: examples/go/selfservice/logout/main.go
  function performLogout (line 20) | func performLogout() {
  function main (line 31) | func main() {

FILE: examples/go/selfservice/logout/main_test.go
  function TestFunc (line 14) | func TestFunc(t *testing.T) {

FILE: examples/go/selfservice/recovery/main.go
  function performRecovery (line 19) | func performRecovery(email string) *ory.RecoveryFlow {
  function main (line 41) | func main() {

FILE: examples/go/selfservice/recovery/main_test.go
  function TestFunc (line 18) | func TestFunc(t *testing.T) {

FILE: examples/go/selfservice/registration/main.go
  function initRegistration (line 19) | func initRegistration() *ory.SuccessfulNativeRegistration {
  function main (line 44) | func main() {

FILE: examples/go/selfservice/registration/main_test.go
  function TestFunc (line 16) | func TestFunc(t *testing.T) {

FILE: examples/go/selfservice/settings/main.go
  function initFlow (line 21) | func initFlow(email, password string) (string, *ory.SettingsFlow) {
  function changePassword (line 35) | func changePassword(email, password string) *ory.SettingsFlow {
  function changeTraits (line 50) | func changeTraits(email, password string) *ory.SettingsFlow {
  function main (line 67) | func main() {

FILE: examples/go/selfservice/settings/main_test.go
  function TestSettings (line 20) | func TestSettings(t *testing.T) {

FILE: examples/go/selfservice/verification/main.go
  function performVerification (line 19) | func performVerification(email string) *ory.VerificationFlow {
  function main (line 41) | func main() {

FILE: examples/go/selfservice/verification/main_test.go
  function TestFunc (line 18) | func TestFunc(t *testing.T) {

FILE: examples/go/session/tosession/main.go
  function toSession (line 17) | func toSession() *ory.Session {
  function main (line 28) | func main() {

FILE: examples/go/session/tosession/main_test.go
  function TestFunc (line 18) | func TestFunc(t *testing.T) {

FILE: gen/oidc/v1/state.pb.go
  constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type FlowKind (line 25) | type FlowKind
    method Enum (line 50) | func (x FlowKind) Enum() *FlowKind {
    method String (line 56) | func (x FlowKind) String() string {
    method Descriptor (line 60) | func (FlowKind) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 64) | func (FlowKind) Type() protoreflect.EnumType {
    method Number (line 68) | func (x FlowKind) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 73) | func (FlowKind) EnumDescriptor() ([]byte, []int) {
  constant FlowKind_FLOW_KIND_UNSPECIFIED (line 28) | FlowKind_FLOW_KIND_UNSPECIFIED  FlowKind = 0
  constant FlowKind_FLOW_KIND_LOGIN (line 29) | FlowKind_FLOW_KIND_LOGIN        FlowKind = 1
  constant FlowKind_FLOW_KIND_REGISTRATION (line 30) | FlowKind_FLOW_KIND_REGISTRATION FlowKind = 2
  constant FlowKind_FLOW_KIND_SETTINGS (line 31) | FlowKind_FLOW_KIND_SETTINGS     FlowKind = 3
  type State (line 77) | type State struct
    method Reset (line 88) | func (x *State) Reset() {
    method String (line 95) | func (x *State) String() string {
    method ProtoMessage (line 99) | func (*State) ProtoMessage() {}
    method ProtoReflect (line 101) | func (x *State) ProtoReflect() protoreflect.Message {
    method Descriptor (line 114) | func (*State) Descriptor() ([]byte, []int) {
    method GetFlowId (line 118) | func (x *State) GetFlowId() []byte {
    method GetSessionTokenExchangeCodeSha512 (line 125) | func (x *State) GetSessionTokenExchangeCodeSha512() []byte {
    method GetProviderId (line 132) | func (x *State) GetProviderId() string {
    method GetPkceVerifier (line 139) | func (x *State) GetPkceVerifier() string {
    method GetFlowKind (line 146) | func (x *State) GetFlowKind() FlowKind {
  constant file_oidc_v1_state_proto_rawDesc (line 155) | file_oidc_v1_state_proto_rawDesc = "" +
  function file_oidc_v1_state_proto_rawDescGZIP (line 178) | func file_oidc_v1_state_proto_rawDescGZIP() []byte {
  function init (line 200) | func init() { file_oidc_v1_state_proto_init() }
  function file_oidc_v1_state_proto_init (line 201) | func file_oidc_v1_state_proto_init() {

FILE: hash/hash_comparator.go
  function NewCryptDecoder (line 45) | func NewCryptDecoder() *crypt.Decoder {
  type SupportedHasher (line 63) | type SupportedHasher struct
  function AddSupportedHasher (line 69) | func AddSupportedHasher(s SupportedHasher) {
  function Compare (line 141) | func Compare(ctx context.Context, password, hash []byte) (err error) {
  function CompareMD5Crypt (line 156) | func CompareMD5Crypt(_ context.Context, password, hash []byte) error {
  function CompareBcrypt (line 166) | func CompareBcrypt(ctx context.Context, password, hash []byte) error {
  function CompareSHA256Crypt (line 187) | func CompareSHA256Crypt(_ context.Context, password, hash []byte) error {
  function CompareSHA512Crypt (line 194) | func CompareSHA512Crypt(_ context.Context, password, hash []byte) error {
  function CompareArgon2id (line 201) | func CompareArgon2id(ctx context.Context, password, hash []byte) error {
  function CompareArgon2i (line 221) | func CompareArgon2i(ctx context.Context, password, hash []byte) error {
  function ComparePbkdf2 (line 240) | func ComparePbkdf2(ctx context.Context, password, hash []byte) error {
  function CompareScrypt (line 259) | func CompareScrypt(ctx context.Context, password, hash []byte) error {
  function CompareSSHA (line 281) | func CompareSSHA(ctx context.Context, password, hash []byte) error {
  function CompareSHA (line 297) | func CompareSHA(ctx context.Context, password, hash []byte) error {
  function CompareFirebaseScrypt (line 314) | func CompareFirebaseScrypt(ctx context.Context, password, hash []byte) e...
  function CompareMD5 (line 347) | func CompareMD5(ctx context.Context, password, hash []byte) error {
  function CompareHMAC (line 371) | func CompareHMAC(ctx context.Context, password, hash []byte) error {
  function IsMD5CryptHash (line 410) | func IsMD5CryptHash(hash []byte) bool       { return isMD5CryptHash.Matc...
  function IsBcryptHash (line 411) | func IsBcryptHash(hash []byte) bool         { return isBcryptHash.Match(...
  function IsSHA256CryptHash (line 412) | func IsSHA256CryptHash(hash []byte) bool    { return isSHA256CryptHash.M...
  function IsSHA512CryptHash (line 413) | func IsSHA512CryptHash(hash []byte) bool    { return isSHA512CryptHash.M...
  function IsArgon2idHash (line 414) | func IsArgon2idHash(hash []byte) bool       { return isArgon2idHash.Matc...
  function IsArgon2iHash (line 415) | func IsArgon2iHash(hash []byte) bool        { return isArgon2iHash.Match...
  function IsPbkdf2Hash (line 416) | func IsPbkdf2Hash(hash []byte) bool         { return isPbkdf2Hash.Match(...
  function IsScryptHash (line 417) | func IsScryptHash(hash []byte) bool         { return isScryptHash.Match(...
  function IsSSHAHash (line 418) | func IsSSHAHash(hash []byte) bool           { return isSSHAHash.Match(ha...
  function IsSHAHash (line 419) | func IsSHAHash(hash []byte) bool            { return isSHAHash.Match(has...
  function IsFirebaseScryptHash (line 420) | func IsFirebaseScryptHash(hash []byte) bool { return isFirebaseScryptHas...
  function IsMD5Hash (line 421) | func IsMD5Hash(hash []byte) bool            { return isMD5Hash.Match(has...
  function IsHMACHash (line 422) | func IsHMACHash(hash []byte) bool           { return isHMACHash.Match(ha...
  function IsValidHashFormat (line 424) | func IsValidHashFormat(hash []byte) bool {
  function decodeArgon2idHash (line 434) | func decodeArgon2idHash(encodedHash string) (p *config.Argon2, salt, has...
  function decodePbkdf2Hash (line 472) | func decodePbkdf2Hash(encodedHash string) (p *Pbkdf2, salt, hash []byte,...
  function decodeScryptHash (line 507) | func decodeScryptHash(encodedHash string) (p *Scrypt, salt, hash []byte,...
  function decodeSHAHash (line 537) | func decodeSHAHash(encodedHash string) (hasher string, pf, salt, hash []...
  function CompareSHAHelper (line 570) | func CompareSHAHelper(hasher string, raw []byte, hash []byte) error {
  function compareCryptHelper (line 593) | func compareCryptHelper(password []byte, hash string) error {
  function decodeSSHAHash (line 609) | func decodeSSHAHash(encodedHash string) (hasher string, salt, hash []byt...
  function decodeFirebaseScryptHash (line 652) | func decodeFirebaseScryptHash(encodedHash string) (p *Scrypt, salt, salt...
  function decodeMD5Hash (line 697) | func decodeMD5Hash(encodedHash string) (pf, salt, hash []byte, err error) {
  function decodeHMACHash (line 733) | func decodeHMACHash(encodedHash string) (hasher func() hash.Hash, hash, ...
  function comparePasswordHashConstantTime (line 778) | func comparePasswordHashConstantTime(hash, otherHash []byte) error {

FILE: hash/hasher.go
  type Hasher (line 11) | type Hasher interface
  type HashProvider (line 19) | type HashProvider interface
  constant tracingComponent (line 23) | tracingComponent = "github.com/ory/kratos/hash"

FILE: hash/hasher_argon2.go
  type Argon2 (line 32) | type Argon2 struct
    method Generate (line 49) | func (h *Argon2) Generate(ctx context.Context, password []byte) (_ []b...
    method Understands (line 89) | func (h *Argon2) Understands(hash []byte) bool {
  type Argon2Configuration (line 36) | type Argon2Configuration interface
  function NewHasherArgon2 (line 40) | func NewHasherArgon2(c Argon2Configuration) *Argon2 {
  function toKB (line 44) | func toKB(mem bytesize.ByteSize) uint32 {

FILE: hash/hasher_bcrypt.go
  type Bcrypt (line 24) | type Bcrypt struct
    method Generate (line 36) | func (h *Bcrypt) Generate(ctx context.Context, password []byte) (_ []b...
    method Understands (line 75) | func (h *Bcrypt) Understands(hash []byte) bool {
  type BcryptConfiguration (line 28) | type BcryptConfiguration interface
  function NewHasherBcrypt (line 32) | func NewHasherBcrypt(c BcryptConfiguration) *Bcrypt {
  function validateBcryptPasswordLength (line 62) | func validateBcryptPasswordLength(password []byte) error {

FILE: hash/hasher_pbkdf2.go
  type Pbkdf2 (line 28) | type Pbkdf2 struct
    method Generate (line 35) | func (h *Pbkdf2) Generate(ctx context.Context, password []byte) (_ []b...
    method Understands (line 72) | func (h *Pbkdf2) Understands(hash []byte) bool {
  function getPseudorandomFunctionForPbkdf2 (line 76) | func getPseudorandomFunctionForPbkdf2(alg string) func() hash.Hash {

FILE: hash/hasher_scrypt.go
  type Scrypt (line 6) | type Scrypt struct

FILE: hash/hasher_test.go
  function mkpw (line 19) | func mkpw(t *testing.T, length int) []byte {
  function TestArgonHasher (line 26) | func TestArgonHasher(t *testing.T) {
  function TestBcryptHasherGeneratesErrorWhenPasswordIsLong (line 57) | func TestBcryptHasherGeneratesErrorWhenPasswordIsLong(t *testing.T) {
  function TestBcryptHasherGeneratesHash (line 71) | func TestBcryptHasherGeneratesHash(t *testing.T) {
  function TestComparatorBcryptFailsWhenPasswordIsTooLong (line 99) | func TestComparatorBcryptFailsWhenPasswordIsTooLong(t *testing.T) {
  function TestComparatorBcryptSuccess (line 108) | func TestComparatorBcryptSuccess(t *testing.T) {
  function TestComparatorBcryptFail (line 136) | func TestComparatorBcryptFail(t *testing.T) {
  function TestPbkdf2Hasher (line 160) | func TestPbkdf2Hasher(t *testing.T) {
  function TestCompare (line 210) | func TestCompare(t *testing.T) {

FILE: hydra/fake.go
  constant FakeInvalidLoginChallenge (line 15) | FakeInvalidLoginChallenge = "2e98454e-031b-4870-9ad6-8517df1ce604"
  constant FakeValidLoginChallenge (line 16) | FakeValidLoginChallenge   = "5ff59a39-ecc5-467e-bb10-26644c0700ee"
  constant FakePostLoginURL (line 17) | FakePostLoginURL          = "https://www.example.com/fake-post-login"
  type FakeHydra (line 22) | type FakeHydra struct
    method AcceptLoginRequest (line 35) | func (h *FakeHydra) AcceptLoginRequest(_ context.Context, params Accep...
    method GetLoginRequest (line 49) | func (h *FakeHydra) GetLoginRequest(_ context.Context, loginChallenge ...
  function NewFake (line 29) | func NewFake() *FakeHydra {

FILE: hydra/hydra.go
  type hydraDependencies (line 23) | type hydraDependencies interface
  type Provider (line 27) | type Provider interface
  type AcceptLoginRequestParams (line 30) | type AcceptLoginRequestParams struct
  type Hydra (line 36) | type Hydra interface
  type DefaultHydra (line 40) | type DefaultHydra struct
    method getAdminURL (line 66) | func (h *DefaultHydra) getAdminURL(ctx context.Context) (string, error) {
    method getAdminAPIClient (line 74) | func (h *DefaultHydra) getAdminAPIClient(ctx context.Context) (hydracl...
    method AcceptLoginRequest (line 92) | func (h *DefaultHydra) AcceptLoginRequest(ctx context.Context, params ...
    method GetLoginRequest (line 134) | func (h *DefaultHydra) GetLoginRequest(ctx context.Context, loginChall...
  function NewDefaultHydra (line 45) | func NewDefaultHydra(d hydraDependencies) *DefaultHydra {
  function GetLoginChallengeID (line 51) | func GetLoginChallengeID(conf *config.Config, r *http.Request) (sqlxx.Nu...

FILE: hydra/hydra_test.go
  function requestFromChallenge (line 21) | func requestFromChallenge(s string) *http.Request {
  function TestGetLoginChallengeID (line 25) | func TestGetLoginChallengeID(t *testing.T) {

FILE: identity/address.go
  constant AddressTypeEmail (line 7) | AddressTypeEmail = "email"
  constant AddressTypeSMS (line 8) | AddressTypeSMS   = "sms"

FILE: identity/credentials.go
  type AuthenticatorAssuranceLevel (line 50) | type AuthenticatorAssuranceLevel
  constant NoAuthenticatorAssuranceLevel (line 53) | NoAuthenticatorAssuranceLevel AuthenticatorAssuranceLevel = "aal0"
  constant AuthenticatorAssuranceLevel1 (line 54) | AuthenticatorAssuranceLevel1  AuthenticatorAssuranceLevel = "aal1"
  constant AuthenticatorAssuranceLevel2 (line 55) | AuthenticatorAssuranceLevel2  AuthenticatorAssuranceLevel = "aal2"
  type NullableAuthenticatorAssuranceLevel (line 58) | type NullableAuthenticatorAssuranceLevel struct
    method ToAAL (line 80) | func (n NullableAuthenticatorAssuranceLevel) ToAAL() (AuthenticatorAss...
  function NewNullableAuthenticatorAssuranceLevel (line 63) | func NewNullableAuthenticatorAssuranceLevel(aal AuthenticatorAssuranceLe...
  type CredentialsType (line 100) | type CredentialsType
    method String (line 115) | func (c CredentialsType) String() string {
    method ToUiNodeGroup (line 119) | func (c CredentialsType) ToUiNodeGroup() node.UiNodeGroup {
  constant CredentialsTypePassword (line 104) | CredentialsTypePassword CredentialsType = "password"
  constant CredentialsTypeOIDC (line 105) | CredentialsTypeOIDC     CredentialsType = "oidc"
  constant CredentialsTypeTOTP (line 106) | CredentialsTypeTOTP     CredentialsType = "totp"
  constant CredentialsTypeLookup (line 107) | CredentialsTypeLookup   CredentialsType = "lookup_secret"
  constant CredentialsTypeWebAuthn (line 108) | CredentialsTypeWebAuthn CredentialsType = "webauthn"
  constant CredentialsTypeCodeAuth (line 109) | CredentialsTypeCodeAuth CredentialsType = "code"
  constant CredentialsTypePasskey (line 110) | CredentialsTypePasskey  CredentialsType = "passkey"
  constant CredentialsTypeProfile (line 111) | CredentialsTypeProfile  CredentialsType = "profile"
  constant CredentialsTypeSAML (line 112) | CredentialsTypeSAML     CredentialsType = "saml"
  constant CredentialsTypeRecoveryLink (line 154) | CredentialsTypeRecoveryLink CredentialsType = "link_recovery"
  constant CredentialsTypeRecoveryCode (line 155) | CredentialsTypeRecoveryCode CredentialsType = "code_recovery"
  function ParseCredentialsType (line 159) | func ParseCredentialsType(in string) (CredentialsType, bool) {
  type Credentials (line 179) | type Credentials struct
    method TableName (line 206) | func (c Credentials) TableName(context.Context) string {
    method GetID (line 210) | func (c Credentials) GetID() uuid.UUID {
    method Signature (line 215) | func (c Credentials) Signature() string {
  type CredentialIdentifier (line 233) | type CredentialIdentifier struct
    method TableName (line 267) | func (c CredentialIdentifier) TableName(context.Context) string {
  type CredentialsTypeTable (line 245) | type CredentialsTypeTable struct
    method TableName (line 263) | func (c CredentialsTypeTable) TableName(context.Context) string {
  type ActiveCredentialsCounter (line 251) | type ActiveCredentialsCounter interface
  type ActiveCredentialsCounterStrategyProvider (line 258) | type ActiveCredentialsCounterStrategyProvider interface
  function CredentialsEqual (line 271) | func CredentialsEqual(a, b map[CredentialsType]Credentials) bool {

FILE: identity/credentials_code.go
  type CodeChannel (line 17) | type CodeChannel
    method Scan (line 23) | func (c *CodeChannel) Scan(src interface{}) error {
  constant CodeChannelEmail (line 42) | CodeChannelEmail CodeChannel = AddressTypeEmail
  constant CodeChannelSMS (line 43) | CodeChannelSMS   CodeChannel = AddressTypeSMS
  function NewCodeChannel (line 46) | func NewCodeChannel(value string) (CodeChannel, error) {
  type CredentialsCode (line 60) | type CredentialsCode struct
  type CredentialsCodeAddress (line 65) | type CredentialsCodeAddress struct
    method UnmarshalJSON (line 75) | func (c *CredentialsCodeAddress) UnmarshalJSON(data []byte) (err error) {

FILE: identity/credentials_code_test.go
  function TestCredentialsCodeAddressUnmarshalJSON (line 13) | func TestCredentialsCodeAddressUnmarshalJSON(t *testing.T) {
  function TestNewCodeAddressType (line 72) | func TestNewCodeAddressType(t *testing.T) {

FILE: identity/credentials_lookup.go
  type CredentialsLookupConfig (line 16) | type CredentialsLookupConfig struct
    method ToNode (line 21) | func (c *CredentialsLookupConfig) ToNode() *node.Node {
  type RecoveryCode (line 38) | type RecoveryCode struct

FILE: identity/credentials_lookup_test.go
  function TestToNode (line 17) | func TestToNode(t *testing.T) {

FILE: identity/credentials_migrate.go
  function UpgradeWebAuthnCredentials (line 17) | func UpgradeWebAuthnCredentials(i *Identity, c *Credentials) (err error) {
  function UpgradeCredentials (line 58) | func UpgradeCredentials(i *Identity) error {
  function UpgradeCodeCredentials (line 72) | func UpgradeCodeCredentials(c *Credentials) (err error) {

FILE: identity/credentials_migrate_test.go
  function TestUpgradeCredentials (line 24) | func TestUpgradeCredentials(t *testing.T) {

FILE: identity/credentials_oidc.go
  type CredentialsOIDC (line 19) | type CredentialsOIDC struct
    method Organization (line 115) | func (c *CredentialsOIDC) Organization() string {
  type CredentialsOIDCProvider (line 26) | type CredentialsOIDCProvider struct
    method GetTokens (line 103) | func (c *CredentialsOIDCProvider) GetTokens() *CredentialsOIDCEncrypte...
  type CredentialsOIDCEncryptedTokens (line 37) | type CredentialsOIDCEncryptedTokens struct
    method GetRefreshToken (line 43) | func (c *CredentialsOIDCEncryptedTokens) GetRefreshToken() string {
    method GetAccessToken (line 50) | func (c *CredentialsOIDCEncryptedTokens) GetAccessToken() string {
    method GetIDToken (line 57) | func (c *CredentialsOIDCEncryptedTokens) GetIDToken() string {
  function NewCredentialsOIDC (line 65) | func NewCredentialsOIDC(tokens *CredentialsOIDCEncryptedTokens, provider...
  function NewOIDCLikeCredentials (line 70) | func NewOIDCLikeCredentials(tokens *CredentialsOIDCEncryptedTokens, t Cr...
  function OIDCUniqueID (line 111) | func OIDCUniqueID(provider, subject string) string {

FILE: identity/credentials_oidc_test.go
  function TestNewCredentialsOIDC (line 12) | func TestNewCredentialsOIDC(t *testing.T) {

FILE: identity/credentials_password.go
  type CredentialsPassword (line 9) | type CredentialsPassword struct
    method ShouldUsePasswordMigrationHook (line 19) | func (cp *CredentialsPassword) ShouldUsePasswordMigrationHook() bool {

FILE: identity/credentials_password_test.go
  function TestCredentialsPassword_ShouldUsePasswordMigrationHook (line 12) | func TestCredentialsPassword_ShouldUsePasswordMigrationHook(t *testing.T) {

FILE: identity/credentials_test.go
  function TestCredentialsEqual (line 17) | func TestCredentialsEqual(t *testing.T) {
  function TestAALOrder (line 28) | func TestAALOrder(t *testing.T) {
  function TestParseCredentialsType (line 33) | func TestParseCredentialsType(t *testing.T) {
  function TestCredentials_Hash (line 59) | func TestCredentials_Hash(t *testing.T) {

FILE: identity/credentials_totp.go
  type CredentialsTOTPConfig (line 7) | type CredentialsTOTPConfig struct

FILE: identity/credentials_webauthn.go
  type CredentialsWebAuthnConfig (line 17) | type CredentialsWebAuthnConfig struct
  type CredentialsWebAuthn (line 23) | type CredentialsWebAuthn
    method ToWebAuthn (line 52) | func (c CredentialsWebAuthn) ToWebAuthn() (result []webauthn.Credentia...
    method PasswordlessOnly (line 60) | func (c CredentialsWebAuthn) PasswordlessOnly(authenticatorResponseFla...
    method ToWebAuthnFiltered (line 83) | func (c CredentialsWebAuthn) ToWebAuthnFiltered(aal AuthenticatorAssur...
  function CredentialFromWebAuthn (line 25) | func CredentialFromWebAuthn(credential *webauthn.Credential, isPasswordl...
  type CredentialWebAuthn (line 139) | type CredentialWebAuthn struct
    method ToWebAuthn (line 101) | func (c *CredentialWebAuthn) ToWebAuthn() *webauthn.Credential {
  type CredentialWebAuthnFlags (line 152) | type CredentialWebAuthnFlags struct
  type CredentialWebAuthnAttestation (line 159) | type CredentialWebAuthnAttestation struct
  type AuthenticatorWebAuthn (line 167) | type AuthenticatorWebAuthn struct

FILE: identity/credentials_webauthn_test.go
  function TestCredentialConversion (line 16) | func TestCredentialConversion(t *testing.T) {
  function TestPasswordlessOnly (line 53) | func TestPasswordlessOnly(t *testing.T) {

FILE: identity/error_test.go
  function TestErrDuplicateCredentials (line 13) | func TestErrDuplicateCredentials(t *testing.T) {

FILE: identity/expandables.go
  constant ExpandFieldVerifiableAddresses (line 12) | ExpandFieldVerifiableAddresses Expandable = "VerifiableAddresses"
  constant ExpandFieldRecoveryAddresses (line 13) | ExpandFieldRecoveryAddresses   Expandable = "RecoveryAddresses"
  constant ExpandFieldCredentials (line 14) | ExpandFieldCredentials         Expandable = "Credentials"

FILE: identity/extension_credentials.go
  type SchemaExtensionCredentials (line 24) | type SchemaExtensionCredentials struct
    method setIdentifier (line 35) | func (r *SchemaExtensionCredentials) setIdentifier(ct CredentialsType,...
    method Run (line 54) | func (r *SchemaExtensionCredentials) Run(ctx jsonschema.ValidationCont...
    method Finish (line 128) | func (r *SchemaExtensionCredentials) Finish() error {
  function NewSchemaExtensionCredentials (line 31) | func NewSchemaExtensionCredentials(i *Identity) *SchemaExtensionCredenti...

FILE: identity/extension_credentials_test.go
  function TestSchemaExtensionCredentials (line 22) | func TestSchemaExtensionCredentials(t *testing.T) {

FILE: identity/extension_recovery.go
  type SchemaExtensionRecovery (line 18) | type SchemaExtensionRecovery struct
    method Run (line 28) | func (r *SchemaExtensionRecovery) Run(ctx jsonschema.ValidationContext...
    method has (line 86) | func (r *SchemaExtensionRecovery) has(haystack []RecoveryAddress, need...
    method Finish (line 95) | func (r *SchemaExtensionRecovery) Finish() error {
  function NewSchemaExtensionRecovery (line 24) | func NewSchemaExtensionRecovery(i *Identity) *SchemaExtensionRecovery {

FILE: identity/extension_recovery_test.go
  function TestSchemaExtensionRecovery (line 23) | func TestSchemaExtensionRecovery(t *testing.T) {

FILE: identity/extension_verification.go
  function init (line 18) | func init() {
  type SchemaExtensionVerification (line 24) | type SchemaExtensionVerification struct
    method Run (line 40) | func (r *SchemaExtensionVerification) Run(ctx jsonschema.ValidationCon...
    method Finish (line 88) | func (r *SchemaExtensionVerification) Finish() error {
    method appendAddress (line 104) | func (r *SchemaExtensionVerification) appendAddress(address *Verifiabl...
  function NewSchemaExtensionVerification (line 31) | func NewSchemaExtensionVerification(i *Identity, lifespan time.Duration)...
  constant ChannelTypeEmail (line 36) | ChannelTypeEmail = "email"
  constant ChannelTypeSMS (line 37) | ChannelTypeSMS   = "sms"
  function merge (line 94) | func merge(base []VerifiableAddress, overrides []VerifiableAddress) []Ve...
  function has (line 117) | func has(haystack []VerifiableAddress, needle *VerifiableAddress) *Verif...

FILE: identity/extension_verification_test.go
  constant emailSchemaPath (line 25) | emailSchemaPath                    = "file://./stub/extension/verify/ema...
  constant phoneSchemaPath (line 26) | phoneSchemaPath                    = "file://./stub/extension/verify/pho...
  constant missingFormatSchemaPath (line 27) | missingFormatSchemaPath            = "file://./stub/extension/verify/mis...
  constant legacyEmailMissingFormatSchemaPath (line 28) | legacyEmailMissingFormatSchemaPath = "file://./stub/extension/verify/leg...
  constant noValidateSchemaPath (line 29) | noValidateSchemaPath               = "file://./stub/extension/verify/no-...
  function TestSchemaExtensionVerification (line 32) | func TestSchemaExtensionVerification(t *testing.T) {
  function mustContainAddress (line 415) | func mustContainAddress(t *testing.T, expected, actual []VerifiableAddre...
  function TestMergeVerifiableAddresses (line 428) | func TestMergeVerifiableAddresses(t *testing.T) {

FILE: identity/handler.go
  constant RouteCollection (line 47) | RouteCollection     = "/identities"
  constant RouteItem (line 48) | RouteItem           = RouteCollection + "/{id}"
  constant RouteCredentialItem (line 49) | RouteCredentialItem = RouteItem + "/credentials/{type}"
  constant BatchPatchIdentitiesLimit (line 51) | BatchPatchIdentitiesLimit             = 1000
  constant BatchPatchIdentitiesWithPasswordLimit (line 52) | BatchPatchIdentitiesWithPasswordLimit = 200
  type dependencies (line 56) | type dependencies interface
  type HandlerProvider (line 66) | type HandlerProvider interface
  type Handler (line 69) | type Handler struct
    method RegisterPublicRoutes (line 74) | func (h *Handler) RegisterPublicRoutes(public *httprouterx.RouterPubli...
    method RegisterAdminRoutes (line 103) | func (h *Handler) RegisterAdminRoutes(admin *httprouterx.RouterAdmin) {
    method list (line 266) | func (h *Handler) list(w http.ResponseWriter, r *http.Request) {
    method get (line 381) | func (h *Handler) get(w http.ResponseWriter, r *http.Request) {
    method getByExternalID (line 433) | func (h *Handler) getByExternalID(w http.ResponseWriter, r *http.Reque...
    method create (line 670) | func (h *Handler) create(w http.ResponseWriter, r *http.Request) {
    method identityFromCreateIdentityBody (line 702) | func (h *Handler) identityFromCreateIdentityBody(ctx context.Context, ...
    method batchPatchIdentities (line 785) | func (h *Handler) batchPatchIdentities(w http.ResponseWriter, r *http....
    method update (line 952) | func (h *Handler) update(w http.ResponseWriter, r *http.Request) {
    method delete (line 1044) | func (h *Handler) delete(w http.ResponseWriter, r *http.Request) {
    method patch (line 1097) | func (h *Handler) patch(w http.ResponseWriter, r *http.Request) {
    method deleteIdentityCredentials (line 1206) | func (h *Handler) deleteIdentityCredentials(w http.ResponseWriter, r *...
  function NewHandler (line 72) | func NewHandler(r dependencies) *Handler { return &Handler{r: r} }
  type _ (line 120) | type _ struct
  type _ (line 134) | type _ struct
  function parseListIdentitiesParameters (line 184) | func parseListIdentitiesParameters(r *http.Request) (params ListIdentity...
  type getIdentity (line 316) | type getIdentity struct
  type getIdentityByExternalID (line 339) | type getIdentityByExternalID struct
  type createIdentity (line 471) | type createIdentity struct
  type CreateIdentityBody (line 479) | type CreateIdentityBody struct
  type IdentityWithCredentials (line 539) | type IdentityWithCredentials struct
  type AdminIdentityImportCredentialsPassword (line 553) | type AdminIdentityImportCredentialsPassword struct
  type AdminIdentityImportCredentialsPasswordConfig (line 561) | type AdminIdentityImportCredentialsPasswordConfig struct
  type AdminIdentityImportCredentialsOIDC (line 575) | type AdminIdentityImportCredentialsOIDC struct
  type AdminIdentityImportCredentialsOIDCConfig (line 581) | type AdminIdentityImportCredentialsOIDCConfig struct
  type AdminCreateIdentityImportCredentialsOIDCProvider (line 589) | type AdminCreateIdentityImportCredentialsOIDCProvider struct
  type AdminIdentityImportCredentialsSAML (line 612) | type AdminIdentityImportCredentialsSAML struct
  type AdminIdentityImportCredentialsSAMLConfig (line 620) | type AdminIdentityImportCredentialsSAMLConfig struct
  type AdminCreateIdentityImportCredentialsSAMLProvider (line 628) | type AdminCreateIdentityImportCredentialsSAMLProvider struct
  type updateIdentity (line 867) | type updateIdentity struct
  type UpdateIdentityBody (line 881) | type UpdateIdentityBody struct
  type deleteIdentity (line 1014) | type deleteIdentity struct
  type patchIdentity (line 1059) | type patchIdentity struct
  type _ (line 1160) | type _ struct

FILE: identity/handler_import.go
  method importCredentials (line 17) | func (h *Handler) importCredentials(ctx context.Context, i *Identity, cr...
  method importPasswordCredentials (line 51) | func (h *Handler) importPasswordCredentials(ctx context.Context, i *Iden...
  method importOIDCCredentials (line 76) | func (h *Handler) importOIDCCredentials(_ context.Context, i *Identity, ...
  method importSAMLCredentials (line 121) | func (h *Handler) importSAMLCredentials(_ context.Context, i *Identity, ...

FILE: identity/handler_import_test.go
  function TestImportCredentials (line 17) | func TestImportCredentials(t *testing.T) {

FILE: identity/handler_test.go
  function TestHandler (line 47) | func TestHandler(t *testing.T) {
  function validCreateIdentityBody (line 2529) | func validCreateIdentityBody(t *testing.T, prefix string, i int, plainPa...
  function assertJSONArrayElementsMatch (line 2590) | func assertJSONArrayElementsMatch(t *testing.T, expected, actual gjson.R...

FILE: identity/identity.go
  type State (line 32) | type State
    method IsValid (line 39) | func (lt State) IsValid() error {
  constant StateActive (line 35) | StateActive   State = "active"
  constant StateInactive (line 36) | StateInactive State = "inactive"
  type Identity (line 52) | type Identity struct
    method PageToken (line 144) | func (i *Identity) PageToken() keysetpagination.PageToken {
    method TableName (line 188) | func (i Identity) TableName(context.Context) string {
    method IsActive (line 192) | func (i *Identity) IsActive() bool {
    method SetCredentials (line 196) | func (i *Identity) SetCredentials(t CredentialsType, c Credentials) {
    method SetCredentialsWithConfig (line 206) | func (i *Identity) SetCredentialsWithConfig(t CredentialsType, c Crede...
    method DeleteCredentialsType (line 221) | func (i *Identity) DeleteCredentialsType(t CredentialsType) {
    method GetCredentialsOr (line 231) | func (i *Identity) GetCredentialsOr(t CredentialsType, fallback *Crede...
    method UpsertCredentialsConfig (line 247) | func (i *Identity) UpsertCredentialsConfig(t CredentialsType, conf []b...
    method GetCredentials (line 265) | func (i *Identity) GetCredentials(t CredentialsType) (*Credentials, bo...
    method ParseCredentials (line 273) | func (i *Identity) ParseCredentials(t CredentialsType, config any) (*C...
    method CopyWithoutCredentials (line 284) | func (i *Identity) CopyWithoutCredentials() *Identity {
    method MergeOIDCCredentials (line 294) | func (i *Identity) MergeOIDCCredentials(t CredentialsType, newCreds Cr...
    method GetID (line 357) | func (i Identity) GetID() uuid.UUID {
    method MarshalJSON (line 361) | func (i Identity) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 372) | func (i *Identity) UnmarshalJSON(b []byte) error {
    method SetAvailableAAL (line 385) | func (i *Identity) SetAvailableAAL(ctx context.Context, m *Manager) (e...
    method Validate (line 430) | func (i *Identity) Validate() error {
    method WithDeclassifiedCredentials (line 475) | func (i *Identity) WithDeclassifiedCredentials(ctx context.Context, c ...
    method deleteCredentialPassword (line 554) | func (i *Identity) deleteCredentialPassword() error {
    method deleteCredentialWebAuthFromIdentity (line 564) | func (i *Identity) deleteCredentialWebAuthFromIdentity() error {
    method deleteCredentialOIDCSAMLFromIdentity (line 601) | func (i *Identity) deleteCredentialOIDCSAMLFromIdentity(ct Credentials...
  function DefaultPageToken (line 148) | func DefaultPageToken() keysetpagination.PageToken {
  type Traits (line 157) | type Traits
    method Scan (line 159) | func (t *Traits) Scan(value any) error {
    method Value (line 163) | func (t Traits) Value() (driver.Value, error) {
    method String (line 167) | func (t *Traits) String() string {
    method MarshalJSON (line 172) | func (t Traits) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 180) | func (t *Traits) UnmarshalJSON(data []byte) error {
  type CredentialsOptions (line 239) | type CredentialsOptions
  function WithAdditionalIdentifier (line 241) | func WithAdditionalIdentifier(identifier string) CredentialsOptions {
  function NewIdentity (line 340) | func NewIdentity(traitsSchemaID string) *Identity {
  type WithAdminMetadataInJSON (line 404) | type WithAdminMetadataInJSON
    method MarshalJSON (line 406) | func (i WithAdminMetadataInJSON) MarshalJSON() ([]byte, error) {
  type WithCredentialsAndAdminMetadataInJSON (line 412) | type WithCredentialsAndAdminMetadataInJSON
    method MarshalJSON (line 414) | func (i WithCredentialsAndAdminMetadataInJSON) MarshalJSON() ([]byte, ...
  type WithCredentialsNoConfigAndAdminMetadataInJSON (line 419) | type WithCredentialsNoConfigAndAdminMetadataInJSON
    method MarshalJSON (line 421) | func (i WithCredentialsNoConfigAndAdminMetadataInJSON) MarshalJSON() (...
  function CollectVerifiableAddresses (line 456) | func CollectVerifiableAddresses(i []*Identity) (res []VerifiableAddress) {
  function CollectRecoveryAddresses (line 466) | func CollectRecoveryAddresses(i []*Identity) (res []RecoveryAddress) {
  type batchPatchIdentitites (line 650) | type batchPatchIdentitites struct
  type BatchPatchIdentitiesBody (line 660) | type BatchPatchIdentitiesBody struct
  type BatchIdentityPatch (line 676) | type BatchIdentityPatch struct
  type BatchPatchAction (line 691) | type BatchPatchAction
  constant ActionCreate (line 695) | ActionCreate BatchPatchAction = "create"
  constant ActionError (line 698) | ActionError BatchPatchAction = "error"
  type batchPatchIdentitiesResponse (line 713) | type batchPatchIdentitiesResponse struct
  type BatchIdentityPatchResponse (line 723) | type BatchIdentityPatchResponse struct

FILE: identity/identity_recovery.go
  type RecoveryAddressStatus (line 15) | type RecoveryAddressStatus
  type RecoveryAddress (line 18) | type RecoveryAddress struct
    method TableName (line 37) | func (a RecoveryAddress) TableName() string { return "identity_recover...
    method GetID (line 38) | func (a RecoveryAddress) GetID() uuid.UUID  { return a.ID }
    method Signature (line 41) | func (a RecoveryAddress) Signature() string {
  function NewRecoveryEmailAddress (line 45) | func NewRecoveryEmailAddress(
  function NewRecoverySMSAddress (line 56) | func NewRecoverySMSAddress(

FILE: identity/identity_recovery_test.go
  function TestNewRecoveryEmailAddress (line 16) | func TestNewRecoveryEmailAddress(t *testing.T) {
  function TestRecoveryAddress_Hash (line 29) | func TestRecoveryAddress_Hash(t *testing.T) {

FILE: identity/identity_test.go
  function TestNewIdentity (line 25) | func TestNewIdentity(t *testing.T) {
  function TestIdentityCredentialsOr (line 35) | func TestIdentityCredentialsOr(t *testing.T) {
  function TestIdentityCredentialsOrCreate (line 50) | func TestIdentityCredentialsOrCreate(t *testing.T) {
  function TestIdentityCredentials (line 63) | func TestIdentityCredentials(t *testing.T) {
  function TestMarshalExcludesCredentials (line 100) | func TestMarshalExcludesCredentials(t *testing.T) {
  function TestMarshalExcludesCredentialsByReference (line 120) | func TestMarshalExcludesCredentialsByReference(t *testing.T) {
  function TestMarshalIgnoresAdminMetadata (line 139) | func TestMarshalIgnoresAdminMetadata(t *testing.T) {
  function TestUnMarshallIgnoresCredentials (line 157) | func TestUnMarshallIgnoresCredentials(t *testing.T) {
  function TestUnMarshallIgnoresAdminMetadata (line 169) | func TestUnMarshallIgnoresAdminMetadata(t *testing.T) {
  function TestMarshalIdentityWithCredentialsWhenCredentialsNil (line 180) | func TestMarshalIdentityWithCredentialsWhenCredentialsNil(t *testing.T) {
  function TestMarshalIdentityWithAdminMetadata (line 192) | func TestMarshalIdentityWithAdminMetadata(t *testing.T) {
  function TestMarshalIdentityWithCredentialsNoConfig (line 203) | func TestMarshalIdentityWithCredentialsNoConfig(t *testing.T) {
  function TestMarshalIdentityWithAll (line 227) | func TestMarshalIdentityWithAll(t *testing.T) {
  function TestValidateNID (line 251) | func TestValidateNID(t *testing.T) {
  function TestRecoveryAddresses (line 310) | func TestRecoveryAddresses(t *testing.T) {
  function TestVerifiableAddresses (line 329) | func TestVerifiableAddresses(t *testing.T) {
  type cipherProvider (line 347) | type cipherProvider struct
    method Cipher (line 349) | func (c *cipherProvider) Cipher(context.Context) cipher.Cipher {
  function TestWithDeclassifiedCredentials (line 353) | func TestWithDeclassifiedCredentials(t *testing.T) {
  function TestDeleteCredentialOIDCSAMLFromIdentity (line 440) | func TestDeleteCredentialOIDCSAMLFromIdentity(t *testing.T) {
  function TestMergeOIDCCredentials (line 524) | func TestMergeOIDCCredentials(t *testing.T) {

FILE: identity/identity_verification.go
  constant VerifiableAddressStatusPending (line 16) | VerifiableAddressStatusPending   VerifiableAddressStatus = "pending"
  constant VerifiableAddressStatusSent (line 17) | VerifiableAddressStatusSent      VerifiableAddressStatus = "sent"
  constant VerifiableAddressStatusCompleted (line 18) | VerifiableAddressStatusCompleted VerifiableAddressStatus = "completed"
  type VerifiableAddressStatus (line 24) | type VerifiableAddressStatus
  type VerifiableAddress (line 29) | type VerifiableAddress struct
    method TableName (line 81) | func (a VerifiableAddress) TableName() string {
    method GetID (line 99) | func (a VerifiableAddress) GetID() uuid.UUID {
    method Signature (line 104) | func (a VerifiableAddress) Signature() string {
  function NewVerifiableEmailAddress (line 85) | func NewVerifiableEmailAddress(value string, identity uuid.UUID) *Verifi...
  function NewVerifiableAddress (line 89) | func NewVerifiableAddress(value string, identity uuid.UUID, channel stri...

FILE: identity/identity_verification_test.go
  function TestNewVerifiableEmailAddress (line 22) | func TestNewVerifiableEmailAddress(t *testing.T) {
  function reflectiveHash (line 43) | func reflectiveHash(record any) string {
  function TestVerifiableAddress_Hash (line 68) | func TestVerifiableAddress_Hash(t *testing.T) {

FILE: identity/manager.go
  type managerDependencies (line 35) | type managerDependencies interface
  type ManagementProvider (line 45) | type ManagementProvider interface
  type Manager (line 48) | type Manager struct
    method Create (line 80) | func (m *Manager) Create(ctx context.Context, i *Identity, opts ...Man...
    method ConflictingIdentity (line 103) | func (m *Manager) ConflictingIdentity(ctx context.Context, i *Identity...
    method findExistingAuthMethod (line 159) | func (m *Manager) findExistingAuthMethod(ctx context.Context, e error,...
    method CreateIdentities (line 383) | func (m *Manager) CreateIdentities(ctx context.Context, identities []*...
    method requiresPrivilegedAccess (line 417) | func (m *Manager) requiresPrivilegedAccess(ctx context.Context, origin...
    method Update (line 440) | func (m *Manager) Update(ctx context.Context, updated *Identity, opts ...
    method UpdateSchemaID (line 461) | func (m *Manager) UpdateSchemaID(ctx context.Context, id uuid.UUID, sc...
    method SetTraits (line 483) | func (m *Manager) SetTraits(ctx context.Context, id uuid.UUID, traits ...
    method RefreshAvailableAAL (line 512) | func (m *Manager) RefreshAvailableAAL(ctx context.Context, i *Identity...
    method UpdateTraits (line 531) | func (m *Manager) UpdateTraits(ctx context.Context, id uuid.UUID, trai...
    method ValidateIdentity (line 543) | func (m *Manager) ValidateIdentity(ctx context.Context, i *Identity, o...
    method CountActiveFirstFactorCredentials (line 559) | func (m *Manager) CountActiveFirstFactorCredentials(ctx context.Contex...
    method CountActiveMultiFactorCredentials (line 575) | func (m *Manager) CountActiveMultiFactorCredentials(ctx context.Contex...
  type ManagerOptions (line 52) | type ManagerOptions struct
  type ManagerOption (line 57) | type ManagerOption
  function NewManager (line 60) | func NewManager(r managerDependencies) *Manager {
  function ManagerExposeValidationErrorsForInternalTypeAssertion (line 64) | func ManagerExposeValidationErrorsForInternalTypeAssertion(options *Mana...
  function ManagerAllowWriteProtectedTraits (line 68) | func ManagerAllowWriteProtectedTraits(options *ManagerOptions) {
  function newManagerOptions (line 72) | func newManagerOptions(opts []ManagerOption) *ManagerOptions {
  type ErrDuplicateCredentials (line 264) | type ErrDuplicateCredentials struct
    method Unwrap (line 274) | func (e *ErrDuplicateCredentials) Unwrap() error {
    method AddCredentialsType (line 278) | func (e *ErrDuplicateCredentials) AddCredentialsType(ct CredentialsTyp...
    method SetIdentifierHint (line 282) | func (e *ErrDuplicateCredentials) SetIdentifierHint(hint string) {
    method AvailableCredentials (line 288) | func (e *ErrDuplicateCredentials) AvailableCredentials() []string {
    method AvailableOIDCProviders (line 298) | func (e *ErrDuplicateCredentials) AvailableOIDCProviders() []string {
    method IdentifierHint (line 306) | func (e *ErrDuplicateCredentials) IdentifierHint() string {
    method HasHints (line 310) | func (e *ErrDuplicateCredentials) HasHints() bool {
  type FailedIdentity (line 314) | type FailedIdentity struct
  type CreateIdentitiesError (line 319) | type CreateIdentitiesError struct
    method Error (line 329) | func (e *CreateIdentitiesError) Error() string {
    method Unwrap (line 334) | func (e *CreateIdentitiesError) Unwrap() []error {
    method AddFailedIdentity (line 343) | func (e *CreateIdentitiesError) AddFailedIdentity(ident *Identity, err...
    method Merge (line 348) | func (e *CreateIdentitiesError) Merge(other *CreateIdentitiesError) {
    method Contains (line 355) | func (e *CreateIdentitiesError) Contains(ident *Identity) bool {
    method Find (line 361) | func (e *CreateIdentitiesError) Find(ident *Identity) *FailedIdentity {
    method ErrOrNil (line 370) | func (e *CreateIdentitiesError) ErrOrNil() error {
    method init (line 377) | func (e *CreateIdentitiesError) init() {
  function NewCreateIdentitiesError (line 323) | func NewCreateIdentitiesError(capacity int) *CreateIdentitiesError {

FILE: identity/manager_test.go
  function TestManagerNoDefaultNamedSchema (line 812) | func TestManagerNoDefaultNamedSchema(t *testing.T) {

FILE: identity/pool.go
  function NewUpdateIdentityOptions (line 17) | func NewUpdateIdentityOptions(opts []UpdateIdentityModifier) UpdateIdent...
  function DiffAgainst (line 31) | func DiffAgainst(existing *Identity) UpdateIdentityModifier {
  type ListIdentityParameters (line 42) | type ListIdentityParameters struct
    method TransformStatement (line 155) | func (p ListIdentityParameters) TransformStatement(statement string) s...
  type UpdateIdentityModifier (line 57) | type UpdateIdentityModifier
  type UpdateIdentityOptions (line 58) | type UpdateIdentityOptions struct
    method FromDatabase (line 37) | func (o UpdateIdentityOptions) FromDatabase() *Identity {
  type Pool (line 62) | type Pool interface
  type PoolProvider (line 83) | type PoolProvider interface
  type PrivilegedPoolProvider (line 87) | type PrivilegedPoolProvider interface
  type PrivilegedPool (line 91) | type PrivilegedPool interface

FILE: identity/registry.go
  type Registry (line 10) | type Registry interface
  type Configuration (line 14) | type Configuration interface

FILE: identity/test/pool.go
  function assertContainsValues (line 42) | func assertContainsValues(t *testing.T, actual []string, shouldContain, ...
  function TestPool (line 52) | func TestPool(ctx context.Context, p persistence.Persister, m *identity....
  function NewTestIdentity (line 2270) | func NewTestIdentity(numAddresses int, prefix string, i int) *identity.I...

FILE: identity/validator.go
  type validatorDependencies (line 21) | type validatorDependencies interface
  type Validator (line 25) | type Validator struct
    method ValidateWithRunner (line 38) | func (v *Validator) ValidateWithRunner(ctx context.Context, i *Identit...
    method Validate (line 66) | func (v *Validator) Validate(ctx context.Context, i *Identity) error {
  type ValidationProvider (line 29) | type ValidationProvider interface
  function NewValidator (line 34) | func NewValidator(d validatorDependencies) *Validator {

FILE: identity/validator_test.go
  function TestSchemaValidatorDisallowsInternalNetworkRequests (line 28) | func TestSchemaValidatorDisallowsInternalNetworkRequests(t *testing.T) {
  function TestSchemaValidator (line 68) | func TestSchemaValidator(t *testing.T) {

FILE: main.go
  function main (line 13) | func main() {

FILE: oryx/assertx/assertx.go
  function PrettifyJSONPayload (line 18) | func PrettifyJSONPayload(t testing.TB, payload interface{}) string {
  function EqualAsJSON (line 25) | func EqualAsJSON(t testing.TB, expected, actual interface{}, args ...int...
  function EqualAsJSONExcept (line 37) | func EqualAsJSONExcept(t testing.TB, expected, actual interface{}, excep...

FILE: oryx/cachex/ristretto.go
  type RistrettoCollector (line 12) | type RistrettoCollector struct
    method Describe (line 41) | func (c *RistrettoCollector) Describe(ch chan<- *prometheus.Desc) {
    method Collect (line 55) | func (c *RistrettoCollector) Collect(ch chan<- prometheus.Metric) {
  function NewRistrettoCollector (line 32) | func NewRistrettoCollector(prefix string, metricsFunc func() *ristretto....

FILE: oryx/castx/castx.go
  function ToFloatSlice (line 16) | func ToFloatSlice(i interface{}) []float64 {
  function ToFloatSliceE (line 22) | func ToFloatSliceE(i interface{}) ([]float64, error) {
  function ToStringSlice (line 51) | func ToStringSlice(i interface{}) []string {
  function ToStringSliceE (line 57) | func ToStringSliceE(i interface{}) ([]string, error) {
  function parseCSV (line 66) | func parseCSV(v string) ([]string, error) {

FILE: oryx/clidoc/generate.go
  function Generate (line 17) | func Generate(cmd *cobra.Command, args []string) error {
  function trimExt (line 25) | func trimExt(s string) string {
  function generate (line 29) | func generate(cmd *cobra.Command, dir string) error {

FILE: oryx/clidoc/md_docs.go
  function printOptions (line 32) | func printOptions(buf *bytes.Buffer, cmd *cobra.Command, name string) er...
  function GenMarkdown (line 52) | func GenMarkdown(cmd *cobra.Command, w io.Writer) error {
  function GenMarkdownCustom (line 57) | func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func...
  function GenMarkdownTree (line 141) | func GenMarkdownTree(cmd *cobra.Command, dir string) error {
  function GenMarkdownTreeCustom (line 149) | func GenMarkdownTreeCustom(cmd *cobra.Command, dir string, filePrepender...
  function fenceIndentedBlocks (line 178) | func fenceIndentedBlocks(s string) string {

FILE: oryx/clidoc/util.go
  function hasSeeAlso (line 23) | func hasSeeAlso(cmd *cobra.Command) bool {
  type byName (line 36) | type byName
    method Len (line 38) | func (s byName) Len() int           { return len(s) }
    method Swap (line 39) | func (s byName) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    method Less (line 40) | func (s byName) Less(i, j int) bool { return s[i].Name() < s[j].Name() }

FILE: oryx/cmdx/args.go
  function MinArgs (line 14) | func MinArgs(cmd *cobra.Command, args []string, min int) {
  function ExactArgs (line 24) | func ExactArgs(cmd *cobra.Command, args []string, l int) {
  function RangeArgs (line 34) | func RangeArgs(cmd *cobra.Command, args []string, r []int) {
  function ZeroOrTwoArgs (line 46) | func ZeroOrTwoArgs(cmd *cobra.Command, args []string) error {

FILE: oryx/cmdx/env.go
  function EnvVarExamplesHelpMessage (line 7) | func EnvVarExamplesHelpMessage(name string) string {

FILE: oryx/cmdx/helper.go
  function init (line 37) | func init() {
  function FailSilently (line 46) | func FailSilently(cmd *cobra.Command) error {
  function Must (line 54) | func Must(err error, message string, args ...interface{}) {
  function CheckResponse (line 65) | func CheckResponse(err error, expectedStatusCode int, response *http.Res...
  function FormatResponse (line 93) | func FormatResponse(o interface{}) string {
  function Fatalf (line 101) | func Fatalf(message string, args ...interface{}) {
  function ExpectDependency (line 112) | func ExpectDependency(logger *logrusx.Logger, dependencies ...interface{...
  type CallbackWriter (line 125) | type CallbackWriter struct
    method Write (line 130) | func (c *CallbackWriter) Write(msg []byte) (int, error) {
    method String (line 141) | func (c *CallbackWriter) String() string {
  function prepareCmd (line 147) | func prepareCmd(cmd *cobra.Command, stdIn io.Reader, stdOut, stdErr io.W...
  function ExecBackgroundCtx (line 167) | func ExecBackgroundCtx(ctx context.Context, cmd *cobra.Command, stdIn io...
  function Exec (line 181) | func Exec(t testing.TB, cmd *cobra.Command, stdIn io.Reader, args ...str...
  function ExecCtx (line 185) | func ExecCtx(ctx context.Context, cmd *cobra.Command, stdIn io.Reader, a...
  function ExecNoErr (line 198) | func ExecNoErr(t testing.TB, cmd *cobra.Command, args ...string) string {
  function ExecNoErrCtx (line 202) | func ExecNoErrCtx(ctx context.Context, t require.TestingT, cmd *cobra.Co...
  function ExecExpectedErr (line 214) | func ExecExpectedErr(t testing.TB, cmd *cobra.Command, args ...string) s...
  function ExecExpectedErrCtx (line 218) | func ExecExpectedErrCtx(ctx context.Context, t require.TestingT, cmd *co...
  type CommandExecuter (line 225) | type CommandExecuter struct
    method Exec (line 231) | func (c *CommandExecuter) Exec(stdin io.Reader, args ...string) (strin...
    method ExecBackground (line 235) | func (c *CommandExecuter) ExecBackground(stdin io.Reader, stdOut, stdE...
    method ExecNoErr (line 239) | func (c *CommandExecuter) ExecNoErr(t require.TestingT, args ...string...
    method ExecExpectedErr (line 243) | func (c *CommandExecuter) ExecExpectedErr(t require.TestingT, args ......
  type URL (line 247) | type URL struct
    method Set (line 253) | func (u *URL) Set(s string) error {
    method Type (line 262) | func (*URL) Type() string {

FILE: oryx/cmdx/http.go
  constant envKeyEndpoint (line 24) | envKeyEndpoint    = "ORY_SDK_URL"
  constant FlagEndpoint (line 25) | FlagEndpoint      = "endpoint"
  constant FlagSkipTLSVerify (line 26) | FlagSkipTLSVerify = "skip-tls-verify"
  constant FlagHeaders (line 27) | FlagHeaders       = "http-header"
  function Remote (line 31) | func Remote(cmd *cobra.Command) (string, error) {
  function RemoteURI (line 48) | func RemoteURI(cmd *cobra.Command) (*url.URL, error) {
  function NewClient (line 64) | func NewClient(cmd *cobra.Command) (*http.Client, *url.URL, error) {
  function RegisterHTTPClientFlags (line 121) | func RegisterHTTPClientFlags(flags *pflag.FlagSet) {

FILE: oryx/cmdx/noise_printer.go
  type ConditionalPrinter (line 14) | type ConditionalPrinter struct
    method Println (line 118) | func (p *ConditionalPrinter) Println(a ...interface{}) (n int, err err...
    method Print (line 125) | func (p *ConditionalPrinter) Print(a ...interface{}) (n int, err error) {
    method Printf (line 132) | func (p *ConditionalPrinter) Printf(format string, a ...interface{}) (...
  constant FlagQuiet (line 20) | FlagQuiet = "quiet"
  function RegisterNoiseFlags (line 23) | func RegisterNoiseFlags(flags *pflag.FlagSet) {
  function NewLoudOutPrinter (line 29) | func NewLoudOutPrinter(cmd *cobra.Command) *ConditionalPrinter {
  function NewQuietOutPrinter (line 43) | func NewQuietOutPrinter(cmd *cobra.Command) *ConditionalPrinter {
  function NewLoudErrPrinter (line 57) | func NewLoudErrPrinter(cmd *cobra.Command) *ConditionalPrinter {
  function NewQuietErrPrinter (line 71) | func NewQuietErrPrinter(cmd *cobra.Command) *ConditionalPrinter {
  function NewLoudPrinter (line 85) | func NewLoudPrinter(cmd *cobra.Command, w io.Writer) *ConditionalPrinter {
  function NewQuietPrinter (line 99) | func NewQuietPrinter(cmd *cobra.Command, w io.Writer) *ConditionalPrinter {
  function NewConditionalPrinter (line 111) | func NewConditionalPrinter(w io.Writer, print bool) *ConditionalPrinter {

FILE: oryx/cmdx/output.go
  type OutputIder (line 10) | type OutputIder
    method Header (line 17) | func (OutputIder) Header() []string {
    method Columns (line 21) | func (i OutputIder) Columns() []string {
    method Interface (line 25) | func (i OutputIder) Interface() interface{} {
  type OutputIderCollection (line 12) | type OutputIderCollection struct
    method Header (line 29) | func (OutputIderCollection) Header() []string {
    method Table (line 33) | func (c OutputIderCollection) Table() [][]string {
    method Interface (line 41) | func (c OutputIderCollection) Interface() interface{} {
    method Len (line 45) | func (c OutputIderCollection) Len() int {
  type PaginatedList (line 49) | type PaginatedList struct
    method Header (line 59) | func (r *PaginatedList) Header() []string {
    method Table (line 63) | func (r *PaginatedList) Table() [][]string {
    method Interface (line 72) | func (r *PaginatedList) Interface() interface{} {
    method Len (line 76) | func (r *PaginatedList) Len() int {
    method IDs (line 80) | func (r *PaginatedList) IDs() []string {

FILE: oryx/cmdx/pagination.go
  constant FlagPageSize (line 14) | FlagPageSize  = "page-size"
  constant FlagPageToken (line 15) | FlagPageToken = "page-token"
  function RegisterTokenPaginationFlags (line 18) | func RegisterTokenPaginationFlags(cmd *cobra.Command) (pageSize int, pag...
  function ParsePaginationArgs (line 25) | func ParsePaginationArgs(cmd *cobra.Command, pageArg, perPageArg string)...
  function ParseTokenPaginationArgs (line 43) | func ParseTokenPaginationArgs(cmd *cobra.Command) (page string, perPage ...

FILE: oryx/cmdx/printing.go
  type TableHeader (line 23) | type TableHeader interface
  type TableRow (line 26) | type TableRow interface
  type Table (line 31) | type Table interface
  type Nil (line 37) | type Nil struct
    method String (line 57) | func (Nil) String() string {
    method Interface (line 61) | func (Nil) Interface() interface{} {
  type Format (line 39) | type Format
  constant FormatQuiet (line 43) | FormatQuiet       Format = "quiet"
  constant FormatTable (line 44) | FormatTable       Format = "table"
  constant FormatJSON (line 45) | FormatJSON        Format = "json"
  constant FormatJSONPath (line 46) | FormatJSONPath    Format = "jsonpath"
  constant FormatJSONPointer (line 47) | FormatJSONPointer Format = "jsonpointer"
  constant FormatJSONPretty (line 48) | FormatJSONPretty  Format = "json-pretty"
  constant FormatYAML (line 49) | FormatYAML        Format = "yaml"
  constant FormatDefault (line 50) | FormatDefault     Format = "default"
  constant FlagFormat (line 52) | FlagFormat = "format"
  constant None (line 54) | None = "<none>"
  type printOptions (line 65) | type printOptions struct
  type PrintOption (line 69) | type PrintOption
  function WithFormat (line 71) | func WithFormat(v string) PrintOption {
  function PrintErrors (line 77) | func PrintErrors(cmd *cobra.Command, errs map[string]error) {
  function PrintRow (line 83) | func PrintRow(cmd *cobra.Command, row TableRow) {
  function PrintRowf (line 87) | func PrintRowf(w io.Writer, row TableRow, opts ...PrintOption) {
  function filterJSONPointer (line 122) | func filterJSONPointer(f string, data any) any {
  function PrintTable (line 139) | func PrintTable(cmd *cobra.Command, table Table) {
  function PrintTablef (line 143) | func PrintTablef(w io.Writer, table Table, opts ...PrintOption) {
  type interfacer (line 191) | type interfacer interface
  function PrintJSONAble (line 193) | func PrintJSONAble(cmd *cobra.Command, d interface{ String() string }) {
  function PrintJSONAblef (line 197) | func PrintJSONAblef(w io.Writer, d interface{ String() string }, opts .....
  function getQuiet (line 241) | func getQuiet(cmd *cobra.Command) bool {
  function getFormatValue (line 247) | func getFormatValue(cmd *cobra.Command) string {
  function parseFormat (line 256) | func parseFormat(f string) Format {
  function getPath (line 277) | func getPath(f string) string {
  function printJSON (line 289) | func printJSON(w io.Writer, v interface{}, pretty bool, path string) {
  function printYAML (line 305) | func printYAML(w io.Writer, v interface{}) {
  function RegisterJSONFormatFlags (line 313) | func RegisterJSONFormatFlags(flags *pflag.FlagSet) {
  function RegisterFormatFlags (line 317) | func RegisterFormatFlags(flags *pflag.FlagSet) {
  function PrintOpenAPIError (line 322) | func PrintOpenAPIError(cmd *cobra.Command, err error) error {

FILE: oryx/cmdx/usage.go
  function AddUsageTemplateFunc (line 19) | func AddUsageTemplateFunc(name string, f interface{}) {
  constant helpTemplate (line 24) | helpTemplate = `{{insertTemplate . (or .Long .Short) | trimTrailingWhite...
  constant usageTemplate (line 27) | usageTemplate = `Usage:{{if .Runnable}}
  function EnableUsageTemplating (line 56) | func EnableUsageTemplating(cmds ...*cobra.Command) {
  function TemplateCommandField (line 64) | func TemplateCommandField(cmd *cobra.Command, field string) (string, err...
  function DisableUsageTemplating (line 80) | func DisableUsageTemplating(cmds ...*cobra.Command) {
  function AssertUsageTemplates (line 89) | func AssertUsageTemplates(t require.TestingT, cmd *cobra.Command) {

FILE: oryx/cmdx/user_input.go
  function AskForConfirmation (line 18) | func AskForConfirmation(s string, stdin io.Reader, stdout io.Writer) bool {
  function AskScannerForConfirmation (line 34) | func AskScannerForConfirmation(s string, reader *bufio.Reader, stdout io...

FILE: oryx/cmdx/version.go
  function Version (line 14) | func Version(gitTag, gitHash, buildTime *string) *cobra.Command {

FILE: oryx/configx/context.go
  type contextKey (line 8) | type contextKey
  constant configContextKey (line 10) | configContextKey contextKey = iota + 1
  function ContextWithConfigOptions (line 12) | func ContextWithConfigOptions(ctx context.Context, opts ...OptionModifie...
  function ConfigOptionsFromContext (line 16) | func ConfigOptionsFromContext(ctx context.Context) []OptionModifier {

FILE: oryx/configx/cors.go
  constant CORSConfigSchemaID (line 12) | CORSConfigSchemaID = "ory://cors-config"
  method CORS (line 17) | func (p *Provider) CORS(prefix string, defaults cors.Options) (cors.Opti...

FILE: oryx/configx/error.go
  type ImmutableError (line 12) | type ImmutableError struct
    method Error (line 28) | func (e *ImmutableError) Error() string {
  function NewImmutableError (line 19) | func NewImmutableError(key string, from, to interface{}) error {

FILE: oryx/configx/helpers.go
  function RegisterFlags (line 16) | func RegisterFlags(flags *pflag.FlagSet) {
  function GetAddress (line 21) | func GetAddress(host string, port int) string {
  method GetAddress (line 28) | func (s *Serve) GetAddress() string {
  function AddSchemaResources (line 34) | func AddSchemaResources(c interface {
  function cleanPrefix (line 46) | func cleanPrefix(prefix string) string {

FILE: oryx/configx/koanf_confmap.go
  type KoanfConfmap (line 16) | type KoanfConfmap struct
    method ReadBytes (line 52) | func (e *KoanfConfmap) ReadBytes() ([]byte, error) {
    method Read (line 57) | func (e *KoanfConfmap) Read() (map[string]interface{}, error) {
  function NewKoanfConfmap (line 23) | func NewKoanfConfmap(tuples []tuple) *KoanfConfmap {
  function jsonify (line 27) | func jsonify(tuples []tuple) []tuple {

FILE: oryx/configx/koanf_env.go
  function NewKoanfEnv (line 26) | func NewKoanfEnv(prefix string, rawSchema []byte, schema *jsonschema.Sch...
  type Env (line 39) | type Env struct
    method ReadBytes (line 45) | func (e *Env) ReadBytes() ([]byte, error) {
    method Read (line 51) | func (e *Env) Read() (map[string]interface{}, error) {
    method Watch (line 90) | func (e *Env) Watch(cb func(event interface{}, err error)) error {
    method extract (line 94) | func (e *Env) extract(key string, value string) (string, interface{}) {
  function decode (line 174) | func decode(value string) (v interface{}) {

FILE: oryx/configx/koanf_file.go
  type KoanfFile (line 23) | type KoanfFile struct
    method ReadBytes (line 55) | func (f *KoanfFile) ReadBytes() ([]byte, error) {
    method Read (line 60) | func (f *KoanfFile) Read() (map[string]interface{}, error) {
    method WatchChannel (line 88) | func (f *KoanfFile) WatchChannel(ctx context.Context, c watcherx.Event...
  function NewKoanfFile (line 30) | func NewKoanfFile(path string) (*KoanfFile, error) {
  function NewKoanfFileSubKey (line 34) | func NewKoanfFileSubKey(path, subKey string) (*KoanfFile, error) {

FILE: oryx/configx/koanf_full_merge.go
  function MergeAllTypes (line 15) | func MergeAllTypes(src, dst map[string]interface{}) error {

FILE: oryx/configx/koanf_memory.go
  type KoanfMemory (line 18) | type KoanfMemory struct
    method SetDoc (line 34) | func (f *KoanfMemory) SetDoc(doc stdjson.RawMessage) {
    method ReadBytes (line 39) | func (f *KoanfMemory) ReadBytes() ([]byte, error) {
    method Read (line 44) | func (f *KoanfMemory) Read() (map[string]interface{}, error) {
  function NewKoanfMemory (line 26) | func NewKoanfMemory(ctx context.Context, doc stdjson.RawMessage) *KoanfM...

FILE: oryx/configx/koanf_schema_defaults.go
  type KoanfSchemaDefaults (line 16) | type KoanfSchemaDefaults struct
    method ReadBytes (line 29) | func (k *KoanfSchemaDefaults) ReadBytes() ([]byte, error) {
    method Read (line 33) | func (k *KoanfSchemaDefaults) Read() (map[string]interface{}, error) {
  function NewKoanfSchemaDefaults (line 20) | func NewKoanfSchemaDefaults(rawSchema []byte, schema *jsonschema.Schema)...

FILE: oryx/configx/options.go
  type OptionModifier (line 24) | type OptionModifier
  function WithContext (line 27) | func WithContext(ctx context.Context) OptionModifier {
  function WithConfigFiles (line 35) | func WithConfigFiles(files ...string) OptionModifier {
  function WithImmutables (line 41) | func WithImmutables(immutables ...string) OptionModifier {
  function WithExceptImmutables (line 47) | func WithExceptImmutables(exceptImmutables ...string) OptionModifier {
  function WithFlags (line 53) | func WithFlags(flags *pflag.FlagSet) OptionModifier {
  function WithLogger (line 59) | func WithLogger(l *logrusx.Logger) OptionModifier {
  function SkipValidation (line 65) | func SkipValidation() OptionModifier {
  function DisableEnvLoading (line 71) | func DisableEnvLoading() OptionModifier {
  function WithValue (line 77) | func WithValue(key string, value interface{}) OptionModifier {
  function WithValues (line 83) | func WithValues(values map[string]interface{}) OptionModifier {
  function WithBaseValues (line 91) | func WithBaseValues(values map[string]interface{}) OptionModifier {
  function WithUserProviders (line 99) | func WithUserProviders(providers ...koanf.Provider) OptionModifier {
  function OmitKeysFromTracing (line 106) | func OmitKeysFromTracing(keys ...string) OptionModifier {
  function AttachWatcher (line 110) | func AttachWatcher(watcher func(event watcherx.Event, err error)) Option...
  function WithLogrusWatcher (line 116) | func WithLogrusWatcher(l *logrusx.Logger) OptionModifier {
  function LogrusWatcher (line 120) | func LogrusWatcher(l *logrusx.Logger) func(e watcherx.Event, err error) {
  function WithStderrValidationReporter (line 145) | func WithStderrValidationReporter() OptionModifier {
  function WithStandardValidationReporter (line 153) | func WithStandardValidationReporter(w io.Writer) OptionModifier {

FILE: oryx/configx/permission.go
  type UnixPermission (line 12) | type UnixPermission struct
    method SetPermission (line 18) | func (p *UnixPermission) SetPermission(file string) error {

FILE: oryx/configx/pflag.go
  type PFlagProvider (line 18) | type PFlagProvider struct
    method ReadBytes (line 34) | func (p *PFlagProvider) ReadBytes() ([]byte, error) {
    method Read (line 38) | func (p *PFlagProvider) Read() (map[string]interface{}, error) {
  function NewPFlagProvider (line 23) | func NewPFlagProvider(rawSchema []byte, schema *jsonschema.Schema, f *pf...

FILE: oryx/configx/provider.go
  type tuple (line 32) | type tuple struct
  type Provider (line 37) | type Provider struct
    method SkipValidation (line 118) | func (p *Provider) SkipValidation() bool {
    method createProviders (line 122) | func (p *Provider) createProviders(ctx context.Context) (providers []k...
    method replaceKoanf (line 188) | func (p *Provider) replaceKoanf(k *koanf.Koanf) {
    method validate (line 192) | func (p *Provider) validate(k *koanf.Koanf) error {
    method newKoanf (line 215) | func (p *Provider) newKoanf() (_ *koanf.Koanf, err error) {
    method SetTracer (line 243) | func (p *Provider) SetTracer(_ context.Context, _ *otelx.Tracer) {
    method runOnChanges (line 246) | func (p *Provider) runOnChanges(e watcherx.Event, err error) {
    method reload (line 264) | func (p *Provider) reload(e watcherx.Event) {
    method watchForFileChanges (line 301) | func (p *Provider) watchForFileChanges(ctx context.Context, c watcherx...
    method DirtyPatch (line 327) | func (p *Provider) DirtyPatch(key string, value any) error {
    method Set (line 344) | func (p *Provider) Set(key string, value interface{}) error {
    method BoolF (line 360) | func (p *Provider) BoolF(key string, fallback bool) bool {
    method StringF (line 371) | func (p *Provider) StringF(key string, fallback string) string {
    method StringsF (line 382) | func (p *Provider) StringsF(key string, fallback []string) (val []stri...
    method IntF (line 393) | func (p *Provider) IntF(key string, fallback int) (val int) {
    method Float64F (line 404) | func (p *Provider) Float64F(key string, fallback float64) (val float64) {
    method DurationF (line 415) | func (p *Provider) DurationF(key string, fallback time.Duration) (val ...
    method ByteSizeF (line 426) | func (p *Provider) ByteSizeF(key string, fallback bytesize.ByteSize) b...
    method GetF (line 454) | func (p *Provider) GetF(key string, fallback interface{}) (val interfa...
    method TracingConfig (line 465) | func (p *Provider) TracingConfig(serviceName string) *otelx.Config {
    method RequestURIF (line 496) | func (p *Provider) RequestURIF(path string, fallback *url.URL) *url.URL {
    method URIF (line 514) | func (p *Provider) URIF(path string, fallback *url.URL) *url.URL {
    method PrintHumanReadableValidationErrors (line 533) | func (p *Provider) PrintHumanReadableValidationErrors(w io.Writer, err...
    method printHumanReadableValidationErrors (line 537) | func (p *Provider) printHumanReadableValidationErrors(k *koanf.Koanf, ...
  constant FlagConfig (line 62) | FlagConfig = "config"
  constant Delimiter (line 63) | Delimiter  = "."
  function RegisterConfigFlag (line 67) | func RegisterConfigFlag(flags *pflag.FlagSet, fallback []string) {
  function New (line 81) | func New(ctx context.Context, schema []byte, modifiers ...OptionModifier...
  function deleteOtherKeys (line 252) | func deleteOtherKeys(k *koanf.Koanf, keys []string) {

FILE: oryx/configx/schema.go
  function newCompiler (line 20) | func newCompiler(schema []byte) (string, *jsonschema.Compiler, error) {

FILE: oryx/configx/schema_cache.go
  function getSchema (line 29) | func getSchema(ctx context.Context, schema []byte) (*jsonschema.Schema, ...

FILE: oryx/configx/schema_path_cache.go
  function getSchemaPaths (line 27) | func getSchemaPaths(rawSchema []byte, schema *jsonschema.Schema) ([]json...

FILE: oryx/configx/serve.go
  constant ServeConfigSchemaID (line 20) | ServeConfigSchemaID = "ory://serve-config"
  constant TLSConfigSchemaID (line 21) | TLSConfigSchemaID   = "ory://tls-config"
  type Serve (line 31) | type Serve struct
  type TLS (line 39) | type TLS struct
    method GetCertFunc (line 106) | func (t *TLS) GetCertFunc(ctx context.Context, l *logrusx.Logger, ifac...
  type ServeRequestLog (line 44) | type ServeRequestLog struct
  method Serve (line 49) | func (p *Provider) Serve(prefix string, isDev bool, defaults Serve) *Ser...
  method TLS (line 93) | func (p *Provider) TLS(prefix string, defaults TLS) TLS {

FILE: oryx/configx/span.go
  constant LoadSpanOpName (line 7) | LoadSpanOpName     = "config-load"
  constant UpdatedSpanOpName (line 8) | UpdatedSpanOpName  = "config-update"
  constant SnapshotSpanOpName (line 9) | SnapshotSpanOpName = "config-snapshot"

FILE: oryx/contextx/contextual.go
  type Contextualizer (line 15) | type Contextualizer interface
  type Provider (line 22) | type Provider interface
  type Static (line 25) | type Static struct
    method Network (line 31) | func (d *Static) Network(_ context.Context, nid uuid.UUID) uuid.UUID {
    method Config (line 38) | func (d *Static) Config(_ context.Context, c *configx.Provider) *confi...

FILE: oryx/contextx/contextual_mock.go
  type TestContextualizer (line 15) | type TestContextualizer struct
    method Network (line 28) | func (d *TestContextualizer) Network(ctx context.Context, network uuid...
    method Config (line 37) | func (d *TestContextualizer) Config(ctx context.Context, config *confi...
  type contextKeyFake (line 17) | type contextKeyFake
  constant fakeNIDContext (line 20) | fakeNIDContext contextKeyFake = 1
  function SetNIDContext (line 23) | func SetNIDContext(ctx context.Context, nid uuid.UUID) context.Context {

FILE: oryx/contextx/default.go
  type Default (line 14) | type Default struct
    method Network (line 18) | func (d *Default) Network(_ context.Context, network uuid.UUID) uuid.U...
    method Config (line 25) | func (d *Default) Config(_ context.Context, config *configx.Provider) ...

FILE: oryx/contextx/testhelpers.go
  type TestConfigProvider (line 17) | type TestConfigProvider struct
    method Network (line 31) | func (t *TestConfigProvider) Network(ctx context.Context, network uuid...
    method Config (line 35) | func (t *TestConfigProvider) Config(ctx context.Context, config *confi...
  type contextKey (line 21) | type contextKey
  function NewTestConfigProvider (line 24) | func NewTestConfigProvider(schema []byte, opts ...configx.OptionModifier...
  constant contextConfigKey (line 54) | contextConfigKey contextKey = 1
  function WithConfigValue (line 60) | func WithConfigValue(ctx context.Context, key string, value any) context...
  function WithConfigValues (line 64) | func WithConfigValues(ctx context.Context, setValues ...map[string]any) ...
  type ConfigurableTestHandler (line 76) | type ConfigurableTestHandler struct
    method ServeHTTP (line 88) | func (t *ConfigurableTestHandler) ServeHTTP(w http.ResponseWriter, r *...
    method RegisterConfig (line 96) | func (t *ConfigurableTestHandler) RegisterConfig(config ...map[string]...
    method UseConfig (line 102) | func (t *ConfigurableTestHandler) UseConfig(r *http.Request, id uuid.U...
    method UseConfigValues (line 107) | func (t *ConfigurableTestHandler) UseConfigValues(r *http.Request, val...
  function NewConfigurableTestHandler (line 81) | func NewConfigurableTestHandler(h http.Handler) *ConfigurableTestHandler {
  type ConfigurableTestServer (line 111) | type ConfigurableTestServer struct
    method RoundTrip (line 131) | func (t *ConfigurableTestServer) RoundTrip(r *http.Request) (*http.Res...
    method Client (line 145) | func (t *ConfigurableTestServer) Client(ctx context.Context) *AutoCont...
  function NewConfigurableTestServer (line 117) | func NewConfigurableTestServer(h http.Handler) *ConfigurableTestServer {
  type AutoContextClient (line 139) | type AutoContextClient struct
    method RoundTrip (line 156) | func (c *AutoContextClient) RoundTrip(r *http.Request) (*http.Response...

FILE: oryx/contextx/tree.go
  type ContextKey (line 11) | type ContextKey
  constant ValidContextKey (line 14) | ValidContextKey ContextKey = iota + 1
  function TestRootContext (line 19) | func TestRootContext(t testing.TB) context.Context {
  function IsRootContext (line 23) | func IsRootContext(ctx context.Context) bool {

FILE: oryx/corsx/check_origin.go
  function CheckOrigin (line 27) | func CheckOrigin(allowedOrigins []string, origin string) bool {

FILE: oryx/corsx/cmd.go
  function HelpMessage (line 7) | func HelpMessage() string {

FILE: oryx/corsx/middleware.go
  function ContextualizedMiddleware (line 24) | func ContextualizedMiddleware(provider func(context.Context) (opts cors....

FILE: oryx/corsx/normalize.go
  function NormalizeOrigins (line 9) | func NormalizeOrigins(origins []url.URL) []string {
  function NormalizeOriginStrings (line 18) | func NormalizeOriginStrings(origins []string) ([]string, error) {

FILE: oryx/crdbx/readonly.go
  function SetTransactionReadOnly (line 14) | func SetTransactionReadOnly(c *pop.Connection) error {

FILE: oryx/crdbx/staleness.go
  type ConsistencyRequestParameters (line 19) | type ConsistencyRequestParameters struct
  type ConsistencyLevel (line 44) | type ConsistencyLevel
  constant ConsistencyLevelUnset (line 48) | ConsistencyLevelUnset ConsistencyLevel = ""
  constant ConsistencyLevelStrong (line 50) | ConsistencyLevelStrong ConsistencyLevel = "strong"
  constant ConsistencyLevelEventual (line 52) | ConsistencyLevelEventual ConsistencyLevel = "eventual"
  function ConsistencyLevelFromRequest (line 56) | func ConsistencyLevelFromRequest(r *http.Request) ConsistencyLevel {
  function ConsistencyLevelFromString (line 62) | func ConsistencyLevelFromString(in string) ConsistencyLevel {
  function SetTransactionConsistency (line 75) | func SetTransactionConsistency(c *pop.Connection, level ConsistencyLevel...
  constant transactionFollowerReadTimestamp (line 84) | transactionFollowerReadTimestamp = "SET TRANSACTION AS OF SYSTEM TIME fo...
  function getTransactionConsistencyQuery (line 86) | func getTransactionConsistencyQuery(dialect string, level ConsistencyLev...

FILE: oryx/dbal/canonicalize.go
  constant DriverMySQL (line 7) | DriverMySQL       = "mysql"
  constant DriverCockroachDB (line 8) | DriverCockroachDB = "cockroach"

FILE: oryx/dbal/driver.go
  function IsSQLite (line 11) | func IsSQLite(dsn string) bool {

FILE: oryx/dbal/dsn.go
  function IsMemorySQLite (line 24) | func IsMemorySQLite(dsn string) bool { return sqliteMemoryRegexp.MatchSt...
  function NewSQLiteTestDatabase (line 30) | func NewSQLiteTestDatabase(t testing.TB) string {
  function NewSQLiteInMemoryDatabase (line 38) | func NewSQLiteInMemoryDatabase(name string) string {
  function NewSQLiteDatabase (line 49) | func NewSQLiteDatabase(name string) string {

FILE: oryx/dbal/testhelpers.go
  function RestoreFromSchemaDump (line 26) | func RestoreFromSchemaDump(t testing.TB, c *pop.Connection, migrations f...

FILE: oryx/decoderx/http.go
  type httpDecoderOptions (line 32) | type httpDecoderOptions struct
  type HTTPDecoderOption (line 46) | type HTTPDecoderOption
  type parseErrorStrategy (line 48) | type parseErrorStrategy
  constant httpContentTypeMultipartForm (line 52) | httpContentTypeMultipartForm  = "multipart/form-data"
  constant httpContentTypeURLEncodedForm (line 53) | httpContentTypeURLEncodedForm = "application/x-www-form-urlencoded"
  constant httpContentTypeJSON (line 54) | httpContentTypeJSON           = "application/json"
  constant ParseErrorIgnoreConversionErrors (line 64) | ParseErrorIgnoreConversionErrors parseErrorStrategy = iota + 1
  constant ParseErrorUseEmptyValueOnConversionErrors (line 72) | ParseErrorUseEmptyValueOnConversionErrors
  constant ParseErrorReturnOnConversionErrors (line 79) | ParseErrorReturnOnConversionErrors
  function HTTPFormDecoder (line 86) | func HTTPFormDecoder() HTTPDecoderOption {
  function HTTPJSONDecoder (line 94) | func HTTPJSONDecoder() HTTPDecoderOption {
  function HTTPKeepRequestBody (line 103) | func HTTPKeepRequestBody(keep bool) HTTPDecoderOption {
  function HTTPDecoderSetValidatePayloads (line 110) | func HTTPDecoderSetValidatePayloads(validate bool) HTTPDecoderOption {
  function HTTPDecoderJSONFollowsFormFormat (line 119) | func HTTPDecoderJSONFollowsFormFormat() HTTPDecoderOption {
  function HTTPDecoderAllowedMethods (line 127) | func HTTPDecoderAllowedMethods(method ...string) HTTPDecoderOption {
  function HTTPDecoderUseQueryAndBody (line 135) | func HTTPDecoderUseQueryAndBody() HTTPDecoderOption {
  function HTTPDecoderSetIgnoreParseErrorsStrategy (line 149) | func HTTPDecoderSetIgnoreParseErrorsStrategy(strategy parseErrorStrategy...
  function HTTPDecoderSetMaxCircularReferenceDepth (line 156) | func HTTPDecoderSetMaxCircularReferenceDepth(depth uint8) HTTPDecoderOpt...
  function HTTPJSONSchemaCompiler (line 164) | func HTTPJSONSchemaCompiler(ref string, compiler *jsonschema.Compiler) H...
  function HTTPRawJSONSchemaCompiler (line 177) | func HTTPRawJSONSchemaCompiler(raw []byte) (HTTPDecoderOption, error) {
  function MustHTTPRawJSONSchemaCompiler (line 193) | func MustHTTPRawJSONSchemaCompiler(raw []byte) HTTPDecoderOption {
  function newHTTPDecoderOptions (line 201) | func newHTTPDecoderOptions(fs []HTTPDecoderOption) *httpDecoderOptions {
  function validateRequest (line 218) | func validateRequest(r *http.Request, c *httpDecoderOptions) error {
  function validatePayload (line 238) | func validatePayload(ctx context.Context, raw json.RawMessage, c *httpDe...
  function Decode (line 263) | func Decode(r *http.Request, destination any, opts ...HTTPDecoderOption)...
  function requestBody (line 283) | func requestBody(r *http.Request, o *httpDecoderOptions) (reader io.Read...
  function decodeJSONForm (line 303) | func decodeJSONForm(r *http.Request, destination interface{}, o *httpDec...
  function decodeForm (line 353) | func decodeForm(r *http.Request, destination interface{}, o *httpDecoder...
  function decodeURLValues (line 393) | func decodeURLValues(values url.Values, paths []jsonschemax.Path, o *htt...
  function decodeJSON (line 537) | func decodeJSON(r *http.Request, destination interface{}, o *httpDecoder...

FILE: oryx/errorsx/errors.go
  function Cause (line 24) | func Cause(err error) error {
  function WithStack (line 42) | func WithStack(err error) error {
  type StatusCodeCarrier (line 51) | type StatusCodeCarrier interface
  type RequestIDCarrier (line 57) | type RequestIDCarrier interface
  type ReasonCarrier (line 63) | type ReasonCarrier interface
  type DebugCarrier (line 69) | type DebugCarrier interface
  type StatusCarrier (line 75) | type StatusCarrier interface
  type DetailsCarrier (line 81) | type DetailsCarrier interface
  type IDCarrier (line 87) | type IDCarrier interface
  type StackTracer (line 92) | type StackTracer interface
  function GetCodeFromHerodotError (line 96) | func GetCodeFromHerodotError(err error) (code int, ok bool) {

FILE: oryx/fetcher/fetcher.go
  type Fetcher (line 27) | type Fetcher struct
    method FetchContext (line 87) | func (f *Fetcher) FetchContext(ctx context.Context, source string) (*b...
    method FetchBytes (line 97) | func (f *Fetcher) FetchBytes(ctx context.Context, source string) ([]by...
    method fetchRemote (line 114) | func (f *Fetcher) fetchRemote(ctx context.Context, source string) (b [...
    method fetchFile (line 159) | func (f *Fetcher) fetchFile(source string) ([]byte, error) {
  type opts (line 34) | type opts struct
  function WithClient (line 44) | func WithClient(hc *retryablehttp.Client) Modifier {
  function WithMaxHTTPMaxBytes (line 52) | func WithMaxHTTPMaxBytes(limit int64) Modifier {
  function WithCache (line 58) | func WithCache(cache *ristretto.Cache[[]byte, []byte], ttl time.Duration...
  function newOpts (line 68) | func newOpts() *opts {
  type Modifier (line 74) | type Modifier
  function NewFetcher (line 77) | func NewFetcher(opts ...Modifier) *Fetcher {

FILE: oryx/flagx/flagx.go
  function NewFlagSet (line 16) | func NewFlagSet(name string) *pflag.FlagSet {
  function MustGetBool (line 22) | func MustGetBool(cmd *cobra.Command, name string) bool {
  function MustGetString (line 32) | func MustGetString(cmd *cobra.Command, name string) string {
  function MustGetDuration (line 42) | func MustGetDuration(cmd *cobra.Command, name string) time.Duration {
  function MustGetStringSlice (line 52) | func MustGetStringSlice(cmd *cobra.Command, name string) []string {
  function MustGetStringArray (line 62) | func MustGetStringArray(cmd *cobra.Command, name string) []string {
  function MustGetStringToStringMap (line 72) | func MustGetStringToStringMap(cmd *cobra.Command, name string) map[strin...
  function MustGetInt (line 82) | func MustGetInt(cmd *cobra.Command, name string) int {
  function MustGetUint8 (line 92) | func MustGetUint8(cmd *cobra.Command, name string) uint8 {
  function MustGetUint32 (line 102) | func MustGetUint32(cmd *cobra.Command, name string) uint32 {

FILE: oryx/fsx/dirhash.go
  function DirHash (line 13) | func DirHash(dir fs.FS) ([]byte, error) {

FILE: oryx/fsx/merge.go
  type mergedFS (line 16) | type mergedFS
    method Open (line 38) | func (m mergedFS) Open(name string) (fs.File, error) {
    method Stat (line 58) | func (m mergedFS) Stat(name string) (fs.FileInfo, error) {
    method ReadDir (line 88) | func (m mergedFS) ReadDir(name string) ([]fs.DirEntry, error) {
  type mergedFile (line 17) | type mergedFile struct
    method Stat (line 164) | func (m *mergedFile) Stat() (fs.FileInfo, error) {
    method Read (line 168) | func (m *mergedFile) Read(bytes []byte) (int, error) {
    method Close (line 172) | func (m *mergedFile) Close() error {
    method ReadDir (line 184) | func (m *mergedFile) ReadDir(n int) ([]fs.DirEntry, error) {
  type mergedFileInfo (line 21) | type mergedFileInfo
    method Name (line 109) | func (m mergedFileInfo) Name() string {
    method Size (line 113) | func (m mergedFileInfo) Size() int64 {
    method Mode (line 117) | func (m mergedFileInfo) Mode() fs.FileMode {
    method ModTime (line 121) | func (m mergedFileInfo) ModTime() time.Time {
    method IsDir (line 125) | func (m mergedFileInfo) IsDir() bool {
    method Sys (line 129) | func (m mergedFileInfo) Sys() interface{} {
  type dirEntries (line 22) | type dirEntries
    method Len (line 133) | func (d dirEntries) Len() int {
    method Less (line 137) | func (d dirEntries) Less(i, j int) bool {
    method Swap (line 141) | func (d dirEntries) Swap(i, j int) {
    method clean (line 145) | func (d *dirEntries) clean() {
  function Merge (line 34) | func Merge(fss ...fs.FS) fs.FS {

FILE: oryx/hasherx/hash_comparator.go
  function Compare (line 21) | func Compare(ctx context.Context, password []byte, hash []byte) error {
  function CompareBcrypt (line 36) | func CompareBcrypt(_ context.Context, password []byte, hash []byte) error {
  function CompareArgon2id (line 49) | func CompareArgon2id(_ context.Context, password []byte, hash []byte) er...
  function CompareArgon2i (line 74) | func CompareArgon2i(_ context.Context, password []byte, hash []byte) err...
  function ComparePbkdf2 (line 99) | func ComparePbkdf2(_ context.Context, password []byte, hash []byte) error {
  function IsBcryptHash (line 126) | func IsBcryptHash(hash []byte) bool {
  function IsArgon2idHash (line 130) | func IsArgon2idHash(hash []byte) bool {
  function IsArgon2iHash (line 134) | func IsArgon2iHash(hash []byte) bool {
  function IsPbkdf2Hash (line 138) | func IsPbkdf2Hash(hash []byte) bool {
  function decodeArgon2idHash (line 142) | func decodeArgon2idHash(encodedHash string) (p *Argon2Config, salt, hash...
  function decodePbkdf2Hash (line 188) | func decodePbkdf2Hash(encodedHash string) (p *PBKDF2Config, salt, hash [...

FILE: oryx/hasherx/hasher.go
  type Hasher (line 8) | type Hasher interface
  type HashProvider (line 16) | type HashProvider interface
  constant tracingComponent (line 20) | tracingComponent = "github.com/ory/kratos/hash"

FILE: oryx/hasherx/hasher_argon2.go
  type Argon2Config (line 31) | t
Copy disabled (too large) Download .json
Condensed preview — 7814 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,989K chars).
[
  {
    "path": ".docker/Dockerfile-alpine",
    "chars": 1199,
    "preview": "FROM alpine:3.20.0\n\n# Because this image supports SQLite, we create /home/ory and /home/ory/sqlite which is owned by the"
  },
  {
    "path": ".docker/Dockerfile-build",
    "chars": 1169,
    "preview": "FROM golang:1.26-trixie AS builder\n\nRUN apt-get update && apt-get upgrade -y &&\\\n  mkdir -p /var/lib/sqlite\n\nWORKDIR /go"
  },
  {
    "path": ".docker/Dockerfile-debug",
    "chars": 375,
    "preview": "FROM golang:1.26-trixie\nENV CGO_ENABLED 1\n\nRUN apt-get update && apt-get install -y --no-install-recommends inotify-tool"
  },
  {
    "path": ".docker/Dockerfile-distroless-static",
    "chars": 130,
    "preview": "FROM gcr.io/distroless/static-debian12:nonroot\n\nCOPY kratos /usr/bin/kratos\nEXPOSE 4433 4434\n\nENTRYPOINT [\"kratos\"]\nCMD "
  },
  {
    "path": ".docker/docker-compose.template.dbg",
    "chars": 345,
    "preview": "version: '3.7'\n\nservices:\n  ${SERVICE_NAME}:\n    build:\n      dockerfile: ./.docker/Dockerfile-debug\n    ports:\n      - "
  },
  {
    "path": ".dockerignore",
    "chars": 161,
    "preview": "docs\n.releaser\n.github\n.circleci\ntmp\nscripts\n.idea\n.git/\ndatabase.yaml\ncontrib/quickstart\nnode_modules/\n./quickstart.yml"
  },
  {
    "path": ".editorconfig",
    "chars": 177,
    "preview": "[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whit"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 47,
    "preview": "*            @aeneasr @ory/product-development\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 242,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/BUG-REPORT.yml",
    "chars": 3801,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/DESIGN-DOC.yml",
    "chars": 7837,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml",
    "chars": 3018,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 532,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/auto_assign.yml",
    "chars": 509,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/codeql/codeql-config.yml",
    "chars": 114,
    "preview": "name: \"CodeQL config\"\n\nqueries:\n  - uses: security-and-quality\n\npaths-ignore:\n  - \"/test/\"\n  - \"/pkg/testhelpers\"\n"
  },
  {
    "path": ".github/config.yml",
    "chars": 188,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/conventional_commits.json",
    "chars": 188,
    "preview": "{\n  \"$schema\": \"https://raw.githubusercontent.com/ory/ci/master/conventional_commit_config/dist/config.schema.json\",\n  \""
  },
  {
    "path": ".github/labels.json",
    "chars": 1321,
    "preview": "[\n  {\n    \"name\": \"package/2fa\",\n    \"color\": \"0A28FD\",\n    \"aliases\": [\"module:2fa\"]\n  },\n  {\n    \"name\": \"package/cli\""
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 2518,
    "preview": "<!--\nDescribe the big picture of your changes here to communicate to the maintainers why we should accept this pull requ"
  },
  {
    "path": ".github/workflows/ci.yaml",
    "chars": 11327,
    "preview": "name: CI\non:\n  push:\n    branches:\n      - master\n    tags:\n      - \"*\"\n  pull_request:\n\n# Cancel in-progress runs in cu"
  },
  {
    "path": ".github/workflows/closed_references.yml",
    "chars": 883,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 2462,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/conventional_commits.yml",
    "chars": 1889,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/workflows/cve-scan.yaml",
    "chars": 4159,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/workflows/format.yml",
    "chars": 362,
    "preview": "name: Format\n\non:\n  pull_request:\n  merge_group:\n\njobs:\n  format:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: ac"
  },
  {
    "path": ".github/workflows/labels.yml",
    "chars": 632,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/workflows/milestone.yml",
    "chars": 1068,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".github/workflows/pm.yml",
    "chars": 752,
    "preview": "name: Synchronize with product board\n\non:\n  issues:\n    types:\n      - opened\n  pull_request:\n    types:\n      - opened\n"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 2677,
    "preview": "# AUTO-GENERATED, DO NOT EDIT!\n# Please edit the original at https://github.com/ory/meta/blob/master/templates/repositor"
  },
  {
    "path": ".gitignore",
    "chars": 1206,
    "preview": "cover.out\n.idea/\ntmp/\nddl/\n.DS_Store\n/kratos\npackrd/\n*-packr.go\ndist/\nnode_modules\n.bin/\ntest/e2e/cypress/videos\ntest/e2"
  },
  {
    "path": ".golangci.yml",
    "chars": 428,
    "preview": "version: \"2\"\n\nlinters:\n  enable:\n    - gosec\n    - govet\n    - errcheck\n    - ineffassign\n    - staticcheck\n    - unused"
  },
  {
    "path": ".goreleaser.yml",
    "chars": 730,
    "preview": "version: 2\n\nincludes:\n  - from_url:\n      url: https://raw.githubusercontent.com/ory/xgoreleaser/master/build.tmpl.yml\n\n"
  },
  {
    "path": ".grype.yaml",
    "chars": 335,
    "preview": "#only-fixed: true\nignore:\n  - vulnerability: GHSA-c5pj-mqfh-rvc3 # https://github.com/advisories/GHSA-c5pj-mqfh-rvc3\n  -"
  },
  {
    "path": ".mailmap",
    "chars": 806,
    "preview": "Aeneas Rekkas <aeneas@ory.sh> <arekkas@users.noreply.github.com>\nAeneas Rekkas <aeneas@ory.sh> <3372410+aeneasr@users.no"
  },
  {
    "path": ".nancy-ignore",
    "chars": 369,
    "preview": "# HashiCorp Consul related CVEs\n# Consul is not used but instead an indirect dependency to the pf13/viper config backend"
  },
  {
    "path": ".nvmrc",
    "chars": 9,
    "preview": "v16.19.0\n"
  },
  {
    "path": ".orycli.yml",
    "chars": 147,
    "preview": "project: kratos\n\npre_release_hooks:\n  - make sdk\n  - ./script/render-schemas.sh\n  - git config --unset user.email\n  - gi"
  },
  {
    "path": ".prettierignore",
    "chars": 36,
    "preview": ".schema/\n.github/ISSUE_TEMPLATE\noryx"
  },
  {
    "path": ".reference-ignore",
    "chars": 34,
    "preview": "**/node_modules\ndocs\nCHANGELOG.md\n"
  },
  {
    "path": ".reports/dep-licenses.csv",
    "chars": 221,
    "preview": "\"module name\",\"licenses\"\n\n\"github.com/arbovm/levenshtein\",\"BSD-3-Clause\"\n\"github.com/ory/x\",\"Apache-2.0\"\n\"github.com/str"
  },
  {
    "path": ".schema/api.openapi.json",
    "chars": 115297,
    "preview": "{\n  \"components\": {\n    \"responses\": {\n      \"emptyResponse\": {\n        \"description\": \"Empty responses are sent when, f"
  },
  {
    "path": ".schema/openapi/gen.go.yml",
    "chars": 189,
    "preview": "disallowAdditionalPropertiesIfNotPresent: false\npackageName: client\ngenerateInterfaces: true\nstructPrefix: true\nenumClas"
  },
  {
    "path": ".schema/openapi/gen.typescript.yml",
    "chars": 327,
    "preview": "npmName: \"@ory/kratos-client\"\nnpmVersion: 0.0.0\n# typescriptThreePlus: true\n#npmRepository: https://github.com/ory/sdk.g"
  },
  {
    "path": ".schema/openapi/patches/common.yaml",
    "chars": 3,
    "preview": "[]\n"
  },
  {
    "path": ".schema/openapi/patches/courier.yaml",
    "chars": 822,
    "preview": "# Makes courierMessageStatus a string enum\n- op: remove\n  path: /components/schemas/courierMessageStatus/format\n- op: re"
  },
  {
    "path": ".schema/openapi/patches/generic_error.yaml",
    "chars": 419,
    "preview": "- op: add\n  path: /paths/~1sessions~1whoami/get/parameters/0/example\n  value: MP2YWEMeM8MxjkGKpH4dqOQ4Q4DlSPaj\n- op: add"
  },
  {
    "path": ".schema/openapi/patches/identity.yaml",
    "chars": 511,
    "preview": "- op: remove\n  path: /components/schemas/updateIdentityBody/properties/metadata_admin/type\n- op: remove\n  path: /compone"
  },
  {
    "path": ".schema/openapi/patches/meta.yaml",
    "chars": 972,
    "preview": "- op: replace\n  path: /info\n  value:\n    title: Ory Identities API\n    description: |\n      This is the API specificatio"
  },
  {
    "path": ".schema/openapi/patches/nulls.yaml",
    "chars": 878,
    "preview": "- op: replace\n  path: \"#/components/schemas/NullUUID\"\n  value:\n    type: string\n    format: uuid4\n    nullable: true\n- o"
  },
  {
    "path": ".schema/openapi/patches/schema.yaml",
    "chars": 2859,
    "preview": "# Makes uiNodeAttributes polymorph\n- op: remove\n  path: /components/schemas/uiNodeAttributes/type\n- op: add\n  path: /com"
  },
  {
    "path": ".schema/openapi/patches/security.yaml",
    "chars": 110,
    "preview": "- op: replace\n  path: /components/schemas/genericError/properties/details/additionalProperties\n  value: false\n"
  },
  {
    "path": ".schema/openapi/patches/selfservice.yaml",
    "chars": 7973,
    "preview": "# Makes updateLoginFlowPayload polymorph\n#- op: remove\n#  path: /components/schemas/updateLoginFlowBody/type\n#- op: add\n"
  },
  {
    "path": ".schema/openapi/patches/session.yaml",
    "chars": 550,
    "preview": "- op: add\n  path: /paths/~1sessions~1whoami/get/parameters/0/example\n  value: MP2YWEMeM8MxjkGKpH4dqOQ4Q4DlSPaj\n- op: add"
  },
  {
    "path": ".schema/openapi.json",
    "chars": 116913,
    "preview": "{\n  \"components\": {\n    \"responses\": {\n      \"emptyResponse\": {\n        \"description\": \"Empty responses are sent when, f"
  },
  {
    "path": ".schema/version.schema.json",
    "chars": 18298,
    "preview": "{\n    \"$id\": \"https://github.com/ory/kratos/.schema/versions.config.schema.json\",\n    \"$schema\": \"http://json-schema.org"
  },
  {
    "path": ".schemastore/README.md",
    "chars": 171,
    "preview": "The config schema is generated from the internal one at\n`embedx/config.schema.json`, so in case of changes to the config"
  },
  {
    "path": ".schemastore/config.schema.json",
    "chars": 125798,
    "preview": "{\n  \"$id\": \"https://github.com/ory/kratos/embedx/config.schema.json\",\n  \"$schema\": \"http://json-schema.org/draft-07/sche"
  },
  {
    "path": ".trivyignore",
    "chars": 43,
    "preview": "CVE-2022-30065\nCVE-2024-2961\nCVE-2023-2650\n"
  },
  {
    "path": ".vscode/launch.json",
    "chars": 1426,
    "preview": "{\n  // Launch configuration to build and launch Kratos\n  // It uses a barebones\n  \"version\": \"0.2.0\",\n  \"configurations\""
  },
  {
    "path": ".vscode/settings.json",
    "chars": 106,
    "preview": "{\n    \"gopls\": {\n        \"formatting.gofumpt\": true,\n        \"formatting.local\": \"github.com/ory\"\n    }\n}\n"
  },
  {
    "path": ".vscode/tasks.json",
    "chars": 1358,
    "preview": "{\n  // See https://go.microsoft.com/fwlink/?LinkId=733558\n  // for the documentation about the tasks.json format\n  \"vers"
  },
  {
    "path": "AUTHORS",
    "chars": 8240,
    "preview": "# This is the official list of Kratos authors.\n# If you don't want to be on this list, please contact Ory.\n\nAdam Schepis"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 716034,
    "preview": "# Changelog\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECT"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 6213,
    "preview": "<!-- AUTO-GENERATED, DO NOT EDIT! -->\n<!-- Please edit the original at https://github.com/ory/meta/blob/master/templates"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 13425,
    "preview": "<!-- AUTO-GENERATED, DO NOT EDIT! -->\n<!-- Please edit the original at https://github.com/ory/meta/blob/master/templates"
  },
  {
    "path": "DEVELOP.md",
    "chars": 4244,
    "preview": "# Development\n\nThis document explains how to develop Ory Kratos, run tests, and work with the tooling around it.\n\n## Upg"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 7171,
    "preview": "SHELL=/usr/bin/env bash -o pipefail\n\n#  EXECUTABLES = docker-compose docker node npm go\n#  K := $(foreach exec,$(EXECUTA"
  },
  {
    "path": "README.md",
    "chars": 29564,
    "preview": "<h1 align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/ory/meta/master/static/banners/kratos.svg\" alt=\"Ory Kr"
  },
  {
    "path": "SECURITY.md",
    "chars": 2506,
    "preview": "<!-- AUTO-GENERATED, DO NOT EDIT! -->\n<!-- Please edit the original at https://github.com/ory/meta/blob/master/templates"
  },
  {
    "path": "anonymous_sessions.md",
    "chars": 13304,
    "preview": "\n# Feasibility Report: Anonymous Sessions in Ory Kratos\n\n## Executive summary\n\nAnonymous sessions (sessions not tied to "
  },
  {
    "path": "buf.gen.yaml",
    "chars": 244,
    "preview": "version: v2\nmanaged:\n  enabled: true\n  override:\n    - file_option: go_package_prefix\n      value: github.com/ory/kratos"
  },
  {
    "path": "buf.yaml",
    "chars": 92,
    "preview": "version: v2\nmodules:\n  - path: proto\nlint:\n  use:\n    - DEFAULT\nbreaking:\n  use:\n    - FILE\n"
  },
  {
    "path": "cipher/aes.go",
    "chars": 1972,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cipher\n\nimport (\n\t\"context\"\n\t\"encoding/hex\""
  },
  {
    "path": "cipher/chacha20.go",
    "chars": 2807,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cipher\n\nimport (\n\t\"context\"\n\t\"crypto/rand\"\n"
  },
  {
    "path": "cipher/cipher.go",
    "chars": 859,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cipher\n\nimport \"context\"\n\n// Cipher provide"
  },
  {
    "path": "cipher/cipher_test.go",
    "chars": 2779,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cipher_test\n\nimport (\n\t\"context\"\n\t\"encoding"
  },
  {
    "path": "cipher/noop.go",
    "chars": 557,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cipher\n\nimport (\n\t\"context\"\n\t\"encoding/hex\""
  },
  {
    "path": "cmd/cleanup/root.go",
    "chars": 464,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cleanup\n\nimport (\n\t\"github.com/spf13/cobra\""
  },
  {
    "path": "cmd/cleanup/sql.go",
    "chars": 1672,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cleanup\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github."
  },
  {
    "path": "cmd/cleanup/sql_test.go",
    "chars": 587,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cleanup\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"strings\""
  },
  {
    "path": "cmd/cliclient/cleanup.go",
    "chars": 1630,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cliclient\n\nimport (\n\t\"github.com/pkg/errors"
  },
  {
    "path": "cmd/cliclient/client.go",
    "chars": 1993,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cliclient\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"ne"
  },
  {
    "path": "cmd/cliclient/migrate.go",
    "chars": 2390,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cliclient\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pk"
  },
  {
    "path": "cmd/clidoc/main.go",
    "chars": 22271,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\""
  },
  {
    "path": "cmd/clidoc/main_test.go",
    "chars": 237,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage main\n\nimport (\n\t\"testing\"\n\n\t\"github.com/str"
  },
  {
    "path": "cmd/courier/root.go",
    "chars": 601,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"github.com/spf13/cobra\""
  },
  {
    "path": "cmd/courier/watch.go",
    "chars": 2683,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\n\t"
  },
  {
    "path": "cmd/courier/watch_test.go",
    "chars": 986,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"test"
  },
  {
    "path": "cmd/daemon/serve.go",
    "chars": 10143,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage daemon\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t"
  },
  {
    "path": "cmd/daemon/serve_test.go",
    "chars": 2191,
    "preview": "// Copyright © 2026 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage daemon\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t"
  },
  {
    "path": "cmd/hashers/argon2/calibrate.go",
    "chars": 11553,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage argon2\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"runtime\"\n\t\""
  },
  {
    "path": "cmd/hashers/argon2/hash.go",
    "chars": 1917,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage argon2\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.c"
  },
  {
    "path": "cmd/hashers/argon2/loadtest.go",
    "chars": 7423,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage argon2\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math/r"
  },
  {
    "path": "cmd/hashers/argon2/root.go",
    "chars": 5692,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage argon2\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflec"
  },
  {
    "path": "cmd/hashers/root.go",
    "chars": 472,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage hashers\n\nimport (\n\t\"github.com/spf13/cobra\""
  },
  {
    "path": "cmd/identities/definitions.go",
    "chars": 1778,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"strings\"\n\n\tkratos \"g"
  },
  {
    "path": "cmd/identities/delete.go",
    "chars": 1957,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/s"
  },
  {
    "path": "cmd/identities/delete_test.go",
    "chars": 1619,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities_test\n\nimport (\n\t\"context\"\n\t\"erro"
  },
  {
    "path": "cmd/identities/get.go",
    "chars": 2798,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"fmt\"\n\n\tkratos \"githu"
  },
  {
    "path": "cmd/identities/get_test.go",
    "chars": 4017,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities_test\n\nimport (\n\t\"context\"\n\t\"enco"
  },
  {
    "path": "cmd/identities/helpers.go",
    "chars": 1300,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\""
  },
  {
    "path": "cmd/identities/helpers_test.go",
    "chars": 1451,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities_test\n\nimport (\n\t\"context\"\n\t\"test"
  },
  {
    "path": "cmd/identities/import.go",
    "chars": 2348,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"encoding/json\"\n\t\"fmt"
  },
  {
    "path": "cmd/identities/import_test.go",
    "chars": 3639,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities_test\n\nimport (\n\t\"bytes\"\n\t\"contex"
  },
  {
    "path": "cmd/identities/list.go",
    "chars": 2064,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"github.com/spf13/cob"
  },
  {
    "path": "cmd/identities/list_test.go",
    "chars": 1699,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities_test\n\nimport (\n\t\"context\"\n\t\"test"
  },
  {
    "path": "cmd/identities/stubs/identity.schema.json",
    "chars": 273,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"traits\": {\n      \"a"
  },
  {
    "path": "cmd/identities/validate.go",
    "chars": 4827,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\""
  },
  {
    "path": "cmd/identities/validate_test.go",
    "chars": 2227,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage identities_test\n\nimport (\n\t\"bytes\"\n\t\"contex"
  },
  {
    "path": "cmd/jsonnet/format.go",
    "chars": 1689,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage jsonnet\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filep"
  },
  {
    "path": "cmd/jsonnet/lint.go",
    "chars": 1498,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage jsonnet\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filep"
  },
  {
    "path": "cmd/jsonnet/root.go",
    "chars": 934,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage jsonnet\n\nconst GlobHelp = `Glob Syntax:\n\n  "
  },
  {
    "path": "cmd/migrate/root.go",
    "chars": 1267,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage migrate\n\nimport (\n\t\"github.com/spf13/cobra\""
  },
  {
    "path": "cmd/migrate/sql.go",
    "chars": 1564,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage migrate\n\nimport (\n\t\"github.com/spf13/cobra\""
  },
  {
    "path": "cmd/remote/root.go",
    "chars": 595,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage remote\n\nimport (\n\t\"github.com/spf13/cobra\"\n"
  },
  {
    "path": "cmd/remote/status.go",
    "chars": 1215,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage remote\n\nimport (\n\t\"github.com/ory/x/cmdx\"\n\n"
  },
  {
    "path": "cmd/remote/version.go",
    "chars": 903,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage remote\n\nimport (\n\t\"github.com/spf13/cobra\"\n"
  },
  {
    "path": "cmd/root.go",
    "chars": 2051,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cmd\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\n"
  },
  {
    "path": "cmd/root_test.go",
    "chars": 215,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage cmd\n\nimport (\n\t\"testing\"\n\n\t\"github.com/ory/"
  },
  {
    "path": "cmd/serve/root.go",
    "chars": 1946,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage serve\n\nimport (\n\t\"github.com/spf13/cobra\"\n\n"
  },
  {
    "path": "cmd/serve/root_test.go",
    "chars": 1233,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage serve_test\n\nimport (\n\t\"testing\"\n\n\t\"github.c"
  },
  {
    "path": "cmd/serve/stub/identity.schema.json",
    "chars": 1130,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "cmd/serve/stub/kratos.yml",
    "chars": 1538,
    "preview": "dsn: memory\n\nserve:\n  public:\n    base_url: http://127.0.0.1:4433/\n    cors:\n      enabled: true\n  admin:\n    base_url: "
  },
  {
    "path": "codecov.yml",
    "chars": 321,
    "preview": "coverage:\n  status:\n    project:\n      default:\n        target: 60%\n        threshold: 10%\n        only_pulls: true\nigno"
  },
  {
    "path": "continuity/container.go",
    "chars": 1923,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity\n\nimport (\n\t\"time\"\n\n\t\"github.com/"
  },
  {
    "path": "continuity/container_test.go",
    "chars": 1145,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\t\"ti"
  },
  {
    "path": "continuity/manager.go",
    "chars": 1826,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\""
  },
  {
    "path": "continuity/manager_cookie.go",
    "chars": 5315,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\""
  },
  {
    "path": "continuity/manager_options_test.go",
    "chars": 1158,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\t\"ti"
  },
  {
    "path": "continuity/manager_test.go",
    "chars": 11831,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity_test\n\nimport (\n\t\"bytes\"\n\t\"encodi"
  },
  {
    "path": "continuity/persistence.go",
    "chars": 642,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage continuity\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\""
  },
  {
    "path": "continuity/test/persistence.go",
    "chars": 4697,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage test\n\nimport (\n\t\"context\"\n\t\"testing\"\n\t\"time"
  },
  {
    "path": "contrib/quickstart/.dockerignore",
    "chars": 1,
    "preview": "*"
  },
  {
    "path": "contrib/quickstart/kratos/all-strategies/identity.schema.json",
    "chars": 1383,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "contrib/quickstart/kratos/all-strategies/kratos.yml",
    "chars": 2697,
    "preview": "version: v0.13.0\n\ndsn: memory\n\nserve:\n  public:\n    base_url: http://localhost:4433/\n    cors:\n      enabled: true\n  adm"
  },
  {
    "path": "contrib/quickstart/kratos/cloud/Caddyfile",
    "chars": 277,
    "preview": "{\n  http_port 4455\n\tauto_https off\n\n}\n\n:4455 {\n  route /ui/* {\n    uri strip_prefix /ui\n    reverse_proxy kratos-selfser"
  },
  {
    "path": "contrib/quickstart/kratos/cloud/identity.schema.json",
    "chars": 1130,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "contrib/quickstart/kratos/cloud/kratos.yml",
    "chars": 1451,
    "preview": "version: v0.13.0\n\ndsn: memory\n\nserve:\n  public:\n    base_url: http://localhost:4455/\n    cors:\n      enabled: true\n  adm"
  },
  {
    "path": "contrib/quickstart/kratos/cloud/quickstart.yml",
    "chars": 973,
    "preview": "version: '3.7'\n\nservices:\n  kratos:\n    volumes:\n      - type: volume\n        source: kratos-sqlite\n        target: /var"
  },
  {
    "path": "contrib/quickstart/kratos/email-password/identity.schema.json",
    "chars": 1130,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "contrib/quickstart/kratos/email-password/kratos.yml",
    "chars": 1966,
    "preview": "version: v0.13.0\n\ndsn: memory\n\nserve:\n  public:\n    base_url: http://127.0.0.1:4433/\n    cors:\n      enabled: true\n  adm"
  },
  {
    "path": "contrib/quickstart/kratos/passkey/identity.schema.json",
    "chars": 832,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "contrib/quickstart/kratos/passkey/kratos.yml",
    "chars": 2216,
    "preview": "serve:\n  public:\n    base_url: http://localhost:4433/\n    cors:\n      enabled: true\n  admin:\n    base_url: http://kratos"
  },
  {
    "path": "contrib/quickstart/kratos/phone-password/identity.schema.json",
    "chars": 1238,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/phone-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "contrib/quickstart/kratos/phone-password/kratos.yml",
    "chars": 2337,
    "preview": "version: v0.13.0\n\ndsn: memory\n\nserve:\n  public:\n    base_url: http://127.0.0.1:4433/\n    cors:\n      enabled: true\n  adm"
  },
  {
    "path": "contrib/quickstart/kratos/webauthn/identity.schema.json",
    "chars": 1194,
    "preview": "{\n  \"$id\": \"https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json\",\n  \"$schema\": \"http://"
  },
  {
    "path": "contrib/quickstart/kratos/webauthn/kratos.yml",
    "chars": 2217,
    "preview": "version: v0.13.0\n\ndsn: memory\n\nserve:\n  public:\n    base_url: http://localhost:4433/\n    cors:\n      enabled: true\n  adm"
  },
  {
    "path": "contrib/quickstart/oathkeeper/access-rules.yml",
    "chars": 1263,
    "preview": "-\n  id: \"ory:kratos:public\"\n  upstream:\n    preserve_host: true\n    url: \"http://kratos:4433\"\n    strip_path: /.ory/krat"
  },
  {
    "path": "contrib/quickstart/oathkeeper/id_token.jwks.json",
    "chars": 1812,
    "preview": "{\n  \"keys\": [\n    {\n      \"use\": \"sig\",\n      \"kty\": \"RSA\",\n      \"kid\": \"a2aa9739-d753-4a0d-87ee-61f101050277\",\n      \""
  },
  {
    "path": "contrib/quickstart/oathkeeper/oathkeeper.yml",
    "chars": 1538,
    "preview": "log:\n  level: debug\n  format: json\n\nserve:\n  proxy:\n    cors:\n      enabled: true\n      allowed_origins:\n        - \"*\"\n "
  },
  {
    "path": "corpx/faker.go",
    "chars": 3951,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\n// #nosec G404 -- used in tests only\npackage corpx\n"
  },
  {
    "path": "courier/.snapshots/TestHandler-handler=getCourierMessage-case=returns_an_error_if_no_message_is_found-endpoint=admin.json",
    "chars": 112,
    "preview": "{\n  \"error\": {\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"Unable to locate the resource\"\n  }\n}\n"
  },
  {
    "path": "courier/.snapshots/TestHandler-handler=getCourierMessage-case=returns_an_error_if_no_message_is_found-endpoint=public.json",
    "chars": 112,
    "preview": "{\n  \"error\": {\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"Unable to locate the resource\"\n  }\n}\n"
  },
  {
    "path": "courier/.snapshots/TestHandler-handler=getCourierMessage-case=returns_an_error_if_parameter_is_malformed-endpoint=admin.json",
    "chars": 140,
    "preview": "{\n  \"error\": {\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"uuid: incorrect UUID length 10 in string \\\""
  },
  {
    "path": "courier/.snapshots/TestHandler-handler=getCourierMessage-case=returns_an_error_if_parameter_is_malformed-endpoint=public.json",
    "chars": 140,
    "preview": "{\n  \"error\": {\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"uuid: incorrect UUID length 10 in string \\\""
  },
  {
    "path": "courier/channel.go",
    "chars": 199,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n)\n\ntype Channe"
  },
  {
    "path": "courier/courier.go",
    "chars": 2625,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"git"
  },
  {
    "path": "courier/courier_dispatcher.go",
    "chars": 5198,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"git"
  },
  {
    "path": "courier/courier_dispatcher_test.go",
    "chars": 3598,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"testing\"\n\n\t\"github"
  },
  {
    "path": "courier/email_templates.go",
    "chars": 3170,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"encoding/jso"
  },
  {
    "path": "courier/email_templates_test.go",
    "chars": 3331,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"context\"\n\t\"encodin"
  },
  {
    "path": "courier/handler.go",
    "chars": 5537,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"net/http\"\n\n\t\"github.com"
  },
  {
    "path": "courier/handler_test.go",
    "chars": 9384,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"context\"\n\t\"errors\""
  },
  {
    "path": "courier/http_channel.go",
    "chars": 4156,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"encoding/jso"
  },
  {
    "path": "courier/http_test.go",
    "chars": 3019,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"encoding/json\"\n\t\"f"
  },
  {
    "path": "courier/message.go",
    "chars": 5704,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"encoding/json\"\n\t\"time\"\n"
  },
  {
    "path": "courier/message_dispatch.go",
    "chars": 1478,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"time\"\n\n\t\"github.com/gof"
  },
  {
    "path": "courier/message_test.go",
    "chars": 2024,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"testing\"\n\n\t\"github"
  },
  {
    "path": "courier/persistence.go",
    "chars": 1364,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\n\t\"github.com/"
  },
  {
    "path": "courier/sms.go",
    "chars": 1061,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"encoding/jso"
  },
  {
    "path": "courier/sms_templates.go",
    "chars": 1580,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"encoding/jso"
  },
  {
    "path": "courier/sms_templates_test.go",
    "chars": 1950,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"context\"\n\t\"encodin"
  },
  {
    "path": "courier/sms_test.go",
    "chars": 3198,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"encoding/json\"\n\t\"f"
  },
  {
    "path": "courier/smtp.go",
    "chars": 3828,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n"
  },
  {
    "path": "courier/smtp_channel.go",
    "chars": 5245,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"net/t"
  },
  {
    "path": "courier/smtp_test.go",
    "chars": 7692,
    "preview": "// Copyright © 2023 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\npackage courier_test\n\nimport (\n\t\"context\"\n\t\"crypto/"
  },
  {
    "path": "courier/stub/request.config.mailer.jsonnet",
    "chars": 1057,
    "preview": "function(ctx) {\n  recipient: ctx.recipient,\n  template_type: ctx.template_type,\n  to: if \"template_data\" in ctx && \"to\" "
  },
  {
    "path": "courier/stub/request.config.twilio.jsonnet",
    "chars": 79,
    "preview": "function(ctx) {\n  from: \"Kratos Test\",\n  to: ctx.recipient,\n  body: ctx.body\n}\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/login_code/valid/email.body.gotmpl",
    "chars": 113,
    "preview": "Login to your account with the following code:\n\n{{ .LoginCode }}\n\nIt expires in {{ .ExpiresInMinutes }} minutes.\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/login_code/valid/email.body.plaintext.gotmpl",
    "chars": 113,
    "preview": "Login to your account with the following code:\n\n{{ .LoginCode }}\n\nIt expires in {{ .ExpiresInMinutes }} minutes.\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/login_code/valid/email.subject.gotmpl",
    "chars": 36,
    "preview": "Use code {{ .LoginCode }} to log in\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/login_code/valid/sms.body.gotmpl",
    "chars": 85,
    "preview": "Your login code is: {{ .LoginCode }}\n\nIt expires in {{ .ExpiresInMinutes }} minutes.\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/otp/sms.body.gotmpl",
    "chars": 39,
    "preview": "Your verification code is: {{ .Code }}\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery/invalid/email.body.gotmpl",
    "chars": 325,
    "preview": "Hi,\n\nyou (or someone else) entered this email address when trying to recover access to an account.\n\nHowever, this email "
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery/invalid/email.body.plaintext.gotmpl",
    "chars": 325,
    "preview": "Hi,\n\nyou (or someone else) entered this email address when trying to recover access to an account.\n\nHowever, this email "
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery/invalid/email.subject.gotmpl",
    "chars": 25,
    "preview": "Account access attempted\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery/valid/email.body.gotmpl",
    "chars": 204,
    "preview": "Recover access to your account by clicking the following link:\n\n<a href=\"{{ .RecoveryURL }}\">{{ .RecoveryURL }}</a>\n\nIf "
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery/valid/email.body.plaintext.gotmpl",
    "chars": 172,
    "preview": "Recover access to your account by clicking the following link:\n\n{{ .RecoveryURL }}\n\nIf this was not you, do nothing. Thi"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery/valid/email.subject.gotmpl",
    "chars": 31,
    "preview": "Recover access to your account\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/invalid/email.body.gotmpl",
    "chars": 325,
    "preview": "Hi,\n\nyou (or someone else) entered this email address when trying to recover access to an account.\n\nHowever, this email "
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/invalid/email.body.plaintext.gotmpl",
    "chars": 325,
    "preview": "Hi,\n\nyou (or someone else) entered this email address when trying to recover access to an account.\n\nHowever, this email "
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/invalid/email.subject.gotmpl",
    "chars": 25,
    "preview": "Account access attempted\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/valid/email.body.gotmpl",
    "chars": 172,
    "preview": "Recover access to your account by entering the following code:\n\n{{ .RecoveryCode }}\n\nIf this was not you, do nothing. Th"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/valid/email.body.plaintext.gotmpl",
    "chars": 172,
    "preview": "Recover access to your account by entering the following code:\n\n{{ .RecoveryCode }}\n\nIf this was not you, do nothing. Th"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/valid/email.subject.gotmpl",
    "chars": 63,
    "preview": "Use code {{ .RecoveryCode }} to recover access to your account\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/recovery_code/valid/sms.body.gotmpl",
    "chars": 90,
    "preview": "Your recovery code is: {{ .RecoveryCode }}\n\n@{{ .RequestURLDomain }} #{{ .RecoveryCode }}\n"
  },
  {
    "path": "courier/template/courier/builtin/templates/registration_code/valid/email.body.gotmpl",
    "chars": 140,
    "preview": "Complete your account registration with the following code:\n\n{{ .RegistrationCode }}\n\nThis code expires in {{ .ExpiresIn"
  },
  {
    "path": "courier/template/courier/builtin/templates/registration_code/valid/email.body.plaintext.gotmpl",
    "chars": 140,
    "preview": "Complete your account registration with the following code:\n\n{{ .RegistrationCode }}\n\nThis code expires in {{ .ExpiresIn"
  },
  {
    "path": "courier/template/courier/builtin/templates/registration_code/valid/email.subject.gotmpl",
    "chars": 71,
    "preview": "Use code {{ .RegistrationCode }} to complete your account registration\n"
  }
]

// ... and 7614 more files (download for full content)

About this extraction

This page contains the full source code of the ory/kratos GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 7814 files (15.4 MB), approximately 4.6M tokens, and a symbol index with 17522 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!