diff --git a/.github/ISSUE_TEMPLATE/BUG-REPORT.yml b/.github/ISSUE_TEMPLATE/BUG-REPORT.yml index 7af43d099f..7ba5414bc7 100644 --- a/.github/ISSUE_TEMPLATE/BUG-REPORT.yml +++ b/.github/ISSUE_TEMPLATE/BUG-REPORT.yml @@ -25,10 +25,10 @@ body: Guidelines](https://github.com/ory/docs/blob/master/CONTRIBUTING.md)." required: true - label: - "I have joined the [Ory Community Slack](https://slack.ory.sh)." + "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.sh/l/sign-up-newsletter)." + Newsletter](https://www.ory.com/l/sign-up-newsletter)." id: checklist type: checkboxes - attributes: diff --git a/.github/ISSUE_TEMPLATE/DESIGN-DOC.yml b/.github/ISSUE_TEMPLATE/DESIGN-DOC.yml index abec5b8d03..209d4f5e24 100644 --- a/.github/ISSUE_TEMPLATE/DESIGN-DOC.yml +++ b/.github/ISSUE_TEMPLATE/DESIGN-DOC.yml @@ -36,10 +36,10 @@ body: Guidelines](https://github.com/ory/docs/blob/master/CONTRIBUTING.md)." required: true - label: - "I have joined the [Ory Community Slack](https://slack.ory.sh)." + "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.sh/l/sign-up-newsletter)." + Newsletter](https://www.ory.com/l/sign-up-newsletter)." id: checklist type: checkboxes - attributes: diff --git a/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml b/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml index b1113d7fa8..ef155dcb60 100644 --- a/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml +++ b/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml @@ -29,10 +29,10 @@ body: Guidelines](https://github.com/ory/docs/blob/master/CONTRIBUTING.md)." required: true - label: - "I have joined the [Ory Community Slack](https://slack.ory.sh)." + "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.sh/l/sign-up-newsletter)." + Newsletter](https://www.ory.com/l/sign-up-newsletter)." id: checklist type: checkboxes - attributes: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index ee72ee92ea..cde3389ce7 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -9,6 +9,6 @@ contact_links: Please ask and answer questions here, show your implementations and discuss ideas. - name: Ory Chat - url: https://www.ory.sh/chat + url: https://www.ory.com/chat about: Hang out with other Ory community members to ask and answer questions. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 0796297082..f46e04d5cb 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -24,7 +24,7 @@ Pull requests introducing new features, which do not have a design document link get merged. You can discuss changes with maintainers either in the Github Discussions in this repository or -join the [Ory Chat](https://www.ory.sh/chat). +join the [Ory Chat](https://www.ory.com/chat). --> ## Checklist @@ -39,7 +39,7 @@ them, don't hesitate to ask. We're here to help! This is simply a reminder of wh - [ ] 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 approval (please contact [security@ory.sh](mailto:security@ory.sh)) from the maintainers to push the changes. + I confirm that I got 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 the necessary documentation within the code base (if appropriate). diff --git a/.prettierignore b/.prettierignore index 17da25f1cc..268abbd130 100644 --- a/.prettierignore +++ b/.prettierignore @@ -16,3 +16,4 @@ docs/keto/reference/proto-api.mdx vendor code-examples/sdk/typescript/src/**/*.hbs **/.dart_tool +**/*.jsonc diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9cebaf358e..fc7d9bc2a9 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -47,7 +47,7 @@ individual problems. If Ory open source software is used in production in a for-profit company or enterprise environment, we mandate a paid support contract where Ory is obligated under their service level agreements (SLAs) to offer a defined level of availability and responsibility. For more information about -paid support please contact us at sales@ory.sh. +paid support please contact us at sales@ory.com. ## Enforcement Responsibilities @@ -73,7 +73,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -[office@ory.sh](mailto:office@ory.sh). All complaints will be reviewed and +[office@ory.com](mailto:office@ory.com). All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b29a8ee08..3638516491 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ _Please note_: We take Ory Documentation's security and our users' trust very seriously. If you believe you have found a security issue in Ory Documentation, -please disclose it by contacting us at security@ory.sh. +please disclose it by contacting us at security@ory.com. There are many ways in which you can contribute. The goal of this document is to provide a high-level overview of how you can get involved in Ory. @@ -44,7 +44,7 @@ won't clash with Ory Documentation's direction. A great way to do this is via [Ory Documentation Discussions](https://github.com/orgs/ory/discussions) -or the [Ory Chat](https://www.ory.sh/chat). +or the [Ory Chat](https://www.ory.com/chat). ## FAQ @@ -67,7 +67,7 @@ or the [Ory Chat](https://www.ory.sh/chat). [a Contributors License Agreement?](https://cla-assistant.io/ory/docs) - I would like updates about new versions of Ory Documentation. - [How are new releases announced?](https://www.ory.sh/l/sign-up-newsletter) + [How are new releases announced?](https://www.ory.com/l/sign-up-newsletter) ## How can I contribute? @@ -109,7 +109,7 @@ to help out: ## Communication -We use [Slack](https://www.ory.sh/chat). You are welcome to drop in and ask +We use [Slack](https://www.ory.com/chat). You are welcome to drop in and ask questions, discuss bugs and feature requests, talk to other users of Ory, etc. Check out [Ory Documentation Discussions](https://github.com/orgs/ory/discussions). This is a great place for @@ -117,7 +117,7 @@ in-depth discussions and lots of code examples, logs and similar data. You can also join our community calls if you want to speak to the Ory team directly or ask some questions. You can find more info and participate in -[Slack](https://www.ory.sh/chat) in the #community-call channel. +[Slack](https://www.ory.com/chat) in the #community-call channel. If you want to receive regular notifications about updates to Ory Documentation, consider joining the mailing list. We will _only_ send you vital information on @@ -139,7 +139,7 @@ to add your example or Ory-related project to the awesome-ory README. ## Contribute code Unless you are fixing a known bug, we **strongly** recommend discussing it with -the core team via a GitHub issue or [in our chat](https://www.ory.sh/chat) +the core team via a GitHub issue or [in our chat](https://www.ory.com/chat) before getting started to ensure your work is consistent with Ory Documentation's roadmap and architecture. @@ -208,7 +208,7 @@ instructions please head over to the Ory Documentation ## Disclosing vulnerabilities Please disclose vulnerabilities exclusively to -[security@ory.sh](mailto:security@ory.sh). Do not use GitHub issues. +[security@ory.com](mailto:security@ory.com). Do not use GitHub issues. ## Code style @@ -250,4 +250,4 @@ community a safe place for you and we've got your back. We welcome discussion about creating a welcoming, safe, and productive environment for the community. If you have any questions, feedback, or concerns -[please let us know](https://www.ory.sh/chat). +[please let us know](https://www.ory.com/chat). diff --git a/README.md b/README.md index 3d571925a4..9b46bff52f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@

Ory Documentation

- Chat | - Newsletter

- Documentation | + Chat | + Newsletter

+ Documentation | Support this project!

- Work in Open Source, Ory is hiring! + Work in Open Source, Ory is hiring!

@@ -32,10 +32,16 @@ - [Screenshots and videos](#screenshots-and-videos) - [Compressing images](#compressing-images) - [Recording and compressing videos](#recording-and-compressing-videos) + - [Ory Console](#ory-console) + - [Navigate to Ory Console Pages](#navigate-to-ory-console-pages) - [Testing](#testing) - [Formatting documentation](#formatting-documentation) - [Adding content to "Examples" page](#adding-content-to-examples-page) - [CLI and API reference - auto-generated content](#cli-and-api-reference---auto-generated-content) + - [CanonicalURL](#canonicalurl) + - [When to use CanonicalURL](#when-to-use-canonicalurl) + - [How to use CanonicalURL](#how-to-use-canonicalurl) + - [How to verify CanonicalURL is working](#how-to-verify-canonicalurl-is-working) @@ -43,9 +49,9 @@ Ory documentation is the single source of truth for usage, implementation, configuration, and troubleshooting of the Ory Network and all projects of the -[Ory Ecosystem](https://www.ory.sh/docs/ecosystem/projects/). The documentation +[Ory Ecosystem](https://www.ory.com/docs/ecosystem/projects/). The documentation is best consumed through the -[Ory documentation portal](https://www.ory.sh/docs/). +[Ory documentation portal](https://www.ory.com/docs/). To see the source code of each of the projects, visit the project repository: @@ -419,7 +425,7 @@ import VideoEmbed from '@site/src/components/VideoEmbed' You can use the `/current/` route to navigate users to their active Ory Network project. For example, to access the Custom UI settings for the active Ory Network project in the Console, you can link to: -https://console.ory.sh/projects/current/ui +https://console.ory.com/projects/current/ui When referencing a page of the Ory Console, use the `` component in MDX files. @@ -540,3 +546,61 @@ The `cmd/clidoc/main.go` is the general path for all Ory projects. The command to generate the CLI docs can be found here: https://github.com/ory/x/blob/master/clidoc/generate.go#L96 + +## CanonicalURL + +The `CanonicalURL` component specifies the authoritative URL for a page to +search engines. Docusaurus adds trailing slashes to `index.mdx` files and files +matching their parent directory names before Vercel's trailing slash removal +takes effect. This means search engines can crawl both versions (with and +without trailing slashes). The component ensures search engines know which +version is canonical by explicitly setting a URL without a trailing slash. + +### When to use CanonicalURL + +Use this component on: + +- **Any `index.mdx` file**: These files serve content at their parent path + (e.g., `/api/index.mdx`) +- **Files matching parent directory names**: When a file shares its parent + directory's name (e.g., `docs/kratos/organizations/organizations.mdx`) + +Common examples include: + +- Index Path (`/api/index.mdx`, `/elements/index.mdx`, `/identities/index.mdx`) +- Matching parent directory names + (`docs/kratos/organizations/organizations.mdx`, + `docs/self-hosted/oel/monitoring/monitoring.mdx`) + +### How to use CanonicalURL + +Add the component at the beginning of your MDX file after the front matter: + +````md +--- +id: your-page-id +title: Your Page Title +--- + +```mdx-code-block +import CanonicalURL from "@site/src/components/CanonicalUrl" + + + +Your content here... +``` +```` + +### How to verify CanonicalURL is working + +1. Open the page in your browser +2. Right-click and select "View Page Source" (not "Inspect") +3. Search for ` +``` diff --git a/SECURITY.md b/SECURITY.md index 6104514805..d1764fc716 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,7 +7,7 @@ This policy outlines Ory's security commitments and practices for users across different licensing and deployment models. To learn more about Ory's security service level agreements (SLAs) and -processes, please [contact us](https://www.ory.sh/contact/). +processes, please [contact us](https://www.ory.com/contact/). ## Ory Network Users @@ -53,4 +53,4 @@ processes, please [contact us](https://www.ory.sh/contact/). ## Reporting a Vulnerability For details on how to report security vulnerabilities, visit our -[security policy documentation](https://www.ory.sh/docs/ecosystem/security). +[security policy documentation](https://www.ory.com/docs/ecosystem/security). diff --git a/code-examples/curl/search/advanced-result.json b/code-examples/curl/search/advanced-result.json new file mode 100644 index 0000000000..4b57ebe741 --- /dev/null +++ b/code-examples/curl/search/advanced-result.json @@ -0,0 +1,105 @@ +{ + "facet_counts": [ + { + "counts": [], + "field_name": "organization_id", + "sampled": false, + "stats": { + "total_values": 0 + } + } + ], + "found": 5, + "hits": [ + { + "document": { + "available_aal": "aal1", + "created_at": 1725296067, + "id": "9e9763c9-80fc-43d0-97fb-d241cb274c2c", + "schema_id": "preset://email", + "state": "active", + "traits": { + "email": "wrhgr@srgpzjdrgpz" + }, + "updated_at": 1725296067 + }, + "highlight": {}, + "highlights": [] + }, + { + "document": { + "available_aal": "aal1", + "created_at": 1725295678, + "id": "38403863-16c2-4a0c-b53e-428f7d80a65b", + "schema_id": "preset://email", + "state": "active", + "traits": { + "email": "SRGSRpgj@SPRGojsgs.com" + }, + "updated_at": 1725295678 + }, + "highlight": {}, + "highlights": [] + }, + { + "document": { + "available_aal": "aal1", + "created_at": 1725031786, + "id": "f5e85c2f-6f0f-49d7-9b77-1bfbb530add4", + "schema_id": "preset://email", + "state": "active", + "traits": { + "email": "wGWRIGOH@WOsPgjzsroig" + }, + "updated_at": 1725031786 + }, + "highlight": {}, + "highlights": [] + }, + { + "document": { + "available_aal": "aal1", + "created_at": 1725031437, + "external_id": "external-id-123", + "id": "d52d5bdb-74b4-4aa0-b706-d1e9c853bd81", + "metadata_admin": { + "role": "user" + }, + "metadata_public": { + "foo": "bar" + }, + "schema_id": "preset://email", + "state": "active", + "traits": { + "email": "wgiho@agpaa.com" + }, + "updated_at": 1758115258 + }, + "highlight": {}, + "highlights": [] + }, + { + "document": { + "available_aal": "aal1", + "created_at": 1725031040, + "id": "f56128f1-687e-414e-8f5d-ec5f909b33c0", + "schema_id": "preset://email", + "state": "active", + "traits": { + "email": "sogihSOG@SdoSORghzdrg" + }, + "updated_at": 1725031040 + }, + "highlight": {}, + "highlights": [] + } + ], + "page": 1, + "request_params": { + "collection_name": "identities-f59802a6-eb63-44cc-a3ac-d90db3d3abc2", + "first_q": "*", + "per_page": 20, + "q": "*" + }, + "search_cutoff": false +} diff --git a/code-examples/curl/search/advanced.sh b/code-examples/curl/search/advanced.sh new file mode 100644 index 0000000000..d7e297e4cf --- /dev/null +++ b/code-examples/curl/search/advanced.sh @@ -0,0 +1,15 @@ +export ORY_API_KEY="ory_pat_XXXXXXXXXXXXXXXX" +export COLLECTION="identities-d7c52eed-e45c-4483-af3b-4aaa5782bff7" # replace with your project ID +export ORY_SLUG="upbeat-lalande-zu8omm6wwp" # replace with your Ory slug + +# list identities which do not have two-factor authentication enabled, +# resolved by the organization to which they belong, +# ordered by creation date (newest first), +# and limited to 20 per page +curl -H "Authorization: Bearer $ORY_API_KEY" \ + "https://$ory_slug.projects.oryapis.com/admin/preview/search/v0beta1/collections/$COLLECTION/documents/search" \ + --url-query 'q=*' \ + --url-query 'filter_by=available_aal:!=aal2' \ + --url-query 'facet_by=organization_id' \ + --url-query 'sort_by=created_at:desc' \ + --url-query 'per_page=20' diff --git a/code-examples/curl/search/basic.sh b/code-examples/curl/search/basic.sh new file mode 100644 index 0000000000..328f2fe539 --- /dev/null +++ b/code-examples/curl/search/basic.sh @@ -0,0 +1,11 @@ +export ORY_API_KEY="ory_pat_XXXXXXXXXXXXXXXX" +export COLLECTION="identities-d7c52eed-e45c-4483-af3b-4aaa5782bff7" # replace with your project ID +export ORY_SLUG="upbeat-lalande-zu8omm6wwp" # replace with your Ory slug + +# List identities via Search API +curl -H "Authorization: Bearer $ORY_API_KEY" \ + "https://$ory_slug.projects.oryapis.com/admin/preview/search/v0beta1/collections/$COLLECTION/documents/search?q=*" + +# Search for "foo" in the email trait +curl -H "Authorization: Bearer $ORY_API_KEY" \ + "https://$ory_slug.projects.oryapis.com/admin/preview/search/v0beta1/collections/$COLLECTION/documents/search?q=foo&query_by=traits.email" diff --git a/code-examples/curl/search/model.jsonc b/code-examples/curl/search/model.jsonc new file mode 100644 index 0000000000..c6954c2a0f --- /dev/null +++ b/code-examples/curl/search/model.jsonc @@ -0,0 +1,19 @@ +{ + "id": "d52d5bdb-74b4-4aa0-b706-d1e9c853bd81", // the identity ID + "organization_id": "org-id-123", // optional, facet + "external_id": "external-id-123", // optional + "created_at": 1725031437, // UNIX timestamp, facet + "updated_at": 1758115258, // UNIX timestamp, facet + "state": "active", // "inactive", "deleted", facet + "schema_id": "preset://email", // identity schema ID, facet + "available_aal": "aal1", // "aal2" etc, facet + "metadata_admin": { + "role": "user" // custom admin metadata, indexed, search via `query_by=metadata_admin.role` + }, + "metadata_public": { + "foo": "bar" // custom public metadata, indexed, search via `query_by=metadata_public.foo` + }, + "traits": { + "email": "wgiho@agpaa.com" // traits based on identity schema, indexed, search via `query_by=traits.email` + } +} diff --git a/code-examples/sdk/go/identity/state.go b/code-examples/sdk/go/identity/state.go index e83ea92031..e45eb79004 100644 --- a/code-examples/sdk/go/identity/state.go +++ b/code-examples/sdk/go/identity/state.go @@ -8,25 +8,22 @@ import ( "fmt" "os" - client "github.com/ory/client-go" + ory "github.com/ory/client-go" ) -var authed = context.WithValue(context.Background(), client.ContextAccessToken, os.Getenv("ORY_API_KEY")) +var oryAuthed = context.WithValue(context.Background(), ory.ContextAccessToken, os.Getenv("ORY_API_KEY")) -func init() { - cfg := client.NewConfiguration() - cfg.Servers = client.ServerConfigurations{ +func setState(identityId string, state string) (err error) { + cfg := ory.NewConfiguration() + cfg.Servers = ory.ServerConfigurations{ {URL: fmt.Sprintf("https://%s.projects.oryapis.com", os.Getenv("ORY_PROJECT_SLUG"))}, } + apiClient := ory.NewAPIClient(cfg) - ory = client.NewAPIClient(cfg) -} - -func setState(identityId string, state string) (err error) { // highlight-start - _, _, err = ory.IdentityApi. - PatchIdentity(authed, identityId). - JsonPatch([]client.JsonPatch{{Op: "replace", Path: "/state", Value: state}}).Execute() + _, _, err = apiClient.IdentityApi. + PatchIdentity(oryAuthed, identityId). + JsonPatch([]ory.JsonPatch{{Op: "replace", Path: "/state", Value: state}}).Execute() // highlight-end return err } diff --git a/code-examples/sdk/go/search/search.go b/code-examples/sdk/go/search/search.go new file mode 100644 index 0000000000..3ee3615095 --- /dev/null +++ b/code-examples/sdk/go/search/search.go @@ -0,0 +1,90 @@ +package search + +import ( + "context" + "fmt" + "os" + + ory "github.com/ory/client-go" + "github.com/typesense/typesense-go/v3/typesense" + typesenseapi "github.com/typesense/typesense-go/v3/typesense/api" +) + +var ( + ORY_PROJECT_URL = os.Getenv("ORY_PROJECT_URL") + ORY_API_KEY = os.Getenv("ORY_API_KEY") + Collection = "identities-" + os.Getenv("ORY_PROJECT_ID") +) + +func main() { + ctx := context.WithValue(context.Background(), ory.ContextAccessToken, os.Getenv("ORY_API_KEY")) + + // Initialize Ory client + cfg := ory.NewConfiguration() + cfg.Servers = ory.ServerConfigurations{{URL: ORY_PROJECT_URL}} + oryClient := ory.NewAPIClient(cfg) + + // Initialize search client + searchClient := typesense.NewClient( + // highlight-start + typesense.WithAPIKey(ORY_API_KEY), // Use your Ory API key here + typesense.WithServer(ORY_PROJECT_URL+"/admin/preview/search/v0beta1/"), // configure the base URL to the Ory Search API endpoint + // highlight-end + ) + + // highlight-start + // List identities via Search API + list, err := searchClient.Collection(Collection).Documents().Search(ctx, &typesenseapi.SearchCollectionParams{ + Q: ptr("*"), + }) + // highlight-end + if err != nil { + // handle error + } + + for _, res := range *list.Hits { + doc := *res.Document + fmt.Printf("List result: %+v\n", doc) + } + + // highlight-start + // Search identities via Search API + search, err := searchClient.Collection(Collection).Documents().Search(ctx, &typesenseapi.SearchCollectionParams{ + Q: ptr("foo"), + QueryBy: ptr("traits"), + }) + // highlight-end + if err != nil { + // handle error + } + + if search.Hits == nil || len(*search.Hits) == 0 { + fmt.Println("No search hits") + } + fmt.Println() + + for _, res := range *search.Hits { + doc := *res.Document + fmt.Printf("Search result: %+v\n", doc) + } + + // highlight-start + // retrieve identity details from Identity API + first := (*search.Hits)[0] + identity, _, err := oryClient.IdentityAPI.GetIdentity(ctx, (*first.Document)["id"].(string)).Execute() + // highlight-end + if err != nil { + // handle error + } + fmt.Printf("Identity: %+v\n", identity) +} + +func NewOryClient(ctx context.Context, url string) *ory.APIClient { + cfg := ory.NewConfiguration() + cfg.Servers = ory.ServerConfigurations{{URL: url}} + return ory.NewAPIClient(cfg) +} + +func ptr[A any](v A) *A { + return &v +} diff --git a/code-examples/sdk/java/search/App.java b/code-examples/sdk/java/search/App.java new file mode 100644 index 0000000000..0af90bca1e --- /dev/null +++ b/code-examples/sdk/java/search/App.java @@ -0,0 +1,52 @@ +package sh.ory.examples.search; + +import org.typesense.api.Client; +import org.typesense.api.Configuration; +import org.typesense.model.SearchParameters; +import org.typesense.model.SearchResult; +import org.typesense.resources.Node; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +public class App { + public static void main(String[] args) { + try { + Client searchClient = initializeSearchClient(); + // highlight-start + // Search identities via Search API + String collection = "identities-" + System.getenv("ORY_PROJECT_ID"); // Set the collection name + SearchResult searchResult = searchClient.collections(collection).documents() + .search(new SearchParameters().q("test@example.com").queryBy("traits.email")); + // highlight-end + + System.out.println("Search results: " + searchResult); + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + e.printStackTrace(); + } + } + + private static Client initializeSearchClient() { + try { + List nodes = new ArrayList<>(); + Node node = new Node("", "", ""); + // highlight-start + // Set the base URL to the Ory Search API endpoint + node.baseUrl = System.getenv("ORY_BASE_URL") + "/admin/preview/search/v0beta1"; + nodes.add(node); + Configuration config = new Configuration( + nodes, + Duration.ofSeconds(5), + System.getenv("ORY_API_KEY")); // Use your Ory API key here + // highlight-end + return new Client(config); + + } catch (Exception e) { + System.err.println("Error initializing search client: " + e.getMessage()); + e.printStackTrace(); + return null; + } + } +} diff --git a/docs/_common/api-key-needed.mdx b/docs/_common/api-key-needed.mdx new file mode 100644 index 0000000000..7ab780c2db --- /dev/null +++ b/docs/_common/api-key-needed.mdx @@ -0,0 +1,2 @@ +An API Key is required for all administrative operations. Read +[Authorization with API Keys](https://www.ory.com/docs/concepts/personal-access-token) to learn more. diff --git a/docs/_common/install-cli.mdx b/docs/_common/install-cli.mdx index cee6f6ef6e..e56e05b855 100644 --- a/docs/_common/install-cli.mdx +++ b/docs/_common/install-cli.mdx @@ -16,7 +16,7 @@ import Windows from '@site/src/components/Install/Windows' - + diff --git a/docs/_common/install.mdx b/docs/_common/install.mdx index 6c6040d62f..3b49621fba 100644 --- a/docs/_common/install.mdx +++ b/docs/_common/install.mdx @@ -22,7 +22,7 @@ import Linux from '@site/src/components/Install/Linux' ```mdx-code-block import MacOS from '@site/src/components/Install/MacOS' - + ``` ## Windows @@ -43,7 +43,7 @@ import Docker from '@site/src/components/Install/Docker' ## Kubernetes -A list of available Helm Charts for Kubernetes can be found at [k8s.ory.sh/helm](https://k8s.ory.sh/helm/). +A list of available Helm Charts for Kubernetes can be found at [k8s.ory.com/helm](https://k8s.ory.com/helm/). ## Download Binaries diff --git a/docs/_common/need-help.mdx b/docs/_common/need-help.mdx new file mode 100644 index 0000000000..03340a6364 --- /dev/null +++ b/docs/_common/need-help.mdx @@ -0,0 +1,6 @@ +:::info Need help? + +- New to Ory? [Talk to the team](https://www.ory.com/contact) about features and plans. +- Already a customer? [Open a support ticket](https://console.ory.sh/support). + +::: diff --git a/docs/_common/need-selfhosted-support.mdx b/docs/_common/need-selfhosted-support.mdx new file mode 100644 index 0000000000..e05ae29a80 --- /dev/null +++ b/docs/_common/need-selfhosted-support.mdx @@ -0,0 +1,6 @@ +:::info Professional support? + +Ory offers support for self-hosted Ory software through the Ory Enterprise License (OEL). Read more about the OEL +[here](https://www.ory.com/docs/self-hosted/oel). + +::: diff --git a/docs/_common/secure.mdx b/docs/_common/secure.mdx index c761447b75..4d229c7fa1 100644 --- a/docs/_common/secure.mdx +++ b/docs/_common/secure.mdx @@ -6,6 +6,6 @@ considered authenticated, authorized, and will be executed. Leaving the APIs in When deploying Ory open-source Servers, protect access to their APIs using [Ory Oathkeeper](https://github.com/ory/oathkeeper) or a comparable API Gateway. -If you need help, reach out to the community on [Ory Community Slack](http://slack.ory.sh/). +If you need help, reach out to the community on [Ory Community Slack](http://slack.ory.com/). ::: diff --git a/docs/account-experience/index.mdx b/docs/account-experience/index.mdx index 8827e3ef2d..c6dde42043 100644 --- a/docs/account-experience/index.mdx +++ b/docs/account-experience/index.mdx @@ -4,8 +4,14 @@ title: Account Experience Overview sidebar_label: Account Experience --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + The Ory Account Experience is the default user interface for all self-service screens like login, registration, or consent. It can -be accessed under `https://your-slug.projects.oryapis.com/ui`. New Ory Network projects are automatically configured to use the +be accessed under `https://your-slug.projects.oryapis.com/login`. New Ory Network projects are automatically configured to use the Account Experience. You can find various customizations and settings in the Ory Console under `Account Experience`. ## Theming @@ -14,19 +20,105 @@ The Account Experience can be themed using the Ory Console. Head over to the [theming settings](https://console.ory.sh/projects/current/account-experience/theming). It is also possible to set a custom logo and favicon. -## Welcome Screen +## Translations (i18n) & Message Customization -The Account Experience comes with a welcome screen that shows information about the current user's session. As this screen is -rather meant for debugging purposes, it can be disabled in the [Ory Console](https://console.ory.sh/projects/current/ui). +The Ory Account Experience is available in 83 languages. -## Translations (i18n) & Message Customization +
+Full list of supported languages + +- Afrikaans (`af`) +- Akan (`ak`) +- Amharic (`am`) +- Arabic (`ar`) +- Assamese (`as`) +- Azerbaijani (Latin) (`az`) +- Belarusian (`be`) +- Bulgarian (`bg`) +- Bamanankan (`bm`) +- Bangla (`bn`) +- Catalan (`ca`) +- Czech (`cs`) +- Danish (`da`) +- German (`de`) +- Greek (`el`) +- English (`en`) +- Spanish (`es`) +- Estonian (`et`) +- Persian (`fa`) +- Finnish (`fi`) +- French (`fr`) +- Gujarati (`gu`) +- Hausa (Latin) (`ha`) +- Hebrew (`he`) +- Hindi (`hi`) +- Croatian (`hr`) +- Hungarian (`hu`) +- Armenian (`hy`) +- Indonesian (`id`) +- Igbo (`ig`) +- Italian (`it`) +- Japanese (`ja`) +- Georgian (`ka`) +- Kazakh (`kk`) +- Khmer (`km`) +- Kannada (`kn`) +- Korean (`ko`) +- Central Kurdish (`ku`) +- Kyrgyz (`ky`) +- Lithuanian (`lt`) +- Latvian (`lv`) +- Macedonian (`mk`) +- Malayalam (`ml`) +- Mongolian (Cyrillic) (`mn`) +- Marathi (`mr`) +- Malay (`ms`) +- Burmese (`my`) +- Nepali (`ne`) +- Dutch (`nl`) +- Norwegian (Bokmal) (`no`) +- Odia (`or`) +- Punjabi (`pa`) +- Polish (`pl`) +- Pashto (`ps`) +- Portuguese (`pt`) +- Romanian (`ro`) +- Russian (`ru`) +- Sindhi (`sd`) +- Sinhala (`si`) +- Slovak (`sk`) +- Slovenian (`sl`) +- Somali (`so`) +- Albanian (`sq`) +- Serbian (Latin) (`sr`) +- Sundanese (`su`) +- Swedish (`sv`) +- Kiswahili (`sw`) +- Tamil (`ta`) +- Telugu (`te`) +- Tajik (Cyrillic) (`tg`) +- Thai (`th`) +- Turkmen (`tk`) +- Tagalog (`tl`) +- Turkish (`tr`) +- Uyghur (`ug`) +- Ukrainian (`uk`) +- Urdu (`ur`) +- Uzbek (Latin) (`uz`) +- Vietnamese (`vi`) +- Xhosa (`xh`) +- Yoruba (`yo`) +- Chinese (Simplified) (`zh`) +- Zulu (`zu`) + +
+ +The source is available in the +[GitHub repository of Ory Elements](https://github.com/ory/elements/tree/main/packages/elements-react/src/locales). -Currently, the account experience is available in English, Spanish, German, French, Spanish, Portuguese, Polish, Finnish, Dutch, -Swedish, and more. For a full list of available languages please have a look at -[the source](https://github.com/ory/elements/tree/main/packages/elements-react/src/locales). If you want to add a new language or -fix some wording, please open a pull request in [ory/elements](https://github.com/ory/elements#internalization-i18n). To determine -the language to use, the Account Experience uses the `Accept-Language` header. If the language is not available, the fallback -language (English) is used. Custom translations are not supported at the moment, but please reach out if you need this feature. +To determine the language to use, the Account Experience uses the `Accept-Language` header. If the language isn't available, the +fallback language (English) is used. Custom translations are supported as well, use the edit button next to the language to +override the default translations. ## Custom Domains diff --git a/docs/actions/live-events.mdx b/docs/actions/live-events.mdx index 03ec2e6f6b..56c99f08a0 100644 --- a/docs/actions/live-events.mdx +++ b/docs/actions/live-events.mdx @@ -11,7 +11,7 @@ your Ory Network project, to your own infrastructure. Pipe those events into you choice, and use them to power your own analytics, dashboards, data science, and more. Live event streams are available for Ory Network enterprise contracts. Talk to your account manager or -[reach out directly](https://www.ory.sh/contact/). +[reach out directly](https://www.ory.com/contact/). ## Event shape @@ -91,6 +91,8 @@ New event names may be added in the future, in which case this list will be upda | **WebhookDelivered** | A webhook has been sent to the configured endpoint for processing. | | **WebhookFailed** | A webhook delivery or processing has failed at the receiving endpoint. | | **WebhookSucceeded** | A webhook has been processed and acknowledged by the receiving endpoint. | +| **CourierMessageAbandoned** | A courier message has been abandoned. | +| **CourierMessageDispatched** | A courier message has been dispatched. | ### Ory OAuth2 @@ -137,7 +139,7 @@ Stronger guarantees can be implemented for your use case if needed, in this case ## Configure event streams -Is your workload not running on AWS or you don't want to use SNS? [Reach out](https://www.ory.sh/contact/) to discuss your +Is your workload not running on AWS or you don't want to use SNS? [Reach out](https://www.ory.com/contact/) to discuss your requirements! Event streams can be implemented for any data warehouse, data lake, or equivalent solution. ### Stream to AWS SNS diff --git a/docs/actions/require-verified-address.mdx b/docs/actions/require-verified-address.mdx index 5f1698236a..798e0eccc4 100644 --- a/docs/actions/require-verified-address.mdx +++ b/docs/actions/require-verified-address.mdx @@ -173,7 +173,7 @@ The registration endpoint returns a 400 error with a `continue_with` field that "action": "show_verification_ui", "flow": { "id": "d859f6af-1dfe-453e-9320-d572e10edeea", - "verifiable_address": "example@ory.sh", + "verifiable_address": "example@ory.com", "url": "https://ory.example.org/verification?flow=d859f6af-1dfe-453e-9320-d572e10edeea" } } @@ -246,7 +246,7 @@ The settings endpoint returns a 400 error with a `continue_with` field that cont "action": "show_verification_ui", "flow": { "id": "d859f6af-1dfe-453e-9320-d572e10edeea", - "verifiable_address": "example@ory.sh", + "verifiable_address": "example@ory.com", "url": "https://ory.example.org/verification?flow=d859f6af-1dfe-453e-9320-d572e10edeea" } } diff --git a/docs/api/index.mdx b/docs/api/index.mdx index 9a04434068..ee68f4e060 100644 --- a/docs/api/index.mdx +++ b/docs/api/index.mdx @@ -6,8 +6,10 @@ sidebar_label: APIs ```mdx-code-block import ApiTypes from './_common/api-types.mdx' +import CanonicalUrl from "@site/src/components/CanonicalUrl" + ``` ## REST API diff --git a/docs/cli/ory-proxy.md b/docs/cli/ory-proxy.md index 2caf9d5dd9..cc40ca1ca7 100644 --- a/docs/cli/ory-proxy.md +++ b/docs/cli/ory-proxy.md @@ -1,6 +1,6 @@ --- id: ory-proxy -title: ory proxy (deprecated) +title: ory proxy description: ory proxy Run your app and Ory on the same domain using a reverse proxy --- @@ -11,10 +11,6 @@ To improve this file please make your change against the appropriate "./cmd/*.go --> ## ory proxy - -:::warning DEPRECATED -Ory Proxy has been deprecated and is no longer recommended for new implementations. Please use [Ory Tunnel](./ory-tunnel.md) instead, which provides similar functionality with an improved architecture. For migration guidance, see the [Proxy and Tunnel documentation](../guides/cli/proxy-and-tunnel#migration-from-proxy-to-tunnel). -::: Run your app and Ory on the same domain using a reverse proxy ### Synopsis @@ -181,3 +177,4 @@ ory proxy http://localhost:3000 ### SEE ALSO * [ory](ory) - The Ory CLI + diff --git a/docs/cli/ory.md b/docs/cli/ory.md index df1450982f..4ee0275ff1 100644 --- a/docs/cli/ory.md +++ b/docs/cli/ory.md @@ -35,6 +35,7 @@ The Ory CLI * [ory parse](ory-parse) - Parse Ory Network resources * [ory patch](ory-patch) - Patch resources * [ory perform](ory-perform) - Perform a flow +* [ory proxy](ory-proxy) - Run your app and Ory on the same domain using a reverse proxy * [ory revoke](ory-revoke) - Revoke resources * [ory tunnel](ory-tunnel) - Mirror Ory APIs on your local machine for local development and testing * [ory update](ory-update) - Update resources diff --git a/docs/concepts/cache.mdx b/docs/concepts/cache.mdx index 191540fbc4..2b0f3f8e24 100644 --- a/docs/concepts/cache.mdx +++ b/docs/concepts/cache.mdx @@ -32,6 +32,13 @@ The caching strategy is as follows: - If the session credentials are known and cached, the cache respects the `Cache-Control: max-age=60` header. - If the user updates their profile or adds another authentication factor, the session is refreshed in the cache automatically. +:::info + +Edge Sessions only work with Ory Session Cookies. They don't work with API tokens from native self-service flows or with OAuth2 or +OpenID Connect access tokens or ID tokens. + +::: + ## Performance You can expect a P95 latency of ~35ms and a P99 latency of ~45ms across the globe when you use edge sessions. Results can vary diff --git a/docs/concepts/password-policy.mdx b/docs/concepts/password-policy.mdx index 8b425fabf6..77f755405b 100644 --- a/docs/concepts/password-policy.mdx +++ b/docs/concepts/password-policy.mdx @@ -72,7 +72,7 @@ they must be implemented in the User Interface that interfaces with Ory Identiti ### Custom User Interface -When using your [own user interface](https://www.ory.sh/kratos/docs/next/concepts/ui-user-interface), we recommend the following +When using your [own user interface](https://www.ory.com/kratos/docs/next/concepts/ui-user-interface), we recommend the following password policies to ensure security and good user experience: - Allows the pasting of credentials in login etc. forms. @@ -81,7 +81,7 @@ password policies to ensure security and good user experience: - Don't expire passwords. For a more detailed explanation of the concepts of these guidelines please visit the -[Security Profiles document](https://www.ory.sh/kratos/docs/next/concepts/security/#user-interface-guidelines). +[Security Profiles document](https://www.ory.com/kratos/docs/next/concepts/security/#user-interface-guidelines). ### Password complexity diff --git a/docs/concepts/redirects.mdx b/docs/concepts/redirects.mdx index 54020e42af..b310d52ffd 100644 --- a/docs/concepts/redirects.mdx +++ b/docs/concepts/redirects.mdx @@ -33,7 +33,7 @@ The Ory Network has a total of six flows, **Login**, **Registration**, **Verific which can be configured to redirect back to any URL. A common use case would be to redirect the user to your application home screen after a logout or to a specific URL on a sub-domain after a settings password update. -On project creation the redirect flows are by default set to the Ory Account Experience pages. +By default, the flows always redirect to the Ory Account Experience pages. ### Login, registration, and settings @@ -159,4 +159,4 @@ It's not possible to set the any Ory-owned domain as redirect URL. ## Read more For a deeper dive into the background of browser redirects, read -[this document](https://www.ory.sh/kratos/docs/concepts/browser-redirect-flow-completion) +[this document](https://www.ory.com/kratos/docs/concepts/browser-redirect-flow-completion) diff --git a/docs/console/usage-billing.mdx b/docs/console/usage-billing.mdx index 528380f456..b1b34df7f4 100644 --- a/docs/console/usage-billing.mdx +++ b/docs/console/usage-billing.mdx @@ -27,7 +27,7 @@ Depending on the plan, the service usage is comprised of at least three componen - the number of permission checks. Additionally, your invoice might include extra charges for additional multi-tenant production environments, etc. For more -information of what's included in your plan visit [our pricing page](https://www.ory.sh/pricing). +information of what's included in your plan visit [our pricing page](https://www.ory.com/pricing). Usage credits will be applied to the total service usage, but unused credits will not be carried over to the next billing period. diff --git a/docs/ecosystem/api-design.md b/docs/ecosystem/api-design.mdx similarity index 100% rename from docs/ecosystem/api-design.md rename to docs/ecosystem/api-design.mdx diff --git a/docs/ecosystem/changelog.md b/docs/ecosystem/changelog.mdx similarity index 87% rename from docs/ecosystem/changelog.md rename to docs/ecosystem/changelog.mdx index 5319dce9de..618e0c01e3 100644 --- a/docs/ecosystem/changelog.md +++ b/docs/ecosystem/changelog.mdx @@ -5,22 +5,21 @@ title: Changelog and roadmap ## Ory Changelog -Read the changelog for Ory Network at [changelog.ory.sh](https://changelog.ory.sh/) ! +```mdx-code-block +import Help from '@site/docs/_common/need-selfhosted-support.mdx' -> Running security-critical open source technology in a self-service format requires vigilance. We make your life easier by -> announcing important software updates via the [Ory Security Newsletter](https://www.ory.sh/l/sign-up-newsletter). Never miss an -> update and **[sign up now to important release updates!](https://www.ory.sh/l/sign-up-newsletter)** - -:::tip + +``` -Looking for support? Please contact us at support@ory.sh! -Ory offers support agreements for self-hosted Ory software. +Read the changelog for Ory Network at [changelog.ory.com](https://changelog.ory.com/) ! -::: +> Running security-critical open source technology in a self-service format requires vigilance. We make your life easier by +> announcing important software updates via the [Ory Security Newsletter](https://www.ory.com/l/sign-up-newsletter). Never miss an +> update and **[sign up now to important release updates!](https://www.ory.com/l/sign-up-newsletter)** ## Changelogs -- [Ory Network Changelog](https://changelog.ory.sh/) +- [Ory Network Changelog](https://changelog.ory.com/) - [Ory Hydra Changelog](https://github.com/ory/hydra/blob/master/CHANGELOG.md) - [Ory Kratos Changelog](https://github.com/ory/kratos/blob/master/CHANGELOG.md) - [Ory Keto Changelog](https://github.com/ory/keto/blob/master/CHANGELOG.md) @@ -40,7 +39,7 @@ efforts to make development at Ory as transparent as possible to facilitate coll ### Feedback If you are a user of our Open Source offering and you have feedback, please do so in [GitHub Discussions](#discussions) or on the -[Ory Community Slack](https://slack.ory.sh/). +[Ory Community Slack](https://slack.ory.com/). Please also vote on issues and discussions with a thumbs up. We will ask for community feedback on important changes and consider the popularity of features in the community when planning development. diff --git a/docs/ecosystem/community.md b/docs/ecosystem/community.mdx similarity index 92% rename from docs/ecosystem/community.md rename to docs/ecosystem/community.mdx index f134765830..8e12e3bd4d 100644 --- a/docs/ecosystem/community.md +++ b/docs/ecosystem/community.mdx @@ -8,7 +8,7 @@ Sponsors, contributors, and adopters make this ecosystem possible and shape it i Take part in the Ory Community! -- Chat on the [Ory Community Slack](https://slack.ory.sh/) +- Chat on the [Ory Community Slack](https://slack.ory.com/) :::info diff --git a/docs/ecosystem/configuring.md b/docs/ecosystem/configuring.mdx similarity index 100% rename from docs/ecosystem/configuring.md rename to docs/ecosystem/configuring.mdx diff --git a/docs/ecosystem/contributing.md b/docs/ecosystem/contributing.mdx similarity index 51% rename from docs/ecosystem/contributing.md rename to docs/ecosystem/contributing.mdx index 52abd9d86c..30ca4554c0 100644 --- a/docs/ecosystem/contributing.md +++ b/docs/ecosystem/contributing.mdx @@ -3,149 +3,122 @@ id: contributing title: Contribute to Ory --- -This document explains how you can contribute to Ory. +This document explains how you can contribute to Ory. -If have have ideas to improve it, please have a look at the [template](https://github.com/ory/docs/blob/master/docs/ecosystem/contributing.md). +If have have ideas to improve it, please have a look at the +[template](https://github.com/ory/docs/blob/master/docs/ecosystem/contributing.md). ## Introduction -_Please note_: We take Ory's security and our users' trust very -seriously. If you believe you have found a security issue in Ory , -please disclose it by contacting us at security@ory.sh. +_Please note_: We take Ory's security and our users' trust very seriously. If you believe you have found a security issue in Ory , +please disclose it by contacting us at security@ory.com. -There are many ways in which you can contribute. The goal of this document is to -provide a high-level overview of how you can get involved in Ory. +There are many ways in which you can contribute. The goal of this document is to provide a high-level overview of how you can get +involved in Ory. -As a potential contributor, your changes and ideas are welcome at any hour of -the day or night, on weekdays, weekends, and holidays. Please do not ever -hesitate to ask a question or send a pull request. +As a potential contributor, your changes and ideas are welcome at any hour of the day or night, on weekdays, weekends, and +holidays. Please do not ever hesitate to ask a question or send a pull request. -If you are unsure, just ask or submit the issue or pull request anyways. You -won't be yelled at for giving it your best effort. The worst that can happen is -that you'll be politely asked to change something. We appreciate any sort of -contributions and don't want a wall of rules to get in the way of that. +If you are unsure, just ask or submit the issue or pull request anyways. You won't be yelled at for giving it your best effort. +The worst that can happen is that you'll be politely asked to change something. We appreciate any sort of contributions and don't +want a wall of rules to get in the way of that. -That said, if you want to ensure that a pull request is likely to be merged, -talk to us! You can find out our thoughts and ensure that your contribution -won't clash with Ory's direction. A great way to -do this is via -[Ory Discussions](https://github.com/discussions?discussions_q=org%3Aory+sort%3Aupdated-desc) -or the [Ory Chat](https://www.ory.sh/chat). +That said, if you want to ensure that a pull request is likely to be merged, talk to us! You can find out our thoughts and ensure +that your contribution won't clash with Ory's direction. A great way to do this is via +[Ory Discussions](https://github.com/discussions?discussions_q=org%3Aory+sort%3Aupdated-desc) or the +[Ory Chat](https://www.ory.com/chat). ## FAQ - I am new to the community. Where can I find the [Ory Community Code of Conduct?](https://github.com/$REPOSITORY/blob/master/CODE_OF_CONDUCT.md) -- I have a question. Where can I get - [answers to questions regarding Ory?](#communication) +- I have a question. Where can I get [answers to questions regarding Ory?](#communication) -- I would like to contribute but I am not sure how. Are there - [easy ways to contribute?](#how-can-i-contribute) +- I would like to contribute but I am not sure how. Are there [easy ways to contribute?](#how-can-i-contribute) [Or good first issues?](https://github.com/search?l=&o=desc&q=label%3A%22help+wanted%22+label%3A%22good+first+issue%22+is%3Aopen+user%3Aory+user%3Aory-corp&s=updated&type=Issues) -- I want to talk to other Ory users. - [How can I become a part of the community?](#communication) +- I want to talk to other Ory users. [How can I become a part of the community?](#communication) -- I would like to know what I am agreeing to when I contribute to Ory - .Does Ory have +- I would like to know what I am agreeing to when I contribute to Ory .Does Ory have [a Contributors License Agreement?](https://cla-assistant.io/ory/kratos) -- I would like updates about new versions of Ory. - [How are new releases announced?](https://www.ory.sh/l/sign-up-newsletter) +- I would like updates about new versions of Ory. [How are new releases announced?](https://www.ory.com/l/sign-up-newsletter) ## How can I contribute? If you want to start to contribute code right away, take a look at the [list of good first issues](https://github.com/$REPOSITORY/labels/good%20first%20issue). -There are many other ways you can contribute. Here are a few things you can do -to help out: +There are many other ways you can contribute. Here are a few things you can do to help out: -- **Give us a star.** It may not seem like much, but it really makes a - difference. This is something that everyone can do to help out Ory. - Github stars help the project gain visibility and stand out. +- **Give us a star.** It may not seem like much, but it really makes a difference. This is something that everyone can do to help + out Ory. Github stars help the project gain visibility and stand out. -- **Join the community.** Sometimes helping people can be as easy as listening - to their problems and offering a different perspective. Join our Slack, have a - look at discussions in the forum and take part in community events. More info - on this in [Communication](#communication). +- **Join the community.** Sometimes helping people can be as easy as listening to their problems and offering a different + perspective. Join our Slack, have a look at discussions in the forum and take part in community events. More info on this in + [Communication](#communication). -- **Answer discussions.** At all times, there are several unanswered discussions - on GitHub. You can see an - [overview here](https://github.com/discussions?discussions_q=is%3Aunanswered+org%3Aory+sort%3Aupdated-desc). - If you think you know an answer or can provide some information that might - help, please share it! Bonus: You get GitHub achievements for answered +- **Answer discussions.** At all times, there are several unanswered discussions on GitHub. You can see an + [overview here](https://github.com/discussions?discussions_q=is%3Aunanswered+org%3Aory+sort%3Aupdated-desc). If you think you + know an answer or can provide some information that might help, please share it! Bonus: You get GitHub achievements for answered discussions. -- **Help with open issues.** We have a lot of open issues for Ory and - some of them may lack necessary information, some are duplicates of older - issues. You can help out by guiding people through the process of filling out - the issue template, asking for clarifying information or pointing them to - existing issues that match their description of the problem. +- **Help with open issues.** We have a lot of open issues for Ory and some of them may lack necessary information, some are + duplicates of older issues. You can help out by guiding people through the process of filling out the issue template, asking for + clarifying information or pointing them to existing issues that match their description of the problem. -- **Review documentation changes.** Most documentation just needs a review for - proper spelling and grammar. If you think a document can be improved in any - way, feel free to hit the `edit` button at the top of the page. More info on - contributing to the documentation [here](#contribute-documentation). +- **Review documentation changes.** Most documentation just needs a review for proper spelling and grammar. If you think a + document can be improved in any way, feel free to hit the `edit` button at the top of the page. More info on contributing to the + documentation [here](#contribute-documentation). -- **Help with tests.** Pull requests may lack proper tests or test plans. These - are needed for the change to be implemented safely. +- **Help with tests.** Pull requests may lack proper tests or test plans. These are needed for the change to be implemented + safely. ## Communication -We use [Slack](https://www.ory.sh/chat). You are welcome to drop in and ask -questions, discuss bugs and feature requests, talk to other users of Ory, etc. +We use [Slack](https://www.ory.com/chat). You are welcome to drop in and ask questions, discuss bugs and feature requests, talk to +other users of Ory, etc. Check out [Ory Discussions](https://github.com/discussions?discussions_q=org%3Aory+sort%3Aupdated-desc). This is a great place for in-depth discussions and lots of code examples, logs and similar data. -You can also join our community calls if you want to speak to the Ory team -directly or ask some questions. You can find more info and participate in -[Slack](https://www.ory.sh/chat) in the #community-call channel. +You can also join our community calls if you want to speak to the Ory team directly or ask some questions. You can find more info +and participate in [Slack](https://www.ory.com/chat) in the #community-call channel. -If you want to receive regular notifications about updates to Ory, -consider joining the mailing list. We will _only_ send you vital information on -the projects that you are interested in. +If you want to receive regular notifications about updates to Ory, consider joining the mailing list. We will _only_ send you +vital information on the projects that you are interested in. Also, [follow us on Twitter](https://twitter.com/orycorp). ## Contribute examples or community projects -One of the most impactful ways to contribute is by adding code examples or other -Ory-related code. You can find an overview of community code in the -[awesome-ory](https://github.com/ory/awesome-ory) repository. +One of the most impactful ways to contribute is by adding code examples or other Ory-related code. You can find an overview of +community code in the [awesome-ory](https://github.com/ory/awesome-ory) repository. _If you would like to contribute a new example, we would love to hear from you!_ -Please [open a pull request at awesome-ory](https://github.com/ory/awesome-ory/) -to add your example or Ory-related project to the awesome-ory README. +Please [open a pull request at awesome-ory](https://github.com/ory/awesome-ory/) to add your example or Ory-related project to the +awesome-ory README. ## Contribute code -Unless you are fixing a known bug, we **strongly** recommend discussing it with -the core team via a GitHub issue or [in our chat](https://www.ory.sh/chat) -before getting started to ensure your work is consistent with Ory's -roadmap and architecture. +Unless you are fixing a known bug, we **strongly** recommend discussing it with the core team via a GitHub issue or +[in our chat](https://www.ory.com/chat) before getting started to ensure your work is consistent with Ory's roadmap and +architecture. -All contributions are made via pull requests. To make a pull request, you will -need a GitHub account; if you are unclear on this process, see GitHub's -documentation on [forking](https://help.github.com/articles/fork-a-repo) and -[pull requests](https://help.github.com/articles/using-pull-requests). Pull -requests should be targeted at the `master` branch. Before creating a pull -request, go through this checklist: +All contributions are made via pull requests. To make a pull request, you will need a GitHub account; if you are unclear on this +process, see GitHub's documentation on [forking](https://help.github.com/articles/fork-a-repo) and +[pull requests](https://help.github.com/articles/using-pull-requests). Pull requests should be targeted at the `master` branch. +Before creating a pull request, go through this checklist: 1. Create a feature branch off of `master` so that changes do not get mixed up. -1. [Rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) your local - changes against the `master` branch. -1. Run the full project test suite with the `go test -tags sqlite ./...` (or - equivalent) command and confirm that it passes. +1. [Rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) your local changes against the `master` branch. +1. Run the full project test suite with the `go test -tags sqlite ./...` (or equivalent) command and confirm that it passes. 1. Run `make format` -1. Add a descriptive prefix to commits. This ensures a uniform commit history - and helps structure the changelog. Please refer to this - [Convential Commits configuration](https://github.com/$REPOSITORY/blob/master/.github/workflows/conventional_commits.yml) - for the list of accepted prefixes. You can read more about the Conventional - Commit specification +1. Add a descriptive prefix to commits. This ensures a uniform commit history and helps structure the changelog. Please refer to + this [Convential Commits configuration](https://github.com/$REPOSITORY/blob/master/.github/workflows/conventional_commits.yml) + for the list of accepted prefixes. You can read more about the Conventional Commit specification [at their site](https://www.conventionalcommits.org/en/v1.0.0/). If a pull request is not ready to be reviewed yet @@ -154,46 +127,38 @@ If a pull request is not ready to be reviewed yet Before your contributions can be reviewed you need to sign our [Contributor License Agreement](https://cla-assistant.io/$REPOSITORY). -This agreement defines the terms under which your code is contributed to Ory. -More specifically it declares that you have the right to, and actually do, grant -us the rights to use your contribution. You can see the Apache 2.0 license under -which our projects are published -[here](https://github.com/ory/meta/blob/master/LICENSE). +This agreement defines the terms under which your code is contributed to Ory. More specifically it declares that you have the +right to, and actually do, grant us the rights to use your contribution. You can see the Apache 2.0 license under which our +projects are published [here](https://github.com/ory/meta/blob/master/LICENSE). -When pull requests fail the automated testing stages (for example unit or E2E -tests), authors are expected to update their pull requests to address the -failures until the tests pass. +When pull requests fail the automated testing stages (for example unit or E2E tests), authors are expected to update their pull +requests to address the failures until the tests pass. Pull requests eligible for review 1. follow the repository's code formatting conventions; -2. include tests that prove that the change works as intended and does not add - regressions; +2. include tests that prove that the change works as intended and does not add regressions; 3. document the changes in the code and/or the project's documentation; 4. pass the CI pipeline; -5. have signed our - [Contributor License Agreement](https://cla-assistant.io/$REPOSITORY); +5. have signed our [Contributor License Agreement](https://cla-assistant.io/$REPOSITORY); 6. include a proper git commit message following the [Conventional Commit Specification](https://www.conventionalcommits.org/en/v1.0.0/). -If all of these items are checked, the pull request is ready to be reviewed and -you should change the status to "Ready for review" and +If all of these items are checked, the pull request is ready to be reviewed and you should change the status to "Ready for review" +and [request review from a maintainer](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). Reviewers will approve the pull request once they are satisfied with the patch. ## Contribute documentation -Please provide documentation when changing, removing, or adding features. All -Ory Documentation resides in the -[Ory documentation repository](https://github.com/ory/docs/). For further -instructions please head over to the Ory Documentation +Please provide documentation when changing, removing, or adding features. All Ory Documentation resides in the +[Ory documentation repository](https://github.com/ory/docs/). For further instructions please head over to the Ory Documentation [README.md](https://github.com/ory/docs/blob/master/README.md). ## Disclosing vulnerabilities -Please disclose vulnerabilities exclusively to -[security@ory.sh](mailto:security@ory.sh). Do not use GitHub issues. +Please disclose vulnerabilities exclusively to [security@ory.com](mailto:security@ory.com). Do not use GitHub issues. ## Code style @@ -228,11 +193,10 @@ Now go to the project's GitHub Pull Request page and click "New pull request" ## Conduct -Whether you are a regular contributor or a newcomer, we care about making this -community a safe place for you and we've got your back. +Whether you are a regular contributor or a newcomer, we care about making this community a safe place for you and we've got your +back. [Ory Community Code of Conduct](https://github.com/$REPOSITORY/blob/master/CODE_OF_CONDUCT.md) -We welcome discussion about creating a welcoming, safe, and productive -environment for the community. If you have any questions, feedback, or concerns -[please let us know](https://www.ory.sh/chat). \ No newline at end of file +We welcome discussion about creating a welcoming, safe, and productive environment for the community. If you have any questions, +feedback, or concerns [please let us know](https://www.ory.com/chat). diff --git a/docs/ecosystem/projects.mdx b/docs/ecosystem/projects.mdx index 8e2e6c47d8..fe37c46cea 100644 --- a/docs/ecosystem/projects.mdx +++ b/docs/ecosystem/projects.mdx @@ -84,9 +84,24 @@ enterprise identity providers. It’s modular, supports your preferred database, data and privacy. Built for flexibility and scale, Ory Polis handles as many tenants and identity providers as your business demands. If you're delivering enterprise-grade SaaS and need SSO that just works, Ory Polis is the missing link. +## Ory Elements + +![Ory Elements](https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-elements.svg) + +Ory Elements is a component library that allows you to build custom user interfaces for Ory self-service flows. It provides a set +of pre-built components that can be easily integrated into your application, enabling you to create a seamless user experience +while leveraging Ory's powerful authentication and identity management capabilities. Ory Elements is designed to work with Ory +Kratos' self-service flows, such as login, registration, settings, verification, and recovery, as well as the OAuth2 consent flow. +It allows you to customize the look and feel of your UI to match your brand and user experience requirements. You can use Ory +Elements to build a custom UI that fits your application's design and user experience. + ## All of Ory Open Source -![Full Ory Ecosystem](./_static/projects/1.png) +```mdx-code-block +import { ProjectOverviewGraph } from "@site/src/pages/_assets/project-overview-graph" + + +``` If you were to use the full Ory Ecosystem, it would probably look something like this. Keep in mind that any component shown here can be replaced or removed, depending on your use case. @@ -94,4 +109,4 @@ can be replaced or removed, depending on your use case. Now you know what this ecosystem has to offer you. To get some more information on the services, read the developer guide by selecting the software of your choice from the navigation on the left! -Contact us at [support@ory.sh](mailto:support@ory.sh) if you need consulting with your specific project. +Contact us at [support@ory.com](mailto:support@ory.com) if you need consulting with your specific project. diff --git a/docs/ecosystem/security.md b/docs/ecosystem/security.mdx similarity index 95% rename from docs/ecosystem/security.md rename to docs/ecosystem/security.mdx index 20d5946c18..82f1226c41 100644 --- a/docs/ecosystem/security.md +++ b/docs/ecosystem/security.mdx @@ -5,13 +5,11 @@ title: Security policy This security policy outlines the security support commitments for different types of Ory users. -[Get in touch](https://www.ory.sh/contact/) to learn more about Ory's security SLAs and process. +[Get in touch](https://www.ory.com/contact/) to learn more about Ory's security SLAs and process. ### Apache 2.0 License users - **Security SLA:** No security Service Level Agreement (SLA) is provided. -- **Release Schedule:** Releases are planned every 3 to 6 months. These releases will contain all security fixes implemented up to - that point. - **Version Support:** Security patches are only provided for the current release version. ### Ory Enterprise License customers @@ -44,7 +42,7 @@ Please read the following section to learn more about reporting security vulnera ## Ory bug bounty program Ory is working with Hackerone to provide a private bug bounty program for all Ory products. If you are interested in joining the -program, please [create an account at Hackerone](https://hackerone.com/sign_up) and [request access](mailto:security@ory.sh). The +program, please [create an account at Hackerone](https://hackerone.com/sign_up) and [request access](mailto:security@ory.com). The following is the policy for the private bug bounty program. Being a security-focused company, Ory appreciates, encourages, and rewards feedback from the security community. Ory is open diff --git a/docs/ecosystem/software-architecture-philosophy.md b/docs/ecosystem/software-architecture-philosophy.mdx similarity index 100% rename from docs/ecosystem/software-architecture-philosophy.md rename to docs/ecosystem/software-architecture-philosophy.mdx diff --git a/docs/ecosystem/sqa.md b/docs/ecosystem/sqa.mdx similarity index 95% rename from docs/ecosystem/sqa.md rename to docs/ecosystem/sqa.mdx index 9263793a86..edda5c2a5a 100644 --- a/docs/ecosystem/sqa.md +++ b/docs/ecosystem/sqa.mdx @@ -19,7 +19,7 @@ real-world examples of how this data improved a project. The data processing pipeline has the following steps: 1. Telemetry data is collected at each service. -2. Periodically this data is sent to `sqa.ory.sh`. +2. Periodically this data is sent to `sqa.ory.com`. 3. Data is forwarded to a private Google cloud storage Bucket owned by the Ory organization. The data isn't shared with any other party. 4. The GCS Bucket(s) are periodically downloaded onto Google compute engine virtual machines. @@ -64,9 +64,7 @@ protect your privacy: 1. We only transmit information on how often endpoints are requested, how fast they respond and what HTTP status code was sent. 2. We filter out any query parameters, headers, response and request bodies and path parameters. A full list of transmitted URL paths is listed in section [Request telemetry](#request-telemetry). -3. **We're unable to see or store the IP address of your host**, as the - [IP is set to `0.0.0.0`](https://github.com/ory/x/blob/master/metricsx/middleware.go) when transmitting data to our metrics - aggregator. +3. Private IP addresses are filtered out from collected host information when transmitting data to the metrics aggregator. 4. We don't transmit any environment information from the host, except: - Operating system id (windows, linux, osx) @@ -97,7 +95,7 @@ We collect the following system metrics: ### Request telemetry -The IP addresses of both host and client are anonymized to `0.0.0.0`. +Client IP addresses are anonymized to `0.0.0.0`. Private IP addresses are filtered out from host data. We collect the following request metrics: diff --git a/docs/ecosystem/upgrading.md b/docs/ecosystem/upgrading.md deleted file mode 100644 index 344cf08588..0000000000 --- a/docs/ecosystem/upgrading.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: upgrading -title: Versioning and upgrades ---- - -## Upgrades - -> Running security-critical open source technology in a self-service format requires vigilance. We make your life easier by -> announcing important software updates via the [Ory Security Newsletter](https://www.ory.sh/l/sign-up-newsletter). Never miss an -> update and **[sign up now to important release updates!](https://www.ory.sh/l/sign-up-newsletter)** - -Good software improves over time. If it wouldn't, you shouldn't use it. Unfortunately, some of these improvements have breaking -changes. We know that breaking changes are annoying so we want to make upgrading as painless as possible. - -We document changelogs and upgrade guides for Ory services: - -- Ory Kratos: [upgrade guide](../kratos/guides/upgrade), [changelog](https://github.com/ory/kratos/blob/master/CHANGELOG.md) -- Ory Hydra: [upgrade guide](https://github.com/ory/hydra/blob/master/UPGRADE.md), - [changelog](https://github.com/ory/hydra/blob/master/CHANGELOG.md) -- Ory Oathkeeper: [upgrade guide](https://github.com/ory/oathkeeper/blob/master/UPGRADE.md), - [changelog](https://github.com/ory/oathkeeper/blob/master/CHANGELOG.md) -- Ory Keto: [upgrade guide](https://github.com/ory/keto/blob/master/UPGRADE.md), - [changelog](https://github.com/ory/keto/blob/master/CHANGELOG.md) - -Before upgrading to a newer version, please make sure to check with these documents first. - -## Versioning - -The Ory ecosystem consists of multiple services versioned using [semantic versioning](https://semver.org). This section explains -how we define service versions and what they mean. - -## Development stages - -:::important - -**Ory only releases software that is stable and ready for production!** -The sandbox/incubating stage is an indicator of how much the API could change in the future, including backward incompatible -changes. - -Ory was founded in 2015, secures more than 50B requests monthly and is the most trusted open source ecosystem for authentication & -authorization. - -::: - -There are three main stages of development for services: - -- **Graduated:** Mature implementations of proven concepts. They rarely change in backwards incompatible ways. A software is - considered graduated if the major version is >= 1, for example `v1.0.1`, `v2.2.2`. Backwards incompatible changes are indicated - by a bump of the major version number. Most, if not all, REST APIs will provide backwards compatible transformations that make - it possible to interact with the server using older API versions. -- **Incubating:** Implements well defined but not fully matured concepts. Incubating software has a major version number of `0`, - for example `v0.10.0`. You may see a pre-release version such as `v0.10.0-beta.1`. Incubating software has a higher (but overall - moderate) probability for larger changes that can break backwards compatibility, for which there are upgrade guides. -- **Sandbox:** Implements concepts, APIs and CLIs at the experimental stage and may change in unpredictable ways. Sandbox software - has a major version number of `0` with a `alpha` or `beta` pre-release indicator, for example `v0.10.0-alpha.1`. It's more - likely that you'll encounter a version tag with a `alpha` pre-release version. We will provide upgrade guides wherever possible, - when they're used in production already. - -The following is a list of maturity level per project: - -- [Ory Hydra](https://github.com/ory/hydra) is a **graduated** project. -- [Ory Kratos](https://github.com/ory/kratos) is a **graduated** project. -- [Ory Oathkeeper](https://github.com/ory/oathkeeper) is an **incubating** project. -- [Ory Keto](https://github.com/ory/keto) is a **sandbox** project. diff --git a/docs/ecosystem/upgrading.mdx b/docs/ecosystem/upgrading.mdx new file mode 100644 index 0000000000..e437960dd6 --- /dev/null +++ b/docs/ecosystem/upgrading.mdx @@ -0,0 +1,35 @@ +--- +id: upgrading +title: Versioning and upgrades +--- + +## Upgrades + +> Running security-critical open source technology in a self-service format requires vigilance. We make your life easier by +> announcing important software updates via the [Ory Security Newsletter](https://www.ory.com/l/sign-up-newsletter). Never miss an +> update and **[sign up now to important release updates!](https://www.ory.com/l/sign-up-newsletter)** + +Good software improves over time. If it wouldn't, you shouldn't use it. Unfortunately, some of these improvements have breaking +changes. We know that breaking changes are annoying so we want to make upgrading as painless as possible. + +We document changelogs and upgrade guides for Ory services: + +- Ory Kratos: [upgrade guide](../kratos/guides/upgrade), [changelog](https://github.com/ory/kratos/blob/master/CHANGELOG.md) +- Ory Hydra: [upgrade guide](https://github.com/ory/hydra/blob/master/UPGRADE.md), + [changelog](https://github.com/ory/hydra/blob/master/CHANGELOG.md) +- Ory Oathkeeper: [upgrade guide](https://github.com/ory/oathkeeper/blob/master/UPGRADE.md), + [changelog](https://github.com/ory/oathkeeper/blob/master/CHANGELOG.md) +- Ory Keto: [upgrade guide](https://github.com/ory/keto/blob/master/UPGRADE.md), + [changelog](https://github.com/ory/keto/blob/master/CHANGELOG.md) + +Before upgrading to a newer version, please make sure to check with these documents first. + +## Versioning + +Ory uses a calendar-based product versioning system, where the version format is `YY.Q.N`, representing the year, quarter, and +release number within that quarter. For example, version `26.2.0` indicates a product release in the second quarter of 2026, with +`0` being the first release in that quarter. The release number increases with each subsequent release during the quarter. With +this system you can understand when a version was released and how recent it released. Starting from October 2025, all Ory +components use a common versioning number, meaning releases are synchronized across all components such as Ory Kratos, Ory Hydra, +Ory Oathkeeper, and Ory Keto. This unified versioning simplifies upgrades and ensures compatibility across the entire Ory +ecosystem. diff --git a/docs/elements/assets/figma-variables-deps.gen.mermaid b/docs/elements/assets/figma-variables-deps.gen.mermaid new file mode 100644 index 0000000000..7f6889db9d --- /dev/null +++ b/docs/elements/assets/figma-variables-deps.gen.mermaid @@ -0,0 +1,129 @@ +%% AUTOGENERATED - DO NOT EDIT +graph LR + ui-white --> brand-600 + ui-white --> interface-background-default-primary + ui-white --> interface-foreground-default-inverted + ui-warning --> interface-background-validation-warning + ui-warning --> interface-border-validation-warning + ui-warning --> interface-foreground-validation-warning + ui-transparent --> interface-background-default-none + ui-transparent --> interface-border-default-none + ui-success --> interface-background-validation-success + ui-success --> interface-border-validation-success + ui-success --> interface-foreground-validation-success + ui-danger --> interface-background-validation-danger + ui-danger --> interface-border-validation-danger + ui-danger --> interface-foreground-validation-danger + ui-900 --> brand-500 + ui-900 --> interface-background-default-inverted + ui-900 --> interface-foreground-default-primary + ui-800 --> brand-950 + ui-800 --> interface-background-default-inverted-hover + ui-700 --> brand-400 + ui-700 --> interface-border-default-inverted + ui-700 --> interface-foreground-default-secondary + ui-600 --> brand-900 + ui-500 --> brand-300 + ui-500 --> interface-foreground-default-tertiary + ui-50 --> brand-50 + ui-50 --> interface-background-default-primary-hover + ui-50 --> interface-background-default-secondary + ui-400 --> brand-800 + ui-400 --> interface-foreground-disabled-on-disabled + ui-300 --> brand-200 + ui-300 --> interface-background-default-tertiary-hover + ui-300 --> interface-border-default-primary + ui-300 --> interface-border-disabled-disabled + ui-300 --> interface-foreground-disabled-disabled + ui-200 --> brand-700 + ui-200 --> interface-background-default-secondary-hover + ui-200 --> interface-background-default-tertiary + ui-200 --> interface-background-disabled-disabled + ui-100 --> brand-100 + interface-foreground-disabled-on-disabled --> button-primary-foreground-disabled + interface-foreground-disabled-on-disabled --> button-secondary-foreground-disabled + interface-foreground-disabled-on-disabled --> button-social-foreground-disabled + interface-foreground-disabled-on-disabled --> input-foreground-disabled + interface-foreground-disabled-disabled --> button-link-disabled-disabled + interface-foreground-default-tertiary --> button-link-default-secondary-hover + interface-foreground-default-tertiary --> input-foreground-tertiary + interface-foreground-default-secondary --> button-link-default-secondary + interface-foreground-default-secondary --> button-secondary-foreground-hover + interface-foreground-default-secondary --> button-social-foreground-hover + interface-foreground-default-secondary --> input-foreground-secondary + interface-foreground-default-primary --> button-link-brand-brand-hover + interface-foreground-default-primary --> button-link-default-primary + interface-foreground-default-primary --> button-secondary-foreground-default + interface-foreground-default-primary --> button-social-foreground-default + interface-foreground-default-primary --> checkbox-foreground-default + interface-foreground-default-primary --> input-foreground-primary + interface-foreground-default-primary --> ory-foreground-default + interface-foreground-default-primary --> radio-foreground-default + interface-foreground-default-inverted --> button-social-foreground-generic-provider + interface-foreground-brand-primary --> button-link-brand-brand + interface-foreground-brand-primary --> button-link-default-primary-hover + interface-foreground-brand-primary --> toggle-foreground-default + interface-foreground-brand-on-secondary --> button-identifier-foreground-default + interface-foreground-brand-on-secondary --> button-identifier-foreground-hover + interface-foreground-brand-on-primary --> button-primary-foreground-default + interface-foreground-brand-on-primary --> button-primary-foreground-hover + interface-foreground-brand-on-primary --> checkbox-foreground-checked + interface-foreground-brand-on-primary --> radio-foreground-checked + interface-foreground-brand-on-primary --> toggle-foreground-checked + interface-border-disabled-disabled --> button-primary-border-disabled + interface-border-disabled-disabled --> button-secondary-border-disabled + interface-border-disabled-disabled --> button-social-border-disabled + interface-border-disabled-disabled --> input-border-disabled + interface-border-default-primary --> button-secondary-border-default + interface-border-default-primary --> button-secondary-border-hover + interface-border-default-primary --> button-social-border-default + interface-border-default-primary --> button-social-border-hover + interface-border-default-primary --> checkbox-border-checkbox-border-default + interface-border-default-primary --> form-border-default + interface-border-default-primary --> input-border-default + interface-border-default-primary --> input-border-hover + interface-border-default-primary --> ory-border-default + interface-border-default-primary --> radio-border-default + interface-border-default-primary --> toggle-border-default + interface-border-default-none --> button-primary-border-default + interface-border-default-none --> button-primary-border-hover + interface-border-default-none --> button-social-border-generic-provider + interface-border-default-none --> toggle-border-checked + interface-border-brand-brand --> button-identifier-border-border-default + interface-border-brand-brand --> button-identifier-border-border-hover + interface-border-brand-brand --> checkbox-border-checkbox-border-checked + interface-border-brand-brand --> input-border-focus + interface-border-brand-brand --> radio-border-checked + interface-background-disabled-disabled --> button-primary-background-disabled + interface-background-disabled-disabled --> button-secondary-background-disabled + interface-background-disabled-disabled --> button-social-background-disabled + interface-background-disabled-disabled --> input-background-disabled + interface-background-default-secondary --> checkbox-background-default + interface-background-default-secondary --> radio-background-default + interface-background-default-secondary --> toggle-background-default + interface-background-default-primary-hover --> button-secondary-background-hover + interface-background-default-primary-hover --> button-social-background-hover + interface-background-default-primary-hover --> input-background-hover + interface-background-default-primary --> button-secondary-background-default + interface-background-default-primary --> button-social-background-default + interface-background-default-primary --> form-background-default + interface-background-default-primary --> input-background-default + interface-background-default-primary --> ory-background-default + interface-background-default-inverted --> button-social-background-generic-provider + interface-background-brand-secondary-hover --> button-identifier-background-hover + interface-background-brand-secondary --> button-identifier-background-default + interface-background-brand-primary-hover --> button-primary-background-hover + interface-background-brand-primary --> button-primary-background-default + interface-background-brand-primary --> checkbox-background-checked + interface-background-brand-primary --> radio-background-checked + interface-background-brand-primary --> toggle-background-checked + brand-950 --> interface-foreground-brand-on-secondary + brand-500 --> interface-background-brand-primary + brand-500 --> interface-border-brand-brand + brand-500 --> interface-foreground-brand-primary + brand-50 --> interface-background-brand-secondary + brand-50 --> interface-foreground-brand-on-primary + brand-50 --> interface-foreground-brand-secondary + brand-400 --> interface-background-brand-primary-hover + brand-100 --> interface-background-brand-secondary-hover + \ No newline at end of file diff --git a/docs/elements/assets/figma-variables.gen.md b/docs/elements/assets/figma-variables.gen.md new file mode 100644 index 0000000000..23ee398695 --- /dev/null +++ b/docs/elements/assets/figma-variables.gen.md @@ -0,0 +1,145 @@ +| CSS Variable | Description | +| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `--ui-100` | **Default**: #f1f5f9 | +| `--ui-200` | **Default**: #e2e8f0 | +| `--ui-300` | **Default**: #cbd5e1 | +| `--ui-400` | **Default**: #94a3b8 | +| `--ui-50` | **Default**: #f8fafc | +| `--ui-500` | **Default**: #64748b | +| `--ui-600` | **Default**: #475569 | +| `--ui-700` | **Default**: #334155 | +| `--ui-800` | **Default**: #1e293b | +| `--ui-900` | **Default**: #0f172a | +| `--ui-950` | **Default**: #020617 | +| `--ui-black` | **Default**: #000000 | +| `--ui-danger` | **Default**: #dc2626 | +| `--ui-success` | **Default**: #22c55e | +| `--ui-transparent` | **Default**: #ffffff00 | +| `--ui-warning` | **Default**: #eab308 | +| `--ui-white` | **Default**: #ffffff | +| `--brand-100` | **Default**: `ui-100` | +| `--brand-200` | **Default**: `ui-300` | +| `--brand-300` | **Default**: `ui-500` | +| `--brand-400` | **Default**: `ui-700` | +| `--brand-50` | **Default**: `ui-50` | +| `--brand-500` | **Default**: `ui-900` | +| `--brand-600` | **Default**: `ui-white` | +| `--brand-700` | **Default**: `ui-200` | +| `--brand-800` | **Default**: `ui-400` | +| `--brand-900` | **Default**: `ui-600` | +| `--brand-950` | **Default**: `ui-800` | +| `--button-identifier-background-default` | The background color for the identifier button in its default state.
**Default**: `interface-background-brand-secondary` | +| `--button-identifier-background-hover` | The background color for the identifier button when hovered.
**Default**: `interface-background-brand-secondary-hover` | +| `--button-identifier-border-border-default` | The border color for the identifier button in its default state.
**Default**: `interface-border-brand-brand` | +| `--button-identifier-border-border-hover` | The border color for the identifier button when hovered.
**Default**: `interface-border-brand-brand` | +| `--button-identifier-foreground-default` | The text color for the identifier button in its default state.
**Default**: `interface-foreground-brand-on-secondary` | +| `--button-identifier-foreground-hover` | The text color for the identifier button when hovered.
**Default**: `interface-foreground-brand-on-secondary` | +| `--button-link-brand-brand` | The text color for links that are styled in the brand color
**Default**: `interface-foreground-brand-primary` | +| `--button-link-brand-brand-hover` | The text color for links that are styled in the brand color when hovered.
**Default**: `interface-foreground-default-primary` | +| `--button-link-default-primary` | The text color for default primary links.
**Default**: `interface-foreground-default-primary` | +| `--button-link-default-primary-hover` | The text color for default primary links when hovered.
**Default**: `interface-foreground-brand-primary` | +| `--button-link-default-secondary` | The text color for default secondary links.
**Default**: `interface-foreground-default-secondary` | +| `--button-link-default-secondary-hover` | The text color for default secondary links when hovered.
**Default**: `interface-foreground-default-tertiary` | +| `--button-link-disabled-disabled` | The text color for links that are disabled.
**Default**: `interface-foreground-disabled-disabled` | +| `--button-primary-background-default` | The background color for primary buttons in their default state.
**Default**: `interface-background-brand-primary` | +| `--button-primary-background-disabled` | The background color for primary buttons when disabled.
**Default**: `interface-background-disabled-disabled` | +| `--button-primary-background-hover` | The background color for primary buttons when hovered.
**Default**: `interface-background-brand-primary-hover` | +| `--button-primary-border-default` | The border color for primary buttons in their default state.
**Default**: `interface-border-default-none` | +| `--button-primary-border-disabled` | The border color for primary buttons when disabled.
**Default**: `interface-border-disabled-disabled` | +| `--button-primary-border-hover` | The border color for primary buttons when hovered.
**Default**: `interface-border-default-none` | +| `--button-primary-foreground-default` | The text color for primary buttons in their default state.
**Default**: `interface-foreground-brand-on-primary` | +| `--button-primary-foreground-disabled` | The text color for primary buttons when disabled.
**Default**: `interface-foreground-disabled-on-disabled` | +| `--button-primary-foreground-hover` | The text color for primary buttons when hovered.
**Default**: `interface-foreground-brand-on-primary` | +| `--button-secondary-background-default` | The background color for secondary buttons in their default state.
**Default**: `interface-background-default-primary` | +| `--button-secondary-background-disabled` | The background color for secondary buttons when disabled.
**Default**: `interface-background-disabled-disabled` | +| `--button-secondary-background-hover` | The background color for secondary buttons when hovered.
**Default**: `interface-background-default-primary-hover` | +| `--button-secondary-border-default` | The border color for secondary buttons in their default state.
**Default**: `interface-border-default-primary` | +| `--button-secondary-border-disabled` | The border color for secondary buttons when disabled.
**Default**: `interface-border-disabled-disabled` | +| `--button-secondary-border-hover` | The border color for secondary buttons when hovered.
**Default**: `interface-border-default-primary` | +| `--button-secondary-foreground-default` | The text color for secondary buttons in their default state.
**Default**: `interface-foreground-default-primary` | +| `--button-secondary-foreground-disabled` | The text color for secondary buttons when disabled.
**Default**: `interface-foreground-disabled-on-disabled` | +| `--button-secondary-foreground-hover` | The text color for secondary buttons when hovered.
**Default**: `interface-foreground-default-secondary` | +| `--button-social-background-default` | The background color for social buttons in their default state.
**Default**: `interface-background-default-primary` | +| `--button-social-background-disabled` | The background color for social buttons when disabled.
**Default**: `interface-background-disabled-disabled` | +| `--button-social-background-generic-provider` | The background color for social buttons for generic providers.
**Default**: `interface-background-default-inverted` | +| `--button-social-background-hover` | The background color for social buttons when hovered.
**Default**: `interface-background-default-primary-hover` | +| `--button-social-border-default` | The border color for social buttons in their default state.
**Default**: `interface-border-default-primary` | +| `--button-social-border-disabled` | The border color for social buttons when disabled.
**Default**: `interface-border-disabled-disabled` | +| `--button-social-border-generic-provider` | The border color for social buttons for generic providers.
**Default**: `interface-border-default-none` | +| `--button-social-border-hover` | The border color for social buttons when hovered.
**Default**: `interface-border-default-primary` | +| `--button-social-foreground-default` | The text color for social buttons in their default state.
**Default**: `interface-foreground-default-primary` | +| `--button-social-foreground-disabled` | The text color for social buttons when disabled.
**Default**: `interface-foreground-disabled-on-disabled` | +| `--button-social-foreground-generic-provider` | The text color for social buttons for generic providers.
**Default**: `interface-foreground-default-inverted` | +| `--button-social-foreground-hover` | The text color for social buttons when hovered.
**Default**: `interface-foreground-default-secondary` | +| `--checkbox-background-checked` | The background color for checkboxes when checked.
**Default**: `interface-background-brand-primary` | +| `--checkbox-background-default` | The background color for checkboxes when unchecked.
**Default**: `interface-background-default-secondary` | +| `--checkbox-border-checkbox-border-checked` | The border color for checkboxes when checked.
**Default**: `interface-border-brand-brand` | +| `--checkbox-border-checkbox-border-default` | The border color for checkboxes when unchecked.
**Default**: `interface-border-default-primary` | +| `--checkbox-foreground-checked` | The color of the checkmark in checkboxes when checked.
**Default**: `interface-foreground-brand-on-primary` | +| `--checkbox-foreground-default` | The text color for checkboxes when unchecked.
**Default**: `interface-foreground-default-primary` | +| `--form-background-default` | The default background color for forms.
**Default**: `interface-background-default-primary` | +| `--form-border-default` | The default border color for forms.
**Default**: `interface-border-default-primary` | +| `--input-background-default` | The default background color for input fields.
**Default**: `interface-background-default-primary` | +| `--input-background-disabled` | The background color for input fields when disabled.
**Default**: `interface-background-disabled-disabled` | +| `--input-background-hover` | The background color for input fields when hovered.
**Default**: `interface-background-default-primary-hover` | +| `--input-border-default` | The default border color for input fields.
**Default**: `interface-border-default-primary` | +| `--input-border-disabled` | The border color for input fields when disabled.
**Default**: `interface-border-disabled-disabled` | +| `--input-border-focus` | The border color for input fields when focused.
**Default**: `interface-border-brand-brand` | +| `--input-border-hover` | The border color for input fields when hovered.
**Default**: `interface-border-default-primary` | +| `--input-foreground-disabled` | The text color for input fields when disabled.
**Default**: `interface-foreground-disabled-on-disabled` | +| `--input-foreground-primary` | The primary text color for input fields.
**Default**: `interface-foreground-default-primary` | +| `--input-foreground-secondary` | The secondary text color for input fields.
**Default**: `interface-foreground-default-secondary` | +| `--input-foreground-tertiary` | The tertiary text color for input fields.
**Default**: `interface-foreground-default-tertiary` | +| `--interface-background-brand-primary` | The background color for interface elements styled with the brand primary color.
**Default**: `brand-500` | +| `--interface-background-brand-primary-hover` | The background color for interface elements styled with the brand primary color when hovered.
**Default**: `brand-400` | +| `--interface-background-brand-secondary` | The background color for interface elements styled with the brand secondary color.
**Default**: `brand-50` | +| `--interface-background-brand-secondary-hover` | The background color for interface elements styled with the brand secondary color when hovered.
**Default**: `brand-100` | +| `--interface-background-default-inverted` | The background color for interface elements in their default inverted state.
**Default**: `ui-900` | +| `--interface-background-default-inverted-hover` | The background color for interface elements in their default inverted state when hovered.
**Default**: `ui-800` | +| `--interface-background-default-none` | Unused
**Default**: `ui-transparent` | +| `--interface-background-default-primary` | The background color for primary interface elements in their default state.
**Default**: `ui-white` | +| `--interface-background-default-primary-hover` | The background color for primary interface elements when hovered.
**Default**: `ui-50` | +| `--interface-background-default-secondary` | The background color for secondary interface elements in their default state.
**Default**: `ui-50` | +| `--interface-background-default-secondary-hover` | The background color for secondary interface elements when hovered.
**Default**: `ui-200` | +| `--interface-background-default-tertiary` | The background color for tertiary interface elements in their default state.
**Default**: `ui-200` | +| `--interface-background-default-tertiary-hover` | The background color for tertiary interface elements when hovered.
**Default**: `ui-300` | +| `--interface-background-disabled-disabled` | The background color for interface elements when disabled.
**Default**: `ui-200` | +| `--interface-background-validation-danger` | The background color for interface elements indicating danger or error.
**Default**: `ui-danger` | +| `--interface-background-validation-success` | The background color for interface elements indicating success.
**Default**: `ui-success` | +| `--interface-background-validation-warning` | The background color for interface elements indicating a warning.
**Default**: `ui-warning` | +| `--interface-border-brand-brand` | The border color for interface elements styled with the brand color.
**Default**: `brand-500` | +| `--interface-border-default-inverted` | The border color for interface elements in their default inverted state.
**Default**: `ui-700` | +| `--interface-border-default-none` | Unused
**Default**: `ui-transparent` | +| `--interface-border-default-primary` | The border color for primary interface elements in their default state.
**Default**: `ui-300` | +| `--interface-border-disabled-disabled` | The border color for interface elements when disabled.
**Default**: `ui-300` | +| `--interface-border-validation-danger` | The border color for interface elements indicating danger or error.
**Default**: `ui-danger` | +| `--interface-border-validation-success` | The border color for interface elements indicating success.
**Default**: `ui-success` | +| `--interface-border-validation-warning` | The border color for interface elements indicating a warning.
**Default**: `ui-warning` | +| `--interface-foreground-brand-on-primary` | The text color for interface elements styled with the brand primary color.
**Default**: `brand-50` | +| `--interface-foreground-brand-on-secondary` | The text color for interface elements styled with the brand secondary color.
**Default**: `brand-950` | +| `--interface-foreground-brand-primary` | The text color for brand colored interface elements in their primary state.
**Default**: `brand-500` | +| `--interface-foreground-brand-secondary` | The text color for brand colored interface elements in their secondary state.
**Default**: `brand-50` | +| `--interface-foreground-default-inverted` | The text color for interface elements in their default inverted state.
**Default**: `ui-white` | +| `--interface-foreground-default-primary` | The text color for primary interface elements in their default state.
**Default**: `ui-900` | +| `--interface-foreground-default-secondary` | The text color for secondary interface elements in their default state.
**Default**: `ui-700` | +| `--interface-foreground-default-tertiary` | The text color for tertiary interface elements in their default state.
**Default**: `ui-500` | +| `--interface-foreground-disabled-disabled` | The text color for interface elements when disabled.
**Default**: `ui-300` | +| `--interface-foreground-disabled-on-disabled` | The text color for interface elements when disabled, specifically for elements that are on a disabled background.
**Default**: `ui-400` | +| `--interface-foreground-validation-danger` | The text color for interface elements indicating danger or error.
**Default**: `ui-danger` | +| `--interface-foreground-validation-success` | The text color for interface elements indicating success.
**Default**: `ui-success` | +| `--interface-foreground-validation-warning` | The text color for interface elements indicating a warning.
**Default**: `ui-warning` | +| `--ory-background-default` | The background color for the Ory badge.
**Default**: `interface-background-default-primary` | +| `--ory-border-default` | The border color for the Ory badge.
**Default**: `interface-border-default-primary` | +| `--ory-foreground-default` | The text color for the Ory badge.
**Default**: `interface-foreground-default-primary` | +| `--radio-background-checked` | Unused
**Default**: `interface-background-brand-primary` | +| `--radio-background-default` | Unused
**Default**: `interface-background-default-secondary` | +| `--radio-border-checked` | Unused
**Default**: `interface-border-brand-brand` | +| `--radio-border-default` | Unused
**Default**: `interface-border-default-primary` | +| `--radio-foreground-checked` | Unused
**Default**: `interface-foreground-brand-on-primary` | +| `--radio-foreground-default` | Unused
**Default**: `interface-foreground-default-primary` | +| `--toggle-background-checked` | The background color for toggles when checked.
**Default**: `interface-background-brand-primary` | +| `--toggle-background-default` | The background color for toggles when unchecked.
**Default**: `interface-background-default-secondary` | +| `--toggle-border-checked` | The border color for toggles when checked.
**Default**: `interface-border-default-none` | +| `--toggle-border-default` | The border color for toggles when unchecked.
**Default**: `interface-border-default-primary` | +| `--toggle-foreground-checked` | The text color for toggles when checked.
**Default**: `interface-foreground-brand-on-primary` | +| `--toggle-foreground-default` | The text color for toggles when unchecked.
**Default**: `interface-foreground-brand-primary` | diff --git a/docs/elements/css-reference.mdx b/docs/elements/css-reference.mdx new file mode 100644 index 0000000000..80288c7cdc --- /dev/null +++ b/docs/elements/css-reference.mdx @@ -0,0 +1,27 @@ +--- +id: css-reference +title: CSS Reference +--- + +This document provides a reference for the CSS variables used in Ory Elements. You can use these variables to customize the look +and feel of your application. + +## CSS Variables Reference + +```mdx-code-block +import Table from './assets/figma-variables.gen.md' + + + +``` + +## Visualizing CSS Variables Dependencies + +```mdx-code-block +import Mermaid from "@site/src/theme/Mermaid" +import graph from '!!raw-loader!./assets/figma-variables-deps.gen.mermaid' + + +``` diff --git a/docs/elements/guides/02_theming.mdx b/docs/elements/guides/02_theming.mdx new file mode 100644 index 0000000000..6993c0d2cf --- /dev/null +++ b/docs/elements/guides/02_theming.mdx @@ -0,0 +1,78 @@ +--- +id: theming +title: Use a custom theme +sidebar_label: Theming +--- + +Ory Elements allows you to customize the look and feel of the default UI components by using a custom theme. This guide will show +you how to create and apply a custom theme to your Ory Elements components. + +## Understanding CSS theming in Ory Elements + +Ory Elements uses CSS variables to define the styles of its components. These variables are defined in a hierarchical manner, +allowing you to override base variables that are used in many components at once or variables that are only used in specifc +components. + +To understand this hierarchical structure, consider the following diagram: + +```mdx-code-block +import Mermaid from "@site/src/theme/Mermaid" + + interface-background-default-primary-hover + ui-50 --> interface-background-default-secondary + + interface-background-default-primary-hover --> button-secondary-background-hover + interface-background-default-primary-hover --> button-social-background-hover + interface-background-default-primary-hover --> input-background-hover + + interface-background-default-secondary --> checkbox-background-default + interface-background-default-secondary --> radio-background-default + interface-background-default-secondary --> toggle-background-default +`} +/> +``` + +This diagram shows how the `ui-50` variable is used as a base for other variables like +`interface-background-default-primary-hover` and `interface-background-default-secondary`. These variables are then used in +specific components like buttons, checkboxes, and toggles. By overriding the `ui-50` variable, you can change the look and feel of +all components that use it. + +## Creating a custom theme + +Now, if you want to change the color in all of these components, you can simply override the `ui-50` variable in your CSS files. +This will affect all components that use this variable, allowing you to create a consistent look and feel across your application. + +A mix is also possible, where you can override the core variables, and then target specific components with additional styles. For +example, you can override the `ui-50` variable and then add specific styles for buttons: + +```css title="theme.css" +:root { + --ui-50: #f0f4f8; /* Change the base color */ + --button-secondary-background-hover: #e0e4e8; /* Change the button hover color */ +} +``` + +For a full list of CSS variables used in Ory Elements, you can refer to the [CSS Reference](../css-reference) document. + +## Applying the custom theme + +To apply the custom theme to your Ory Elements components, you need to import the CSS file in your application. You can do this in +your main application file or in a specific component where you want to use the custom theme. Here is an example of how to import +the CSS file in a Next.js application: + +```javascript title="pages/_app.js" +import "../styles/theme.css" // Import the custom theme CSS file + +function MyApp({ Component, pageProps }) { + return +} +export default MyApp +``` + +## Using the default theme with custom components + +When building custom components, you can still leverage the default theme by using the CSS variables defined in Ory Elements. The +default theme's styles are scoped to the `.ory-elements` CSS class. This means that if you wrap your custom components in a +container with this class, they will inherit the default theme styles. diff --git a/docs/elements/guides/03_internationalization.mdx b/docs/elements/guides/03_internationalization.mdx new file mode 100644 index 0000000000..5a54a34944 --- /dev/null +++ b/docs/elements/guides/03_internationalization.mdx @@ -0,0 +1,254 @@ +--- +id: internationalization +title: Use custom translations (i18n) +sidebar_label: Internationalization (i18n) +--- + +```mdx-code-block +import Tabs from "@theme/Tabs" +import TabItem from "@theme/TabItem" +``` + +Ory Elements supports internationalization (i18n) to help you create applications that can be used by users from different +locales. This guide will show you how to use custom translations in your Ory Elements components. + +Ory Elements uses the react-intl library to handle translations. You can provide your own translations for the Ory Elements +components by wrapping your application in the `IntlProvider` component from `react-intl` and passing your translations as +messages. + +## Set the default locale + +By default, a set of translations is provided for 83 languages: + +
+Full list of supported languages + +- Afrikaans (`af`) +- Akan (`ak`) +- Amharic (`am`) +- Arabic (`ar`) +- Assamese (`as`) +- Azerbaijani (Latin) (`az`) +- Belarusian (`be`) +- Bulgarian (`bg`) +- Bamanankan (`bm`) +- Bangla (`bn`) +- Catalan (`ca`) +- Czech (`cs`) +- Danish (`da`) +- German (`de`) +- Greek (`el`) +- English (`en`) +- Spanish (`es`) +- Estonian (`et`) +- Persian (`fa`) +- Finnish (`fi`) +- French (`fr`) +- Gujarati (`gu`) +- Hausa (Latin) (`ha`) +- Hebrew (`he`) +- Hindi (`hi`) +- Croatian (`hr`) +- Hungarian (`hu`) +- Armenian (`hy`) +- Indonesian (`id`) +- Igbo (`ig`) +- Italian (`it`) +- Japanese (`ja`) +- Georgian (`ka`) +- Kazakh (`kk`) +- Khmer (`km`) +- Kannada (`kn`) +- Korean (`ko`) +- Central Kurdish (`ku`) +- Kyrgyz (`ky`) +- Lithuanian (`lt`) +- Latvian (`lv`) +- Macedonian (`mk`) +- Malayalam (`ml`) +- Mongolian (Cyrillic) (`mn`) +- Marathi (`mr`) +- Malay (`ms`) +- Burmese (`my`) +- Nepali (`ne`) +- Dutch (`nl`) +- Norwegian (Bokmal) (`no`) +- Odia (`or`) +- Punjabi (`pa`) +- Polish (`pl`) +- Pashto (`ps`) +- Portuguese (`pt`) +- Romanian (`ro`) +- Russian (`ru`) +- Sindhi (`sd`) +- Sinhala (`si`) +- Slovak (`sk`) +- Slovenian (`sl`) +- Somali (`so`) +- Albanian (`sq`) +- Serbian (Latin) (`sr`) +- Sundanese (`su`) +- Swedish (`sv`) +- Kiswahili (`sw`) +- Tamil (`ta`) +- Telugu (`te`) +- Tajik (Cyrillic) (`tg`) +- Thai (`th`) +- Turkmen (`tk`) +- Tagalog (`tl`) +- Turkish (`tr`) +- Uyghur (`ug`) +- Ukrainian (`uk`) +- Urdu (`ur`) +- Uzbek (Latin) (`uz`) +- Vietnamese (`vi`) +- Xhosa (`xh`) +- Yoruba (`yo`) +- Chinese (Simplified) (`zh`) +- Zulu (`zu`) + +
+ +The source is available in the +[GitHub repository of Ory Elements](https://github.com/ory/elements/tree/main/packages/elements-react/src/locales). + +To set the default locale for your application, see [the locale configuration section](./04_configuration.mdx#locale-i18n). + +## Detecting a user's locale + +If your application supports multiple languages, you can detect the user's locale and set it dynamically. This can be done using +the `Accept-Language` header from the request in a server-side application or by using the browser's `navigator.language` property +in a client-side application. + +## Using custom translations + +To use custom translations in your Ory Elements components, follow these steps: + +```mdx-code-block + + +``` + +1. Define your translations in typescript files. Here is an example of how to create a translations file: + + ```typescript title="translations.ts" + export const messages: Record> = { + de: { + "login.title": "Anmeldung", + "login.description": "Bitte melden Sie sich an, um fortzufahren.", + // other messages... + }, + en: { + "login.title": "Login", + "login.description": "Please log in to continue.", + // other messages... + }, + } + ``` + + :::note + + The keys in the `messages` object should match the keys used in the Ory Elements components. You can find the full original + files in the + [GitHub repository of Ory Elements](https://github.com/ory/elements/tree/main/packages/elements-react/src/locales). + + ::: + +2. Pass it to the OryProvider's `customTranslations` prop. Here is an example of how to do this in a Next.js application: + + ```tsx title="app.tsx" + import { OryProvider } from "@ory/elements-react" + import { messages } from "./translations" + + export default function MyApp({ Component, ...props }: { Component: NextPage }) { + return ( + + + + ) + } + ``` + +```mdx-code-block + + +``` + +1. Install the `react-intl` library if you haven't already: + + ```bash + npm install react-intl + ``` + +2. Create a translations file (e.g., `translations.ts`) that contains your translations for different locales. Here is an example: + + ```typescript title="translations.ts" + export const messages: Record = { + en: { + "login.title": "Login", + // other messages... + }, + de: { + "login.title": "Anmeldung", + }, + } + ``` + + :::note + + The keys in the `messages` object should match the keys used in the Ory Elements components. You can find the full original + files in the + [GitHub repository of Ory Elements](https://github.com/ory/elements/tree/main/packages/elements-react/src/locales). + + ::: + +3. Wrap your application in the `IntlProvider` component and pass your translations as messages. Here is an example of how to do + this in a Next.js application: + + ```mdx-code-block + + + ``` + + ```tsx title="layout.tsx" + import { PropsWithChildren } from "react" + import { IntlProvider } from "react-intl" + import { messages } from "./translations" + + export default function Layout({ children }: PropsWithChildren) { + return ( + + {children} + + ) + } + ``` + + ```mdx-code-block + + + ``` + + ```tsx title="app.tsx" + import type { NextPage } from "next" + import { IntlProvider } from "react-intl" + import { messages } from "./translations" + + export default function MyApp({ Component, ...props }: { Component: NextPage }) { + return ( + + + + ) + } + ``` + + ```mdx-code-block + + + ``` + +```mdx-code-block + + +``` diff --git a/docs/elements/guides/04_configuration.mdx b/docs/elements/guides/04_configuration.mdx new file mode 100644 index 0000000000..0ef6a28635 --- /dev/null +++ b/docs/elements/guides/04_configuration.mdx @@ -0,0 +1,188 @@ +--- +id: configuration +title: Configuration +sidebar_label: Configuration +--- + +Ory Elements exposes a few configuration options that can be used to configure the default behavior of the UI components. These +options can be set globally or per component. This guide will cover the global configuration options available in Ory Elements. + +## Project configuration + +The `project` configuration is used to configure the overall behavior of the Ory Elements UI components. It includes settings such +as the default locale, redirect URLs, and UI URLs for various actions like login, registration, and recovery. + +You can set the project configuration globally in your application, and it will be used by all Ory Elements components. This +allows you to use the default UI but still configure certain behaviors and URLs to match your application's requirements. + +Define the project configuration in your application like this: + +```ts title="projectConfig.ts" +import { AccountExperienceConfiguration } from "@ory/elements-react" + +const projectConfig: AccountExperienceConfiguration = { + default_locale: "en", // default locale for the UI + default_redirect_url: "https://example.com/dashboard", // URL to redirect after successful login or registration + error_ui_url: "https://example.com/error", // URL to handle errors + login_ui_url: "https://example.com/login", // URL to the login page + registration_ui_url: "https://example.com/register", // URL to the registration page + recovery_ui_url: "https://example.com/recovery", // URL to the recovery page + settings_ui_url: "https://example.com/settings", // URL to the settings page + verification_ui_url: "https://example.com/verify", // URL to the verification page + name: "My Project", // the name of your project, used in the UI + logo_light_url: "https://example.com/logo-light.png", // URL to the light theme logo + recovery_enabled: true, // controls whether the "Forgot Password" button is shown + registration_enabled: true, // controls whether the "Register" button in the footer is shown + verification_enabled: true, + + locale_behavior: "respect_accept_language", // currently unused +} +``` + +After defining the configuration, you can pass it to the ``, ``, ``, ``, and +`` components as a prop: + +```tsx title="App.tsx" +import { Login } from "@ory/elements-react/theme" +import { OryProvider } from "@ory/elements-react" + +import { projectConfig } from "./projectConfig" // import your project configuration + +function App() { + const flow = // fetch or create a flow object for login, registration, etc. + return +} +``` + +If you're building your own components, you can pass it to the `OryProvider` to make it available to all Ory Elements components: + +```tsx title="App.tsx" +import { OryProvider } from "@ory/elements-react" +import { projectConfig } from "./projectConfig" // import your project configuration + +function App() { + return {/* Your application components */} +} +``` + +### UI URLs + +To set the URLs for various UI components, you can use the following properties in the `AccountExperienceConfiguration`: + +```typescript title="projectConfig.ts" +const projectConfig: AccountExperienceConfiguration = { + login_ui_url: "https://example.com/login", + registration_ui_url: "https://example.com/register", + recovery_ui_url: "https://example.com/recovery", + settings_ui_url: "https://example.com/settings", + verification_ui_url: "https://example.com/verify", + // .... +} +``` + +These will be used when the respective actions are triggered, such as when a user needs to log in, register, or recover their +account and should match the URLs of your application's UI. You can also set the `error_ui_url` to handle errors in a custom way: + +```typescript title="projectConfig.ts" +const projectConfig: AccountExperienceConfiguration = { + error_ui_url: "https://example.com/error", + // .... +} +``` + +### Logos + +To set the logos for the light theme, you can use the following properties: + +```typescript title="projectConfig.ts" +const projectConfig: AccountExperienceConfiguration = { + logo_light_url: "https://example.com/logo-light.png", + // .... +} +``` + +### Locale (i18n) + +To set a default locale: + +```typescript title="projectConfig.ts" +const projectConfig: AccountExperienceConfiguration = { + default_locale: "en", + // .... +} +``` + +For more advanced localization options, such as providing custom translations, refer to the +[Internationalization guide](./03_internationalization.mdx). + +Reference: + +- [OryClientConfiguration](../reference/@ory/elements-react/interfaces/OryClientConfiguration.md) + +## SDK configuration + +The `sdk` configuration is used to configure the Ory SDK client that is used by Ory Elements. This includes settings such as the +base URL for the Ory API. You can set the SDK configuration globally in your application, and it will be used by all Ory Elements +components. You can define the SDK configuration like this: + +```ts title="sdkConfig.ts" +import { OryClientConfiguration } from "@ory/elements-react" +export const sdkConfig: OryClientConfiguration = { + sdk: { + baseUrl: "https://api.example.com/", // base URL for the Ory API + options: { + headers: { + "X-Custom-Header": "value", // custom headers for the SDK requests + }, + middlewares: [], // custom middlewares for the SDK requests + // other options for the SDK requests + }, + }, +} +``` + +:::note + +If you're running against a standard Ory Network project you don't need to add any special headers or middlewares. Set the +`baseUrl` to your project's URL as listed on under **API endpoints**. + +::: + +Typically, this URL is the same as the one you use to access your Ory services, such as Ory Kratos or Ory Hydra. It is important +to ensure that the base URL is correctly set to match your Ory deployment. + +After defining the SDK configuration, you can pass it to the `` component: + +```tsx title="App.tsx" +import { OryProvider } from "@ory/elements-react" +import { sdkConfig } from "./sdkConfig" // import your SDK configuration +import { projectConfig } from "./projectConfig" // import your project configuration + +function App() { + return {/* Your application components */} +} +``` + +### Base URL + +If the `baseUrl` property in the `sdk` configuration is unset, the base URL can be set via the environment variable `ORY_SDK_URL`. + +In development environments, if neither is set, Ory Elements tries to "guess" the base URL by looking at the current origin of the +page. + +For code that is executed in the server side rendering part of the application, the base URL is set to the value of the +`__NEXT_PRIVATE_ORIGIN` or `VERCEL_URL` environment variable (for Vercel preview environments), if available. If neither is found, +an error is thrown. + +For code that is run in the browser, the base URL is set to the current origin of the page (via `window.location.origin`), which +is typically the URL of your application. Make sure to use the +[Ory middleware](../reference/@ory/nextjs/middleware/functions/createOryMiddleware.md), so that Ory's self-service API endpoints +are available at the correct paths, such as `/self-service/login`, `/self-service/registration`, etc. on the same origin as your +application. This is the default behavior when using Ory Elements in a Next.js application with the Ory middleware. + +:::caution + +In production environments it is required to explicitly set the `baseUrl` or `ORY_SDK_URL` environment variable to ensure that the +Ory SDK client communicates with the correct Ory services. + +::: diff --git a/docs/elements/guides/05_migration_0x.mdx b/docs/elements/guides/05_migration_0x.mdx new file mode 100644 index 0000000000..42fba28ad8 --- /dev/null +++ b/docs/elements/guides/05_migration_0x.mdx @@ -0,0 +1,82 @@ +--- +id: migration-0x +title: Migration from Ory Elements 0.x to 1.x +sidebar_label: Migration from 0.x to 1.x +--- + +This guide will show you how to migrate from Ory Elements 0.x to 1.x. + +Ory Elements 1.0 is a complete rewrite of the Ory Elements 0.x library. It is not backwards compatible with 0.x. + +## Migration from Ory Elements 0.x to 1.x + +### Update the package name + +```bash +npm install @ory/elements-react +``` + +And change the import path to the new package name. + +### `` + +Instead of exporting a single UserAuthCard component, the 1.0 version exports a set of components for each flow. + +- In most cases, you can simply replace `` with ``, ``, ``, ``, + or `` depending on the flow you are using. +- Remove the `additionalProps` prop from the components and pass in the configuration object as a prop to each component. You can + read more about the configuration in the [configuration guide](./04_configuration.mdx). +- You no longer need to handle the onSubmit event of the components. The components now handle the form submission automatically + based on the configuration object. +- `includeScripts` is no longer supported. You can remove it from props. +- `cardImage` is no longer supported. You can remove it from props. Use the `logo_light_url` property in the configuration object + to set the logo. +- `className` is no longer supported. You can remove it from props. Read the [theming guide](./02_theming.mdx) to learn how to + customize the look and feel of the components. +- `title` is no longer supported. You can remove it from props. Read the [configuration guide](./04_configuration.mdx) to learn + how to set the title in the card header. +- `subtitle` is no longer supported. Instead, the card's subtitle will be determined dynamically based on the flow's state. + +### `` + +The `` component has been removed. You can now use the `` component to render the consent page. + +- Change the `consent` prop to `consentChallenge`. +- `cardImage` is no longer supported. You can remove it from props. Use the `logo_light_url` property in the configuration object + to set the logo. +- `client_name` will be inferred from the `consentChallenge` prop. You can remove it. +- `requested_scope` will be inferred from the `consentChallenge` prop. You can remove it. +- `client` will be inferred from the `consentChallenge` prop. You can remove it. +- `className` is no longer supported. You can remove it from props. Read the [theming guide](./02_theming.mdx) to learn how to + customize the look and feel of the components. + +### `` + +The `` component has been removed. You can now use the `` component to render the error page. + +- `title` is no longer supported. You can remove it from props. +- `error` now supports more variants. In most cases you can pass in the same object, as before. +- `backUrl` has been removed. +- `cardImage` is no longer supported. You can remove it from props. Use the `logo_light_url` property in the configuration object + to set the logo. +- `contactSupportEmail` has been removed. +- `className` is no longer supported. You can remove it from props. Read the [theming guide](./02_theming.mdx) to learn how to + customize the look and feel of the components. + +### `` + +The `` component has been removed. You can now use the `useLogoutFlow` hook from the "@ory/nextjs/pages" package +to build your own logout flow component. + +### ``, `` & `` + +The `` component has been removed. You can now use the `` component to render the settings page. + +- `className` is no longer supported. You can remove it from props. Read the [theming guide](./02_theming.mdx) to learn how to + customize the look and feel of the components. +- `dividerClassName` is no longer supported. You can remove it from props. Read the [theming guide](./02_theming.mdx) to learn how + to customize the look and feel of the components. +- `includeScripts` is no longer supported. You can remove it from props. +- `title` is no longer supported. You can remove it from props. Read the [configuration guide](./04_configuration.mdx) to learn + how to set the title in the card header. +- `method` is no longer supported. You can remove it from props. diff --git a/docs/elements/guides/06_going_to_production.mdx b/docs/elements/guides/06_going_to_production.mdx new file mode 100644 index 0000000000..a117f44681 --- /dev/null +++ b/docs/elements/guides/06_going_to_production.mdx @@ -0,0 +1,28 @@ +--- +id: going-to-production +title: Going to Production +sidebar_label: Going to Production +--- + +Ory Elements is designed to be used in production environments. However, there are a few things you should consider when going to +production. + +## Base URL + +Make sure to set the `baseURL` to the correct value. This is the base URL of your Ory Elements instance. + +```ts title="projectConfig.ts" +const projectConfig: OryElementsConfiguration = { + sdk: { + baseURL: "https://$project_slug.projects.oryapis.com/", // Or your custom domain + }, +} +``` + +Setting this value is important because it ensures that the Ory Elements SDK is able to communicate with the correct Ory API +instance. + +In contrast to development environments, Ory Elements and the Ory APIs should be hosted on the same second level domain to make +sure that the cookies set by the Ory APIs are accessible by the Ory Elements SDK. + +Read more about the `baseURL` in the [Configuration](./04_configuration.mdx#base-url) guide. diff --git a/docs/elements/index.mdx b/docs/elements/index.mdx new file mode 100644 index 0000000000..b2b1c67aca --- /dev/null +++ b/docs/elements/index.mdx @@ -0,0 +1,39 @@ +--- +id: index +title: Ory Elements Introduction +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +import WelcomePageSection from "@site/src/components/Welcome/welcome" +import { elements } from "@site/src/pages/_assets/welcome-content" +import { elementsArchitectureGraph } from "@site/src/pages/_assets/ui-graphs" +import Mermaid from "@site/src/theme/Mermaid" + + + +## Overview + +Ory Elements is a component library that allows you to build custom user interfaces for Ory self-service flows. It provides a set +of pre-built components that can be easily integrated into your application, enabling you to create a seamless user experience +while leveraging Ory's powerful authentication and identity management capabilities. + +The following diagram illustrates how Ory Elements fits into the Ory ecosystem and your application architecture: + +```mdx-code-block + + +``` + +It is designed to work with Ory's self-service flows, such as login, registration, settings, verification, and recovery and the +OAuth2 consent flow. It will automatically adjust to the configured identity schema and configuration of your Ory deployment, +ensuring that your UI is always in sync with the backend. Ory Elements provides a consistent and user-friendly experience across +all self-service flows, making it easier for users to interact with your application. + +While it's default experience is a great starting point, Ory Elements allows you to customize the look and feel of your UI to +match your brand and user experience requirements. You can use Ory Elements to build a custom UI that fits your application's +design and user experience, while still leveraging Ory's powerful authentication and identity management capabilities. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryCard.md b/docs/elements/reference/@ory/elements-react/functions/OryCard.md new file mode 100644 index 0000000000..b8e797c7d2 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryCard.md @@ -0,0 +1,22 @@ +# `` + +```ts +function OryCard(props: { children?: ReactNode }): Element +``` + +The root component of the Ory Card. + +This can be used to build fully custom implementations of the Ory Flows. + +However, you most likely want to override the individual components instead. + +## Parameters + +| Parameter | Type | Description | +| ----------------- | ------------------------------- | ------------------------------------------------------------------ | +| `props` | \{ `children?`: `ReactNode`; \} | pass children to render instead of the default Ory Card components | +| `props.children?` | `ReactNode` | - | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/OryCardContent.md b/docs/elements/reference/@ory/elements-react/functions/OryCardContent.md new file mode 100644 index 0000000000..0bf5213359 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryCardContent.md @@ -0,0 +1,23 @@ +# `` + +```ts +function OryCardContent(props: { children?: ReactNode }): Element +``` + +A component that renders the content of the Ory Card. This is the main content of the card, such as the flow's form, with it's +input fields and messages. + +You can use this component to build fully custom implementations of the Ory Flows. + +However, you most likely want to override the individual components instead. + +## Parameters + +| Parameter | Type | Description | +| ----------------- | ------------------------------- | ------------------------------------------------------------------ | +| `props` | \{ `children?`: `ReactNode`; \} | pass children to render instead of the default Ory Card components | +| `props.children?` | `ReactNode` | - | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/OryCardFooter.md b/docs/elements/reference/@ory/elements-react/functions/OryCardFooter.md new file mode 100644 index 0000000000..9c98985d3f --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryCardFooter.md @@ -0,0 +1,11 @@ +# `` + +```ts +function OryCardFooter(): Element +``` + +## Returns + +`Element` + +The footer of a card component. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryCardHeader.md b/docs/elements/reference/@ory/elements-react/functions/OryCardHeader.md new file mode 100644 index 0000000000..374c8811a5 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryCardHeader.md @@ -0,0 +1,13 @@ +# `` + +```ts +function OryCardHeader(): Element +``` + +Returns the header of the Ory Card. + +## Returns + +`Element` + +The header of the Ory Card. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryCardValidationMessages.md b/docs/elements/reference/@ory/elements-react/functions/OryCardValidationMessages.md new file mode 100644 index 0000000000..ede14af139 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryCardValidationMessages.md @@ -0,0 +1,21 @@ +# `` + +```ts +function OryCardValidationMessages(__namedParameters: { hiddenMessageIds?: number[] }): null | Element +``` + +Renders the [OryFlowComponents.Message.Content](../type-aliases/OryFlowComponents.md#message) component for each message in the +current flow. + +See also [useOryFlow](useOryFlow.md) + +## Parameters + +| Parameter | Type | Description | +| ------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `__namedParameters` | \{ `hiddenMessageIds?`: `number`[]; \} | - | +| `__namedParameters.hiddenMessageIds?` | `number`[] | An array of message IDs that should be hidden. This is useful for hiding specific messages that are not relevant to the user or are rendered elsewhere. If not provided, the default list of message IDs to hide will be used. **Default** `[1040009, 1060003, 1080003, 1010004, 1010014, 1040005, 1010016, 1010003]` **See** https://www.ory.com/docs/kratos/concepts/ui-messages | + +## Returns + +`null` \| `Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/OryConfigurationProvider.md b/docs/elements/reference/@ory/elements-react/functions/OryConfigurationProvider.md new file mode 100644 index 0000000000..e8e9320207 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryConfigurationProvider.md @@ -0,0 +1,29 @@ +# `` + +```ts +function OryConfigurationProvider(props: { + children?: ReactNode + project?: Partial + sdk?: { + options?: Partial + url?: string + } +}): Element +``` + +The `OryConfigurationProvider` component provides the Ory Elements configuration to its children. + +## Parameters + +| Parameter | Type | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `project?`: `Partial`\<`AccountExperienceConfiguration`\>; `sdk?`: \{ `options?`: `Partial`\<`ConfigurationParameters`\>; `url?`: `string`; \}; \} | The properties for the OryConfigurationProvider component. | +| `props.children?` | `ReactNode` | - | +| `props.project?` | `Partial`\<`AccountExperienceConfiguration`\> | This configuration is used to customize the behavior and appearance of Ory Elements. | +| `props.sdk?` | \{ `options?`: `Partial`\<`ConfigurationParameters`\>; `url?`: `string`; \} | The Ory SDK configuration to use. If not provided, the SDK URL will be determined automatically based on the environment. Always required for production environments. | +| `props.sdk.options?` | `Partial`\<`ConfigurationParameters`\> | Additional parameters for the Ory SDK configuration. This can include options like headers, credentials, and other settings. | +| `props.sdk.url?` | `string` | The URL the Ory SDK should connect to. This is typically the base URL of your Ory instance. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/OryConsentCard.md b/docs/elements/reference/@ory/elements-react/functions/OryConsentCard.md new file mode 100644 index 0000000000..6f8d06ae46 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryConsentCard.md @@ -0,0 +1,13 @@ +# `` + +```ts +function OryConsentCard(): Element +``` + +The `OryConsentCard` component renders a card for displaying the OAuth2 consent flow. + +## Returns + +`Element` + +The consent card component. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryForm.md b/docs/elements/reference/@ory/elements-react/functions/OryForm.md new file mode 100644 index 0000000000..95b2399c29 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryForm.md @@ -0,0 +1,24 @@ +# `` + +```ts +function OryForm(props: { + children?: ReactNode + onAfterSubmit?: (method: undefined | string | number | boolean) => void +}): Element +``` + +The OryForm component is the main form container for Ory flows. + +It renders the form with the correct action and method, and handles the submission of the form. + +## Parameters + +| Parameter | Type | Description | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `onAfterSubmit?`: (`method`: `undefined` \| `string` \| `number` \| `boolean`) => `void`; \} | The props for the OryForm component. | +| `props.children?` | `ReactNode` | - | +| `props.onAfterSubmit?` | (`method`: `undefined` \| `string` \| `number` \| `boolean`) => `void` | A callback function that is called after the form is submitted. It is always called after the form is submitted, unless the form submission is prevented by client side validation or the API response dictated that the client should be redirected | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/OryFormGroupDivider.md b/docs/elements/reference/@ory/elements-react/functions/OryFormGroupDivider.md new file mode 100644 index 0000000000..7de427ce65 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryFormGroupDivider.md @@ -0,0 +1,16 @@ +# `` + +```ts +function OryFormGroupDivider(): null | Element +``` + +Renders the [OryFlowComponents.Card.Divider](../type-aliases/OryFlowComponents.md#card) between the groups of nodes in the Ory +Form. + +You can use this component to build fully custom implementations of the Ory Flows. + +However, you most likely want to override the individual components instead. + +## Returns + +`null` \| `Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/OryFormSsoButtons.md b/docs/elements/reference/@ory/elements-react/functions/OryFormSsoButtons.md new file mode 100644 index 0000000000..6cfac75996 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryFormSsoButtons.md @@ -0,0 +1,13 @@ +# `` + +```ts +function OryFormSsoButtons(): null | Element +``` + +Renders the flow's OIDC buttons. + +## Returns + +`null` \| `Element` + +a React component that renders the OIDC buttons. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryFormSsoForm.md b/docs/elements/reference/@ory/elements-react/functions/OryFormSsoForm.md new file mode 100644 index 0000000000..61346ec96b --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryFormSsoForm.md @@ -0,0 +1,15 @@ +# `` + +```ts +function OryFormSsoForm(): null | Element +``` + +The `OryFormSsoForm` component renders the Ory Form for SSO methods (OIDC and SAML). + +It needs to be its own form, as the OIDC buttons are form submits but are not related to the main form. + +## Returns + +`null` \| `Element` + +a React component that renders the Ory Form for SSO methods. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryPageHeader.md b/docs/elements/reference/@ory/elements-react/functions/OryPageHeader.md new file mode 100644 index 0000000000..e3b4e4fdc3 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryPageHeader.md @@ -0,0 +1,16 @@ +# `` + +```ts +function OryPageHeader(): Element +``` + +The OryPageHeader component renders the header of the page. + +Customize the header by providing a custom [OryFlowComponents.Page.Header](../type-aliases/OryFlowComponents.md#page) component in +the `components` prop of the [OryProvider](OryProvider.md). + +## Returns + +`Element` + +a React component that renders the page header. diff --git a/docs/elements/reference/@ory/elements-react/functions/OryProvider.md b/docs/elements/reference/@ory/elements-react/functions/OryProvider.md new file mode 100644 index 0000000000..562dac528a --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OryProvider.md @@ -0,0 +1,42 @@ +# `` + +```ts +function OryProvider(props: OryProviderProps): Element +``` + +OryProvider is a React component that provides the necessary context for rendering Ory flows. + +It wraps the application in several context providers, including [OryConfigurationProvider](OryConfigurationProvider.md). + +You can use this component to set up the Ory SDK, provide custom translations, and specify the components to use for rendering Ory +flows. + +## Parameters + +| Parameter | Type | Description | +| --------- | --------------------------------------------------------- | --------------------------------------------- | +| `props` | [`OryProviderProps`](../type-aliases/OryProviderProps.md) | The properties for the OryProvider component. | + +## Returns + +`Element` + +## Example + +```tsx +import { OryProvider, LoginFlow, OryFlowComponents, OryClientConfiguration } from "@ory/elements-react" + +export type Props = { + flow: LoginFlow + components: OryFlowComponents + config: OryClientConfiguration +} + +function App({ flow, config, children, components }: PropsWithChildren) { + return ( + + {children} + + ) +} +``` diff --git a/docs/elements/reference/@ory/elements-react/functions/OrySelfServiceFlowCard.md b/docs/elements/reference/@ory/elements-react/functions/OrySelfServiceFlowCard.md new file mode 100644 index 0000000000..50f289fa28 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OrySelfServiceFlowCard.md @@ -0,0 +1,32 @@ +# `` + +```ts +function OrySelfServiceFlowCard(): Element +``` + +The `OrySelfServiceFlowCard` component is an umbrella component that can render the self-service flows. + +Note: prefer using the [\ component](../theme/functions/Login.md), etc. directly instead of this component. + +It renders different forms based on the current flow state, such as providing an identifier, entering a password or one time code +or selecting a method for authentication. + +The component must be use within an [OryProvider](OryProvider.md) that provides the flow context and components to use. + +## Returns + +`Element` + +The Ory Two-Step Card component that renders different forms based on the current flow state. + +## Example + +```jsx +import { OrySelfServiceFlowCard } from "@ory/elements-react"; + +function MyComponent() { + return + + ; +} +``` diff --git a/docs/elements/reference/@ory/elements-react/functions/OrySettingsCard.md b/docs/elements/reference/@ory/elements-react/functions/OrySettingsCard.md new file mode 100644 index 0000000000..2c6d09aba1 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OrySettingsCard.md @@ -0,0 +1,16 @@ +# `` + +```ts +function OrySettingsCard(): Element +``` + +Renders the Ory Settings Card component. + +This component is used to display the settings flow for the user. It utilizes the `useOryFlow` hook to access the current flow and +renders the nodes with components provided by the Ory Elements context. + +## Returns + +`Element` + +The Ory Settings Card component that renders the settings flow. diff --git a/docs/elements/reference/@ory/elements-react/functions/OrySettingsFormSection.md b/docs/elements/reference/@ory/elements-react/functions/OrySettingsFormSection.md new file mode 100644 index 0000000000..914d10bdf8 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/OrySettingsFormSection.md @@ -0,0 +1,595 @@ +# `` + +```ts +function OrySettingsFormSection(props: { + about?: string; + acceptCharset?: string; + accessKey?: string; + aria-activedescendant?: string; + aria-atomic?: Booleanish; + aria-autocomplete?: "inline" | "list" | "none" | "both"; + aria-braillelabel?: string; + aria-brailleroledescription?: string; + aria-busy?: Booleanish; + aria-checked?: boolean | "true" | "false" | "mixed"; + aria-colcount?: number; + aria-colindex?: number; + aria-colindextext?: string; + aria-colspan?: number; + aria-controls?: string; + aria-current?: boolean | "true" | "false" | "time" | "date" | "page" | "step" | "location"; + aria-describedby?: string; + aria-description?: string; + aria-details?: string; + aria-disabled?: Booleanish; + aria-dropeffect?: "copy" | "link" | "none" | "execute" | "move" | "popup"; + aria-errormessage?: string; + aria-expanded?: Booleanish; + aria-flowto?: string; + aria-grabbed?: Booleanish; + aria-haspopup?: | boolean + | "true" + | "false" + | "dialog" + | "grid" + | "listbox" + | "menu" + | "tree"; + aria-hidden?: Booleanish; + aria-invalid?: boolean | "true" | "false" | "grammar" | "spelling"; + aria-keyshortcuts?: string; + aria-label?: string; + aria-labelledby?: string; + aria-level?: number; + aria-live?: "off" | "assertive" | "polite"; + aria-modal?: Booleanish; + aria-multiline?: Booleanish; + aria-multiselectable?: Booleanish; + aria-orientation?: "horizontal" | "vertical"; + aria-owns?: string; + aria-placeholder?: string; + aria-posinset?: number; + aria-pressed?: boolean | "true" | "false" | "mixed"; + aria-readonly?: Booleanish; + aria-relevant?: | "text" + | "all" + | "additions" + | "additions removals" + | "additions text" + | "removals" + | "removals additions" + | "removals text" + | "text additions" + | "text removals"; + aria-required?: Booleanish; + aria-roledescription?: string; + aria-rowcount?: number; + aria-rowindex?: number; + aria-rowindextext?: string; + aria-rowspan?: number; + aria-selected?: Booleanish; + aria-setsize?: number; + aria-sort?: "none" | "other" | "ascending" | "descending"; + aria-valuemax?: number; + aria-valuemin?: number; + aria-valuenow?: number; + aria-valuetext?: string; + autoCapitalize?: | string & { + } + | "none" + | "off" + | "on" + | "sentences" + | "words" + | "characters"; + autoComplete?: string; + autoCorrect?: string; + autoFocus?: boolean; + autoSave?: string; + children?: ReactNode; + className?: string; + color?: string; + content?: string; + contentEditable?: Booleanish | "inherit" | "plaintext-only"; + contextMenu?: string; + dangerouslySetInnerHTML?: { + __html: string | TrustedHTML; + }; + datatype?: string; + defaultChecked?: boolean; + defaultValue?: string | number | readonly string[]; + dir?: string; + draggable?: Booleanish; + encType?: string; + enterKeyHint?: "search" | "previous" | "enter" | "done" | "go" | "next" | "send"; + exportparts?: string; + hidden?: boolean; + id?: string; + inlist?: any; + inputMode?: | "text" + | "search" + | "none" + | "email" + | "tel" + | "url" + | "numeric" + | "decimal"; + is?: string; + itemID?: string; + itemProp?: string; + itemRef?: string; + itemScope?: boolean; + itemType?: string; + key?: null | Key; + lang?: string; + name?: string; + nodes?: UiNode[]; + nonce?: string; + noValidate?: boolean; + onAbort?: ReactEventHandler; + onAbortCapture?: ReactEventHandler; + onAnimationEnd?: AnimationEventHandler; + onAnimationEndCapture?: AnimationEventHandler; + onAnimationIteration?: AnimationEventHandler; + onAnimationIterationCapture?: AnimationEventHandler; + onAnimationStart?: AnimationEventHandler; + onAnimationStartCapture?: AnimationEventHandler; + onAuxClick?: MouseEventHandler; + onAuxClickCapture?: MouseEventHandler; + onBeforeInput?: FormEventHandler; + onBeforeInputCapture?: FormEventHandler; + onBlur?: FocusEventHandler; + onBlurCapture?: FocusEventHandler; + onCanPlay?: ReactEventHandler; + onCanPlayCapture?: ReactEventHandler; + onCanPlayThrough?: ReactEventHandler; + onCanPlayThroughCapture?: ReactEventHandler; + onChange?: FormEventHandler; + onChangeCapture?: FormEventHandler; + onClick?: MouseEventHandler; + onClickCapture?: MouseEventHandler; + onCompositionEnd?: CompositionEventHandler; + onCompositionEndCapture?: CompositionEventHandler; + onCompositionStart?: CompositionEventHandler; + onCompositionStartCapture?: CompositionEventHandler; + onCompositionUpdate?: CompositionEventHandler; + onCompositionUpdateCapture?: CompositionEventHandler; + onContextMenu?: MouseEventHandler; + onContextMenuCapture?: MouseEventHandler; + onCopy?: ClipboardEventHandler; + onCopyCapture?: ClipboardEventHandler; + onCut?: ClipboardEventHandler; + onCutCapture?: ClipboardEventHandler; + onDoubleClick?: MouseEventHandler; + onDoubleClickCapture?: MouseEventHandler; + onDrag?: DragEventHandler; + onDragCapture?: DragEventHandler; + onDragEnd?: DragEventHandler; + onDragEndCapture?: DragEventHandler; + onDragEnter?: DragEventHandler; + onDragEnterCapture?: DragEventHandler; + onDragExit?: DragEventHandler; + onDragExitCapture?: DragEventHandler; + onDragLeave?: DragEventHandler; + onDragLeaveCapture?: DragEventHandler; + onDragOver?: DragEventHandler; + onDragOverCapture?: DragEventHandler; + onDragStart?: DragEventHandler; + onDragStartCapture?: DragEventHandler; + onDrop?: DragEventHandler; + onDropCapture?: DragEventHandler; + onDurationChange?: ReactEventHandler; + onDurationChangeCapture?: ReactEventHandler; + onEmptied?: ReactEventHandler; + onEmptiedCapture?: ReactEventHandler; + onEncrypted?: ReactEventHandler; + onEncryptedCapture?: ReactEventHandler; + onEnded?: ReactEventHandler; + onEndedCapture?: ReactEventHandler; + onError?: ReactEventHandler; + onErrorCapture?: ReactEventHandler; + onFocus?: FocusEventHandler; + onFocusCapture?: FocusEventHandler; + onGotPointerCapture?: PointerEventHandler; + onGotPointerCaptureCapture?: PointerEventHandler; + onInput?: FormEventHandler; + onInputCapture?: FormEventHandler; + onInvalid?: FormEventHandler; + onInvalidCapture?: FormEventHandler; + onKeyDown?: KeyboardEventHandler; + onKeyDownCapture?: KeyboardEventHandler; + onKeyPress?: KeyboardEventHandler; + onKeyPressCapture?: KeyboardEventHandler; + onKeyUp?: KeyboardEventHandler; + onKeyUpCapture?: KeyboardEventHandler; + onLoad?: ReactEventHandler; + onLoadCapture?: ReactEventHandler; + onLoadedData?: ReactEventHandler; + onLoadedDataCapture?: ReactEventHandler; + onLoadedMetadata?: ReactEventHandler; + onLoadedMetadataCapture?: ReactEventHandler; + onLoadStart?: ReactEventHandler; + onLoadStartCapture?: ReactEventHandler; + onLostPointerCapture?: PointerEventHandler; + onLostPointerCaptureCapture?: PointerEventHandler; + onMouseDown?: MouseEventHandler; + onMouseDownCapture?: MouseEventHandler; + onMouseEnter?: MouseEventHandler; + onMouseLeave?: MouseEventHandler; + onMouseMove?: MouseEventHandler; + onMouseMoveCapture?: MouseEventHandler; + onMouseOut?: MouseEventHandler; + onMouseOutCapture?: MouseEventHandler; + onMouseOver?: MouseEventHandler; + onMouseOverCapture?: MouseEventHandler; + onMouseUp?: MouseEventHandler; + onMouseUpCapture?: MouseEventHandler; + onPaste?: ClipboardEventHandler; + onPasteCapture?: ClipboardEventHandler; + onPause?: ReactEventHandler; + onPauseCapture?: ReactEventHandler; + onPlay?: ReactEventHandler; + onPlayCapture?: ReactEventHandler; + onPlaying?: ReactEventHandler; + onPlayingCapture?: ReactEventHandler; + onPointerCancel?: PointerEventHandler; + onPointerCancelCapture?: PointerEventHandler; + onPointerDown?: PointerEventHandler; + onPointerDownCapture?: PointerEventHandler; + onPointerEnter?: PointerEventHandler; + onPointerLeave?: PointerEventHandler; + onPointerMove?: PointerEventHandler; + onPointerMoveCapture?: PointerEventHandler; + onPointerOut?: PointerEventHandler; + onPointerOutCapture?: PointerEventHandler; + onPointerOver?: PointerEventHandler; + onPointerOverCapture?: PointerEventHandler; + onPointerUp?: PointerEventHandler; + onPointerUpCapture?: PointerEventHandler; + onProgress?: ReactEventHandler; + onProgressCapture?: ReactEventHandler; + onRateChange?: ReactEventHandler; + onRateChangeCapture?: ReactEventHandler; + onReset?: FormEventHandler; + onResetCapture?: FormEventHandler; + onScroll?: UIEventHandler; + onScrollCapture?: UIEventHandler; + onSeeked?: ReactEventHandler; + onSeekedCapture?: ReactEventHandler; + onSeeking?: ReactEventHandler; + onSeekingCapture?: ReactEventHandler; + onSelect?: ReactEventHandler; + onSelectCapture?: ReactEventHandler; + onStalled?: ReactEventHandler; + onStalledCapture?: ReactEventHandler; + onSubmitCapture?: FormEventHandler; + onSuspend?: ReactEventHandler; + onSuspendCapture?: ReactEventHandler; + onTimeUpdate?: ReactEventHandler; + onTimeUpdateCapture?: ReactEventHandler; + onTouchCancel?: TouchEventHandler; + onTouchCancelCapture?: TouchEventHandler; + onTouchEnd?: TouchEventHandler; + onTouchEndCapture?: TouchEventHandler; + onTouchMove?: TouchEventHandler; + onTouchMoveCapture?: TouchEventHandler; + onTouchStart?: TouchEventHandler; + onTouchStartCapture?: TouchEventHandler; + onTransitionEnd?: TransitionEventHandler; + onTransitionEndCapture?: TransitionEventHandler; + onVolumeChange?: ReactEventHandler; + onVolumeChangeCapture?: ReactEventHandler; + onWaiting?: ReactEventHandler; + onWaitingCapture?: ReactEventHandler; + onWheel?: WheelEventHandler; + onWheelCapture?: WheelEventHandler; + part?: string; + prefix?: string; + property?: string; + radioGroup?: string; + rel?: string; + resource?: string; + results?: number; + rev?: string; + role?: AriaRole; + security?: string; + slot?: string; + spellCheck?: Booleanish; + style?: CSSProperties; + suppressContentEditableWarning?: boolean; + suppressHydrationWarning?: boolean; + tabIndex?: number; + target?: string; + title?: string; + translate?: "no" | "yes"; + typeof?: string; + unselectable?: "off" | "on"; + vocab?: string; +}): Element; +``` + +OrySettingsFormSection is a component that provides a form section for Ory settings. + +Can be used independently to render a form section with Ory nodes. + +## Parameters + +| Parameter | Type | Description | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `about?`: `string`; `acceptCharset?`: `string`; `accessKey?`: `string`; `aria-activedescendant?`: `string`; `aria-atomic?`: `Booleanish`; `aria-autocomplete?`: `"inline"` \| `"list"` \| `"none"` \| `"both"`; `aria-braillelabel?`: `string`; `aria-brailleroledescription?`: `string`; `aria-busy?`: `Booleanish`; `aria-checked?`: `boolean` \| `"true"` \| `"false"` \| `"mixed"`; `aria-colcount?`: `number`; `aria-colindex?`: `number`; `aria-colindextext?`: `string`; `aria-colspan?`: `number`; `aria-controls?`: `string`; `aria-current?`: `boolean` \| `"true"` \| `"false"` \| `"time"` \| `"date"` \| `"page"` \| `"step"` \| `"location"`; `aria-describedby?`: `string`; `aria-description?`: `string`; `aria-details?`: `string`; `aria-disabled?`: `Booleanish`; `aria-dropeffect?`: `"copy"` \| `"link"` \| `"none"` \| `"execute"` \| `"move"` \| `"popup"`; `aria-errormessage?`: `string`; `aria-expanded?`: `Booleanish`; `aria-flowto?`: `string`; `aria-grabbed?`: `Booleanish`; `aria-haspopup?`: \| `boolean` \| `"true"` \| `"false"` \| `"dialog"` \| `"grid"` \| `"listbox"` \| `"menu"` \| `"tree"`; `aria-hidden?`: `Booleanish`; `aria-invalid?`: `boolean` \| `"true"` \| `"false"` \| `"grammar"` \| `"spelling"`; `aria-keyshortcuts?`: `string`; `aria-label?`: `string`; `aria-labelledby?`: `string`; `aria-level?`: `number`; `aria-live?`: `"off"` \| `"assertive"` \| `"polite"`; `aria-modal?`: `Booleanish`; `aria-multiline?`: `Booleanish`; `aria-multiselectable?`: `Booleanish`; `aria-orientation?`: `"horizontal"` \| `"vertical"`; `aria-owns?`: `string`; `aria-placeholder?`: `string`; `aria-posinset?`: `number`; `aria-pressed?`: `boolean` \| `"true"` \| `"false"` \| `"mixed"`; `aria-readonly?`: `Booleanish`; `aria-relevant?`: \| `"text"` \| `"all"` \| `"additions"` \| `"additions removals"` \| `"additions text"` \| `"removals"` \| `"removals additions"` \| `"removals text"` \| `"text additions"` \| `"text removals"`; `aria-required?`: `Booleanish`; `aria-roledescription?`: `string`; `aria-rowcount?`: `number`; `aria-rowindex?`: `number`; `aria-rowindextext?`: `string`; `aria-rowspan?`: `number`; `aria-selected?`: `Booleanish`; `aria-setsize?`: `number`; `aria-sort?`: `"none"` \| `"other"` \| `"ascending"` \| `"descending"`; `aria-valuemax?`: `number`; `aria-valuemin?`: `number`; `aria-valuenow?`: `number`; `aria-valuetext?`: `string`; `autoCapitalize?`: \| `string` & \{ \} \| `"none"` \| `"off"` \| `"on"` \| `"sentences"` \| `"words"` \| `"characters"`; `autoComplete?`: `string`; `autoCorrect?`: `string`; `autoFocus?`: `boolean`; `autoSave?`: `string`; `children?`: `ReactNode`; `className?`: `string`; `color?`: `string`; `content?`: `string`; `contentEditable?`: `Booleanish` \| `"inherit"` \| `"plaintext-only"`; `contextMenu?`: `string`; `dangerouslySetInnerHTML?`: \{ `__html`: `string` \| `TrustedHTML`; \}; `datatype?`: `string`; `defaultChecked?`: `boolean`; `defaultValue?`: `string` \| `number` \| readonly `string`[]; `dir?`: `string`; `draggable?`: `Booleanish`; `encType?`: `string`; `enterKeyHint?`: `"search"` \| `"previous"` \| `"enter"` \| `"done"` \| `"go"` \| `"next"` \| `"send"`; `exportparts?`: `string`; `hidden?`: `boolean`; `id?`: `string`; `inlist?`: `any`; `inputMode?`: \| `"text"` \| `"search"` \| `"none"` \| `"email"` \| `"tel"` \| `"url"` \| `"numeric"` \| `"decimal"`; `is?`: `string`; `itemID?`: `string`; `itemProp?`: `string`; `itemRef?`: `string`; `itemScope?`: `boolean`; `itemType?`: `string`; `key?`: `null` \| `Key`; `lang?`: `string`; `name?`: `string`; `nodes?`: `UiNode`[]; `nonce?`: `string`; `noValidate?`: `boolean`; `onAbort?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onAbortCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onAnimationEnd?`: `AnimationEventHandler`\<`HTMLFormElement`\>; `onAnimationEndCapture?`: `AnimationEventHandler`\<`HTMLFormElement`\>; `onAnimationIteration?`: `AnimationEventHandler`\<`HTMLFormElement`\>; `onAnimationIterationCapture?`: `AnimationEventHandler`\<`HTMLFormElement`\>; `onAnimationStart?`: `AnimationEventHandler`\<`HTMLFormElement`\>; `onAnimationStartCapture?`: `AnimationEventHandler`\<`HTMLFormElement`\>; `onAuxClick?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onAuxClickCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onBeforeInput?`: `FormEventHandler`\<`HTMLFormElement`\>; `onBeforeInputCapture?`: `FormEventHandler`\<`HTMLFormElement`\>; `onBlur?`: `FocusEventHandler`\<`HTMLFormElement`\>; `onBlurCapture?`: `FocusEventHandler`\<`HTMLFormElement`\>; `onCanPlay?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onCanPlayCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onCanPlayThrough?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onCanPlayThroughCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onChange?`: `FormEventHandler`\<`HTMLFormElement`\>; `onChangeCapture?`: `FormEventHandler`\<`HTMLFormElement`\>; `onClick?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onClickCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onCompositionEnd?`: `CompositionEventHandler`\<`HTMLFormElement`\>; `onCompositionEndCapture?`: `CompositionEventHandler`\<`HTMLFormElement`\>; `onCompositionStart?`: `CompositionEventHandler`\<`HTMLFormElement`\>; `onCompositionStartCapture?`: `CompositionEventHandler`\<`HTMLFormElement`\>; `onCompositionUpdate?`: `CompositionEventHandler`\<`HTMLFormElement`\>; `onCompositionUpdateCapture?`: `CompositionEventHandler`\<`HTMLFormElement`\>; `onContextMenu?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onContextMenuCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onCopy?`: `ClipboardEventHandler`\<`HTMLFormElement`\>; `onCopyCapture?`: `ClipboardEventHandler`\<`HTMLFormElement`\>; `onCut?`: `ClipboardEventHandler`\<`HTMLFormElement`\>; `onCutCapture?`: `ClipboardEventHandler`\<`HTMLFormElement`\>; `onDoubleClick?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onDoubleClickCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onDrag?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragEnd?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragEndCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragEnter?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragEnterCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragExit?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragExitCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragLeave?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragLeaveCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragOver?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragOverCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragStart?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDragStartCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDrop?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDropCapture?`: `DragEventHandler`\<`HTMLFormElement`\>; `onDurationChange?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onDurationChangeCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onEmptied?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onEmptiedCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onEncrypted?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onEncryptedCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onEnded?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onEndedCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onError?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onErrorCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onFocus?`: `FocusEventHandler`\<`HTMLFormElement`\>; `onFocusCapture?`: `FocusEventHandler`\<`HTMLFormElement`\>; `onGotPointerCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onGotPointerCaptureCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onInput?`: `FormEventHandler`\<`HTMLFormElement`\>; `onInputCapture?`: `FormEventHandler`\<`HTMLFormElement`\>; `onInvalid?`: `FormEventHandler`\<`HTMLFormElement`\>; `onInvalidCapture?`: `FormEventHandler`\<`HTMLFormElement`\>; `onKeyDown?`: `KeyboardEventHandler`\<`HTMLFormElement`\>; `onKeyDownCapture?`: `KeyboardEventHandler`\<`HTMLFormElement`\>; `onKeyPress?`: `KeyboardEventHandler`\<`HTMLFormElement`\>; `onKeyPressCapture?`: `KeyboardEventHandler`\<`HTMLFormElement`\>; `onKeyUp?`: `KeyboardEventHandler`\<`HTMLFormElement`\>; `onKeyUpCapture?`: `KeyboardEventHandler`\<`HTMLFormElement`\>; `onLoad?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadedData?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadedDataCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadedMetadata?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadedMetadataCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadStart?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLoadStartCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onLostPointerCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onLostPointerCaptureCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onMouseDown?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseDownCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseEnter?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseLeave?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseMove?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseMoveCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseOut?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseOutCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseOver?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseOverCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseUp?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onMouseUpCapture?`: `MouseEventHandler`\<`HTMLFormElement`\>; `onPaste?`: `ClipboardEventHandler`\<`HTMLFormElement`\>; `onPasteCapture?`: `ClipboardEventHandler`\<`HTMLFormElement`\>; `onPause?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onPauseCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onPlay?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onPlayCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onPlaying?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onPlayingCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onPointerCancel?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerCancelCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerDown?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerDownCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerEnter?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerLeave?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerMove?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerMoveCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerOut?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerOutCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerOver?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerOverCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerUp?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onPointerUpCapture?`: `PointerEventHandler`\<`HTMLFormElement`\>; `onProgress?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onProgressCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onRateChange?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onRateChangeCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onReset?`: `FormEventHandler`\<`HTMLFormElement`\>; `onResetCapture?`: `FormEventHandler`\<`HTMLFormElement`\>; `onScroll?`: `UIEventHandler`\<`HTMLFormElement`\>; `onScrollCapture?`: `UIEventHandler`\<`HTMLFormElement`\>; `onSeeked?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSeekedCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSeeking?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSeekingCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSelect?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSelectCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onStalled?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onStalledCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSubmitCapture?`: `FormEventHandler`\<`HTMLFormElement`\>; `onSuspend?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onSuspendCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onTimeUpdate?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onTimeUpdateCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onTouchCancel?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchCancelCapture?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchEnd?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchEndCapture?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchMove?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchMoveCapture?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchStart?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTouchStartCapture?`: `TouchEventHandler`\<`HTMLFormElement`\>; `onTransitionEnd?`: `TransitionEventHandler`\<`HTMLFormElement`\>; `onTransitionEndCapture?`: `TransitionEventHandler`\<`HTMLFormElement`\>; `onVolumeChange?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onVolumeChangeCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onWaiting?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onWaitingCapture?`: `ReactEventHandler`\<`HTMLFormElement`\>; `onWheel?`: `WheelEventHandler`\<`HTMLFormElement`\>; `onWheelCapture?`: `WheelEventHandler`\<`HTMLFormElement`\>; `part?`: `string`; `prefix?`: `string`; `property?`: `string`; `radioGroup?`: `string`; `rel?`: `string`; `resource?`: `string`; `results?`: `number`; `rev?`: `string`; `role?`: `AriaRole`; `security?`: `string`; `slot?`: `string`; `spellCheck?`: `Booleanish`; `style?`: `CSSProperties`; `suppressContentEditableWarning?`: `boolean`; `suppressHydrationWarning?`: `boolean`; `tabIndex?`: `number`; `target?`: `string`; `title?`: `string`; `translate?`: `"no"` \| `"yes"`; `typeof?`: `string`; `unselectable?`: `"off"` \| `"on"`; `vocab?`: `string`; \} | The properties for the OrySettingsFormSection component. | +| `props.about?` | `string` | - | +| `props.acceptCharset?` | `string` | - | +| `props.accessKey?` | `string` | - | +| `props.aria-activedescendant?` | `string` | Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. | +| `props.aria-atomic?` | `Booleanish` | Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. | +| `props.aria-autocomplete?` | `"inline"` \| `"list"` \| `"none"` \| `"both"` | Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made. | +| `props.aria-braillelabel?` | `string` | Defines a string value that labels the current element, which is intended to be converted into Braille. **See** aria-label. | +| `props.aria-brailleroledescription?` | `string` | Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. **See** aria-roledescription. | +| `props.aria-busy?` | `Booleanish` | - | +| `props.aria-checked?` | `boolean` \| `"true"` \| `"false"` \| `"mixed"` | Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. **See** - aria-pressed - aria-selected. | +| `props.aria-colcount?` | `number` | Defines the total number of columns in a table, grid, or treegrid. **See** aria-colindex. | +| `props.aria-colindex?` | `number` | Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. **See** - aria-colcount - aria-colspan. | +| `props.aria-colindextext?` | `string` | Defines a human readable text alternative of aria-colindex. **See** aria-rowindextext. | +| `props.aria-colspan?` | `number` | Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. **See** - aria-colindex - aria-rowspan. | +| `props.aria-controls?` | `string` | Identifies the element (or elements) whose contents or presence are controlled by the current element. **See** aria-owns. | +| `props.aria-current?` | `boolean` \| `"true"` \| `"false"` \| `"time"` \| `"date"` \| `"page"` \| `"step"` \| `"location"` | Indicates the element that represents the current item within a container or set of related elements. | +| `props.aria-describedby?` | `string` | Identifies the element (or elements) that describes the object. **See** aria-labelledby | +| `props.aria-description?` | `string` | Defines a string value that describes or annotates the current element. **See** related aria-describedby. | +| `props.aria-details?` | `string` | Identifies the element that provides a detailed, extended description for the object. **See** aria-describedby. | +| `props.aria-disabled?` | `Booleanish` | Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. **See** - aria-hidden - aria-readonly. | +| `props.aria-dropeffect?` | `"copy"` \| `"link"` \| `"none"` \| `"execute"` \| `"move"` \| `"popup"` | Indicates what functions can be performed when a dragged object is released on the drop target. **Deprecated** in ARIA 1.1 | +| `props.aria-errormessage?` | `string` | Identifies the element that provides an error message for the object. **See** - aria-invalid - aria-describedby. | +| `props.aria-expanded?` | `Booleanish` | Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. | +| `props.aria-flowto?` | `string` | Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order. | +| `props.aria-grabbed?` | `Booleanish` | Indicates an element's "grabbed" state in a drag-and-drop operation. **Deprecated** in ARIA 1.1 | +| `props.aria-haspopup?` | \| `boolean` \| `"true"` \| `"false"` \| `"dialog"` \| `"grid"` \| `"listbox"` \| `"menu"` \| `"tree"` | Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. | +| `props.aria-hidden?` | `Booleanish` | Indicates whether the element is exposed to an accessibility API. **See** aria-disabled. | +| `props.aria-invalid?` | `boolean` \| `"true"` \| `"false"` \| `"grammar"` \| `"spelling"` | Indicates the entered value does not conform to the format expected by the application. **See** aria-errormessage. | +| `props.aria-keyshortcuts?` | `string` | Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. | +| `props.aria-label?` | `string` | Defines a string value that labels the current element. **See** aria-labelledby. | +| `props.aria-labelledby?` | `string` | Identifies the element (or elements) that labels the current element. **See** aria-describedby. | +| `props.aria-level?` | `number` | Defines the hierarchical level of an element within a structure. | +| `props.aria-live?` | `"off"` \| `"assertive"` \| `"polite"` | Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. | +| `props.aria-modal?` | `Booleanish` | Indicates whether an element is modal when displayed. | +| `props.aria-multiline?` | `Booleanish` | Indicates whether a text box accepts multiple lines of input or only a single line. | +| `props.aria-multiselectable?` | `Booleanish` | Indicates that the user may select more than one item from the current selectable descendants. | +| `props.aria-orientation?` | `"horizontal"` \| `"vertical"` | Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. | +| `props.aria-owns?` | `string` | Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. **See** aria-controls. | +| `props.aria-placeholder?` | `string` | Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format. | +| `props.aria-posinset?` | `number` | Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. **See** aria-setsize. | +| `props.aria-pressed?` | `boolean` \| `"true"` \| `"false"` \| `"mixed"` | Indicates the current "pressed" state of toggle buttons. **See** - aria-checked - aria-selected. | +| `props.aria-readonly?` | `Booleanish` | Indicates that the element is not editable, but is otherwise operable. **See** aria-disabled. | +| `props.aria-relevant?` | \| `"text"` \| `"all"` \| `"additions"` \| `"additions removals"` \| `"additions text"` \| `"removals"` \| `"removals additions"` \| `"removals text"` \| `"text additions"` \| `"text removals"` | Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. **See** aria-atomic. | +| `props.aria-required?` | `Booleanish` | Indicates that user input is required on the element before a form may be submitted. | +| `props.aria-roledescription?` | `string` | Defines a human-readable, author-localized description for the role of an element. | +| `props.aria-rowcount?` | `number` | Defines the total number of rows in a table, grid, or treegrid. **See** aria-rowindex. | +| `props.aria-rowindex?` | `number` | Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. **See** - aria-rowcount - aria-rowspan. | +| `props.aria-rowindextext?` | `string` | Defines a human readable text alternative of aria-rowindex. **See** aria-colindextext. | +| `props.aria-rowspan?` | `number` | Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. **See** - aria-rowindex - aria-colspan. | +| `props.aria-selected?` | `Booleanish` | Indicates the current "selected" state of various widgets. **See** - aria-checked - aria-pressed. | +| `props.aria-setsize?` | `number` | Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. **See** aria-posinset. | +| `props.aria-sort?` | `"none"` \| `"other"` \| `"ascending"` \| `"descending"` | Indicates if items in a table or grid are sorted in ascending or descending order. | +| `props.aria-valuemax?` | `number` | Defines the maximum allowed value for a range widget. | +| `props.aria-valuemin?` | `number` | Defines the minimum allowed value for a range widget. | +| `props.aria-valuenow?` | `number` | Defines the current value for a range widget. **See** aria-valuetext. | +| `props.aria-valuetext?` | `string` | Defines the human readable text alternative of aria-valuenow for a range widget. | +| `props.autoCapitalize?` | \| `string` & \{ \} \| `"none"` \| `"off"` \| `"on"` \| `"sentences"` \| `"words"` \| `"characters"` | - | +| `props.autoComplete?` | `string` | - | +| `props.autoCorrect?` | `string` | - | +| `props.autoFocus?` | `boolean` | - | +| `props.autoSave?` | `string` | - | +| `props.children?` | `ReactNode` | - | +| `props.className?` | `string` | - | +| `props.color?` | `string` | - | +| `props.content?` | `string` | - | +| `props.contentEditable?` | `Booleanish` \| `"inherit"` \| `"plaintext-only"` | - | +| `props.contextMenu?` | `string` | - | +| `props.dangerouslySetInnerHTML?` | \{ `__html`: `string` \| `TrustedHTML`; \} | - | +| `props.dangerouslySetInnerHTML.__html` | `string` \| `TrustedHTML` | - | +| `props.datatype?` | `string` | - | +| `props.defaultChecked?` | `boolean` | - | +| `props.defaultValue?` | `string` \| `number` \| readonly `string`[] | - | +| `props.dir?` | `string` | - | +| `props.draggable?` | `Booleanish` | - | +| `props.encType?` | `string` | - | +| `props.enterKeyHint?` | `"search"` \| `"previous"` \| `"enter"` \| `"done"` \| `"go"` \| `"next"` \| `"send"` | - | +| `props.exportparts?` | `string` | **See** [https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/exportparts](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/exportparts) | +| `props.hidden?` | `boolean` | - | +| `props.id?` | `string` | - | +| `props.inlist?` | `any` | - | +| `props.inputMode?` | \| `"text"` \| `"search"` \| `"none"` \| `"email"` \| `"tel"` \| `"url"` \| `"numeric"` \| `"decimal"` | Hints at the type of data that might be entered by the user while editing the element or its contents **See** [https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute](https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute) | +| `props.is?` | `string` | Specify that a standard HTML element should behave like a defined custom built-in element **See** [https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is](https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is) | +| `props.itemID?` | `string` | - | +| `props.itemProp?` | `string` | - | +| `props.itemRef?` | `string` | - | +| `props.itemScope?` | `boolean` | - | +| `props.itemType?` | `string` | - | +| `props.key?` | `null` \| `Key` | - | +| `props.lang?` | `string` | - | +| `props.name?` | `string` | - | +| `props.nodes?` | `UiNode`[] | - | +| `props.nonce?` | `string` | - | +| `props.noValidate?` | `boolean` | - | +| `props.onAbort?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAbortCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAnimationEnd?` | `AnimationEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAnimationEndCapture?` | `AnimationEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAnimationIteration?` | `AnimationEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAnimationIterationCapture?` | `AnimationEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAnimationStart?` | `AnimationEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAnimationStartCapture?` | `AnimationEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAuxClick?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onAuxClickCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onBeforeInput?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onBeforeInputCapture?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onBlur?` | `FocusEventHandler`\<`HTMLFormElement`\> | - | +| `props.onBlurCapture?` | `FocusEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCanPlay?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCanPlayCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCanPlayThrough?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCanPlayThroughCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onChange?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onChangeCapture?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onClick?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onClickCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCompositionEnd?` | `CompositionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCompositionEndCapture?` | `CompositionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCompositionStart?` | `CompositionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCompositionStartCapture?` | `CompositionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCompositionUpdate?` | `CompositionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCompositionUpdateCapture?` | `CompositionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onContextMenu?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onContextMenuCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCopy?` | `ClipboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCopyCapture?` | `ClipboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCut?` | `ClipboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onCutCapture?` | `ClipboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDoubleClick?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDoubleClickCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDrag?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragEnd?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragEndCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragEnter?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragEnterCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragExit?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragExitCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragLeave?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragLeaveCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragOver?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragOverCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragStart?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDragStartCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDrop?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDropCapture?` | `DragEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDurationChange?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onDurationChangeCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onEmptied?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onEmptiedCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onEncrypted?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onEncryptedCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onEnded?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onEndedCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onError?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onErrorCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onFocus?` | `FocusEventHandler`\<`HTMLFormElement`\> | - | +| `props.onFocusCapture?` | `FocusEventHandler`\<`HTMLFormElement`\> | - | +| `props.onGotPointerCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onGotPointerCaptureCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onInput?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onInputCapture?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onInvalid?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onInvalidCapture?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onKeyDown?` | `KeyboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onKeyDownCapture?` | `KeyboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onKeyPress?` | `KeyboardEventHandler`\<`HTMLFormElement`\> | **Deprecated** Use `onKeyUp` or `onKeyDown` instead | +| `props.onKeyPressCapture?` | `KeyboardEventHandler`\<`HTMLFormElement`\> | **Deprecated** Use `onKeyUpCapture` or `onKeyDownCapture` instead | +| `props.onKeyUp?` | `KeyboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onKeyUpCapture?` | `KeyboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoad?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadedData?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadedDataCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadedMetadata?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadedMetadataCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadStart?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLoadStartCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLostPointerCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onLostPointerCaptureCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseDown?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseDownCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseEnter?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseLeave?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseMove?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseMoveCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseOut?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseOutCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseOver?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseOverCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseUp?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onMouseUpCapture?` | `MouseEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPaste?` | `ClipboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPasteCapture?` | `ClipboardEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPause?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPauseCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPlay?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPlayCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPlaying?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPlayingCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerCancel?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerCancelCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerDown?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerDownCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerEnter?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerLeave?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerMove?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerMoveCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerOut?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerOutCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerOver?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerOverCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerUp?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onPointerUpCapture?` | `PointerEventHandler`\<`HTMLFormElement`\> | - | +| `props.onProgress?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onProgressCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onRateChange?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onRateChangeCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onReset?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onResetCapture?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onScroll?` | `UIEventHandler`\<`HTMLFormElement`\> | - | +| `props.onScrollCapture?` | `UIEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSeeked?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSeekedCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSeeking?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSeekingCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSelect?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSelectCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onStalled?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onStalledCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSubmitCapture?` | `FormEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSuspend?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onSuspendCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTimeUpdate?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTimeUpdateCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchCancel?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchCancelCapture?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchEnd?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchEndCapture?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchMove?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchMoveCapture?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchStart?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTouchStartCapture?` | `TouchEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTransitionEnd?` | `TransitionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onTransitionEndCapture?` | `TransitionEventHandler`\<`HTMLFormElement`\> | - | +| `props.onVolumeChange?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onVolumeChangeCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onWaiting?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onWaitingCapture?` | `ReactEventHandler`\<`HTMLFormElement`\> | - | +| `props.onWheel?` | `WheelEventHandler`\<`HTMLFormElement`\> | - | +| `props.onWheelCapture?` | `WheelEventHandler`\<`HTMLFormElement`\> | - | +| `props.part?` | `string` | **See** [https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/part](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/part) | +| `props.prefix?` | `string` | - | +| `props.property?` | `string` | - | +| `props.radioGroup?` | `string` | - | +| `props.rel?` | `string` | - | +| `props.resource?` | `string` | - | +| `props.results?` | `number` | - | +| `props.rev?` | `string` | - | +| `props.role?` | `AriaRole` | - | +| `props.security?` | `string` | - | +| `props.slot?` | `string` | - | +| `props.spellCheck?` | `Booleanish` | - | +| `props.style?` | `CSSProperties` | - | +| `props.suppressContentEditableWarning?` | `boolean` | - | +| `props.suppressHydrationWarning?` | `boolean` | - | +| `props.tabIndex?` | `number` | - | +| `props.target?` | `string` | - | +| `props.title?` | `string` | - | +| `props.translate?` | `"no"` \| `"yes"` | - | +| `props.typeof?` | `string` | - | +| `props.unselectable?` | `"off"` \| `"on"` | - | +| `props.vocab?` | `string` | - | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/functions/messageTestId.md b/docs/elements/reference/@ory/elements-react/functions/messageTestId.md new file mode 100644 index 0000000000..c66200311a --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/messageTestId.md @@ -0,0 +1,32 @@ +# messageTestId() + +```ts +function messageTestId(message: { + id: string | number; +}): { + data-testid: string; +}; +``` + +Helper function to generate a test id for a UiText message. + +## Parameters + +| Parameter | Type | Description | +| ------------ | --------------------------------- | -------------------------------------------- | +| `message` | \{ `id`: `string` \| `number`; \} | the UiText message to generate a test id for | +| `message.id` | `string` \| `number` | - | + +## Returns + +```ts +{ + data-testid: string; +} +``` + +a unique, stable test id for the message + +| Name | Type | +| ------------- | -------- | +| `data-testid` | `string` | diff --git a/docs/elements/reference/@ory/elements-react/functions/uiTextToFormattedMessage.md b/docs/elements/reference/@ory/elements-react/functions/uiTextToFormattedMessage.md new file mode 100644 index 0000000000..34a971a51d --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/uiTextToFormattedMessage.md @@ -0,0 +1,57 @@ +# uiTextToFormattedMessage() + +```ts +function uiTextToFormattedMessage(uiText: Omit, intl: IntlShape): string +``` + +Converts a UiText to a FormattedMessage. The UiText contains the id of the message and the context. The context is used to inject +values into the message from Ory, e.g. a timestamp. For example a UI Node from Ory might look like this: + +```json +{ + "type": "input", + "group": "default", + "attributes": { + "name": "traits.email", + "type": "email", + "required": true, + "autocomplete": "email", + "disabled": false, + "node_type": "input" + }, + "messages": [], + "meta": { + "label": { + "id": 1070002, + "text": "E-Mail", + "type": "info", + "context": { + "title": "E-Mail" + } + } + } +} +``` + +The context has the key "title" which matches the formatter template name "{title}" An example translation file would look like +this: + +```json +{ + "identities.messages.1070002": "{title}" +} +``` + +The formatter would then take the meta.label.id and look for the translation with the key matching the id. It would then replace +the template "{title}" with the value from the context with the key "title". + +## Parameters + +| Parameter | Type | Description | +| --------- | ---------------------------- | ------------------------------------------------------------------------------ | +| `uiText` | `Omit`\<`UiText`, `"type"`\> | The UiText is part of the UiNode object sent by Kratos when performing a flow. | +| `intl` | `IntlShape` | The intl object from react-intl | + +## Returns + +`string` diff --git a/docs/elements/reference/@ory/elements-react/functions/useComponents.md b/docs/elements/reference/@ory/elements-react/functions/useComponents.md new file mode 100644 index 0000000000..c15349aefd --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/useComponents.md @@ -0,0 +1,15 @@ +# useComponents() + +```ts +function useComponents(): OryFlowComponents +``` + +The `useComponents` hook provides access to the Ory Flow components provided in the `OryComponentProvider`. + +You can use this hook to access the components defined in the `components` prop of the `OryComponentProvider`. + +## Returns + +[`OryFlowComponents`](../type-aliases/OryFlowComponents.md) + +the current component context value. diff --git a/docs/elements/reference/@ory/elements-react/functions/useNodeSorter.md b/docs/elements/reference/@ory/elements-react/functions/useNodeSorter.md new file mode 100644 index 0000000000..54efa76012 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/useNodeSorter.md @@ -0,0 +1,43 @@ +# useNodeSorter() + +```ts +function useNodeSorter(): ( + a: UiNode, + b: UiNode, + ctx: { + flowType: string + }, +) => number +``` + +The `useNodeSorter` hook provides a way to access the node sorting function + +The node sorting function is used to determine the order of nodes in a flow based on their attributes and context. + +To customize the sorting behavior, you can provide a custom `nodeSorter` function to the `OryComponentProvider`. + +## Returns + +a function that sorts nodes based on the provided context. + +```ts +( + a: UiNode, + b: UiNode, + ctx: { + flowType: string; +}): number; +``` + +### Parameters + +| Parameter | Type | +| -------------- | --------------------------- | +| `a` | `UiNode` | +| `b` | `UiNode` | +| `ctx` | \{ `flowType`: `string`; \} | +| `ctx.flowType` | `string` | + +### Returns + +`number` diff --git a/docs/elements/reference/@ory/elements-react/functions/useOryConfiguration.md b/docs/elements/reference/@ory/elements-react/functions/useOryConfiguration.md new file mode 100644 index 0000000000..e0e516d5ff --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/useOryConfiguration.md @@ -0,0 +1,16 @@ +# useOryConfiguration() + +```ts +function useOryConfiguration(): OryElementsConfiguration +``` + +The `useOryConfiguration` hook provides access to the Ory Elements configuration. + +This includes the SDK configuration and the project configuration. To customize the configuration, provide the `sdk` and `project` +properties in the `OryConfigurationProvider`. + +## Returns + +[`OryElementsConfiguration`](../interfaces/OryElementsConfiguration.md) + +the Ory Elements configuration, which includes the SDK and project configuration. diff --git a/docs/elements/reference/@ory/elements-react/functions/useOryFlow.md b/docs/elements/reference/@ory/elements-react/functions/useOryFlow.md new file mode 100644 index 0000000000..d6b4262885 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/functions/useOryFlow.md @@ -0,0 +1,13 @@ +# useOryFlow() + +```ts +function useOryFlow(): FlowContextValue +``` + +Returns an object that contains the current flow and the flow type, as well as the configuration. + +## Returns + +[`FlowContextValue`](../type-aliases/FlowContextValue.md) + +The current flow container diff --git a/docs/elements/reference/@ory/elements-react/index.mdx b/docs/elements/reference/@ory/elements-react/index.mdx new file mode 100644 index 0000000000..8c52069bca --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/index.mdx @@ -0,0 +1,109 @@ +--- +id: index +title: "@ory/elements-react" +sidebar_label: "@ory/elements-react" +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +# @ory/elements-react + +This package provides the core functionality for Ory Elements in React. + +## Interfaces + +- [ConsentFlow](interfaces/ConsentFlow.md) +- [ConsentFlowContainer](interfaces/ConsentFlowContainer.md) +- [ErrorFlowContainer](interfaces/ErrorFlowContainer.md) +- [FlowContainerSetter](interfaces/FlowContainerSetter.md) +- [LoginFlowContainer](interfaces/LoginFlowContainer.md) +- [OryCardProps](interfaces/OryCardProps.md) +- [OryCardSettingsSectionProps](interfaces/OryCardSettingsSectionProps.md) +- [OryClientConfiguration](interfaces/OryClientConfiguration.md) +- [OryElementsConfiguration](interfaces/OryElementsConfiguration.md) +- [OryMessageContentProps](interfaces/OryMessageContentProps.md) +- [OryMessageRootProps](interfaces/OryMessageRootProps.md) +- [RecoveryFlowContainer](interfaces/RecoveryFlowContainer.md) +- [RegistrationFlowContainer](interfaces/RegistrationFlowContainer.md) +- [SettingsFlowContainer](interfaces/SettingsFlowContainer.md) +- [VerificationFlowContainer](interfaces/VerificationFlowContainer.md) + +## Type Aliases + +- [FlowContextValue](type-aliases/FlowContextValue.md) +- [FormState](type-aliases/FormState.md) +- [FormStateAction](type-aliases/FormStateAction.md) +- [FormValues](type-aliases/FormValues.md) +- [IntlConfig](type-aliases/IntlConfig.md) +- [OnSubmitHandlerProps](type-aliases/OnSubmitHandlerProps.md) +- [OryCardAuthMethodListItemProps](type-aliases/OryCardAuthMethodListItemProps.md) +- [OryCardContentProps](type-aliases/OryCardContentProps.md) +- [OryCardDividerProps](type-aliases/OryCardDividerProps.md) +- [OryCardFooterProps](type-aliases/OryCardFooterProps.md) +- [OryCardHeaderProps](type-aliases/OryCardHeaderProps.md) +- [OryCardLogoProps](type-aliases/OryCardLogoProps.md) +- [OryFlowComponentOverrides](type-aliases/OryFlowComponentOverrides.md) +- [OryFlowComponents](type-aliases/OryFlowComponents.md) +- [OryFlowContainer](type-aliases/OryFlowContainer.md) +- [OryFormGroupProps](type-aliases/OryFormGroupProps.md) +- [OryFormRootProps](type-aliases/OryFormRootProps.md) +- [OryFormSectionContentProps](type-aliases/OryFormSectionContentProps.md) +- [OryFormSectionFooterProps](type-aliases/OryFormSectionFooterProps.md) +- [OryFormSsoRootProps](type-aliases/OryFormSsoRootProps.md) +- [OryNodeAnchorProps](type-aliases/OryNodeAnchorProps.md) +- [OryNodeButtonProps](type-aliases/OryNodeButtonProps.md) +- [OryNodeCaptchaProps](type-aliases/OryNodeCaptchaProps.md) +- [OryNodeConsentScopeCheckboxProps](type-aliases/OryNodeConsentScopeCheckboxProps.md) +- [OryNodeImageProps](type-aliases/OryNodeImageProps.md) +- [OryNodeInputProps](type-aliases/OryNodeInputProps.md) +- [OryNodeLabelProps](type-aliases/OryNodeLabelProps.md) +- [OryNodeSsoButtonProps](type-aliases/OryNodeSsoButtonProps.md) +- [OryNodeTextProps](type-aliases/OryNodeTextProps.md) +- [OryPageHeaderProps](type-aliases/OryPageHeaderProps.md) +- [OryProviderProps](type-aliases/OryProviderProps.md) +- [OrySettingsFormProps](type-aliases/OrySettingsFormProps.md) +- [OrySettingsPasskeyProps](type-aliases/OrySettingsPasskeyProps.md) +- [OrySettingsRecoveryCodesProps](type-aliases/OrySettingsRecoveryCodesProps.md) +- [OrySettingsSsoProps](type-aliases/OrySettingsSsoProps.md) +- [OrySettingsTotpProps](type-aliases/OrySettingsTotpProps.md) +- [OrySettingsWebauthnProps](type-aliases/OrySettingsWebauthnProps.md) +- [OryToastProps](type-aliases/OryToastProps.md) + +## Variables + +- [OryLocales](variables/OryLocales.md) + +## Components + +- [OryCard](functions/OryCard.md) +- [OryCardContent](functions/OryCardContent.md) +- [OryCardFooter](functions/OryCardFooter.md) +- [OryCardHeader](functions/OryCardHeader.md) +- [OryCardValidationMessages](functions/OryCardValidationMessages.md) +- [OryConfigurationProvider](functions/OryConfigurationProvider.md) +- [OryConsentCard](functions/OryConsentCard.md) +- [OryForm](functions/OryForm.md) +- [OryFormGroupDivider](functions/OryFormGroupDivider.md) +- [OryFormSsoButtons](functions/OryFormSsoButtons.md) +- [OryFormSsoForm](functions/OryFormSsoForm.md) +- [OryPageHeader](functions/OryPageHeader.md) +- [OryProvider](functions/OryProvider.md) +- [OrySelfServiceFlowCard](functions/OrySelfServiceFlowCard.md) +- [OrySettingsCard](functions/OrySettingsCard.md) +- [OrySettingsFormSection](functions/OrySettingsFormSection.md) + +## Hooks + +- [useComponents](functions/useComponents.md) +- [useNodeSorter](functions/useNodeSorter.md) +- [useOryConfiguration](functions/useOryConfiguration.md) +- [useOryFlow](functions/useOryFlow.md) + +## Utilities + +- [messageTestId](functions/messageTestId.md) +- [uiTextToFormattedMessage](functions/uiTextToFormattedMessage.md) diff --git a/docs/elements/reference/@ory/elements-react/interfaces/ConsentFlow.md b/docs/elements/reference/@ory/elements-react/interfaces/ConsentFlow.md new file mode 100644 index 0000000000..dc98aa2877 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/ConsentFlow.md @@ -0,0 +1,102 @@ +# ConsentFlow + +A flow container for the OAuth2 consent flow + +Note: This is a polyfill for the OAuth2 consent flow, which is not yet implemented in the Ory SDK. It tries to mirror the +structure of the other flow containers as closely as possible. + +## Properties + +### active + +```ts +active: "oauth2_consent" +``` + +The active part of the flow, which is always "oauth2_consent" for this flow. + +--- + +### consent_request + +```ts +consent_request: OAuth2ConsentRequest +``` + +--- + +### created_at + +```ts +created_at: Date +``` + +When the flow was created. + +--- + +### expires_at + +```ts +expires_at: Date +``` + +When the flow expires. + +--- + +### id + +```ts +id: "UNSET" +``` + +Always "UNSET" as the consent flow does not have a specific ID. + +--- + +### issued_at + +```ts +issued_at: Date +``` + +When the flow was issued. + +--- + +### return_to? + +```ts +optional return_to: string; +``` + +--- + +### session + +```ts +session: Session +``` + +--- + +### state + +```ts +state: "show_form" | "rejected" | "accepted" +``` + +The state of the consent flow. + +- "show_form": The form is being shown to the user. +- "rejected": The user has rejected the consent request. +- "accepted": The user has accepted the consent request. + +--- + +### ui + +```ts +ui: UiContainer +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/ConsentFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/ConsentFlowContainer.md new file mode 100644 index 0000000000..b9d2163586 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/ConsentFlowContainer.md @@ -0,0 +1,19 @@ +# ConsentFlowContainer + +A flow container for the OAuth2 [ConsentFlow](ConsentFlow.md) + +## Properties + +### flow + +```ts +flow: ConsentFlow +``` + +--- + +### flowType + +```ts +flowType: OAuth2Consent +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/ErrorFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/ErrorFlowContainer.md new file mode 100644 index 0000000000..f53e12d996 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/ErrorFlowContainer.md @@ -0,0 +1,19 @@ +# ErrorFlowContainer + +A flow container for the FlowError + +## Properties + +### flow + +```ts +flow: FlowError +``` + +--- + +### flowType + +```ts +flowType: Error +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/FlowContainerSetter.md b/docs/elements/reference/@ory/elements-react/interfaces/FlowContainerSetter.md new file mode 100644 index 0000000000..1e3cd6af38 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/FlowContainerSetter.md @@ -0,0 +1,19 @@ +# FlowContainerSetter() + +Function to set the flow container. + +```ts +FlowContainerSetter(value: OryFlowContainer): void; +``` + +Function to set the flow container. + +## Parameters + +| Parameter | Type | +| --------- | --------------------------------------------------------- | +| `value` | [`OryFlowContainer`](../type-aliases/OryFlowContainer.md) | + +## Returns + +`void` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/LoginFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/LoginFlowContainer.md new file mode 100644 index 0000000000..336dee84ab --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/LoginFlowContainer.md @@ -0,0 +1,19 @@ +# LoginFlowContainer + +A flow container for the LoginFlow + +## Properties + +### flow + +```ts +flow: LoginFlow +``` + +--- + +### flowType + +```ts +flowType: Login +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/OryCardProps.md b/docs/elements/reference/@ory/elements-react/interfaces/OryCardProps.md new file mode 100644 index 0000000000..60860e1fcc --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/OryCardProps.md @@ -0,0 +1,9 @@ +# OryCardProps + +## Properties + +### children? + +```ts +optional children: ReactNode; +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/OryCardSettingsSectionProps.md b/docs/elements/reference/@ory/elements-react/interfaces/OryCardSettingsSectionProps.md new file mode 100644 index 0000000000..3e136478c9 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/OryCardSettingsSectionProps.md @@ -0,0 +1,43 @@ +# OryCardSettingsSectionProps + +## Extends + +- `PropsWithChildren` + +## Properties + +### action + +```ts +action: string +``` + +--- + +### children? + +```ts +optional children: ReactNode; +``` + +#### Inherited from + +```ts +PropsWithChildren.children +``` + +--- + +### method + +```ts +method: string +``` + +--- + +### onSubmit + +```ts +onSubmit: FormEventHandler +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/OryClientConfiguration.md b/docs/elements/reference/@ory/elements-react/interfaces/OryClientConfiguration.md new file mode 100644 index 0000000000..5129f265b5 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/OryClientConfiguration.md @@ -0,0 +1,50 @@ +# OryClientConfiguration + +The configuration for Ory Elements. + +This configuration is used to customize the behavior and appearance of Ory Elements. + +By setting UI urls, you can override the default URLs for the login, registration, recovery, and verification flows. + +You can also set the name of the application, the logo URL, and the SDK configuration. By default, the name and logo are displayed +in the card's header. + +## Properties + +### intl? + +```ts +optional intl: IntlConfig; +``` + +The internationalization configuration. This configuration is used to set the locale and any additional options used for the i18n +library. The locale is used to determine the language of the UI. The default locale is "en". + +--- + +### project + +```ts +project: AccountExperienceConfiguration +``` + +The configuration for the project. + +--- + +### sdk? + +```ts +optional sdk: { + options?: Partial; + url?: string; +}; +``` + +The SDK configuration. This configuration is used to set the URL of the Ory SDK and any additional options used for the SDK +client. + +| Name | Type | Description | +| ---------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `options?` | `Partial`\<`ConfigurationParameters`\> | Additional parameters for the Ory SDK configuration. This can include options like headers, credentials, and other settings. | +| `url?` | `string` | The URL the Ory SDK should connect to. This is typically the base URL of your Ory instance. | diff --git a/docs/elements/reference/@ory/elements-react/interfaces/OryElementsConfiguration.md b/docs/elements/reference/@ory/elements-react/interfaces/OryElementsConfiguration.md new file mode 100644 index 0000000000..c2a2414a24 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/OryElementsConfiguration.md @@ -0,0 +1,23 @@ +# OryElementsConfiguration + +The Ory Elements configuration object. + +## Properties + +### project + +```ts +project: AccountExperienceConfiguration +``` + +The project configuration. This includes the project name, URLs, and other settings for the Ory Elements project. + +--- + +### sdk + +```ts +sdk: OrySDK +``` + +The Ory SDK configuration. This includes the URL and options for the Ory SDK. diff --git a/docs/elements/reference/@ory/elements-react/interfaces/OryMessageContentProps.md b/docs/elements/reference/@ory/elements-react/interfaces/OryMessageContentProps.md new file mode 100644 index 0000000000..f2fe5cc46e --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/OryMessageContentProps.md @@ -0,0 +1,13 @@ +# OryMessageContentProps + +Props for the OryMessageContent component. + +## Properties + +### message + +```ts +message: UiText +``` + +The message to display. diff --git a/docs/elements/reference/@ory/elements-react/interfaces/OryMessageRootProps.md b/docs/elements/reference/@ory/elements-react/interfaces/OryMessageRootProps.md new file mode 100644 index 0000000000..dae1982fd2 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/OryMessageRootProps.md @@ -0,0 +1,11 @@ +# OryMessageRootProps + +**`Expand`** + +## Properties + +### children? + +```ts +optional children: ReactNode; +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/RecoveryFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/RecoveryFlowContainer.md new file mode 100644 index 0000000000..137e30b02c --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/RecoveryFlowContainer.md @@ -0,0 +1,19 @@ +# RecoveryFlowContainer + +A flow container for the RecoveryFlow + +## Properties + +### flow + +```ts +flow: RecoveryFlow +``` + +--- + +### flowType + +```ts +flowType: Recovery +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/RegistrationFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/RegistrationFlowContainer.md new file mode 100644 index 0000000000..6c38f247ef --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/RegistrationFlowContainer.md @@ -0,0 +1,19 @@ +# RegistrationFlowContainer + +A flow container for the RegistrationFlow + +## Properties + +### flow + +```ts +flow: RegistrationFlow +``` + +--- + +### flowType + +```ts +flowType: Registration +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/SettingsFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/SettingsFlowContainer.md new file mode 100644 index 0000000000..5ff5dae453 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/SettingsFlowContainer.md @@ -0,0 +1,19 @@ +# SettingsFlowContainer + +A flow container for the SettingsFlow + +## Properties + +### flow + +```ts +flow: SettingsFlow +``` + +--- + +### flowType + +```ts +flowType: Settings +``` diff --git a/docs/elements/reference/@ory/elements-react/interfaces/VerificationFlowContainer.md b/docs/elements/reference/@ory/elements-react/interfaces/VerificationFlowContainer.md new file mode 100644 index 0000000000..71bbc82ee2 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/interfaces/VerificationFlowContainer.md @@ -0,0 +1,19 @@ +# VerificationFlowContainer + +A flow container for the VerificationFlow + +## Properties + +### flow + +```ts +flow: VerificationFlow +``` + +--- + +### flowType + +```ts +flowType: Verification +``` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Consent.md b/docs/elements/reference/@ory/elements-react/theme/functions/Consent.md new file mode 100644 index 0000000000..82203c6aec --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Consent.md @@ -0,0 +1,37 @@ +# `` + +```ts +function Consent(props: { + children?: ReactNode + components?: OryFlowComponentOverrides + config: OryClientConfiguration + consentChallenge: OAuth2ConsentRequest + csrfToken: string + formActionUrl: string + session: Session +}): Element +``` + +The Consent component allows you to render the consent flow for Ory OAuth2. + +It is used to request user consent for accessing their data and resources. The component takes in the OAuth2 consent request +object, the session object, the Ory client configuration, a CSRF token, and the URL to submit the consent form to. + +## Parameters + +| Parameter | Type | Description | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `consentChallenge`: `OAuth2ConsentRequest`; `csrfToken`: `string`; `formActionUrl`: `string`; `session`: `Session`; \} | The props for the Consent component. | +| `props.children?` | `ReactNode` | Optional children to render inside the Consent component. If not provided, the default OryConsentCard will be rendered. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | The components to override the default ones. This allows you to customize the appearance and behavior of the consent flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL | +| `props.consentChallenge` | `OAuth2ConsentRequest` | The OAuth2 consent request object. | +| `props.csrfToken` | `string` | The CSRF token to protect against CSRF attacks. This token is used to prevent cross-site request forgery attacks by ensuring that the request is coming from the same origin as the consent flow. | +| `props.formActionUrl` | `string` | The URL to submit the consent form to. This URL is typically an endpoint on the server that handles the consent request. Make sure that this endpoint handles CSRF protection. During the form submission the Consent component will send along the CSRF token passed in the props. The server should validate this token before processing the consent request. | +| `props.session` | `Session` | The session object. Since the consent flow is used in the context of a logged-in user, the session object is required. It contains information about the user, such as their ID and any associated metadata. This information is used to accept or reject the consent request based on the user's preferences. The session object is typically obtained from the Ory Kratos session API. | + +## Returns + +`Element` + +the Consent component. diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultButtonSocial.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultButtonSocial.md new file mode 100644 index 0000000000..9a93d5f0d6 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultButtonSocial.md @@ -0,0 +1,28 @@ +# `` + +```ts +function DefaultButtonSocial(props: { + attributes: UiNodeInputAttributes + logos?: Record + node: UiNode + onClick?: () => void + showLabel?: boolean +}): Element +``` + +The default implementation of a social button for Ory SSO. It renders a button with a logo and an optional label. + +## Parameters + +| Parameter | Type | Description | +| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `attributes`: `UiNodeInputAttributes`; `logos?`: `Record`\<`string`, `ElementType`\>; `node`: `UiNode`; `onClick?`: () => `void`; `showLabel?`: `boolean`; \} | The props for the DefaultButtonSocial component. | +| `props.attributes` | `UiNodeInputAttributes` | - | +| `props.logos?` | `Record`\<`string`, `ElementType`\> | Logos to use for the social buttons. If not provided, the default logos will be used. | +| `props.node` | `UiNode` | - | +| `props.onClick?` | () => `void` | - | +| `props.showLabel?` | `boolean` | Whether to show the label next to the logo. If not provided, it will be determined based on the number of SSO nodes. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCard.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCard.md new file mode 100644 index 0000000000..ad527867fe --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCard.md @@ -0,0 +1,18 @@ +# `` + +```ts +function DefaultCard(props: { children?: ReactNode }): Element +``` + +The DefaultCard component is a styled container that serves as the main card layout for Ory Elements. + +## Parameters + +| Parameter | Type | Description | +| ----------------- | ------------------------------- | --------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; \} | The properties for the DefaultCard component. | +| `props.children?` | `ReactNode` | - | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardContent.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardContent.md new file mode 100644 index 0000000000..9ca8c23e23 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardContent.md @@ -0,0 +1,18 @@ +# `` + +```ts +function DefaultCardContent(props: { children?: ReactNode }): ReactNode +``` + +Simply renders the children passed to it. + +## Parameters + +| Parameter | Type | Description | +| ----------------- | ------------------------------- | ------------------------------------------------------------------ | +| `props` | \{ `children?`: `ReactNode`; \} | pass children to render instead of the default Ory Card components | +| `props.children?` | `ReactNode` | - | + +## Returns + +`ReactNode` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardFooter.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardFooter.md new file mode 100644 index 0000000000..00a89675f5 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardFooter.md @@ -0,0 +1,13 @@ +# `` + +```ts +function DefaultCardFooter(): null | Element +``` + +DefaultCardFooter renders the default footer for the card component based on the current flow type. + +## Returns + +`null` \| `Element` + +The default card footer component that renders the appropriate footer based on the current flow type. diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardHeader.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardHeader.md new file mode 100644 index 0000000000..80583e8be7 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardHeader.md @@ -0,0 +1,15 @@ +# `` + +```ts +function DefaultCardHeader(): Element +``` + +Renders the default card header component. + +This component is used to display the header of a card, including the logo, title, description, and current identifier button. + +## Returns + +`Element` + +the default card header component diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardLogo.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardLogo.md new file mode 100644 index 0000000000..46bfa2bd65 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCardLogo.md @@ -0,0 +1,19 @@ +# `` + +```ts +function DefaultCardLogo(): Element +``` + +The DefaultCardLogo component renders the logo from the [@ory/elements-react!OryProvider](../../functions/OryProvider.md) or falls +back to the project name. + +## Returns + +`Element` + +the default logo for the Ory Card component. + +## See + +- [@ory/elements-react!OryProvider](../../functions/OryProvider.md) +- [@ory/elements-react!OryElementsConfiguration](../../interfaces/OryElementsConfiguration.md) diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCurrentIdentifierButton.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCurrentIdentifierButton.md new file mode 100644 index 0000000000..8c9d61bd6f --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultCurrentIdentifierButton.md @@ -0,0 +1,13 @@ +# `` + +```ts +function DefaultCurrentIdentifierButton(): null | Element +``` + +The `DefaultCurrentIdentifierButton` component renders a button that displays the current identifier + +The button can be used to restart the flow with the current identifier if appropriate. + +## Returns + +`null` \| `Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultFormContainer.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultFormContainer.md new file mode 100644 index 0000000000..9cce7b9c2e --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultFormContainer.md @@ -0,0 +1,17 @@ +# `` + +```ts +function DefaultFormContainer(props: PropsWithChildren): Element +``` + +The default form container for Ory Elements. + +## Parameters + +| Parameter | Type | Description | +| --------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------ | +| `props` | `PropsWithChildren`\<[`OryFormRootProps`](../../type-aliases/OryFormRootProps.md)\> | The properties for the DefaultFormContainer component. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultMessage.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultMessage.md new file mode 100644 index 0000000000..a427998793 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultMessage.md @@ -0,0 +1,21 @@ +# `` + +```ts +function DefaultMessage(props: OryMessageContentProps): Element +``` + +The default message component for Ory Elements. + +## Parameters + +| Parameter | Type | Description | +| --------- | ---------------------------------------------------------------------- | ------------------------------------------------ | +| `props` | [`OryMessageContentProps`](../../interfaces/OryMessageContentProps.md) | The properties for the DefaultMessage component. | + +## Returns + +`Element` + +## See + +[@ory/elements-react!uiTextToFormattedMessage](../../functions/uiTextToFormattedMessage.md) diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/DefaultMessageContainer.md b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultMessageContainer.md new file mode 100644 index 0000000000..2efe1ac9b2 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/DefaultMessageContainer.md @@ -0,0 +1,18 @@ +# `` + +```ts +function DefaultMessageContainer(props: { children?: ReactNode }): null | Element +``` + +The default message container for Ory Elements. + +## Parameters + +| Parameter | Type | Description | +| ----------------- | ------------------------------- | --------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; \} | The properties for the DefaultMessageContainer component. | +| `props.children?` | `ReactNode` | - | + +## Returns + +`null` \| `Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Error.md b/docs/elements/reference/@ory/elements-react/theme/functions/Error.md new file mode 100644 index 0000000000..ec8ae35c69 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Error.md @@ -0,0 +1,34 @@ +# `` + +```ts +function Error(props: { + components?: OryFlowComponentOverrides + config: OryClientConfiguration + error: + | FlowError + | { + error: string + error_description: string + } + | { + error: GenericError + } + session?: Session +}): Element +``` + +The Error component is used to display an error message to the user. + +## Parameters + +| Parameter | Type | Description | +| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `error`: \| `FlowError` \| \{ `error`: `string`; `error_description`: `string`; \} \| \{ `error`: `GenericError`; \}; `session?`: `Session`; \} | The props for the Error component. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | The components to override the default ones. This allows you to customize the appearance and behavior of the error flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL and project information. | +| `props.error` | \| `FlowError` \| \{ `error`: `string`; `error_description`: `string`; \} \| \{ `error`: `GenericError`; \} | The error object returned by the Ory SDK. This can be a FlowError, OAuth2Error, or a GenericError. | +| `props.session?` | `Session` | The session object, if available. This is used to determine if the user is logged in and to provide appropriate actions. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Login.md b/docs/elements/reference/@ory/elements-react/theme/functions/Login.md new file mode 100644 index 0000000000..3c8c295f44 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Login.md @@ -0,0 +1,29 @@ +# `` + +```ts +function Login(props: { + children?: ReactNode + components?: OryFlowComponentOverrides + config: OryClientConfiguration + flow: LoginFlow +}): Element +``` + +The `Login` component is used to render the login flow in Ory Elements. + +It provides the necessary context and components for the login flow, allowing you to customize the appearance and behavior of the +login form. + +## Parameters + +| Parameter | Type | Description | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `flow`: `LoginFlow`; \} | The props for the Login component. | +| `props.children?` | `ReactNode` | Optional children to render If not provided, the default OrySelfServiceFlowCard will be rendered. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | Optional components to override the default ones. This allows you to customize the appearance and behavior of the login flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL and other settings. | +| `props.flow` | `LoginFlow` | The login flow object containing the state and data for the login process. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Recovery.md b/docs/elements/reference/@ory/elements-react/theme/functions/Recovery.md new file mode 100644 index 0000000000..43e27dd234 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Recovery.md @@ -0,0 +1,28 @@ +# `` + +```ts +function Recovery(props: { + children?: ReactNode + components?: OryFlowComponentOverrides + config: OryClientConfiguration + flow: RecoveryFlow +}): Element +``` + +The `Recovery` component is used to render the recovery flow in Ory Elements. + +## Parameters + +| Parameter | Type | Description | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `flow`: `RecoveryFlow`; \} | The props for the Recovery component. | +| `props.children?` | `ReactNode` | Optional children to render If not provided, the default OrySelfServiceFlowCard will be rendered. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | Optional components to override the default ones. This allows you to customize the appearance and behavior of the recovery flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL and other settings. | +| `props.flow` | `RecoveryFlow` | The recovery flow object containing the state and data for the recovery process. | + +## Returns + +`Element` + +the recovery flow component. diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Registration.md b/docs/elements/reference/@ory/elements-react/theme/functions/Registration.md new file mode 100644 index 0000000000..d76c50296e --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Registration.md @@ -0,0 +1,26 @@ +# `` + +```ts +function Registration(props: { + children?: ReactNode + components?: OryFlowComponentOverrides + config: OryClientConfiguration + flow: RegistrationFlow +}): Element +``` + +The `Registration` component is used to render the registration flow in Ory Elements. + +## Parameters + +| Parameter | Type | Description | +| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `flow`: `RegistrationFlow`; \} | The props for the Registration component. | +| `props.children?` | `ReactNode` | Optional children to render If not provided, the default OrySelfServiceFlowCard will be rendered. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | Optional components to override the default ones. This allows you to customize the appearance and behavior of the registration flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL and other settings. | +| `props.flow` | `RegistrationFlow` | The registration flow object containing the state and data for the registration process. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Settings.md b/docs/elements/reference/@ory/elements-react/theme/functions/Settings.md new file mode 100644 index 0000000000..cf4d6457e6 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Settings.md @@ -0,0 +1,29 @@ +# `` + +```ts +function Settings(props: { + children?: ReactNode + components?: OryFlowComponentOverrides + config: OryClientConfiguration + flow: SettingsFlow +}): Element +``` + +The `Settings` component is used to render the settings flow in Ory Elements. + +It provides the necessary context and components for the settings flow, allowing you to customize the appearance and behavior of +the settings form. + +## Parameters + +| Parameter | Type | Description | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `flow`: `SettingsFlow`; \} | The props for the Settings component. | +| `props.children?` | `ReactNode` | Optional children to render If not provided, the default OrySettingsCard will be rendered. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | Optional components to override the default ones. This allows you to customize the appearance and behavior of the settings flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL and other settings. | +| `props.flow` | `SettingsFlow` | The settings flow object containing the state and data for the settings process. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/Verification.md b/docs/elements/reference/@ory/elements-react/theme/functions/Verification.md new file mode 100644 index 0000000000..2187241f62 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/Verification.md @@ -0,0 +1,29 @@ +# `` + +```ts +function Verification(props: { + children?: ReactNode + components?: OryFlowComponentOverrides + config: OryClientConfiguration + flow: VerificationFlow +}): Element +``` + +The `Verification` component is used to render the verification flow in Ory Elements. + +It provides the necessary context and components for the verification flow, allowing you to customize the appearance and behavior +of the verification form. + +## Parameters + +| Parameter | Type | Description | +| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `props` | \{ `children?`: `ReactNode`; `components?`: [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md); `config`: [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md); `flow`: `VerificationFlow`; \} | The props for the Verification component. | +| `props.children?` | `ReactNode` | Optional children to render If not provided, the default OrySelfServiceFlowCard will be rendered. | +| `props.components?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | Optional components to override the default ones. This allows you to customize the appearance and behavior of the verification flow. | +| `props.config` | [`OryClientConfiguration`](../../interfaces/OryClientConfiguration.md) | The Ory client configuration object. This object contains the configuration for the Ory client, such as the base URL and other settings. | +| `props.flow` | `VerificationFlow` | The verification flow object containing the state and data for the verification process. | + +## Returns + +`Element` diff --git a/docs/elements/reference/@ory/elements-react/theme/functions/getOryComponents.md b/docs/elements/reference/@ory/elements-react/theme/functions/getOryComponents.md new file mode 100644 index 0000000000..6a666bb4f2 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/functions/getOryComponents.md @@ -0,0 +1,19 @@ +# getOryComponents() + +```ts +function getOryComponents(overrides?: OryFlowComponentOverrides): OryFlowComponents +``` + +Merges the default Ory components with any provided overrides. + +The output of this function is a complete set of components that can be used in Ory flows. + +## Parameters + +| Parameter | Type | Description | +| ------------ | ------------------------------------------------------------------------------ | ---------------------------------------------- | +| `overrides?` | [`OryFlowComponentOverrides`](../../type-aliases/OryFlowComponentOverrides.md) | Optional overrides for the default components. | + +## Returns + +[`OryFlowComponents`](../../type-aliases/OryFlowComponents.md) diff --git a/docs/elements/reference/@ory/elements-react/theme/index.mdx b/docs/elements/reference/@ory/elements-react/theme/index.mdx new file mode 100644 index 0000000000..a33b634d35 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/theme/index.mdx @@ -0,0 +1,42 @@ +--- +id: index +title: "@ory/elements-react/theme" +sidebar_label: "theme" +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +# @ory/elements-react/theme + +This package provides the default theme for Ory Elements React. + +## Default Components + +- [DefaultButtonSocial](functions/DefaultButtonSocial.md) +- [DefaultCard](functions/DefaultCard.md) +- [DefaultCardContent](functions/DefaultCardContent.md) +- [DefaultCardFooter](functions/DefaultCardFooter.md) +- [DefaultCardHeader](functions/DefaultCardHeader.md) +- [DefaultCardLogo](functions/DefaultCardLogo.md) +- [DefaultCurrentIdentifierButton](functions/DefaultCurrentIdentifierButton.md) +- [DefaultFormContainer](functions/DefaultFormContainer.md) +- [DefaultMessage](functions/DefaultMessage.md) +- [DefaultMessageContainer](functions/DefaultMessageContainer.md) + +## Flows + +- [Consent](functions/Consent.md) +- [Error](functions/Error.md) +- [Login](functions/Login.md) +- [Recovery](functions/Recovery.md) +- [Registration](functions/Registration.md) +- [Settings](functions/Settings.md) +- [Verification](functions/Verification.md) + +## Utilities + +- [getOryComponents](functions/getOryComponents.md) diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/FlowContextValue.md b/docs/elements/reference/@ory/elements-react/type-aliases/FlowContextValue.md new file mode 100644 index 0000000000..3dbdb25716 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/FlowContextValue.md @@ -0,0 +1,19 @@ +# FlowContextValue + +```ts +type FlowContextValue = OryFlowContainer & { + dispatchFormState: Dispatch + formState: FormState + setFlowContainer: FlowContainerSetter +} +``` + +The return value of the OryFlowContext. + +## Type declaration + +| Name | Type | Description | +| ------------------- | ------------------------------------------------------------- | ------------------------------------------- | +| `dispatchFormState` | `Dispatch`\<[`FormStateAction`](FormStateAction.md)\> | Dispatch function to update the form state. | +| `formState` | [`FormState`](FormState.md) | The current form state. **See** FormState | +| `setFlowContainer` | [`FlowContainerSetter`](../interfaces/FlowContainerSetter.md) | Function to set the flow container. | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/FormState.md b/docs/elements/reference/@ory/elements-react/type-aliases/FormState.md new file mode 100644 index 0000000000..b55b4a0134 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/FormState.md @@ -0,0 +1,32 @@ +# FormState + +```ts +type FormState = + | { + current: "select_method" + } + | { + current: "provide_identifier" + } + | { + current: "method_active" + method: UiNodeGroupEnum + } + | { + current: "success_screen" + } + | { + current: "settings" + } +``` + +Represents the state of the form based on the flow type and active method. This type is used to determine which part of the form +should be displayed. + +It can be one of the following: + +- `select_method`: The user is selecting an authentication method. +- `provide_identifier`: The user is providing an identifier (e.g., email or username). +- `method_active`: An authentication method is active, and the user is interacting with it. +- `success_screen`: The flow has successfully completed (only used in the verification flow). +- `settings`: The user is in the settings flow. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/FormStateAction.md b/docs/elements/reference/@ory/elements-react/type-aliases/FormStateAction.md new file mode 100644 index 0000000000..e24c2f2d5f --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/FormStateAction.md @@ -0,0 +1,55 @@ +# FormStateAction + +```ts +type FormStateAction = + | { + flow: OryFlowContainer + type: "action_flow_update" + } + | { + method: UiNodeGroupEnum + type: "action_select_method" + } + | { + type: "action_clear_active_method" + } +``` + +Represents the actions that can be dispatched to update the form state. These actions are used to change the current state of the +form based on user interactions or flow updates. + +## Type declaration + +```ts +{ + flow: OryFlowContainer + type: "action_flow_update" +} +``` + +| Name | Type | Description | +| ------ | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `flow` | [`OryFlowContainer`](OryFlowContainer.md) | The updated flow container that contains the new flow data. | +| `type` | `"action_flow_update"` | Action to update the flow state. This action is dispatched when the flow is updated, and it will parse the new flow to determine the current form state. | + +```ts +{ + method: UiNodeGroupEnum + type: "action_select_method" +} +``` + +| Name | Type | Description | +| -------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `method` | `UiNodeGroupEnum` | The authentication method that the user has selected. | +| `type` | `"action_select_method"` | Action to select an authentication method. This action is dispatched when the user selects an authentication method (e.g., password, passkey, etc.) from the available options. | + +```ts +{ + type: "action_clear_active_method" +} +``` + +| Name | Type | Description | +| ------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | `"action_clear_active_method"` | Action to clear the active authentication method. This action is dispatched when the user wants to clear the currently active method and return to the method selection state. | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/FormValues.md b/docs/elements/reference/@ory/elements-react/type-aliases/FormValues.md new file mode 100644 index 0000000000..01c2e1b9e8 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/FormValues.md @@ -0,0 +1,7 @@ +# FormValues + +```ts +type FormValues = Record +``` + +A generic type for the form values. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/IntlConfig.md b/docs/elements/reference/@ory/elements-react/type-aliases/IntlConfig.md new file mode 100644 index 0000000000..d28fa3ae95 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/IntlConfig.md @@ -0,0 +1,39 @@ +# IntlConfig + +```ts +type IntlConfig = { + customTranslations?: Partial + locale: Locale +} +``` + +The configuration for internationalization (i18n) in Ory Elements. + +This configuration is used to set the locale and can be used to provide custom translations. The locale is used to determine the +language of the UI. + +## Properties + +### customTranslations? + +```ts +optional customTranslations: Partial; +``` + +Provide custom translations for the UI. + +--- + +### locale + +```ts +locale: Locale +``` + +The locale to use for internationalization. + +#### Default Value + +```ts +"en" +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OnSubmitHandlerProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OnSubmitHandlerProps.md new file mode 100644 index 0000000000..675f3aa566 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OnSubmitHandlerProps.md @@ -0,0 +1,57 @@ +# OnSubmitHandlerProps\ + +```ts +type OnSubmitHandlerProps = { + body: T + onRedirect: OnRedirectHandler + setFlowContainer: (flowContainer: OryFlowContainer) => void +} +``` + +Props for the submit handler + +## Type Parameters + +| Type Parameter | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `T` _extends_ \| `UpdateLoginFlowBody` \| `UpdateRegistrationFlowBody` \| `UpdateVerificationFlowBody` \| `UpdateRecoveryFlowBody` \| `UpdateSettingsFlowBody` | + +## Properties + +### body + +```ts +body: T +``` + +The form values to submit. + +--- + +### onRedirect + +```ts +onRedirect: OnRedirectHandler +``` + +This method is used to redirect the user to a different page. + +--- + +### setFlowContainer() + +```ts +setFlowContainer: (flowContainer: OryFlowContainer) => void; +``` + +This method is used to update the flow container when a validation error occurs, for example. + +#### Parameters + +| Parameter | Type | +| --------------- | ----------------------------------------- | +| `flowContainer` | [`OryFlowContainer`](OryFlowContainer.md) | + +#### Returns + +`void` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryCardAuthMethodListItemProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardAuthMethodListItemProps.md new file mode 100644 index 0000000000..34c23fda9d --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardAuthMethodListItemProps.md @@ -0,0 +1,50 @@ +# OryCardAuthMethodListItemProps + +```ts +type OryCardAuthMethodListItemProps = { + group: string + onClick: () => void + title?: { + id: string + values?: Record + } +} +``` + +Props for the AuthMethodListItem component. This component is used to render a single auth method in the AuthMethodList component. + +## Properties + +### group + +```ts +group: string +``` + +--- + +### onClick() + +```ts +onClick: () => void; +``` + +#### Returns + +`void` + +--- + +### title? + +```ts +optional title: { + id: string; + values?: Record; +}; +``` + +| Name | Type | +| --------- | ------------------------------ | +| `id` | `string` | +| `values?` | `Record`\<`string`, `string`\> | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryCardContentProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardContentProps.md new file mode 100644 index 0000000000..7a6f392812 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardContentProps.md @@ -0,0 +1,7 @@ +# OryCardContentProps + +```ts +type OryCardContentProps = PropsWithChildren +``` + +Props for the OryCardContent component. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryCardDividerProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardDividerProps.md new file mode 100644 index 0000000000..bc988cf4cb --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardDividerProps.md @@ -0,0 +1,7 @@ +# OryCardDividerProps + +```ts +type OryCardDividerProps = Record +``` + +Props type for the Form Group Divider component. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryCardFooterProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardFooterProps.md new file mode 100644 index 0000000000..90974adb46 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardFooterProps.md @@ -0,0 +1,5 @@ +# OryCardFooterProps + +```ts +type OryCardFooterProps = Record +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryCardHeaderProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardHeaderProps.md new file mode 100644 index 0000000000..99dae9c0cb --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardHeaderProps.md @@ -0,0 +1,5 @@ +# OryCardHeaderProps + +```ts +type OryCardHeaderProps = Record +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryCardLogoProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardLogoProps.md new file mode 100644 index 0000000000..2663b726ec --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryCardLogoProps.md @@ -0,0 +1,5 @@ +# OryCardLogoProps + +```ts +type OryCardLogoProps = Record +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowComponentOverrides.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowComponentOverrides.md new file mode 100644 index 0000000000..af899bae08 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowComponentOverrides.md @@ -0,0 +1,11 @@ +# OryFlowComponentOverrides + +```ts +type OryFlowComponentOverrides = { + [P in keyof OryFlowComponents]?: OryFlowComponents[P] extends object + ? { [K in keyof OryFlowComponents[P]]?: OryFlowComponents[P][K] } + : OryFlowComponents[P] +} +``` + +Makes the components in OryFlowComponents optional, so that you can override only the components you want to change. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowComponents.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowComponents.md new file mode 100644 index 0000000000..a02639d526 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowComponents.md @@ -0,0 +1,180 @@ +# OryFlowComponents + +```ts +type OryFlowComponents = { + Card: { + AuthMethodListContainer: ComponentType + AuthMethodListItem: ComponentType + Content: ComponentType + Divider: ComponentType + Footer: ComponentType + Header: ComponentType + Logo: ComponentType + Root: ComponentType + SettingsSection: ComponentType + SettingsSectionContent: ComponentType + SettingsSectionFooter: ComponentType + } + Form: { + Group: ComponentType + PasskeySettings: ComponentType + RecoveryCodesSettings: ComponentType + Root: ComponentType + SsoRoot: ComponentType + SsoSettings: ComponentType + TotpSettings: ComponentType + WebauthnSettings: ComponentType + } + Message: { + Content: ComponentType + Root: ComponentType + Toast: ComponentType + } + Node: { + Anchor: ComponentType + Button: ComponentType + Captcha: ComponentType + Checkbox: ComponentType + CodeInput: ComponentType + ConsentScopeCheckbox: ComponentType + Image: ComponentType + Input: ComponentType + Label: ComponentType + SsoButton: ComponentType + Text: ComponentType + } + Page: { + Header: ComponentType + } +} +``` + +A record of all the components that are used in the OryForm component. + +## Properties + +### Card + +```ts +Card: { + AuthMethodListContainer: ComponentType + AuthMethodListItem: ComponentType + Content: ComponentType + Divider: ComponentType + Footer: ComponentType + Header: ComponentType + Logo: ComponentType + Root: ComponentType + SettingsSection: ComponentType + SettingsSectionContent: ComponentType + SettingsSectionFooter: ComponentType +} +``` + +| Name | Type | Description | +| ------------------------- | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AuthMethodListContainer` | `ComponentType`\<`PropsWithChildren`\> | The AuthMethodListContainer component is rendered around the "method" chooser step in the identifier_first login flow. This is only used, if login is configured to use identifier_first authentication. | +| `AuthMethodListItem` | `ComponentType`\<[`OryCardAuthMethodListItemProps`](OryCardAuthMethodListItemProps.md)\> | The AuthMethodListItem component is rendered on the "method" chooser step in the identifier_first login flow. This is only used, if login is configured to use identifier_first authentication. | +| `Content` | `ComponentType`\<[`OryCardContentProps`](OryCardContentProps.md)\> | The card content is the main content of the card container. | +| `Divider` | `ComponentType`\<[`OryCardDividerProps`](OryCardDividerProps.md)\> | The HorizontalDivider component is rendered between groups. | +| `Footer` | `ComponentType`\<[`OryCardFooterProps`](OryCardFooterProps.md)\> | The card footer is the footer of the card container. | +| `Header` | `ComponentType`\<[`OryCardProps`](../interfaces/OryCardProps.md)\> | The card header is the header of the card container. | +| `Logo` | `ComponentType`\<[`OryCardLogoProps`](OryCardLogoProps.md)\> | The card logo is the logo of the card container. | +| `Root` | `ComponentType`\<[`OryCardProps`](../interfaces/OryCardProps.md)\> | The card container is the main container of the card. | +| `SettingsSection` | `ComponentType`\<[`OryCardSettingsSectionProps`](../interfaces/OryCardSettingsSectionProps.md)\> | The SettingsSection component is rendered around each section of the settings. | +| `SettingsSectionContent` | `ComponentType`\<[`OryFormSectionContentProps`](OryFormSectionContentProps.md)\> | The SettingsSectionContent component is rendered around the content of each section of the settings. | +| `SettingsSectionFooter` | `ComponentType`\<[`OryFormSectionFooterProps`](OryFormSectionFooterProps.md)\> | The SettingsSectionFooter component is rendered around the footer of each section of the settings. | + +--- + +### Form + +```ts +Form: { + Group: ComponentType + PasskeySettings: ComponentType + RecoveryCodesSettings: ComponentType + Root: ComponentType + SsoRoot: ComponentType + SsoSettings: ComponentType + TotpSettings: ComponentType + WebauthnSettings: ComponentType +} +``` + +| Name | Type | Description | +| ----------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Group` | `ComponentType`\<[`OryFormGroupProps`](OryFormGroupProps.md)\> | The FormGroup is rendered around each group of nodes in the UI nodes. | +| `PasskeySettings` | `ComponentType`\<[`OrySettingsPasskeyProps`](OrySettingsPasskeyProps.md)\> | The section on the settings page, rendering the Passkey settings | +| `RecoveryCodesSettings` | `ComponentType`\<[`OrySettingsRecoveryCodesProps`](OrySettingsRecoveryCodesProps.md)\> | The section on the settings page, rendering the recovery code settings | +| `Root` | `ComponentType`\<[`OryFormRootProps`](OryFormRootProps.md)\> | The FormContainer component is the main container of the form. It should render its children. You most likely don't want to override this component directly. | +| `SsoRoot` | `ComponentType`\<[`OryFormSsoRootProps`](OryFormSsoRootProps.md)\> | A special form group container for the social buttons. This is required, because the social buttons need to be in its form, to not influence the other form groups. You most likely don't want to override this component directly. | +| `SsoSettings` | `ComponentType`\<[`OrySettingsSsoProps`](OrySettingsSsoProps.md)\> | The section on the settings page, rendering the OIDC settings | +| `TotpSettings` | `ComponentType`\<[`OrySettingsTotpProps`](OrySettingsTotpProps.md)\> | The section on the settings page, rendering the TOTP settings | +| `WebauthnSettings` | `ComponentType`\<[`OrySettingsWebauthnProps`](OrySettingsWebauthnProps.md)\> | The section on the settings page, rendering the Webauthn settings | + +--- + +### Message + +```ts +Message: { + Content: ComponentType + Root: ComponentType + Toast: ComponentType +} +``` + +| Name | Type | Description | +| --------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `Content` | `ComponentType`\<[`OryMessageContentProps`](../interfaces/OryMessageContentProps.md)\> | The Message component is rendered whenever a message is encountered. | +| `Root` | `ComponentType`\<[`OryMessageRootProps`](../interfaces/OryMessageRootProps.md)\> | The MessageContainer is rendered around the messages. | +| `Toast` | `ComponentType`\<[`OryToastProps`](OryToastProps.md)\> | The Toast component is rendered for toast messages. Currently only used in the settings page to display messages. | + +--- + +### Node + +```ts +Node: { + Anchor: ComponentType + Button: ComponentType + Captcha: ComponentType + Checkbox: ComponentType + CodeInput: ComponentType + ConsentScopeCheckbox: ComponentType + Image: ComponentType + Input: ComponentType + Label: ComponentType + SsoButton: ComponentType + Text: ComponentType +} +``` + +| Name | Type | Description | +| ---------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Anchor` | `ComponentType`\<[`OryNodeAnchorProps`](OryNodeAnchorProps.md)\> | Anchor component, rendered whenever an "anchor" node is encountered | +| `Button` | `ComponentType`\<[`OryNodeButtonProps`](OryNodeButtonProps.md)\> | Button component, rendered whenever a button is encountered in the Ory UI Nodes. | +| `Captcha` | `ComponentType`\<[`OryNodeCaptchaProps`](OryNodeCaptchaProps.md)\> | The Captcha component is rendered whenever a "captcha" group is encountered. | +| `Checkbox` | `ComponentType`\<[`OryNodeInputProps`](OryNodeInputProps.md)\> | The Checkbox component is rendered whenever an input node with of boolean type is encountered. | +| `CodeInput` | `ComponentType`\<[`OryNodeInputProps`](OryNodeInputProps.md)\> | Special version of the Input component for OTP codes. | +| `ConsentScopeCheckbox` | `ComponentType`\<[`OryNodeConsentScopeCheckboxProps`](OryNodeConsentScopeCheckboxProps.md)\> | Special version of the Input component for scopes in OAuth2 flows. | +| `Image` | `ComponentType`\<[`OryNodeImageProps`](OryNodeImageProps.md)\> | The Image component is rendered whenever an "image" node is encountered. For example used in the "Logo" node. | +| `Input` | `ComponentType`\<[`OryNodeInputProps`](OryNodeInputProps.md)\> | The Input component is rendered whenever a "input" node is encountered. | +| `Label` | `ComponentType`\<[`OryNodeLabelProps`](OryNodeLabelProps.md)\> | The Label component is rendered around Input components and is used to render form labels. | +| `SsoButton` | `ComponentType`\<[`OryNodeSsoButtonProps`](OryNodeSsoButtonProps.md)\> | The SsoButton component is rendered whenever a button of group "oidc" or "saml" node is encountered. It renders the "Login with Google", "Login with Facebook" etc. buttons. | +| `Text` | `ComponentType`\<[`OryNodeTextProps`](OryNodeTextProps.md)\> | The Text component is rendered whenever a "text" node is encountered. | + +--- + +### Page + +```ts +Page: { + Header: ComponentType +} +``` + +| Name | Type | +| -------- | ---------------------------------------------------------------- | +| `Header` | `ComponentType`\<[`OryPageHeaderProps`](OryPageHeaderProps.md)\> | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowContainer.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowContainer.md new file mode 100644 index 0000000000..41d7e495ff --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFlowContainer.md @@ -0,0 +1,13 @@ +# OryFlowContainer + +```ts +type OryFlowContainer = + | LoginFlowContainer + | RegistrationFlowContainer + | RecoveryFlowContainer + | VerificationFlowContainer + | SettingsFlowContainer + | ConsentFlowContainer +``` + +A union type of all flow containers diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFormGroupProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormGroupProps.md new file mode 100644 index 0000000000..e3f79875f4 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormGroupProps.md @@ -0,0 +1,7 @@ +# OryFormGroupProps + +```ts +type OryFormGroupProps = PropsWithChildren +``` + +Props for the Form.Group component. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFormRootProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormRootProps.md new file mode 100644 index 0000000000..c530bc62ed --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormRootProps.md @@ -0,0 +1,15 @@ +# OryFormRootProps + +```ts +type OryFormRootProps = ComponentPropsWithoutRef<"form"> & { + onSubmit: FormEventHandler +} +``` + +Props for the Form.Root component. + +## Type declaration + +| Name | Type | +| ---------- | --------------------------------------- | +| `onSubmit` | `FormEventHandler`\<`HTMLFormElement`\> | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSectionContentProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSectionContentProps.md new file mode 100644 index 0000000000..a5d71a7c12 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSectionContentProps.md @@ -0,0 +1,8 @@ +# OryFormSectionContentProps + +```ts +type OryFormSectionContentProps = PropsWithChildren<{ + description?: string + title?: string +}> +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSectionFooterProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSectionFooterProps.md new file mode 100644 index 0000000000..b146a08e09 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSectionFooterProps.md @@ -0,0 +1,7 @@ +# OryFormSectionFooterProps + +```ts +type OryFormSectionFooterProps = PropsWithChildren<{ + text?: string +}> +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSsoRootProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSsoRootProps.md new file mode 100644 index 0000000000..f49d683a8b --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryFormSsoRootProps.md @@ -0,0 +1,7 @@ +# OryFormSsoRootProps + +```ts +type OryFormSsoRootProps = PropsWithChildren<{ + nodes: UiNode[] +}> +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeAnchorProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeAnchorProps.md new file mode 100644 index 0000000000..7b67e3d93c --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeAnchorProps.md @@ -0,0 +1,15 @@ +# OryNodeAnchorProps + +```ts +type OryNodeAnchorProps = { + attributes: UiNodeAnchorAttributes + node: UiNode +} & Omit, "children"> +``` + +## Type declaration + +| Name | Type | +| ------------ | ------------------------ | +| `attributes` | `UiNodeAnchorAttributes` | +| `node` | `UiNode` | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeButtonProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeButtonProps.md new file mode 100644 index 0000000000..ef3fd4d495 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeButtonProps.md @@ -0,0 +1,16 @@ +# OryNodeButtonProps + +```ts +type OryNodeButtonProps = { + attributes: UiNodeInputAttributes + node: UiNode +} & Omit, "children"> & + ButtonVariants +``` + +## Type declaration + +| Name | Type | +| ------------ | ----------------------- | +| `attributes` | `UiNodeInputAttributes` | +| `node` | `UiNode` | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeCaptchaProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeCaptchaProps.md new file mode 100644 index 0000000000..8337405a27 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeCaptchaProps.md @@ -0,0 +1,15 @@ +# OryNodeCaptchaProps + +```ts +type OryNodeCaptchaProps = { + node: UiNode +} +``` + +## Properties + +### node + +```ts +node: UiNode +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeConsentScopeCheckboxProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeConsentScopeCheckboxProps.md new file mode 100644 index 0000000000..24a6fb84c2 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeConsentScopeCheckboxProps.md @@ -0,0 +1,43 @@ +# OryNodeConsentScopeCheckboxProps + +```ts +type OryNodeConsentScopeCheckboxProps = { + attributes: UiNodeInputAttributes + node: UiNode + onCheckedChange: (checked: boolean) => void +} +``` + +## Properties + +### attributes + +```ts +attributes: UiNodeInputAttributes +``` + +--- + +### node + +```ts +node: UiNode +``` + +--- + +### onCheckedChange() + +```ts +onCheckedChange: (checked: boolean) => void; +``` + +#### Parameters + +| Parameter | Type | +| --------- | --------- | +| `checked` | `boolean` | + +#### Returns + +`void` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeImageProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeImageProps.md new file mode 100644 index 0000000000..009c7da93f --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeImageProps.md @@ -0,0 +1,24 @@ +# OryNodeImageProps + +```ts +type OryNodeImageProps = { + attributes: UiNodeImageAttributes + node: UiNode +} +``` + +## Properties + +### attributes + +```ts +attributes: UiNodeImageAttributes +``` + +--- + +### node + +```ts +node: UiNode +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeInputProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeInputProps.md new file mode 100644 index 0000000000..d11e0ccf42 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeInputProps.md @@ -0,0 +1,33 @@ +# OryNodeInputProps + +```ts +type OryNodeInputProps = { + attributes: UiNodeInputAttributes + node: UiNode + onClick?: MouseEventHandler +} +``` + +## Properties + +### attributes + +```ts +attributes: UiNodeInputAttributes +``` + +--- + +### node + +```ts +node: UiNode +``` + +--- + +### onClick? + +```ts +optional onClick: MouseEventHandler; +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeLabelProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeLabelProps.md new file mode 100644 index 0000000000..8ec4c27cf1 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeLabelProps.md @@ -0,0 +1,15 @@ +# OryNodeLabelProps + +```ts +type OryNodeLabelProps = { + attributes: UiNodeInputAttributes + node: UiNode +} & ComponentPropsWithoutRef<"label"> +``` + +## Type declaration + +| Name | Type | +| ------------ | ----------------------- | +| `attributes` | `UiNodeInputAttributes` | +| `node` | `UiNode` | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeSsoButtonProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeSsoButtonProps.md new file mode 100644 index 0000000000..c4b58d211f --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeSsoButtonProps.md @@ -0,0 +1,39 @@ +# OryNodeSsoButtonProps + +```ts +type OryNodeSsoButtonProps = { + attributes: UiNodeInputAttributes + node: UiNode + onClick?: () => void +} +``` + +Props for the OryNodeSsoButton component. + +## Properties + +### attributes + +```ts +attributes: UiNodeInputAttributes +``` + +--- + +### node + +```ts +node: UiNode +``` + +--- + +### onClick()? + +```ts +optional onClick: () => void; +``` + +#### Returns + +`void` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeTextProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeTextProps.md new file mode 100644 index 0000000000..e1e4f53abb --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryNodeTextProps.md @@ -0,0 +1,24 @@ +# OryNodeTextProps + +```ts +type OryNodeTextProps = { + attributes: UiNodeTextAttributes + node: UiNode +} +``` + +## Properties + +### attributes + +```ts +attributes: UiNodeTextAttributes +``` + +--- + +### node + +```ts +node: UiNode +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryPageHeaderProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryPageHeaderProps.md new file mode 100644 index 0000000000..42691abfd3 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryPageHeaderProps.md @@ -0,0 +1,5 @@ +# OryPageHeaderProps + +```ts +type OryPageHeaderProps = Record +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryProviderProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryProviderProps.md new file mode 100644 index 0000000000..a8a78b0d26 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryProviderProps.md @@ -0,0 +1,18 @@ +# OryProviderProps + +```ts +type OryProviderProps = { + components: OryFlowComponents + config: OryClientConfiguration +} & OryFlowContainer & + PropsWithChildren +``` + +Props type for the OryProvider component. + +## Type declaration + +| Name | Type | Description | +| ------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| `components` | [`OryFlowComponents`](OryFlowComponents.md) | The components to use for rendering Ory flows. You can provide custom components to override the default Ory components. | +| `config` | [`OryClientConfiguration`](../interfaces/OryClientConfiguration.md) | The Ory client configuration. This includes the SDK and project configuration. | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsFormProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsFormProps.md new file mode 100644 index 0000000000..9e97a82208 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsFormProps.md @@ -0,0 +1,8 @@ +# OrySettingsFormProps + +```ts +type OrySettingsFormProps = Omit, "action" | "method" | "onSubmit"> +``` + +Props for the OrySettingsFormSection component. This type extends the form element props but omits the `action`, `method`, and +`onSubmit` properties. diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsPasskeyProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsPasskeyProps.md new file mode 100644 index 0000000000..1fed7f005a --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsPasskeyProps.md @@ -0,0 +1,39 @@ +# OrySettingsPasskeyProps + +```ts +type OrySettingsPasskeyProps = { + removeButtons: UiNode & + { + onClick: () => void + }[] + triggerButton: UiNode & { + onClick: () => void + } +} +``` + +## Properties + +### removeButtons + +```ts +removeButtons: UiNode & { + onClick: () => void; +}[]; +``` + +--- + +### triggerButton + +```ts +triggerButton: UiNode & { + onClick: () => void; +}; +``` + +#### Type declaration + +| Name | Type | +| ----------- | ------------ | +| `onClick()` | () => `void` | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsRecoveryCodesProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsRecoveryCodesProps.md new file mode 100644 index 0000000000..4adf772174 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsRecoveryCodesProps.md @@ -0,0 +1,59 @@ +# OrySettingsRecoveryCodesProps + +```ts +type OrySettingsRecoveryCodesProps = { + codes: string[] + onRegenerate: () => void + onReveal: () => void + regnerateButton: UiNode | undefined + revealButton: UiNode | undefined +} +``` + +## Properties + +### codes + +```ts +codes: string[]; +``` + +--- + +### onRegenerate() + +```ts +onRegenerate: () => void; +``` + +#### Returns + +`void` + +--- + +### onReveal() + +```ts +onReveal: () => void; +``` + +#### Returns + +`void` + +--- + +### regnerateButton + +```ts +regnerateButton: UiNode | undefined +``` + +--- + +### revealButton + +```ts +revealButton: UiNode | undefined +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsSsoProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsSsoProps.md new file mode 100644 index 0000000000..ac3fb6070e --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsSsoProps.md @@ -0,0 +1,34 @@ +# OrySettingsSsoProps + +```ts +type OrySettingsSsoProps = { + linkButtons: UiNode & + { + onClick: () => void + }[] + unlinkButtons: UiNode & + { + onClick: () => void + }[] +} +``` + +## Properties + +### linkButtons + +```ts +linkButtons: UiNode & { + onClick: () => void; +}[]; +``` + +--- + +### unlinkButtons + +```ts +unlinkButtons: UiNode & { + onClick: () => void; +}[]; +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsTotpProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsTotpProps.md new file mode 100644 index 0000000000..df09c0adbb --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsTotpProps.md @@ -0,0 +1,55 @@ +# OrySettingsTotpProps + +```ts +type OrySettingsTotpProps = { + onUnlink: () => void + totpImage: UiNode | undefined + totpInput: UiNode | undefined + totpSecret: UiNode | undefined + totpUnlink: UiNode | undefined +} +``` + +## Properties + +### onUnlink() + +```ts +onUnlink: () => void; +``` + +#### Returns + +`void` + +--- + +### totpImage + +```ts +totpImage: UiNode | undefined +``` + +--- + +### totpInput + +```ts +totpInput: UiNode | undefined +``` + +--- + +### totpSecret + +```ts +totpSecret: UiNode | undefined +``` + +--- + +### totpUnlink + +```ts +totpUnlink: UiNode | undefined +``` diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsWebauthnProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsWebauthnProps.md new file mode 100644 index 0000000000..2790835bdb --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OrySettingsWebauthnProps.md @@ -0,0 +1,48 @@ +# OrySettingsWebauthnProps + +```ts +type OrySettingsWebauthnProps = { + nameInput: UiNode + removeButtons: UiNode & + { + onClick: () => void + }[] + triggerButton: UiNode & { + onClick: () => void + } +} +``` + +## Properties + +### nameInput + +```ts +nameInput: UiNode +``` + +--- + +### removeButtons + +```ts +removeButtons: UiNode & { + onClick: () => void; +}[]; +``` + +--- + +### triggerButton + +```ts +triggerButton: UiNode & { + onClick: () => void; +}; +``` + +#### Type declaration + +| Name | Type | +| ----------- | ------------ | +| `onClick()` | () => `void` | diff --git a/docs/elements/reference/@ory/elements-react/type-aliases/OryToastProps.md b/docs/elements/reference/@ory/elements-react/type-aliases/OryToastProps.md new file mode 100644 index 0000000000..1dd6013b23 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/type-aliases/OryToastProps.md @@ -0,0 +1,24 @@ +# OryToastProps + +```ts +type OryToastProps = { + id: string | number + message: UiText +} +``` + +## Properties + +### id + +```ts +id: string | number +``` + +--- + +### message + +```ts +message: UiText +``` diff --git a/docs/elements/reference/@ory/elements-react/variables/OryLocales.md b/docs/elements/reference/@ory/elements-react/variables/OryLocales.md new file mode 100644 index 0000000000..d43b1633f7 --- /dev/null +++ b/docs/elements/reference/@ory/elements-react/variables/OryLocales.md @@ -0,0 +1,5 @@ +# OryLocales + +```ts +const OryLocales: LocaleMap +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getFlowFactory.md b/docs/elements/reference/@ory/nextjs/app/functions/getFlowFactory.md new file mode 100644 index 0000000000..4163d168c2 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getFlowFactory.md @@ -0,0 +1,42 @@ +# getFlowFactory() + +```ts +function getFlowFactory( + params: QueryParams, + fetchFlowRaw: () => Promise>, + flowType: FlowType, + baseUrl: string, + route: string, + options: { + disableRewrite?: boolean + }, +): Promise +``` + +A function that creates a flow fetcher. The flow fetcher can be used to fetch a login, registration, recovery, settings, or +verification flow from the SDK. + +Unless you are building something very custom, you will not need this method. Use it with care and expect potential breaking +changes. + +## Type Parameters + +| Type Parameter | +| ---------------------- | +| `T` _extends_ `object` | + +## Parameters + +| Parameter | Type | Description | +| ------------------------- | --------------------------------------- | ---------------------------------------------- | +| `params` | `QueryParams` | The query parameters of the request. | +| `fetchFlowRaw` | () => `Promise`\<`ApiResponse`\<`T`\>\> | A function that fetches the flow from the SDK. | +| `flowType` | `FlowType` | The type of the flow. | +| `baseUrl` | `string` | The base URL of the application. | +| `route` | `string` | The route of the application. | +| `options` | \{ `disableRewrite?`: `boolean`; \} | Additional options. | +| `options.disableRewrite?` | `boolean` | - | + +## Returns + +`Promise`\<`null` \| `void` \| `T`\> diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getLoginFlow.md b/docs/elements/reference/@ory/nextjs/app/functions/getLoginFlow.md new file mode 100644 index 0000000000..66a3afd11e --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getLoginFlow.md @@ -0,0 +1,58 @@ +# getLoginFlow() + +```ts +function getLoginFlow( + config: { + project: { + login_ui_url: string + } + }, + params: QueryParams | Promise, +): Promise +``` + +Use this method in an app router page to fetch an existing login flow or to create a new one. This method works with server-side +rendering. + +## Parameters + +| Parameter | Type | Description | +| ----------------------------- | ------------------------------------------------- | ------------------------------------ | +| `config` | \{ `project`: \{ `login_ui_url`: `string`; \}; \} | The Ory configuration object. | +| `config.project` | \{ `login_ui_url`: `string`; \} | - | +| `config.project.login_ui_url` | `string` | - | +| `params` | `QueryParams` \| `Promise`\<`QueryParams`\> | The query parameters of the request. | + +## Returns + +`Promise`\<`null` \| `void` \| `LoginFlow`\> + +## Example + +```tsx +import { Login } from "@ory/elements-react/theme" +import { getLoginFlow, OryPageParams } from "@ory/nextjs/app" +import CardHeader from "@/app/auth/login/card-header" + +import config from "@/ory.config" + +export default async function LoginPage(props: OryPageParams) { + const flow = await getLoginFlow(config, props.searchParams) + + if (!flow) { + return null + } + + return ( + + ) +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getLogoutFlow.md b/docs/elements/reference/@ory/nextjs/app/functions/getLogoutFlow.md new file mode 100644 index 0000000000..a702b93a76 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getLogoutFlow.md @@ -0,0 +1,30 @@ +# getLogoutFlow() + +```ts +function getLogoutFlow(params: { returnTo?: string }): Promise +``` + +Use this method in an app router page to create a new logout flow. This method works with server-side rendering. + +## Parameters + +| Parameter | Type | Description | +| ------------------ | ---------------------------- | ------------------------------------ | +| `params` | \{ `returnTo?`: `string`; \} | The query parameters of the request. | +| `params.returnTo?` | `string` | - | + +## Returns + +`Promise`\<`LogoutFlow`\> + +## Example + +```tsx +import { getLogoutFlow } from "@ory/nextjs/app" + +async function LogoutLink() { + const flow = await getLogoutFlow() + + return Logout +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getRecoveryFlow.md b/docs/elements/reference/@ory/nextjs/app/functions/getRecoveryFlow.md new file mode 100644 index 0000000000..10f8dba64e --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getRecoveryFlow.md @@ -0,0 +1,57 @@ +# getRecoveryFlow() + +```ts +function getRecoveryFlow( + config: { + project: { + recovery_ui_url: string + } + }, + params: QueryParams | Promise, +): Promise +``` + +Use this method in an app router page to fetch an existing recovery flow or to create a new one. This method works with +server-side rendering. + +## Parameters + +| Parameter | Type | Description | +| -------------------------------- | ---------------------------------------------------- | ------------------------------------ | +| `config` | \{ `project`: \{ `recovery_ui_url`: `string`; \}; \} | The Ory configuration object. | +| `config.project` | \{ `recovery_ui_url`: `string`; \} | - | +| `config.project.recovery_ui_url` | `string` | - | +| `params` | `QueryParams` \| `Promise`\<`QueryParams`\> | The query parameters of the request. | + +## Returns + +`Promise`\<`null` \| `void` \| `RecoveryFlow`\> + +## Example + +```tsx +import { Recovery } from "@ory/elements-react/theme" +import { getRecoveryFlow, OryPageParams } from "@ory/nextjs/app" +import config from "@/ory.config" +import CardHeader from "@/app/auth/recovery/card-header" + +export default async function RecoveryPage(props: OryPageParams) { + const flow = await getRecoveryFlow(config, props.searchParams) + + if (!flow) { + return null + } + + return ( + + ) +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getRegistrationFlow.md b/docs/elements/reference/@ory/nextjs/app/functions/getRegistrationFlow.md new file mode 100644 index 0000000000..aa5afc9e76 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getRegistrationFlow.md @@ -0,0 +1,58 @@ +# getRegistrationFlow() + +```ts +function getRegistrationFlow( + config: { + project: { + registration_ui_url: string + } + }, + params: QueryParams | Promise, +): Promise +``` + +Use this method in an app router page to fetch an existing registration flow or to create a new one. This method works with +server-side rendering. + +## Parameters + +| Parameter | Type | Description | +| ------------------------------------ | -------------------------------------------------------- | ------------------------------------ | +| `config` | \{ `project`: \{ `registration_ui_url`: `string`; \}; \} | The Ory configuration object. | +| `config.project` | \{ `registration_ui_url`: `string`; \} | - | +| `config.project.registration_ui_url` | `string` | - | +| `params` | `QueryParams` \| `Promise`\<`QueryParams`\> | The query parameters of the request. | + +## Returns + +`Promise`\<`null` \| `void` \| `RegistrationFlow`\> + +## Example + +```tsx +import { Registration } from "@ory/elements-react/theme" +import { getRegistrationFlow, OryPageParams } from "@ory/nextjs/app" + +import config from "@/ory.config" +import CardHeader from "@/app/auth/registration/card-header" + +export default async function RegistrationPage(props: OryPageParams) { + const flow = await getRegistrationFlow(config, props.searchParams) + + if (!flow) { + return null + } + + return ( + + ) +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getServerSession.md b/docs/elements/reference/@ory/nextjs/app/functions/getServerSession.md new file mode 100644 index 0000000000..d085aadbb9 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getServerSession.md @@ -0,0 +1,27 @@ +# getServerSession() + +```ts +function getServerSession(): Promise +``` + +A helper to fetch the session on the server side. This method works with server-side rendering. + +## Returns + +`Promise`\<`null` \| `Session`\> + +The session object or null if no session is found. + +## Example + +```tsx +import { getServerSession } from "@ory/nextjs/app" + +async function MyComponent() { + const session = await getServerSession() + + if (!session) { + return

No session found

+ } +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getSettingsFlow.md b/docs/elements/reference/@ory/nextjs/app/functions/getSettingsFlow.md new file mode 100644 index 0000000000..08399cd7a1 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getSettingsFlow.md @@ -0,0 +1,58 @@ +# getSettingsFlow() + +```ts +function getSettingsFlow( + config: { + project: { + settings_ui_url: string + } + }, + params: QueryParams | Promise, +): Promise +``` + +Use this method in an app router page to fetch an existing login flow or to create a new one. This method works with server-side +rendering. + +## Parameters + +| Parameter | Type | Description | +| -------------------------------- | ---------------------------------------------------- | ------------------------------------ | +| `config` | \{ `project`: \{ `settings_ui_url`: `string`; \}; \} | The Ory configuration object. | +| `config.project` | \{ `settings_ui_url`: `string`; \} | - | +| `config.project.settings_ui_url` | `string` | - | +| `params` | `QueryParams` \| `Promise`\<`QueryParams`\> | The query parameters of the request. | + +## Returns + +`Promise`\<`null` \| `void` \| `SettingsFlow`\> + +## Example + +```tsx +import { Login } from "@ory/elements-react/theme" +import { getLoginFlow, OryPageParams } from "@ory/nextjs/app" + +import config from "@/ory.config" +import CardHeader from "@/app/auth/login/card-header" + +export default async function LoginPage(props: OryPageParams) { + const flow = await getLoginFlow(config, props.searchParams) + + if (!flow) { + return null + } + + return ( + + ) +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/functions/getVerificationFlow.md b/docs/elements/reference/@ory/nextjs/app/functions/getVerificationFlow.md new file mode 100644 index 0000000000..2eeb33a04e --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/functions/getVerificationFlow.md @@ -0,0 +1,58 @@ +# getVerificationFlow() + +```ts +function getVerificationFlow( + config: { + project: { + verification_ui_url: string + } + }, + params: QueryParams | Promise, +): Promise +``` + +Use this method in an app router page to fetch an existing verification flow or to create a new one. This method works with +server-side rendering. + +## Parameters + +| Parameter | Type | Description | +| ------------------------------------ | -------------------------------------------------------- | ------------------------------------ | +| `config` | \{ `project`: \{ `verification_ui_url`: `string`; \}; \} | The Ory configuration object. | +| `config.project` | \{ `verification_ui_url`: `string`; \} | - | +| `config.project.verification_ui_url` | `string` | - | +| `params` | `QueryParams` \| `Promise`\<`QueryParams`\> | The query parameters of the request. | + +## Returns + +`Promise`\<`null` \| `void` \| `VerificationFlow`\> + +## Example + +```tsx +import { Verification } from "@ory/elements-react/theme" +import { getVerificationFlow, OryPageParams } from "@ory/nextjs/app" + +import config from "@/ory.config" +import CardHeader from "@/app/auth/verification/card-header" + +export default async function VerificationPage(props: OryPageParams) { + const flow = await getVerificationFlow(config, props.searchParams) + + if (!flow) { + return null + } + + return ( + + ) +} +``` diff --git a/docs/elements/reference/@ory/nextjs/app/index.mdx b/docs/elements/reference/@ory/nextjs/app/index.mdx new file mode 100644 index 0000000000..dbf3560f5c --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/index.mdx @@ -0,0 +1,28 @@ +--- +id: index +title: "@ory/nextjs/app" +sidebar_label: "app" +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +# @ory/nextjs/app + +## Interfaces + +- [OryPageParams](interfaces/OryPageParams.md) + +## Functions + +- [getFlowFactory](functions/getFlowFactory.md) +- [getLoginFlow](functions/getLoginFlow.md) +- [getLogoutFlow](functions/getLogoutFlow.md) +- [getRecoveryFlow](functions/getRecoveryFlow.md) +- [getRegistrationFlow](functions/getRegistrationFlow.md) +- [getServerSession](functions/getServerSession.md) +- [getSettingsFlow](functions/getSettingsFlow.md) +- [getVerificationFlow](functions/getVerificationFlow.md) diff --git a/docs/elements/reference/@ory/nextjs/app/interfaces/OryPageParams.md b/docs/elements/reference/@ory/nextjs/app/interfaces/OryPageParams.md new file mode 100644 index 0000000000..fc2b154fd9 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/app/interfaces/OryPageParams.md @@ -0,0 +1,23 @@ +# OryPageParams + +A utility type that represents the query parameters of a request. + +This is needed because Next.js does not expose the query parameters as a tye. + +```ts +import { OryPageParams } from "@ory/nextjs/app" + +export default async function LoginPage(props: OryPageParams) { + // props.searchParams is a Promise that resolves to an object with the query parameters +} +``` + +## Properties + +### searchParams + +```ts +searchParams: Promise<{ + [key: string]: undefined | string | string[] +}> +``` diff --git a/docs/elements/reference/@ory/nextjs/middleware/functions/createOryMiddleware.md b/docs/elements/reference/@ory/nextjs/middleware/functions/createOryMiddleware.md new file mode 100644 index 0000000000..cc56b98502 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/middleware/functions/createOryMiddleware.md @@ -0,0 +1,54 @@ +# createOryMiddleware() + +```ts +function createOryMiddleware(options: { + forceCookieDomain?: string + forwardAdditionalHeaders?: string[] + project?: Partial +}): (r: NextRequest) => Promise> +``` + +Creates a Next.js middleware function that proxies requests to the Ory SDK. + +This middleware function intercepts requests to the Ory SDK and rewrites the URLs if in development mode or on vercel.com domains. + +## Parameters + +| Parameter | Type | Description | +| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `options` | \{ `forceCookieDomain?`: `string`; `forwardAdditionalHeaders?`: `string`[]; `project?`: `Partial`\<`AccountExperienceConfiguration`\>; \} | The Ory configuration to use for the middleware. | +| `options.forceCookieDomain?` | `string` | If you want to force a specific cookie domain, you can set it here. | +| `options.forwardAdditionalHeaders?` | `string`[] | By default headers are filtered to forward only a fixed list. If you need to forward additional headers you can use this setting to define them. | +| `options.project?` | `Partial`\<`AccountExperienceConfiguration`\> | If you want to use a specific project configuration, you can set it here. Make sure to pass the same project configuration that you pass to `@ory/elements-react` | + +## Returns + +The Ory Next.js middleware function + +```ts +(r: NextRequest): Promise>; +``` + +### Parameters + +| Parameter | Type | +| --------- | ------------- | +| `r` | `NextRequest` | + +### Returns + +`Promise`\<`NextResponse`\<`unknown`\>\> + +## Example + +```ts title="middleware.ts" +import { createOryMiddleware } from "@ory/elements/nextjs" + +export default createOryMiddleware({ + forwardAdditionalHeaders: ["authorization", "x-custom-header"], + forceCookieDomain: "example.com", + project: { + name: "my-project", + }, +}) +``` diff --git a/docs/elements/reference/@ory/nextjs/middleware/index.mdx b/docs/elements/reference/@ory/nextjs/middleware/index.mdx new file mode 100644 index 0000000000..109bce2b50 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/middleware/index.mdx @@ -0,0 +1,17 @@ +--- +id: index +title: "@ory/nextjs/middleware" +sidebar_label: "middleware" +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +# @ory/nextjs/middleware + +## Functions + +- [createOryMiddleware](functions/createOryMiddleware.md) diff --git a/docs/elements/reference/@ory/nextjs/pages/functions/useLoginFlow.md b/docs/elements/reference/@ory/nextjs/pages/functions/useLoginFlow.md new file mode 100644 index 0000000000..644af006ee --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/functions/useLoginFlow.md @@ -0,0 +1,13 @@ +# useLoginFlow() + +```ts +function useLoginFlow(): null | void | LoginFlow +``` + +A client side hook to create a login flow. + +## Returns + +`null` \| `void` \| `LoginFlow` + +A login flow diff --git a/docs/elements/reference/@ory/nextjs/pages/functions/useLogoutFlow.md b/docs/elements/reference/@ory/nextjs/pages/functions/useLogoutFlow.md new file mode 100644 index 0000000000..5b940a1c6a --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/functions/useLogoutFlow.md @@ -0,0 +1,13 @@ +# useLogoutFlow() + +```ts +function useLogoutFlow(): undefined | LogoutFlow +``` + +A client side hook to create a logout flow. + +## Returns + +`undefined` \| `LogoutFlow` + +A logout flow diff --git a/docs/elements/reference/@ory/nextjs/pages/functions/useRecoveryFlow.md b/docs/elements/reference/@ory/nextjs/pages/functions/useRecoveryFlow.md new file mode 100644 index 0000000000..1d558a73ff --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/functions/useRecoveryFlow.md @@ -0,0 +1,13 @@ +# useRecoveryFlow() + +```ts +function useRecoveryFlow(): null | void | RecoveryFlow +``` + +A client side hook to create a recovery flow. + +## Returns + +`null` \| `void` \| `RecoveryFlow` + +A recovery flow diff --git a/docs/elements/reference/@ory/nextjs/pages/functions/useRegistrationFlow.md b/docs/elements/reference/@ory/nextjs/pages/functions/useRegistrationFlow.md new file mode 100644 index 0000000000..d5de753f79 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/functions/useRegistrationFlow.md @@ -0,0 +1,13 @@ +# useRegistrationFlow() + +```ts +function useRegistrationFlow(): null | void | RegistrationFlow +``` + +A client side hook to create a registration flow. + +## Returns + +`null` \| `void` \| `RegistrationFlow` + +A registration flow diff --git a/docs/elements/reference/@ory/nextjs/pages/functions/useSettingsFlow.md b/docs/elements/reference/@ory/nextjs/pages/functions/useSettingsFlow.md new file mode 100644 index 0000000000..0a378a3c75 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/functions/useSettingsFlow.md @@ -0,0 +1,13 @@ +# useSettingsFlow() + +```ts +function useSettingsFlow(): null | void | SettingsFlow +``` + +A client side hook to create a settings flow. + +## Returns + +`null` \| `void` \| `SettingsFlow` + +A settings flow diff --git a/docs/elements/reference/@ory/nextjs/pages/functions/useVerificationFlow.md b/docs/elements/reference/@ory/nextjs/pages/functions/useVerificationFlow.md new file mode 100644 index 0000000000..c25f5449b7 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/functions/useVerificationFlow.md @@ -0,0 +1,13 @@ +# useVerificationFlow() + +```ts +function useVerificationFlow(): null | void | VerificationFlow +``` + +A client side hook to create a verification flow. + +## Returns + +`null` \| `void` \| `VerificationFlow` + +A verification flow diff --git a/docs/elements/reference/@ory/nextjs/pages/index.mdx b/docs/elements/reference/@ory/nextjs/pages/index.mdx new file mode 100644 index 0000000000..604f5f9dc9 --- /dev/null +++ b/docs/elements/reference/@ory/nextjs/pages/index.mdx @@ -0,0 +1,22 @@ +--- +id: index +title: "@ory/nextjs/pages" +sidebar_label: "pages" +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +# @ory/nextjs/pages + +## Hooks + +- [useLoginFlow](functions/useLoginFlow.md) +- [useLogoutFlow](functions/useLogoutFlow.md) +- [useRecoveryFlow](functions/useRecoveryFlow.md) +- [useRegistrationFlow](functions/useRegistrationFlow.md) +- [useSettingsFlow](functions/useSettingsFlow.md) +- [useVerificationFlow](functions/useVerificationFlow.md) diff --git a/docs/elements/reference/index.mdx b/docs/elements/reference/index.mdx new file mode 100644 index 0000000000..e77a184d91 --- /dev/null +++ b/docs/elements/reference/index.mdx @@ -0,0 +1,21 @@ +--- +id: index +title: Ory Elements Reference +sidebar_label: Reference +--- + +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +# Ory Elements Reference + +## Modules + +- [@ory/elements-react](@ory/elements-react/index.mdx) +- [@ory/elements-react/theme](@ory/elements-react/theme/index.mdx) +- [@ory/nextjs/app](@ory/nextjs/app/index.mdx) +- [@ory/nextjs/middleware](@ory/nextjs/middleware/index.mdx) +- [@ory/nextjs/pages](@ory/nextjs/pages/index.mdx) diff --git a/docs/elements/reference/typedoc-sidebar.ts b/docs/elements/reference/typedoc-sidebar.ts new file mode 100644 index 0000000000..e04fb5eeef --- /dev/null +++ b/docs/elements/reference/typedoc-sidebar.ts @@ -0,0 +1,684 @@ +import { SidebarsConfig } from "@docusaurus/plugin-content-docs" +const typedocSidebar: SidebarsConfig = { + items: [ + { + type: "category", + label: "@ory/elements-react", + items: [ + { + type: "category", + label: "Interfaces", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/ConsentFlow", + label: "ConsentFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/ConsentFlowContainer", + label: "ConsentFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/ErrorFlowContainer", + label: "ErrorFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/FlowContainerSetter", + label: "FlowContainerSetter", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/LoginFlowContainer", + label: "LoginFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/OryCardProps", + label: "OryCardProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/OryCardSettingsSectionProps", + label: "OryCardSettingsSectionProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/OryClientConfiguration", + label: "OryClientConfiguration", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/OryElementsConfiguration", + label: "OryElementsConfiguration", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/OryMessageContentProps", + label: "OryMessageContentProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/OryMessageRootProps", + label: "OryMessageRootProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/RecoveryFlowContainer", + label: "RecoveryFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/RegistrationFlowContainer", + label: "RegistrationFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/SettingsFlowContainer", + label: "SettingsFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/interfaces/VerificationFlowContainer", + label: "VerificationFlowContainer", + }, + ], + }, + { + type: "category", + label: "Type Aliases", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/FlowContextValue", + label: "FlowContextValue", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/FormState", + label: "FormState", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/FormStateAction", + label: "FormStateAction", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/FormValues", + label: "FormValues", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/IntlConfig", + label: "IntlConfig", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OnSubmitHandlerProps", + label: "OnSubmitHandlerProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryCardAuthMethodListItemProps", + label: "OryCardAuthMethodListItemProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryCardContentProps", + label: "OryCardContentProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryCardDividerProps", + label: "OryCardDividerProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryCardFooterProps", + label: "OryCardFooterProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryCardHeaderProps", + label: "OryCardHeaderProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryCardLogoProps", + label: "OryCardLogoProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFlowComponentOverrides", + label: "OryFlowComponentOverrides", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFlowComponents", + label: "OryFlowComponents", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFlowContainer", + label: "OryFlowContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFormGroupProps", + label: "OryFormGroupProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFormRootProps", + label: "OryFormRootProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFormSectionContentProps", + label: "OryFormSectionContentProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFormSectionFooterProps", + label: "OryFormSectionFooterProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryFormSsoRootProps", + label: "OryFormSsoRootProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeAnchorProps", + label: "OryNodeAnchorProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeButtonProps", + label: "OryNodeButtonProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeCaptchaProps", + label: "OryNodeCaptchaProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeConsentScopeCheckboxProps", + label: "OryNodeConsentScopeCheckboxProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeImageProps", + label: "OryNodeImageProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeInputProps", + label: "OryNodeInputProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeLabelProps", + label: "OryNodeLabelProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeSsoButtonProps", + label: "OryNodeSsoButtonProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryNodeTextProps", + label: "OryNodeTextProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryPageHeaderProps", + label: "OryPageHeaderProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryProviderProps", + label: "OryProviderProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OrySettingsFormProps", + label: "OrySettingsFormProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OrySettingsPasskeyProps", + label: "OrySettingsPasskeyProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OrySettingsRecoveryCodesProps", + label: "OrySettingsRecoveryCodesProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OrySettingsSsoProps", + label: "OrySettingsSsoProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OrySettingsTotpProps", + label: "OrySettingsTotpProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OrySettingsWebauthnProps", + label: "OrySettingsWebauthnProps", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/type-aliases/OryToastProps", + label: "OryToastProps", + }, + ], + }, + { + type: "category", + label: "Variables", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/variables/OryLocales", + label: "OryLocales", + }, + ], + }, + { + type: "category", + label: "Components", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryCard", + label: "OryCard", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryCardContent", + label: "OryCardContent", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryCardFooter", + label: "OryCardFooter", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryCardHeader", + label: "OryCardHeader", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryCardValidationMessages", + label: "OryCardValidationMessages", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryConfigurationProvider", + label: "OryConfigurationProvider", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryConsentCard", + label: "OryConsentCard", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryForm", + label: "OryForm", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryFormGroupDivider", + label: "OryFormGroupDivider", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryFormSsoButtons", + label: "OryFormSsoButtons", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryFormSsoForm", + label: "OryFormSsoForm", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryPageHeader", + label: "OryPageHeader", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OryProvider", + label: "OryProvider", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OrySelfServiceFlowCard", + label: "OrySelfServiceFlowCard", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OrySettingsCard", + label: "OrySettingsCard", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/OrySettingsFormSection", + label: "OrySettingsFormSection", + }, + ], + }, + { + type: "category", + label: "Hooks", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/useComponents", + label: "useComponents", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/useNodeSorter", + label: "useNodeSorter", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/useOryConfiguration", + label: "useOryConfiguration", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/useOryFlow", + label: "useOryFlow", + }, + ], + }, + { + type: "category", + label: "Utilities", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/messageTestId", + label: "messageTestId", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/functions/uiTextToFormattedMessage", + label: "uiTextToFormattedMessage", + }, + ], + }, + ], + link: { + type: "doc", + id: "elements/reference/@ory/elements-react/index", + }, + }, + { + type: "category", + label: "@ory/elements-react/theme", + items: [ + { + type: "category", + label: "Default Components", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultButtonSocial", + label: "DefaultButtonSocial", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultCard", + label: "DefaultCard", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultCardContent", + label: "DefaultCardContent", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultCardFooter", + label: "DefaultCardFooter", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultCardHeader", + label: "DefaultCardHeader", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultCardLogo", + label: "DefaultCardLogo", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultCurrentIdentifierButton", + label: "DefaultCurrentIdentifierButton", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultFormContainer", + label: "DefaultFormContainer", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultMessage", + label: "DefaultMessage", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/DefaultMessageContainer", + label: "DefaultMessageContainer", + }, + ], + }, + { + type: "category", + label: "Flows", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Consent", + label: "Consent", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Error", + label: "Error", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Login", + label: "Login", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Recovery", + label: "Recovery", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Registration", + label: "Registration", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Settings", + label: "Settings", + }, + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/Verification", + label: "Verification", + }, + ], + }, + { + type: "category", + label: "Utilities", + items: [ + { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/functions/getOryComponents", + label: "getOryComponents", + }, + ], + }, + ], + link: { + type: "doc", + id: "elements/reference/@ory/elements-react/theme/index", + }, + }, + { + type: "category", + label: "@ory/nextjs/app", + items: [ + { + type: "category", + label: "Interfaces", + items: [ + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/interfaces/OryPageParams", + label: "OryPageParams", + }, + ], + }, + { + type: "category", + label: "Functions", + items: [ + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getFlowFactory", + label: "getFlowFactory", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getLoginFlow", + label: "getLoginFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getLogoutFlow", + label: "getLogoutFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getRecoveryFlow", + label: "getRecoveryFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getRegistrationFlow", + label: "getRegistrationFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getServerSession", + label: "getServerSession", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getSettingsFlow", + label: "getSettingsFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/app/functions/getVerificationFlow", + label: "getVerificationFlow", + }, + ], + }, + ], + link: { + type: "doc", + id: "elements/reference/@ory/nextjs/app/index", + }, + }, + { + type: "category", + label: "@ory/nextjs/middleware", + items: [ + { + type: "category", + label: "Functions", + items: [ + { + type: "doc", + id: "elements/reference/@ory/nextjs/middleware/functions/createOryMiddleware", + label: "createOryMiddleware", + }, + ], + }, + ], + link: { + type: "doc", + id: "elements/reference/@ory/nextjs/middleware/index", + }, + }, + { + type: "category", + label: "@ory/nextjs/pages", + items: [ + { + type: "category", + label: "Hooks", + items: [ + { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/functions/useLoginFlow", + label: "useLoginFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/functions/useLogoutFlow", + label: "useLogoutFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/functions/useRecoveryFlow", + label: "useRecoveryFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/functions/useRegistrationFlow", + label: "useRegistrationFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/functions/useSettingsFlow", + label: "useSettingsFlow", + }, + { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/functions/useVerificationFlow", + label: "useVerificationFlow", + }, + ], + }, + ], + link: { + type: "doc", + id: "elements/reference/@ory/nextjs/pages/index", + }, + }, + ], +} +export default typedocSidebar diff --git a/docs/getting-started/integrate-auth/15_nextjs.mdx b/docs/getting-started/integrate-auth/15_nextjs.mdx deleted file mode 100644 index 693c477bd7..0000000000 --- a/docs/getting-started/integrate-auth/15_nextjs.mdx +++ /dev/null @@ -1,111 +0,0 @@ ---- -id: nextjs -title: Integrate authentication into Next.js -sidebar_label: Next.js ---- - -```mdx-code-block -import Teaser from '../_common/teaser.mdx' -import mp4 from '../_static/nextjs/screencast.mp4' -import webm from '../_static/nextjs/screencast.webm' - -Next.js} - mp4={mp4} - webm={webm} -/> -``` - -## Create Next.js app - -First, create a new Next.js project. Run: - -```shell -npx create-next-app@latest -cd app-name -``` - -When prompted, select the following options: - -- Use TypeScript: Yes -- Use ESLint: Yes -- Use Tailwind CSS: Yes -- Use `src/` directory: No -- Use App Router: Yes -- Customize the default import alias: No - -## Install Ory SDK - -To interact with Ory's APIs, install the Ory SDK: - -``` -npm i @ory/client-fetch -``` - -## Create a new Ory project - -```mdx-code-block -import CreateProject from '../_common/create-project.mdx' - - -``` - -## Install Ory CLI - -Follow [this guide](../../guides/cli/01_installation.mdx) to install the Ory CLI on your machine. - -### Why do I need the Ory CLI - -```mdx-code-block -import OryCLI from '../_common/ory-cli.mdx' - - -``` - -## Run Ory APIs on `localhost` - -In a new terminal window, run the Ory Tunnel: - -```shell -ory tunnel --project http://localhost:3000 -``` - -This command mirrors Ory APIs on `http://localhost:4000`. Use that URL as the `basePath` for the `@ory/client-fetch` SDK. - -## Validate and login - -To implement authentication, modify the existing `app/page.tsx` component to include the following: - -```mdx-code-block -import CodeBlock from '@theme/CodeBlock' -import HomePage from '!!raw-loader!../../../code-examples/protect-page-login/nextjs/app/page.tsx' - -{HomePage} - -``` - -The component checks whether a user is signed in and if so, shows a logout link and the user's session information. Otherwise, it -shows a login and registration link. - -## Run your Next.js app - -Now that your app is ready, it's time to run it! Start the Next.js development server: - -```shell -npm run dev -``` - -Go to [localhost:3000](http://localhost:3000/) to access your application. - -### Test your application - -Access your Next.js app at [localhost:3000](http://localhost:3000/). Since there is no active session you will be redirected to -the login screen. Then click the link to **Sign up** and create a new account. - -## Go to production - -```mdx-code-block -import ToProd from '../_common/going-to-prod.mdx' - - -``` diff --git a/docs/getting-started/integrate-auth/16_nextjs_app_router.mdx b/docs/getting-started/integrate-auth/16_nextjs_app_router.mdx new file mode 100644 index 0000000000..65bbe1f233 --- /dev/null +++ b/docs/getting-started/integrate-auth/16_nextjs_app_router.mdx @@ -0,0 +1,206 @@ +--- +id: nextjs-app-router-quickstart +title: Next.js App Router Quickstart +sidebar_label: Next.js (App Router) +--- + +import Tabs from "@theme/Tabs" +import TabItem from "@theme/TabItem" +import CodeFromRemote from "@theme/CodeFromRemote" + +This quickstart will guide you through the process of setting up Ory Elements with the App Router in a Next.js application. + +:::info + +The code used in the following quickstart is available in the +[App Router example GitHub repository](https://github.com/ory/elements/tree/main/examples/nextjs-app-router) + +::: + +## Prerequisites + +:::note + +This quickstart assumes you're using the alias configuration and not using a `src/` directory. If your project uses `src/`, place +all files referenced as being in the `root` directory inside `src/` instead. + +::: + +1. Create a new Next.js application using your preferred package manager. You can use the following commands to create a new + Next.js app: + + ````mdx-code-block + + + + + ```bash + npm create next-app@latest + ``` + + + ```bash + pnpm create next-app + ``` + + + ```bash + yarn create next-app + ``` + + + ```bash + bun create next-app + ``` + + + ```` + +2. Install the `@ory/elements-react` and `@ory/nextjs` package in your Next.js application. + + ````mdx-code-block + + + ```bash + npm install @ory/elements-react @ory/nextjs + ``` + + + ```bash + pnpm install @ory/elements-react @ory/nextjs + ``` + + + ```bash + yarn install @ory/elements-react @ory/nextjs + ``` + + + ```bash + bun install @ory/elements-react @ory/nextjs + ``` + + + ```` + +3. Add the configuration for Ory Elements in your Next.js application. Create a new file named `ory.config.ts` in the root of your + project and add the following code: + + + +4. Add the middleware to your Next.js application. Create a new file named `middleware.ts` in the root of your project and add the + following code: + + + +5. Create a new folder named `app` in the root of your project. Inside the `app` folder, create a new folder named `auth`. Inside + the `auth` folder, create the following files: + + - `login/page.tsx` + - `registration/page.tsx` + - `recovery/page.tsx` + - `verification/page.tsx` + + Additionally, create a `settings` folder in the `app` directory: + + - `settings/page.tsx` + + Each of these files will contain the respective Ory Elements component for the self-service flow. + + ```mdx-code-block + + + + + + + + + + + + + + + + + + ``` + +6. Run the application and create your first user by navigating to `/auth/registration`. After registration, you can log in at + `/auth/login`. You can also access the other self-service flows at the following URLs: + + - Recovery: `/auth/recovery` + - Verification: `/auth/verification` + - Settings: `/settings` + + ````mdx-code-block + + + ```bash + npm run dev + ``` + + + ```bash + pnpm dev + ``` + + + ```bash + yarn dev + ``` + + + ``` + bun dev + ``` + + + ```` + + Open your browser and navigate to `http://localhost:3000/auth/registration` to create your first user. + +7. Optional: use your own Ory Network project by setting the `ORY_SDK_URL` environment variable in your `.env` file: + + ```mdx-code-block + + ``` + + You can find your Ory Network project URL in the [**Get started**](https://console.ory.sh/projects/current/get-started) section + of the Ory Console. + +## Next steps + +Now that you have set up Ory Elements with the App Router in your Next.js application, you can further customize the components, +add your own styles, and integrate them into your application as needed. You can also explore the Ory Elements documentation for +more information on how to use the components and customize them to fit your needs. See +[Theming](../../elements/guides/02_theming.mdx) for more details on how to customize look and feel of the components. diff --git a/docs/getting-started/integrate-auth/17_nextjs_pages_router.mdx b/docs/getting-started/integrate-auth/17_nextjs_pages_router.mdx new file mode 100644 index 0000000000..9d5e1cfbc1 --- /dev/null +++ b/docs/getting-started/integrate-auth/17_nextjs_pages_router.mdx @@ -0,0 +1,169 @@ +--- +id: nextjs-pages-router-quickstart +title: Next.js Pages Router Quickstart +sidebar_label: Next.js (Pages Router) +--- + +import Tabs from "@theme/Tabs" +import TabItem from "@theme/TabItem" +import CodeFromRemote from "@theme/CodeFromRemote" + +This quickstart will guide you through the process of setting up Ory Elements with the Pages Router in a Next.js application. + +:::info + +The code used in the following quickstart is available in the +[Pages Router example GitHub repository](https://github.com/ory/elements/tree/main/examples/nextjs-pages-router) + +::: + +## Prerequisites + +1. Install the `@ory/elements-react` and `@ory/nextjs` package in your Next.js application. + + ````mdx-code-block + + + ```bash + npm install @ory/elements-react @ory/nextjs + ``` + + + ```bash + pnpm install @ory/elements-react @ory/nextjs + ``` + + + ```bash + yarn install @ory/elements-react @ory/nextjs + ``` + + + ```bash + bun install @ory/elements-react @ory/nextjs + ``` + + + ```` + +2. Add the configuration for Ory Elements in your Next.js application. Create a new file named `ory.config.ts` in the root of your + project and add the following code: + + + +3. Add the middleware to your Next.js application. Create a new file named `middleware.ts` in the root of your project and add the + following code: + + + +4. Create a new folder named `pages` in the root of your project. Inside the `pages` folder, create a new folder named `auth`. + Inside the `auth` folder, create the following files: + + - `login.tsx` + - `registration.tsx` + - `recovery.tsx` + - `verification.tsx` + + Additionally, create a `settings` folder in the `pages` directory: + + - `settings.tsx` + + Each of these files will contain the respective Ory Elements component for the self-service flow. + + ```mdx-code-block + + + + + + + + + + + + + + + + + + ``` + +5. Run the application and create your first user by navigating to `/auth/registration`. After registration, you can log in at + `/auth/login`. You can also access the other self-service flows at the following URLs: + + - Recovery: `/auth/recovery` + - Verification: `/auth/verification` + - Settings: `/settings` + + ````mdx-code-block + + + ```bash + npm run dev + ``` + + + ```bash + pnpm dev + ``` + + + ```bash + yarn dev + ``` + + + ```bash + bun dev + ``` + + + ```` + + Open your browser and navigate to `http://localhost:3000/auth/registration` to create your first user. + +6. Optional: use your own Ory Network project by setting the `ORY_SDK_URL` environment variable in your `.env` file: + + ```mdx-code-block + + ``` + + You can find your Ory Network project URL in the [**Get started**](https://console.ory.sh/projects/current/get-started) section + of the Ory Console. + +## Next steps + +Now that you have set up Ory Elements with the App Router in your Next.js application, you can further customize the components, +add your own styles, and integrate them into your application as needed. You can also explore the Ory Elements documentation for +more information on how to use the components and customize them to fit your needs. See +[Theming](../../elements/guides/02_theming.mdx) for more details on how to customize look and feel of the components. diff --git a/docs/getting-started/integrate-auth/40_dotnet.mdx b/docs/getting-started/integrate-auth/40_dotnet.mdx index 80a2554d17..425087c085 100644 --- a/docs/getting-started/integrate-auth/40_dotnet.mdx +++ b/docs/getting-started/integrate-auth/40_dotnet.mdx @@ -179,7 +179,7 @@ app.Run(); 2. Add this code to the `Pages/Index.cshtml` file to present the data to the user: - ```cshtml title="Pages/Index.cshtml" showLineNumbers + ```csharp title="Pages/Index.cshtml" showLineNumbers @page @{ // add-lines-start diff --git a/docs/getting-started/local-development.mdx b/docs/getting-started/local-development.mdx index 20c33cfb7f..4db710f86c 100644 --- a/docs/getting-started/local-development.mdx +++ b/docs/getting-started/local-development.mdx @@ -48,7 +48,7 @@ Ory Network offers different environments for production, staging, and developme Review rate limits in the [Project Rate Limits](../guides/rate-limits) documentation. To match configuration between projects use the [Ory CLI](../guides/cli/config-with-cli). For more information on what environments are included on the Ory Network plans head -over to the [pricing](https://ory.sh/pricing) page. +over to the [pricing](https://ory.com/pricing) page. :::danger diff --git a/docs/getting-started/ory-network-oauth2.mdx b/docs/getting-started/ory-network-oauth2.mdx index 068458cde2..54fc32de2f 100644 --- a/docs/getting-started/ory-network-oauth2.mdx +++ b/docs/getting-started/ory-network-oauth2.mdx @@ -6,7 +6,7 @@ sidebar_label: Try it # Try common OAuth2 Grants -[Ory OAuth2 & OpenID Connect](https://www.ory.sh/hydra) (based on [Ory Hydra](https://github.com/ory/hydra)) is available in the +[Ory OAuth2 & OpenID Connect](https://www.ory.com/hydra) (based on [Ory Hydra](https://github.com/ory/hydra)) is available in the Ory Network out of the box. This means that you can use OIDC, Authorization Code Grant, Client Credentials Grant, and more, without additional configuration. diff --git a/docs/guides/cli/01_installation.mdx b/docs/guides/cli/01_installation.mdx index 4235867598..070427f16e 100644 --- a/docs/guides/cli/01_installation.mdx +++ b/docs/guides/cli/01_installation.mdx @@ -13,58 +13,13 @@ Network to self-hosted setups alike. ## Installation -You can install the Ory CLI directly on your machine, or run the tool in Docker. +```mdx-code-block +import Install from '@site/docs/_common/install-cli.mdx' -### macOS - -Run this command to install the Ory CLI using Homebrew: - -```shell -brew install ory/tap/cli -``` - -Verify the installation: - -```shell -ory help -``` - -### Linux - -The Ory CLI works on all Linux distributions. Run this command to install: - -```shell -bash <(curl https://raw.githubusercontent.com/ory/meta/master/install.sh) -b . ory -``` - -You may want to move the Ory CLI to your `$PATH`: - -```shell -sudo mv ./ory /usr/local/bin/ -``` - -Verify the installation after moving to `$PATH`: - -```shell -ory help -``` - -### Windows - -To install the CLI on Windows, use [scoop](https://scoop.sh). Run: - -```shell -> scoop bucket add ory https://github.com/ory/scoop.git -> scoop install ory -``` - -Verify the installation: - -```shell -ory help + ``` -### Docker +#### Docker ```shell ### Pull Ory CLI image @@ -74,7 +29,7 @@ docker pull oryd/ory docker run --rm -it oryd/ory help ``` -### Binary +#### Binary You can download the server and client binaries from the [GitHub "releases" tab](https://github.com/ory/cli/releases). diff --git a/docs/guides/cli/20_proxy-and-tunnel.mdx b/docs/guides/cli/20_proxy-and-tunnel.mdx index abfc69bb5a..78ff68d006 100644 --- a/docs/guides/cli/20_proxy-and-tunnel.mdx +++ b/docs/guides/cli/20_proxy-and-tunnel.mdx @@ -223,14 +223,14 @@ This is an example of a JWT with session and identity data: "state": "active", "state_changed_at": "2021-07-29T12:01:02.844472Z", "traits": { - "email": "dev+docs@ory.sh", + "email": "dev+docs@ory.com", "firstname": "Ory Docs", "vegetarian": true }, "verifiable_addresses": [ { "id": "64b3f270-70fc-48b8-8704-8085c783362b", - "value": "dev+docs@ory.sh", + "value": "dev+docs@ory.com", "verified": false, "via": "email", "status": "sent", @@ -242,7 +242,7 @@ This is an example of a JWT with session and identity data: "recovery_addresses": [ { "id": "526a2b25-2b9a-445b-982d-97862d9bbc9b", - "value": "dev+docs@ory.sh", + "value": "dev+docs@ory.com", "via": "email", "created_at": "2021-07-29T12:01:02.897407Z", "updated_at": "2021-07-29T12:01:02.897407Z" diff --git a/docs/guides/custom-domains.mdx b/docs/guides/custom-domains.mdx index 9520f5d229..9c6d590c36 100644 --- a/docs/guides/custom-domains.mdx +++ b/docs/guides/custom-domains.mdx @@ -22,7 +22,7 @@ This feature is only available on paid plans. :::info

- When you add a custom domain, it becomes your project's SDK Configuration URL. To check your SDK Configuration URL, go to  + When you add a custom domain, it becomes your project's SDK Configuration URL. To check your SDK Configuration URL, go to

::: @@ -35,9 +35,16 @@ Note that the slug in the above screenshot **is an example**. You will have your The Cookie Domain is the domain cookies will be scoped to. Ory Network will issue the session cookie to this domain. This means, that the cookie is available on this domain and all subdomains. In most cases you want this to be root domain of the CNAME record -you set up. See the [Cookie configuration document](https://www.ory.sh/kratos/docs/guides/configuring-cookies/) and +you set up. See the [Cookie configuration document](https://www.ory.com/kratos/docs/guides/configuring-cookies/) and [this Stack Overflow answer](https://stackoverflow.com/a/23086139). +:::warning + +Browsers reject cookies that are set on domains that appear on the [public suffix list](https://publicsuffix.org/) (PSL). These +domains are therefore not allowed as cookie domains. + +::: + ## CORS Cross-Origin Resource Sharing (CORS) is also enabled by default on the custom domain you add, in this example we have @@ -246,8 +253,8 @@ show "Enabled/Disabled". ![Custom Domain Cors enabled](./_static/custom-domains/cname-cors-enabled.png) -Once active, the Ory Account Experience is reachable at `https:///ui/welcome`. Learn how to configure a custom -UI: [Bring Your Own UI](../kratos/bring-your-own-ui/configure-ory-to-use-your-ui). +Once active, the Ory Account Experience is reachable at `https:///login`. Learn how to configure a custom UI: +[Bring Your Own UI](../kratos/bring-your-own-ui/configure-ory-to-use-your-ui). You may also remove your custom domain from the Console, but please note that **any requests to it will no longer resolve** once you do. diff --git a/docs/guides/gitops.mdx b/docs/guides/gitops.mdx index 5108e0ab37..48ab076f27 100644 --- a/docs/guides/gitops.mdx +++ b/docs/guides/gitops.mdx @@ -205,5 +205,5 @@ You can also version and track email templates in the same way. One option is to templates and add the .html templates there. As with the other configurations you have to convert it into base64 and add it to the config file, whenever you make changes to the template. -Read the [Custom email templates with Ory](https://www.ory.sh/custom-email-templates/) blog post to learn more about email +Read the [Custom email templates with Ory](https://www.ory.com/custom-email-templates/) blog post to learn more about email template configuration via the Ory CLI. diff --git a/docs/guides/integrate-with-ory-cloud-through-webhooks.mdx b/docs/guides/integrate-with-ory-cloud-through-webhooks.mdx index f449853b10..94f42fac15 100644 --- a/docs/guides/integrate-with-ory-cloud-through-webhooks.mdx +++ b/docs/guides/integrate-with-ory-cloud-through-webhooks.mdx @@ -230,7 +230,7 @@ function(ctx) { user_id: ctx.identity.id } "created_at": "0001-01-01T00:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "updated_at": "0001-01-01T00:00:00Z", - "value": "0.g5vv0qpoxl@ory.sh", + "value": "0.g5vv0qpoxl@ory.com", "via": "email" } ], @@ -239,7 +239,7 @@ function(ctx) { user_id: ctx.identity.id } "state": "active", "state_changed_at": "2023-01-31T11:19:37.096674Z", "traits": { - "email": "0.g5vv0qpoxl@ory.sh" + "email": "0.g5vv0qpoxl@ory.com" }, "updated_at": "0001-01-01T00:00:00Z", "verifiable_addresses": [ @@ -248,7 +248,7 @@ function(ctx) { user_id: ctx.identity.id } "id": "00000000-0000-0000-0000-000000000000", "status": "pending", "updated_at": "0001-01-01T00:00:00Z", - "value": "0.g5vv0qpoxl@ory.sh", + "value": "0.g5vv0qpoxl@ory.com", "verified": false, "via": "email" } @@ -458,7 +458,7 @@ replaces the entire identity traits object. It isn't possible to update only a s { "identity": { "traits": { - "email": "0.g5vv0qpoxl@ory.sh", + "email": "0.g5vv0qpoxl@ory.com", "the_webhook": "updated this value" } } @@ -523,6 +523,22 @@ verification or recovery addresses, these will be deleted unless the identity tr } ``` +#### Update the identity's external ID + +When the webhook target returns a 200 OK response code and the response body is a JSON object with the key `identity.external_id` +in it, the value from that object will be used to replace the identity's external ID before it is saved to the database. This +method replaces the previous external ID, if any. + +```json +{ + "identity": { + // highlight-start + "external_id": "external-id-from-webhook" + // highlight-end + } +} +``` + ### Flow-interrupting webhooks If you want the result of webhook execution to have the potential of interrupting the flow, you can configure the webhook to parse diff --git a/docs/guides/permissions/overview.mdx b/docs/guides/permissions/overview.mdx index 9276f7674e..90eb2e0bb5 100644 --- a/docs/guides/permissions/overview.mdx +++ b/docs/guides/permissions/overview.mdx @@ -10,7 +10,7 @@ import CodeFromRemote from "@theme/CodeFromRemote" import BrowserWindow from "@site/src/theme/BrowserWindow" ``` -[Ory Permissions](https://www.ory.sh/permissions/) (based on [Ory Keto](https://github.com/ory/keto)) implements +[Ory Permissions](https://www.ory.com/permissions/) (based on [Ory Keto](https://github.com/ory/keto)) implements [Google Zanzibar](https://research.google/pubs/pub48190/). This document explains the most fundamental concepts necessary to work with Ory Permissions and gives you an opportunity to create and query a simple set of relationships. diff --git a/docs/guides/rate-limits.mdx b/docs/guides/rate-limits.mdx index aa018fcb49..c9557d098f 100644 --- a/docs/guides/rate-limits.mdx +++ b/docs/guides/rate-limits.mdx @@ -4,34 +4,23 @@ title: Understand Ory Network rate limiting sidebar_label: Rate limits --- -This page provides a high level overview of the rate limiting mechanisms employed by Ory to ensure system security and -availability. Rate limiting is important to protect your applications against abuse and attacks, prevent service disruptions, and -ensure fair usage for all our customers. +This page provides a high-level overview of the rate limiting mechanisms employed by Ory to ensure system security and +availability. Rate limiting protects your applications against abuse and attacks, prevents service disruptions, and ensures fair +usage for all our customers. ## Types of rate limits -Ory implements two main rate limits: - -1. Project rate limits in Workspaces: These limits are determined by your Ory subscription plan and project environment. They - define the maximum number of requests your projects can make to Ory's APIs within a given timeframe. This ensures fair resource - allocation across all Ory projects. - 1. These limits are applied at the project level, meaning all requests from a specific project contribute to the rate limit - counter for that project. - 2. Project rate limits are defined in terms of: - - Burst limit: This governs the maximum number of requests allowed per second for temporary spikes in traffic. - - Sustained limit: This sets the maximum request count over one minute, ensuring consistent and fair usage. -2. Endpoint based rate limits: These limits focus on safeguarding specific endpoints of your Ory projects against common attack - vectors like brute-force and credential stuffing attempts. They typically consider factors like source IP address and request - frequency to identify and mitigate malicious activity. - 1. Endpoint-based rate limits act as a first line of defense for your project endpoints. These limits often use the source IP - address as a key criterion, allowing Ory to identify and block requests from suspicious or malicious sources. - 2. By analyzing request patterns and incorporating factors like source IP, Ory can effectively differentiate between legitimate - user traffic and potentially harmful bot activity. +Ory implements two main rate limit types: + +1. Project rate limits: Based on your subscription plan and environment (Production, Staging, or Development). These control the + overall request volume your projects can make to Ory's APIs. +2. Endpoint-based rate limits: Additional security controls that protect specific endpoints against attacks like brute-force, + credential stuffing, and concurrent request abuse, regardless of your project limits. ## Project rate limits in workspaces -With the introduction of Workspaces in Ory Network, rate limits are now applied to projects based on their assigned environment -and the Workspace's subscription plan. This approach ensures fair resource allocation and maintains the stability of the Ory +With the introduction of workspaces in Ory Network, rate limits are now applied to projects based on their assigned environment +and the workspace's subscription plan. This approach ensures fair resource allocation and maintains the stability of the Ory Network across different usage scenarios. ### How project rate limits work in workspaces @@ -40,11 +29,10 @@ Rate limits for each project are determined by two main factors: 1. Workspace subscription: Your subscription plan (Developer, Production, Growth, or Enterprise) sets the baseline for your rate limits. -2. Project environment: Within each Workspace, projects can be assigned to Production, Staging, or Development environments, each +2. Project environment: Within each workspace, projects can be assigned to Production, Staging, or Development environments, each with specific rate limit configurations. -For a detailed explanation of Workspaces and Environments, please refer to our -[Workspaces and Environments guide](/docs/guides/workspaces). +For a detailed explanation of workspaces and environments, see our [Workspaces and environments guide](/docs/guides/workspaces). ### Rate limit structure @@ -57,7 +45,7 @@ Each rate limit policy includes two limits: To identify the rate limits that apply to your project: -1. Check your Workspace subscription plan (Developer, Production, Growth, or Enterprise). +1. Check your workspace subscription plan (Developer, Production, Growth, or Enterprise). 2. Identify the environment (Production, Staging, or Development) assigned to your project. 3. Refer to the tables below based on your subscription plan and project environment. @@ -131,14 +119,14 @@ Production plan rate limits also apply to the Legacy `Essential` plan. :::note -Growth plan rate limits also apply to the Legacy `Scale` plan. +Growth plan rate limits also apply to the legacy `Scale` plan. ::: #### Enterprise plan rate limits -The Enterprise plan has the same default rate limits as the Growth plan. If you use case requires higher limits, please -[get in touch with us to discuss your requirements](https://ory.sh/contact). +The Enterprise plan has the same default rate limits as the Growth plan. If your use case requires higher limits, +[get in touch with us to discuss your requirements](https://ory.com/contact). | Environment | Path / Bucket | Burst (rps) | Sustained (rpm) | | :-------------------- | :------------------------- | ----------: | --------------: | @@ -156,72 +144,94 @@ The Enterprise plan has the same default rate limits as the Growth plan. If you | | `/scim/**` | 1 | 10 | | | `*` | 5 | 150 | -## Endpoint based rate limits +## Endpoint-based rate limits -Endpoint based rate limits are controls applied to individual API endpoints within your Ory projects. Unlike project rate limits, -which govern overall project request volumes, endpoint based rate limits focus on safeguarding specific functionalities against +Endpoint-based rate limits are controls applied to individual API endpoints within your Ory projects. Unlike project rate limits, +which govern overall project request volumes, endpoint-based rate limits focus on safeguarding specific functionalities against abuse. -### How endpoint based rate limits work +:::note + +Endpoint-based rate limits operate independently from project rate limits in workspaces. While project rate limits control overall +request volumes based on your subscription and environment, endpoint-based rate limits provide additional security for specific +endpoints regardless of your project rate limit values. + +::: + +### Purpose of endpoint-based rate limits + +Endpoint-based rate limits protect individual endpoints against common attack vectors like brute-force and credential stuffing. +These attacks typically involve numerous attempts to guess credentials or exploit vulnerabilities, often from a limited set of IP +addresses or JA4 fingerprints. + +Benefits: -These limits act as a first line of defense for your project endpoints. They analyze incoming request patterns and consider -factors such as: +- Enhanced security: Restricts requests from specific sources, making attacks significantly harder to succeed +- Bot protection: Differentiates genuine users from harmful automated activity +- Granular control: Fine-tunes security for individual endpoints without compromising user experience +- Enterprise & Growth flexibility: Allows IP whitelisting for high-volume legitimate traffic -- Source IP Address: Identifies and potentially blocks requests from suspicious sources or those exhibiting behavior indicative of - malicious activity. -- Request Frequency: Monitors how often requests are made to a specific endpoint to detect and thwart attempts to overwhelm the - system or exploit vulnerabilities. -- User Authentication: (If applicable) Considers whether requests are authenticated and may apply different limits for - authenticated vs. unauthenticated requests. -- Request Method: May apply different limits based on the HTTP method used (GET, POST, etc.). -- IP Whitelist Status: Applies higher limits to whitelisted IPs for Enterprise and Growth customers. +### Types of endpoint-based protection -### Purpose endpoint based rate limits +Ory implements two layers of endpoint-based protection: -Ory implements endpoint based rate limits to proactively secure individual endpoints and protect against common attack vectors -like brute-force and credential stuffing, while allowing for higher volumes of legitimate traffic from trusted sources. These -attacks typically involve numerous attempts to guess credentials or exploit vulnerabilities, often from a limited set of IP -addresses. +#### Volumetric rate limits -1. Enhanced security: +Analyzes incoming request patterns based on: - - Restricts the number of requests from specific sources within a given timeframe. - - Makes it significantly harder for attackers to succeed with brute-force or credential stuffing attacks. - - Strengthens the security of your Ory projects and protects sensitive user data. +- Source identification: IP addresses and JA3/JA4 fingerprints +- Request frequency: Detects volumetric attacks and system overwhelm attempts +- Authentication status: Different limits for authenticated vs. unauthenticated requests +- HTTP method: Varying limits based on GET, POST, etc. +- Whitelist status: Higher limits for whitelisted IPs and JA4 fingerprints (Enterprise and Growth only) -2. Protection against malicious bots: +#### Inflight rate limits - - Differentiates between genuine user traffic and potentially harmful bot activity. - - Analyzes request patterns to identify and block automated malicious activities. +Inflight rate limits protect critical endpoints from concurrent request attacks. By preventing multiple requests to the same +resource at once, it eliminates race conditions, ensures data consistency, and lets critical operations complete safely. -3. Safeguarding specific endpoints: +:::note + +These limits mainly protect against write requests to the same resource happening in parallel — usually caused by implementation +issues. + +::: - - Offers granular control over how each endpoint handles traffic and responds to potential threats. - - Allows fine-tuning of security measures for individual endpoints. - - Optimizes protection without compromising the user experience. +### Protected endpoints -4. Fair usage: +The following endpoints are protected by different types of rate limiting: - - Complements project rate limits in ensuring fair resource allocation. - - Contributes to a fairer and more stable platform for all users by mitigating abusive traffic. +| Type | Endpoint | HTTP Methods | Ratelimit Key | Action | +| :--------- | :------------------------------------------ | :----------------------- | :----------------------------------------------- | :------------------------------------- | +| Volumetric | | | | To be added later | +| Inflight | `/admin/identities` | `POST`, `PATCH` | `{project_id} + {full_path}` | Blocks concurrent requests (enforced) | +| Inflight | `/admin/identities/{id}` | `PUT`, `PATCH`, `DELETE` | `{project_id} + {full_path}` | Blocks concurrent requests (enforced) | +| Inflight | `/admin/identities/{id}/credentials/{type}` | `DELETE` | `{project_id} + {full_path}` | Blocks concurrent requests (enforced) | +| Inflight | `/admin/identities/{id}/sessions` | `DELETE` | `{project_id} + {full_path}` | Blocks concurrent requests (enforced) | +| Inflight | `/admin/sessions/{id}` | `DELETE` | `{project_id} + {full_path}` | Logs concurrent requests (report-only) | +| Inflight | `/admin/sessions/{id}/extend` | `PATCH` | `{project_id} + {full_path}` | Logs concurrent requests (report-only) | +| Inflight | `/self-service/recovery` | `POST` | `{project_id} + {path} + "/" + {email\|flow_id}` | Logs concurrent requests (report-only) | -5. Flexibility for high volume legitimate traffic: - - Provides options for Enterprise and Growth customers to whitelist internal IPs for higher rate limits. - - Balances security needs with the requirements of high-volume legitimate traffic. +:::note + +Report-only endpoints are observed over a period of time before enforcement is enabled. They currently log rate limit violations +for monitoring purposes but don't block requests, while enforced endpoints return HTTP 429 when rate limits are exceeded. GET, +OPTIONS, and HEAD requests are exempt from rate limiting. + +::: -### Notes on rate limit rules +### Configuration and management #### Rule management -The endpoint based rate limit rules are set and managed by Ory. These rules are not directly configurable by Enterprise and Growth +The endpoint-based rate limit rules are set and managed by Ory. These rules aren't directly configurable by Enterprise and Growth customers yet. -#### IP Whitelisting for Enterprise and Growth plans +#### IP whitelisting for Enterprise and Growth plans Enterprise and Growth plans can whitelist internal IPs. This feature is designed for cases where these IPs generate high volumes of legitimate calls that might otherwise trigger rate-limit rules. - Whitelisted IPs are subject to the same rule structure but with higher limits. -- To whitelist IPs, please create a support ticket with Ory: . -- This feature ensures that high volume traffic from trusted sources is not interrupted while maintaining strong security - measures. +- To whitelist IPs, create a support ticket with Ory: . +- This feature ensures that high-volume traffic from trusted sources isn't interrupted while maintaining strong security measures. diff --git a/docs/guides/upgrade/01_sdk-v1.mdx b/docs/guides/upgrade/01_sdk-v1.mdx index 6acc7adf15..ae8ab94bd3 100644 --- a/docs/guides/upgrade/01_sdk-v1.mdx +++ b/docs/guides/upgrade/01_sdk-v1.mdx @@ -181,7 +181,7 @@ authorization are no longer prefixed with `admin` for better readability. Most ` - V0alpha2Api.AdminUpdateIdentity(oryAuthedContext, toUpdate.Id).AdminUpdateIdentityBody(ory.AdminUpdateIdentityBody{ + IdentityApi.UpdateIdentity(oryAuthedContext, toUpdate.Id).UpdateIdentityBody(ory.UpdateIdentityBody{ Traits: map[string]interface{}{ - "email": "dev+not-" + x.NewUUID().String() + "@ory.sh", + "email": "dev+not-" + x.NewUUID().String() + "@ory.com", }, }).Execute() diff --git a/docs/guides/user-impersonation.mdx b/docs/guides/user-impersonation.mdx new file mode 100644 index 0000000000..75a2588c8c --- /dev/null +++ b/docs/guides/user-impersonation.mdx @@ -0,0 +1,103 @@ +--- +id: user-impersonation +title: Implementing user impersonation securely +sidebar_label: User impersonation +--- + +User impersonation is a security and administrative feature that allows authorized users (for example, system administrators or +support agents) to temporarily become another user within a system, accessing the application exactly as that user would see and +experience it. + +To understand user impersonation, it is helpful to distinguish between authentication and authorization. + +## Authentication vs. authorization + +- Authentication is the process of determining and proving who a user or system is. It answers the question, "Who is doing the + action?" +- Authorization is the process of determining what an authenticated subject, such as a user or a service, is allowed to do. It + answers the question, "Is this subject allowed to do the action?" + +For secure user impersonation, it is important to not break the guarantees given by authentication and authorization. Therefore, +impersonation doesn't change who is authenticated; it changes the subject used for subsequent authorization decisions. + +This guide presents a secure pattern for implementing user impersonation, using Ory Kratos, that doesn't break the security +guarantees of your system. + +## How impersonation works + +A secure impersonation flow doesn't create a new login session for the user being impersonated or compromise the impersonating +user's authenticated identity. The system always knows who the authenticated impersonating user is. + +The crucial check relies on the immutable identity provided by Ory, such as the `identity.id` from the +[/whoami](https://www.ory.com/docs/reference/api#tag/frontend/operation/toSession) API response from Ory Kratos or the `subject` +claim from an OAuth2 token introspection from Ory Hydra. + +This approach preserves the core promises of both authentication and authorization: + +- The user doing the impersonating remains authenticated, which is critical for audit trails. +- The system makes an explicit authorization decision before granting impersonation capabilities. +- Application logic continues to work with a clear subject, unaware of the impersonation details. + +This check can be as simple as verifying group membership, for example, "is the user in the `support-agents` group?", or can +involve complex rules based on context, such as the data, group membership, or active back-channel consent for the impersonated +user. + +## Impersonation implementation suggestion + +You can abstract the complexity of impersonation by using a middleware that runs between your authentication and authorization +layers. This middleware intercepts incoming requests to manage the impersonation logic before the request reaches your application +code. + +The middleware performs these steps: + +1. It identifies the authenticated user from a valid session. With Ory Kratos, this is the `identity.id` from the + [/whoami](https://www.ory.com/docs/reference/api#tag/frontend/operation/toSession) API response. With Ory Hydra it is the + subject claim from an OAuth2 token introspection. +1. It looks for an impersonation instruction in the request, for example a special HTTP header or a query parameter that contains + the ID of the user to impersonate. +1. When it detects an impersonation request, the middleware performs an authorization check - for example with + [Ory Keto](https://www.ory.com/docs/reference/api#tag/permission/operation/checkPermission). For example, "Does the + authenticated user have permission to impersonate this user?" +1. If the authorization check passes, the middleware sets the impersonated user's ID as the effective subject for the downstream + request. It's good practice to also pass along the impersonating user's ID in a separate header (for example, + `X-Original-Subject-ID`) for detailed audit logging. +1. The middleware then forwards the request to the application. + +Your application code then uses the effective subject to perform its own authorization checks without needing to know that an +impersonation session is active. When the user requests to end the impersonation session, the middleware simply stops substituting +the subject on subsequent requests. + +Using a middleware for impersonation provides several advantages: + +- You never break the authentication promise keeping a clear security context. Audit logs can record actions taken by the + authenticated impersonating user "on behalf of" the impersonated user, providing a complete and accurate record. +- Decoupled application logic means your application code stays simple. It continues to make authorization decisions based on the + subject it receives, without needing any special logic to handle impersonation. +- All impersonation rules are managed in one place. This makes it easy to update, audit, or revoke impersonation permissions + across your entire system without changing your application code. + +## Implementation best practices + +When implementing your user impersonation flow, consider the following best practices. + +1. Limit scope + +- Not all admins should have impersonation rights +- Limit who can be impersonated (protect executives, other admins) +- Restrict available actions during impersonation, for example, prevent sensitive operations (password changes, account deletion) +- Implement time limits and automatic session expiration + +2. Transparency + +- Log every action taken during impersonation +- Notify impersonated user (email/notification) +- Maintain a clear audit trail + +User impersonation is a powerful administrative tool that requires careful implementation, strong security controls, and +comprehensive auditing to prevent abuse while enabling legitimate support and troubleshooting activities. + +```mdx-code-block +import Help from '@site/docs/_common/need-help.mdx' + + +``` diff --git a/docs/guides/workspaces.mdx b/docs/guides/workspaces.mdx index 3c3d0373c6..0643ec8dad 100644 --- a/docs/guides/workspaces.mdx +++ b/docs/guides/workspaces.mdx @@ -68,7 +68,7 @@ Example for a Growth Subscription: :::note The number of projects allowed in each environment depends on your plan. Please check the -[Pricing page](https://www.ory.sh/pricing/) for details. +[Pricing page](https://www.ory.com/pricing/) for details. ::: diff --git a/docs/hydra/cli/hydra-create-jwk.md b/docs/hydra/cli/hydra-create-jwk.md index ceec7616b8..3a334775cc 100644 --- a/docs/hydra/cli/hydra-create-jwk.md +++ b/docs/hydra/cli/hydra-create-jwk.md @@ -1,7 +1,7 @@ --- id: hydra-create-jwk title: hydra create jwk -description: hydra create jwk Create a JSON Web Key Set with a JSON Web Key +description: hydra create jwk --- - + ``` @@ -643,7 +643,7 @@ Here are some examples for you to get a feeling for possible payloads! "attributes": { "name": "traits.email", "type": "email", - "value": "foo@ory.sh", + "value": "foo@ory.com", "disabled": false }, "messages": null, @@ -667,7 +667,7 @@ Here are some examples for you to get a feeling for possible payloads! "attributes": { "name": "traits.website", "type": "url", - "value": "https://www.ory.sh/", + "value": "https://www.ory.com/", "required": true, "disabled": false, "node_type": "input" @@ -740,7 +740,7 @@ For all traits, the labels and orders are taken from the Identity Schema. An Ide ```json { - "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/quickstart/email-password/identity.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -753,7 +753,7 @@ For all traits, the labels and orders are taken from the Identity Schema. An Ide "format": "email", "title": "E-Mail", "minLength": 3, - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -793,7 +793,7 @@ will generate the following fields - take note that the order of the JSON Schema "attributes": { "name": "traits.email", "type": "email", - "value": "foo@ory.sh", + "value": "foo@ory.com", "disabled": false }, "messages": null, diff --git a/docs/kratos/debug/csrf.mdx b/docs/kratos/debug/csrf.mdx index 98ba642c0f..2f6890f537 100644 --- a/docs/kratos/debug/csrf.mdx +++ b/docs/kratos/debug/csrf.mdx @@ -40,7 +40,7 @@ Quickstart guide. We don't recommend running them on separate subdomains, such as `https://kratos.my-website/` and `https://secureapp.my-website/`. To allow cookies to work across subdomains, make sure to set the domain name in the Kratos config file under -[`session.cookie.domain`](https://www.ory.sh/kratos/docs/next/guides/configuring-cookies/#session-cookies). +[`session.cookie.domain`](https://www.ory.com/kratos/docs/next/guides/configuring-cookies/#session-cookies). Running the apps on different domains won't work at all, such as `https://kratos-my-website/` and `https://secureapp-my-website/`. diff --git a/docs/kratos/debug/performance-out-of-memory-password-hashing-argon2.md b/docs/kratos/debug/performance-out-of-memory-password-hashing-argon2.md index 3780955ed5..fe112b5b30 100644 --- a/docs/kratos/debug/performance-out-of-memory-password-hashing-argon2.md +++ b/docs/kratos/debug/performance-out-of-memory-password-hashing-argon2.md @@ -13,7 +13,7 @@ To securely check if passwords match, Ory Kratos stores the Argon2 hash of every the desired security level as well as responsiveness. Because it isn't easy to determine the exact values without trying them out, Ory Kratos comes with a [CLI](../cli/kratos-hashers-argon2-calibrate.md) that automatically calibrates the values, following best practices. You can read more about these best practices in our -[blog post](https://www.ory.sh/choose-recommended-argon2-parameters-password-hashing/). +[blog post](https://www.ory.com/choose-recommended-argon2-parameters-password-hashing/). ## Common errors diff --git a/docs/kratos/emails-sms/01_sending-emails-smtp.mdx b/docs/kratos/emails-sms/01_sending-emails-smtp.mdx index 3a4c1021ff..73438cca22 100644 --- a/docs/kratos/emails-sms/01_sending-emails-smtp.mdx +++ b/docs/kratos/emails-sms/01_sending-emails-smtp.mdx @@ -1,7 +1,6 @@ --- id: sending-emails-smtp -title: Use a custom server to send Ory Identity messages to users -sidebar_label: Email delivery configuration +title: Email delivery configuration --- ```mdx-code-block @@ -10,7 +9,7 @@ import TabItem from "@theme/TabItem" import CodeBlock from "@theme/CodeBlock" ``` -The Ory Network comes with SMTP email sending configured out of the box. Ory emails are sent from this address: +The Ory Network provides a default SMTP server for sending emails. Ory emails are sent from this address: ``` {project.name} via Ory @@ -18,13 +17,147 @@ The Ory Network comes with SMTP email sending configured out of the box. Ory ema :::info -You must send emails using your SMTP server to change the sender address (`from_address`) and sender name (`from_name`). +To customize the sender address, sender name, and email content, you need to use your own SMTP server. This prevents abuse and +ensures high deliverability rates. ::: -## Send emails using your SMTP server +## Integrations -You can send emails from your own SMTP server. Follow these steps to configure Ory to use a custom SMTP server: +Ory's email delivery system is flexible and can be configured to work with various email service providers. Below are the +connection URIs and settings for some popular email service providers. + +If a provider you use is not listed here, you can still configure Ory to use it by following the instructions in the +[Your own server](#your-own-server) section. + +:::info Need more flexibility? + +Request an integration through our [support channels](https://www.ory.sh/support) or contribute one yourself by following the +[instructions on GitHub](https://github.com/ory/kratos). + +::: + +### Sendgrid + + + + +Use the following connection URI and settings to +[send emails using Sendgrid](https://www.twilio.com/docs/sendgrid/for-developers/sending-email/integrating-with-the-smtp-api) via +SMTP. + +- Sender address: an email address for a domain that has been verified in SendGrid via Domain Authentication (See your available + [senders](https://app.sendgrid.com/settings/sender_auth/senders).) +- Port: `587` +- Security Mode: `STARTTLS` +- Username: `apikey` (constant string) +- Hostname: `smtp.sendgrid.net` +- Password: the API key created in SendGrid, with the full “Mail Send” permission (no other permissions needed) +- SMTP Headers: none + +``` +smtp://apikey:@smtp.sendgrid.net:587/ + +# For example: +smtp://apikey:SG.xxxxxxxx.xxxxxxxxx@smtp.sendgrid.net:587/ +``` + + + + +Use the following connection URI and settings to +[send emails using Sendgrid](https://www.twilio.com/docs/sendgrid/api-reference/mail-send/mail-send) via HTTP. + +First, create a Sendgrid API key with the "Mail Send" permission on https://app.sendgrid.com/settings/api_keys. + +Then, add the following configuration to your Ory Identities configuration: + +```yaml title="kratos.yml" +courier: + delivery_strategy: http + http: + request_config: + url: https://api.sendgrid.com/v3/mail/send + method: POST + body: file:///etc/config/kratos/mail.template.jsonnet + headers: + "Content-Type": "application/json" + auth: + type: api_key + config: + name: Authorization + value: Bearer + in: header +``` + +Here is one example of a Jsonnet body: + +```jsonnet +function(ctx) { + "personalizations": [ + { + "to": [ + { + "email": if "TemplateData" in ctx && "To" in ctx.TemplateData then ctx.TemplateData.To else null + } + ], + "verificationCode": if "TemplateData" in ctx && "VerificationCode" in ctx.TemplateData then ctx.TemplateData.VerificationCode else null + } + ], + // Other values and personalizations ....... +} +``` + + + +To configure Sendgrid as your email provider, go to . + +### Mailgun + +Use the following connection URI to +[send emails using Mailgun](https://documentation.mailgun.com/en/latest/quickstart-sending.html) via SMTP. + +Note: The username and password must be [URI encoded](https://en.wikipedia.org/wiki/Percent-encoding). + +``` +smtp://{smtp-user}:{smtp-password}@smtp.mailgun.org:587 + +# For example: +# smtp://some-user%40mailgun.example.org:df2a2c4e-5caa-4f04-85b9-72d54a2468ad@smtp.eu.mailgun.org:587 +``` + +### AWS SES + +Use the following connection URI to +[send emails using AWS SES SMTP](https://docs.aws.amazon.com/ses/latest/dg/send-email-smtp.html) via SMTP. + +Note: The username and password must be [URI encoded](https://en.wikipedia.org/wiki/Percent-encoding). + +``` +smtp://{smtp-user}:{smtp-password}@email-smtp.{region}.amazonaws.com:587/ + +# For example: +# smtp://theuser:the-password@email-smtp.eu-central-1.amazonaws.com:587/ +``` + +### Postmark + +Use the following connection URI to [send emails using Postmark](https://postmarkapp.com/smtp-service) via SMTP. + +Note: The username and password must be [URI encoded](https://en.wikipedia.org/wiki/Percent-encoding). + +``` +smtp://{YOUR_POSTMARK_SEVER_API_TOKEN}:{YOUR_POSTMARK_SEVER_API_TOKEN}@smtp.postmarkapp.com:587/ + +# For example: +# smtp://thetoken:thetoken@smtp.postmarkapp.com:587/ +``` + +### Your own server + + + + You can send emails from your own SMTP server. Follow these steps to configure Ory to use a custom SMTP server: ```mdx-code-block @@ -77,104 +210,49 @@ Note: The username and password must be [URI encoded](https://en.wikipedia.org/w ``` -### SMTP security mechanisms +#### SMTP security mechanisms SMTP has six different security mechanisms. Most SMTP services today use Explicit StartTLS with trusted certificates. 1. **Recommended**: StartTLS with certificate trust verification. This is the most common option today: + ``` smtp://username:password@server:port/ ``` + 2. StartTLS without certificate trust verification: + ``` smtp://username:password@server:port/?skip_ssl_verify=true ``` + 3. Cleartext SMTP uses no encryption and is not secure. This option is often used in development environments: + ``` smtp://username:password@server:port/?disable_starttls=true ``` + 4. Implicit TLS with certificate trust verification: + ``` smtps://username:password@server:port/ ``` + 5. Implicit TLS without certificate trust verification: + ``` smtps://username:password@server:port/?skip_ssl_verify=true ``` + 6. Implicit TLS with certificate verification which works if the server is hosted on a subdomain and uses a non-wildcard domain certificate: + ``` smtps://username:password@subdomain.my-mailserver.com:1234/?server_name=my-mailserver.com ``` -### SMTP Integrations - -Sample connection URIs to send emails via SMTP using different providers. - -#### Mailgun - -Use the following connection URI to -[send emails using Mailgun](https://documentation.mailgun.com/en/latest/quickstart-sending.html) via SMTP. - -Note: The username and password must be [URI encoded](https://en.wikipedia.org/wiki/Percent-encoding). - -``` -smtp://{smtp-user}:{smtp-password}@smtp.mailgun.org:587 - -# For example: -# smtp://some-user%40mailgun.example.org:df2a2c4e-5caa-4f04-85b9-72d54a2468ad@smtp.eu.mailgun.org:587 -``` - -#### AWS SES SMTP - -Use the following connection URI to -[send emails using AWS SES SMTP](https://docs.aws.amazon.com/ses/latest/dg/send-email-smtp.html) via SMTP. - -Note: The username and password must be [URI encoded](https://en.wikipedia.org/wiki/Percent-encoding). - -``` -smtp://{smtp-user}:{smtp-password}@email-smtp.{region}.amazonaws.com:587/ - -# For example: -# smtp://theuser:the-password@email-smtp.eu-central-1.amazonaws.com:587/ -``` - -#### Postmark - -Use the following connection URI to [send emails using Postmark](https://postmarkapp.com/smtp-service) via SMTP. - -Note: The username and password must be [URI encoded](https://en.wikipedia.org/wiki/Percent-encoding). - -``` -smtp://{YOUR_POSTMARK_SEVER_API_TOKEN}:{YOUR_POSTMARK_SEVER_API_TOKEN}@smtp.postmarkapp.com:587/ - -# For example: -# smtp://thetoken:thetoken@smtp.postmarkapp.com:587/ -``` - -#### Sendgrid - -Use the following connection URI and settings to -[send emails using Sendgrid](https://www.twilio.com/docs/sendgrid/for-developers/sending-email/integrating-with-the-smtp-api) via -SMTP. - -- Sender address: an email address for a domain that has been verified in SendGrid via Domain Authentication -- Hostname: smtp.sendgrid.net -- Port: 587 -- Security Mode: STARTTLS -- Username: apikey -- Password: the API key created in SendGrid, with the full “Mail Send” permission (no other permissions needed) -- SMTP Headers: none If you are unsure which port to use, a TLS connection on port 587 is typically recommended. - -``` -smtp://apikey:@smtp.sendgrid.net:587/ - -# For example: -smtp://apikey:somekey@smtp.sendgrid.net:587/ - -``` - -## Send emails using an HTTP server + + Ory Identities supports sending emails using an HTTP server. This is useful if you want to customize the email content or use a service that doesn't provide an SMTP server. @@ -272,52 +350,8 @@ The courier passes the following object as the `ctx` parameter into the Jsonnet In most cases, the default payload should be sufficient. -### HTTP Integrations - -Sample configurations to send emails via HTTP using different providers. - -#### Sendgrid - -Use the following connection URI and settings to -[send emails using Sendgrid](https://www.twilio.com/docs/sendgrid/api-reference/mail-send/mail-send) via HTTP. - -``` -... -courier: - delivery_strategy: http - http: - request_config: - url: https://api.sendgrid.com/v3/mail/send - method: POST - body: file:///etc/config/kratos/mail.template.jsonnet - headers: - "Content-Type": "application/json" - auth: - type: api_key - config: - name: Authorization - value: Bearer - in: header -... -``` - -Here is one example of a Jsonnet body: - -``` -function(ctx) { -"personalizations": [ - { - "to": [ - { - "email": if "TemplateData" in ctx && "To" in ctx.TemplateData then ctx.TemplateData.To else null) - } - ], - "verificationCode": if "TemplateData" in ctx && "VerificationCode" in ctx.TemplateData then ctx.TemplateData.VerificationCode else null - } - ], - // Other values and personalizations ....... -} -``` + + ## Troubleshooting diff --git a/docs/kratos/emails-sms/10_sending-sms.mdx b/docs/kratos/emails-sms/10_sending-sms.mdx index 93c1f1c2c7..e8c9cfe934 100644 --- a/docs/kratos/emails-sms/10_sending-sms.mdx +++ b/docs/kratos/emails-sms/10_sending-sms.mdx @@ -97,7 +97,7 @@ Read the [Jsonnet documentation](../../kratos/reference/jsonnet.mdx) to learn mo ## Templates -Only the `verification_code` and `login_code` templates support an SMS variant. Use the CLI to configure it: +Only the `recovery_code`, `verification_code`, and `login_code` templates support an SMS variant. Use the CLI to configure it: ```mdx-code-block @@ -132,6 +132,12 @@ Only the `verification_code` and `login_code` templates support an SMS variant. sms: body: plaintext: "base64://WW91ciBsb2dpbiBjb2RlIGlzOiB7eyAuTG9naW5Db2RlIH19" + + recovery_code: + valid: + sms: + body: + plaintext: "base64://WW91ciByZWNvdmVyeSBjb2RlIGlzOiB7eyAuUmVjb3ZlcnlDb2RlIH19CgpAe3sgLlJlcXVlc3RVUkxEb21haW4gfX0gI3t7IC5SZWNvdmVyeUNvZGUgfX0K" ``` 3. Update the Ory Identities configuration using the file you worked with: diff --git a/docs/kratos/guides/multi-tenancy-multitenant.md b/docs/kratos/guides/multi-tenancy-multitenant.md index 07b7e29b9b..982467bb34 100644 --- a/docs/kratos/guides/multi-tenancy-multitenant.md +++ b/docs/kratos/guides/multi-tenancy-multitenant.md @@ -3,6 +3,17 @@ id: multi-tenancy-multitenant title: Multitenancy --- -[Ory Network](https://console.ory.sh) is the only available option to have a multi-tenant Ory Kratos set up. It is not possible to -self-host Ory Kratos as a multi-tenant service as its data model does not support this due to data, scalability, and operational -complexity. +To set up Ory Kratos for multiple tenants, you have two options: + +- [Ory Network](https://console.ory.sh) for a managed cloud service. +- [Ory Enterprise License](../../self-hosted/oel/index.mdx) for an self-hosted on-premise solution. + +The Ory Kratos open-source version is intended for single-tenant use only. Its data model isn't architected to support the data +isolation, scalability, and operational needs of a multi-tenant environment. + +:::info + +Please reach out on the [Ory Community Chat](https://slack.ory.com/) or via [email](https://www.ory.com/contact) if you have any +questions on multitenancy support. + +::: diff --git a/docs/kratos/guides/setting-up-password-hashing-parameters.md b/docs/kratos/guides/setting-up-password-hashing-parameters.md index a66e244ec9..a820ef4563 100644 --- a/docs/kratos/guides/setting-up-password-hashing-parameters.md +++ b/docs/kratos/guides/setting-up-password-hashing-parameters.md @@ -20,8 +20,8 @@ kratos hashers argon2 calibrate 1s It will output the exact values to use in the [configuration](../reference/configuration.mdx). -Head to [our blogpost](https://www.ory.sh/choose-recommended-argon2-parameters-password-hashing/) about Argon2 parameters to learn -how this command and password checking in Ory Kratos works. +Head to [our blogpost](https://www.ory.com/choose-recommended-argon2-parameters-password-hashing/) about Argon2 parameters to +learn how this command and password checking in Ory Kratos works. If you encounter any problems like timeouts or out-of-memory errors, consolidate our [troubleshooting guide](../debug/performance-out-of-memory-password-hashing-argon2.md). diff --git a/docs/kratos/guides/upgrade.mdx b/docs/kratos/guides/upgrade.mdx index b3c332a6ac..d8171bea6a 100644 --- a/docs/kratos/guides/upgrade.mdx +++ b/docs/kratos/guides/upgrade.mdx @@ -20,11 +20,11 @@ Back up your data! Applying upgrades can lead to data loss if handled incorrectl 1. Run [`kratos migrate sql`](../cli/kratos-migrate-sql.md) to run the SQL migrations to the new database schema. Should you run into problems with the upgrade, consider a stepped upgrade and please visit the community -[chat](https://slack.ory.sh/) or start a [discussion](https://github.com/ory/kratos/discussions). +[chat](https://slack.ory.com/) or start a [discussion](https://github.com/ory/kratos/discussions). #### v0.7 Changed cookie behavior In [Ory Kratos v0.7](https://github.com/ory/kratos/blob/v0.7.0-alpha.1/CHANGELOG.md#breaking-changes) the cookie behavior has changed. Review [changes in the exemplary self-service user interface](https://github.com/ory/kratos-selfservice-ui-node/commit/e7fa292968111e06401fcfc9b1dd0e8e285a4d87). -Visit the [Cookie Settings](https://www.ory.sh/kratos/docs/guides/multi-domain-cookies/#cookies) document for more information. +Visit the [Cookie Settings](https://www.ory.com/kratos/docs/guides/multi-domain-cookies/#cookies) document for more information. diff --git a/docs/kratos/guides/zero-trust-iap-proxy-identity-access-proxy.mdx b/docs/kratos/guides/zero-trust-iap-proxy-identity-access-proxy.mdx index ab77b555b4..a13d117958 100644 --- a/docs/kratos/guides/zero-trust-iap-proxy-identity-access-proxy.mdx +++ b/docs/kratos/guides/zero-trust-iap-proxy-identity-access-proxy.mdx @@ -183,7 +183,7 @@ You can find all configuration files used for this quickstart guide in ### Ory Oathkeeper: Identity and Access Proxy -All configuration for [Ory Oathkeeper](https://www.ory.sh/oathkeeper/) resides in +All configuration for [Ory Oathkeeper](https://www.ory.com/oathkeeper/) resides in [`./contrib/quickstart/oathkeeper`](https://github.com/ory/kratos/blob/v0.3.0-alpha.1/contrib/quickstart/oathkeeper). #### Configuration diff --git a/docs/kratos/manage-identities/01_overview.mdx b/docs/kratos/manage-identities/01_overview.mdx index 3a0eb58055..b7e3f2f137 100644 --- a/docs/kratos/manage-identities/01_overview.mdx +++ b/docs/kratos/manage-identities/01_overview.mdx @@ -38,7 +38,7 @@ credentials: id: password identifiers: - john.doe@acme.com - - johnd@ory.sh + - johnd@ory.com config: hashed_password: ... oidc: @@ -59,7 +59,7 @@ schema_id: default # up to you and will be validated using the JSON Schema at `traits_schema_url`. traits: # These are just examples - email: office@ory.sh + email: office@ory.com name: first: Aeneas last: Rekkas diff --git a/docs/kratos/manage-identities/10_managing-users-identities-metadata.mdx b/docs/kratos/manage-identities/10_managing-users-identities-metadata.mdx index 8d35091267..ef92d36b67 100644 --- a/docs/kratos/manage-identities/10_managing-users-identities-metadata.mdx +++ b/docs/kratos/manage-identities/10_managing-users-identities-metadata.mdx @@ -14,6 +14,14 @@ Identities have traits and metadata: sign up date if the identity was created through a migration. Other common use cases include for example storing a user's subscription status, legacy user ID, or basic roles. +## At a glance + +| | User changeable via [settings](../../reference/api#tag/frontend/operation/updateSettingsFlow) flow | Available in [toSession](../../reference/api#tag/frontend/operation/toSession) API | [getIdentity](../../reference/api#tag/identity/operation/getIdentity) API (updatable via [updateIdentity](../../reference/api#tag/identity/operation/updateIdentity)) | +| ----------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `traits` | ✅ | ✅ | ✅ | +| `metadata_public` | | ✅ | ✅ | +| `metadata_admin` | | | ✅ | + ## Metadata There are two types of identity metadata: diff --git a/docs/kratos/manage-identities/15_customize-identity-schema.mdx b/docs/kratos/manage-identities/15_customize-identity-schema.mdx index 1db3742719..c05225318d 100644 --- a/docs/kratos/manage-identities/15_customize-identity-schema.mdx +++ b/docs/kratos/manage-identities/15_customize-identity-schema.mdx @@ -108,7 +108,7 @@ login. Let's change that by adding the following schema extension: "username": { "title": "Username", "type": "string", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -157,7 +157,7 @@ their GitHub handle, which is clear thanks to the field description defined in t ```json {29} { - "$id": "https://schemas.ory.sh/presets/kratos/identity.basic.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.basic.schema.json", "title": "Person", "type": "object", "properties": { @@ -168,7 +168,7 @@ their GitHub handle, which is clear thanks to the field description defined in t "type": "string", "format": "email", "title": "Email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -218,7 +218,7 @@ available identity schema extensions: ```json { - "$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.email.schema.json", "title": "Person", "type": "object", "properties": { @@ -230,7 +230,7 @@ available identity schema extensions: "format": "email", "title": "E-Mail", # highlight-start - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -263,7 +263,7 @@ available identity schema extensions: "type": "string", "format": "tel", "title": "Phone number", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -297,7 +297,7 @@ sign in: ```json {9-45} { - "$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.email.schema.json", "title": "Person", "type": "object", "properties": { @@ -308,7 +308,7 @@ sign in: "type": "string", "minLength": 6, "title": "Username", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -320,7 +320,7 @@ sign in: "type": "string", "format": "email", "title": "E-Mail", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -360,7 +360,7 @@ You can also specify an array of elements: ```json { - "$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.email.schema.json", "title": "Person", "type": "object", "properties": { @@ -374,7 +374,7 @@ You can also specify an array of elements: "type": "string", "format": "email", "title": "E-Mail", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -419,7 +419,7 @@ the identifier: ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -436,7 +436,7 @@ Let's assume the identity's traits are ```yaml traits: # These are just examples - email: office@ory.sh + email: office@ory.com name: first: Aeneas last: Rekkas @@ -462,7 +462,7 @@ and we are using a JSON Schema that uses the `email` field as the identifier for "format": "email", // This tells Ory Identities that the field should be used as the "username" for the username and password flow. - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -499,8 +499,8 @@ and we are using a JSON Schema that uses the `email` field as the identifier for } ``` -In this example, Ory understands that `traits.email='office@ory.sh'` is the identifier for this identity. The system must get -`office@ory.sh` and a password to sign in an user. +In this example, Ory understands that `traits.email='office@ory.com'` is the identifier for this identity. The system must get +`office@ory.com` and a password to sign in an user. [Username and Password Credentials](../../kratos/concepts/credentials/username-email-password) contains more information and examples about credentials usage. @@ -529,7 +529,7 @@ Let's extend the identity schema from the previous chapter with a phone number: "format": "email", // This tells Ory Identities that the field should be used as the "username" for the Username and Password Flow. - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -543,7 +543,7 @@ Let's extend the identity schema from the previous chapter with a phone number: "format": "tel", // The phone number is marked as an identifier. This allows the user to log in with both email and phone number. - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -587,7 +587,7 @@ Using the following identity schema extension we specify that the field is used ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -603,7 +603,7 @@ Using the following identity schema extension we specify that the field is used ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "passkey": { "display_name": true @@ -624,7 +624,7 @@ login: ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "code": { "identifier": true, @@ -640,7 +640,7 @@ login: ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "code": { "identifier": true, @@ -662,7 +662,7 @@ name: ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "totp": { "account_name": true @@ -685,7 +685,7 @@ login: ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "webauthn": { "identifier": true @@ -705,7 +705,7 @@ Specifies that the field is verifiable by sending an email with a verification c ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "recovery": { "via": "email" } @@ -718,7 +718,7 @@ Specifies that the field is verifiable by sending an email with a verification c ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "recovery": { "via": "sms" } @@ -740,7 +740,7 @@ Specifies that the field can be used to send an account recovery code or link. ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "recovery": { "via": "email" } @@ -753,7 +753,7 @@ Specifies that the field can be used to send an account recovery code or link. ```json { - "ory.sh/kratos": { + "ory.com/kratos": { "recovery": { "via": "sms" } @@ -785,7 +785,7 @@ For nested objects such as `name`, add the `required` property inside of the obj ```json { - "$id": "https://schemas.ory.sh/presets/kratos/identity.basic.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.basic.schema.json", "title": "Person", "type": "object", "properties": { @@ -796,7 +796,7 @@ For nested objects such as `name`, add the `required` property inside of the obj "type": "string", "format": "email", "title": "Email address", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -879,7 +879,7 @@ Below is an example of how to do this: ```json5 { - "$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.email.schema.json", "title": "Person", "type": "object", # highlight-start @@ -904,7 +904,7 @@ Below is an example of how to do this: "title": "Username", "minLength": 6, "maxLength": 32, - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -925,7 +925,7 @@ Below is an example of how to do this: "type": "string", "format": "email", "title": "E-Mail", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1061,7 +1061,7 @@ To use the email address as the login identifier, define the following identity "type": "string", "format": "email", "title": "E-Mail", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1114,7 +1114,7 @@ You can allow users to sign up with multiple email addresses and use any of them "items": { "type": "string", "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1164,7 +1164,7 @@ To use a username as the login identifier, define the following identity schema: "properties": { "username": { "type": "string", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1205,7 +1205,7 @@ You may also mix usernames and passwords: "email": { "type": "string", "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1234,7 +1234,7 @@ You may also mix usernames and passwords: }, "username": { "type": "string", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1276,7 +1276,7 @@ You may also mix usernames and passwords: "phone": { "type": "string", "format": "tel", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -1327,7 +1327,7 @@ This identity schema is just an example. It contains too many fields to be used ```json { - "$id": "https://schemas.ory.sh/presets/kratos/identity.basic.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.basic.schema.json", "title": "Person", "type": "object", "properties": { @@ -1338,7 +1338,7 @@ This identity schema is just an example. It contains too many fields to be used "type": "string", "format": "email", "title": "Email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true diff --git a/docs/kratos/manage-identities/50_scim.mdx b/docs/kratos/manage-identities/50_scim.mdx index 6291a56ab8..93dd5d3907 100644 --- a/docs/kratos/manage-identities/50_scim.mdx +++ b/docs/kratos/manage-identities/50_scim.mdx @@ -5,12 +5,11 @@ title: SCIM # System for Cross-domain Identity Management -:::info - -SCIM provisioning is only available in Ory Network and via the Ory Enterprise License (OEL). If you have any questions, please -[reach out](https://www.ory.sh/contact/). +```mdx-code-block +import Help from '@site/docs/_common/need-help.mdx' -::: + +``` SCIM (System for Cross-domain Identity Management) is a standard for automating the exchange of user identity information between identity domains or IT systems. It is designed to simplify the management of user identities in cloud-based applications and diff --git a/docs/kratos/manage-identities/60_external-id.mdx b/docs/kratos/manage-identities/60_external-id.mdx new file mode 100644 index 0000000000..a447379fd2 --- /dev/null +++ b/docs/kratos/manage-identities/60_external-id.mdx @@ -0,0 +1,212 @@ +--- +id: external-id +title: External Identifiers +--- + +This guide explains how to configure and use the `external_id` field in Ory Kratos to support external primary identifiers such as +`customer_id`, `employee_id`, or similar. This is especially useful for migrations from systems where you need to preserve +identifiers or support user-defined primary identifiers. + +:::note + +The `external_id` must be unique across all identities. If you attempt to import multiple identities with the same `external_id`, +the operation will fail with a `409 Conflict`. + +::: + +## Overview + +Traditionally, Ory Kratos identifies users using an internal `identity.id` UUID. With the `external_id` feature, you can: + +- Assign a unique, domain-specific identifier to each identity. +- Query and manage identities using `external_id`. +- Use `external_id` as the `sub` (subject) claim in JWTs. +- Preserve identity semantics across systems during migration. + +This helps simplify migrations, reduce mapping layers, and align Kratos with your existing infrastructure. + +## Configuration + +### Use `external_id` via API, not schema + +The `external_id` is **not** part of the identity JSON Schema. Instead, it is a dedicated top-level attribute in API requests that +create or update identities. + +Do not add `external_id` to your identity schema definition. It is handled separately by Ory Kratos internally. + +### Use `external_id` in JWT `sub` claim + +Set the `subject_source` to `external_id` in the tokenization config: + +```yaml +session: + whoami: + tokenizer: + templates: + jwt_template_1: + jwks_url: base64://... # A JSON Web Key Set (required) + claims_mapper_url: base64://... # A JsonNet template for modifying the claims + ttl: 1m # 1 minute (defaults to 10 minutes) + subject_source: external_id + another_jwt_template: + jwks_url: base64://... # A JSON Web Key Set +``` + +This will populate the `sub` claim in JWTs with the value of `external_id`. + +If `external_id` is not set for a user when `subject_source` is `external_id`, tokenization will fail. + +## API usage + +### Create an identity with `external_id` + +```http +POST /admin/identities +Content-Type: application/json + +{ + "schema_id": "default", + "traits": { + "email": "user@example.com" + }, + "external_id": "customer-12345" +} +``` + +### Get identity by `external_id` + +```http +GET /admin/identities/by/external/customer-12345 +``` + +#### Optional query parameter + +- `include_credential=password,oidc,...` — Include specific credentials in the response. + +#### Example: + +```http +GET /admin/identities/by/external/customer-12345?include_credential=password +``` + +#### Response: + +```json +{ + "id": "uuid-abc123", + "external_id": "customer-12345", + "traits": { + "email": "user@example.com" + }, + "credentials": { + "password": { ... } + } +} +``` + +#### Error responses: + +- `404` – Identity not found. +- `409` – Duplicate `external_id` on creation. +- `400` – Invalid request structure. + +:::note + +There are no other APIs that support `external_id`, for the APIs that require a Kratos `identity_id` you need to use the +[Get identity by external_id](#get-identity-by-external_id) API above and use the identity id from there. + +::: + +## JWT configuration + +### Jsonnet example + +When [tokenizing sessions](../../identities/session-to-jwt-cors), `external_id` is available in the session context: + +```jsonnet +local claims = std.extVar('claims'); +local session = std.extVar('session'); + +{ + claims: { + iss: claims.iss + "/additional-component", + schema_id: session.identity.schema_id, + external_id: session.identity.external_id, + session: session, + } +} +``` + +### Token behavior with `external_id` + +If `subject_source` is set to `external_id` in the tokenizer template, the JWT's `sub` claim becomes: + +```json +{ + "sub": "customer-12345" +} +``` + +If `external_id` is missing, tokenization will fail. + +## Migration guide + +To migrate from an existing system, you can bulk import identities into Kratos and set their `external_id` using the +[Identity Import API](../reference/api#tag/identity/operation/batchPatchIdentities). + +### Use `PATCH /admin/identities` + +#### Basic import example + +```json +[ + { + "schema_id": "default", + "external_id": "customer-001", + "traits": { + "email": "alice@example.com" + } + } +] +``` + +#### Pre-hashed password example + +```json +[ + { + "schema_id": "default", + "external_id": "customer-002", + "traits": { + "email": "bob@example.com" + }, + "credentials": { + "password": { + "config": { + "hashed_password": "$2b$12$abc123..." // bcrypt hash + } + } + } + } +] +``` + +### Migration tips + +- Pre-hash passwords to avoid timeouts +- Validate `external_id` uniqueness before import +- Import in smaller batches (≤ 200 identities if using plaintext passwords) + +## Troubleshooting + +| Error / Code | Context | Description | +| --------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `409 Conflict` | **Migration** (batch import) | One or more identities have a duplicate `external_id`. Ensure all values are unique. | +| `400 Bad Request` | **Migration** (batch import) | The request payload is invalid or improperly formatted. Check JSON structure and required fields. | +| `504 Gateway Timeout` | **Migration** (batch import) | The batch is too large or includes plaintext passwords. Reduce batch size or [pre-hash passwords](https://www.ory.com/docs/kratos/manage-identities/import-user-accounts-identities#pre-hashing-passwords). | +| `500 Internal Server Error` | **Session token generation** | If `subject_source = external_id` is configured, the session will not tokenize unless the identity has an `external_id` set. | + +For advanced examples, see: + +- [Tokenization with Jsonnet](../../identities/session-to-jwt-cors) +- [Importing Users in Bulk](../../kratos/manage-identities/import-user-accounts-identities#bulk-import-identities-from-other-providers) diff --git a/docs/kratos/manage-identities/scim/google-screenshots/access-token.png b/docs/kratos/manage-identities/scim/google-screenshots/access-token.png new file mode 100644 index 0000000000..e78186e453 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/access-token.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/app-search.png b/docs/kratos/manage-identities/scim/google-screenshots/app-search.png new file mode 100644 index 0000000000..cffec1cc53 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/app-search.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/attribute-mapping-scim.png b/docs/kratos/manage-identities/scim/google-screenshots/attribute-mapping-scim.png new file mode 100644 index 0000000000..36d7df3f43 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/attribute-mapping-scim.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/attribute-mapping.png b/docs/kratos/manage-identities/scim/google-screenshots/attribute-mapping.png new file mode 100644 index 0000000000..1538718718 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/attribute-mapping.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/configure-autoprovisioning.png b/docs/kratos/manage-identities/scim/google-screenshots/configure-autoprovisioning.png new file mode 100644 index 0000000000..52c1865bff Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/configure-autoprovisioning.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/download-metadata.png b/docs/kratos/manage-identities/scim/google-screenshots/download-metadata.png new file mode 100644 index 0000000000..c79561d1ac Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/download-metadata.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/endpoint-url.png b/docs/kratos/manage-identities/scim/google-screenshots/endpoint-url.png new file mode 100644 index 0000000000..f829b4c1d9 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/endpoint-url.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/on-for-all.png b/docs/kratos/manage-identities/scim/google-screenshots/on-for-all.png new file mode 100644 index 0000000000..492477eb6e Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/on-for-all.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/select-keeper.png b/docs/kratos/manage-identities/scim/google-screenshots/select-keeper.png new file mode 100644 index 0000000000..300501226d Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/select-keeper.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/sp-details.png b/docs/kratos/manage-identities/scim/google-screenshots/sp-details.png new file mode 100644 index 0000000000..031e879649 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/sp-details.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/toggle-active.png b/docs/kratos/manage-identities/scim/google-screenshots/toggle-active.png new file mode 100644 index 0000000000..43bd33aac3 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/toggle-active.png differ diff --git a/docs/kratos/manage-identities/scim/google-screenshots/user-access.png b/docs/kratos/manage-identities/scim/google-screenshots/user-access.png new file mode 100644 index 0000000000..863f5cb748 Binary files /dev/null and b/docs/kratos/manage-identities/scim/google-screenshots/user-access.png differ diff --git a/docs/kratos/manage-identities/scim/google-workspace.mdx b/docs/kratos/manage-identities/scim/google-workspace.mdx new file mode 100644 index 0000000000..5460276ea8 --- /dev/null +++ b/docs/kratos/manage-identities/scim/google-workspace.mdx @@ -0,0 +1,81 @@ +--- +id: google-workspace +title: Provision from Google Workspace +--- + +# Set up SCIM provisioning from Google Workspace + +This page guides you through setting up SCIM provisioning from Google Workspace to Ory Network. Also refer to the Google Workspace +[automated user provisioning documentation](https://support.google.com/a/topic/6400789) for more information. + +## Create Keeper SAML app in Google workspace + +Login to the [Google Workspace Admin Console](https://admin.google.com/). + +Navigate to **Apps > Web and mobile apps**. Click on **Add App** and **Search for Apps**. + +![Google workspace app search](google-screenshots/app-search.png) + +For **Enter app name**, enter **Keeper**. Select **Keeper Web (SAML)** from the search results. + +![Select Keeper app](google-screenshots/select-keeper.png) + +In the **Google Identity Provider details** window, for **Option 1: Download IdP metadata**, click **Download Metadata**. The +metadata file can be used to add a SAML connection. Click **Continue**. + +![Download IdP metadata](google-screenshots/download-metadata.png) + +On the Service provider details page, set the values for **ACS URL** and **Entity ID** from Ory Network. To ensure that the entire +SAML authentication response is signed, check the Signed response box. The **Name ID** should be **EMAIL**. Click **Continue**. + +![Set service provider details](google-screenshots/sp-details.png) + +In the **Attribute mapping** tab click the **Select field** menu to choose a field name for Google Directory attributes. Click +**Finish**. + +![Map attributes](google-screenshots/attribute-mapping.png) + +### Configure user access + +In the created SAML app, under the **User access** section click on **OFF for everyone**. + +![User access](google-screenshots/user-access.png) + +Select **ON for everyone** to activate SSO. + +![On for everyone](google-screenshots/on-for-all.png) + +You have successfully configured the Google App as a SAML Identity Provider (IdP). Using the downloaded metadata, you can now add +an SSO connection in Ory Network. + +### Set up provisioning + +Under the provisioning section of the created app click on **Configure autoprovisioning**. + +![Configure autoprovisioning](google-screenshots/configure-autoprovisioning.png) + +For the **Access token** enter the SCIM token you created in the Ory Network. + +![Access token](google-screenshots/access-token.png) + +For the **Endpoint URL** enter the SCIM server URL from your Ory Network SCIM server. + +![Endpoint URL](google-screenshots/endpoint-url.png) + +In attribute mapping screen ensure the right attributes are mapped for the app. Complete the remaining steps by setting the +provisioning scope to particular groups (if required) and setting the deprovisioning settings. + +![Attribute mapping SCIM](google-screenshots/attribute-mapping-scim.png) + +Finally click **Finish**. Toggle the **Autoprovisioning** to **Active** to complete the setup. + +![Toggle Autoprovisioning active](google-screenshots/toggle-active.png) + +### Troubleshooting + +When the provisioning fails, the error will be logged. In Ory Network, navigate to Activity > Logs & Events and look for SCIM +provisioning error events. + +### Limitations + +There is no support for group memberships with Google SCIM. diff --git a/docs/kratos/manage-identities/search/console.png b/docs/kratos/manage-identities/search/console.png new file mode 100644 index 0000000000..84005dd4a8 Binary files /dev/null and b/docs/kratos/manage-identities/search/console.png differ diff --git a/docs/kratos/manage-identities/search/identity-search-api.mdx b/docs/kratos/manage-identities/search/identity-search-api.mdx new file mode 100644 index 0000000000..7bf7dae9c5 --- /dev/null +++ b/docs/kratos/manage-identities/search/identity-search-api.mdx @@ -0,0 +1,120 @@ +--- +id: identity-search-api +title: Advanced identity search via API +sidebar_label: Advanced search via API +--- + +```mdx-code-block +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' +import CodeBlock from '@theme/CodeBlock' + +import basic from '!!raw-loader!../../../../code-examples/curl/search/basic.sh' +import model from '!!raw-loader!../../../../code-examples/curl/search/model.jsonc' +import advanced from '!!raw-loader!../../../../code-examples/curl/search/advanced.sh' +import advancedResult from '!!raw-loader!../../../../code-examples/curl/search/advanced-result.json' + +import goExample from '!!raw-loader!../../../../code-examples/sdk/go/search/search.go' +import javaExample from '!!raw-loader!../../../../code-examples/sdk/java/search/App.java' +``` + +Advanced identity search allows you to perform full-text search on identity traits, public and admin metadata, combined with +arbitrary filters and faceting. + +```mdx-code-block +import Help from '@site/docs/_common/need-help.mdx' + + +``` + +## Getting started + +We recommend using the [Typesense SDKs](https://typesense.org/docs/29.0/api/api-clients.html) for your preferred language to +interact with the advanced identity search API. Pass your [Ory Network API key](/concepts/personal-access-token) where you would +normally pass the Typesense API key, use the following base URL: + +```shell +https://{your-ory-slug}.projects.oryapis.com/admin/preview/search/v0beta1 +``` + +and set the collection name to `identities-{your-project-id}`. + +See the following examples for how to configure and use the Typesense SDKs to search for identities. + +```mdx-code-block + + + {basic} + + + {goExample} + + + {javaExample} + + +``` + +## Data model + +The collection `identities-{your-project-id}` contains one document per identity. Each document contains the following fields: + +```mdx-code-block +{model} +``` + +:::tip + +To avoid timing out search requests, specify the exact fields you want to search in using the `query_by` parameter. For example, +to search for identities by email, use `query_by=traits.email`. + +::: + +:::note + +Because of technical limitations, non-string data in `metadata_admin` and `metadata_public` will be indexed as strings and +returned from the Search API as strings. + +To retrieve the original JSON data, fetch the full identity using the +[Get Identity API](/reference/api#tag/identity/operation/getIdentity). + +::: + +## Advanced search example + +Please refer to the [Typesense documentation](https://typesense.org/docs/29.0/api/search.html) for details on how to construct +arbitrary search queries. An example: + +```mdx-code-block + + + + {advanced} + + + + {advancedResult} + + +``` + +:::tip + +Most fields support infix-searching as well, so queries like `query_by=@example.com&infix=always&query_by=traits.email` are +possible. + +::: + +## Consistency and availability + +The search index powering advanced identity search is eventually consistent with the main identity store. This means that there +will be a delay between creating, updating, or deleting an identity and the changes being reflected in search results. We try to +aim for a delay of less than one second during normal operation, but cannot provide any guarantees. The search index will have to +be rebuilt periodically, during which time we cannot service search requests. + +We recommend you use the search API for non-time-critical use cases, such as admin UIs or background jobs, where you need to full +capability of full-text search, filtering, faceting, and sorting. + +Before displaying search results to end-users or otherwise using the search results for business logic, we recommend you always +[fetch the full identity](/reference/api#tag/identity/operation/getIdentity) from the main identity store using the identity ID +returned in search results to ensure you have the most up-to-date information. diff --git a/docs/kratos/manage-identities/search/identity-search-console.mdx b/docs/kratos/manage-identities/search/identity-search-console.mdx new file mode 100644 index 0000000000..7cb7db7b6d --- /dev/null +++ b/docs/kratos/manage-identities/search/identity-search-console.mdx @@ -0,0 +1,11 @@ +--- +id: identity-search-console +title: Identity search in Ory Console +sidebar_label: Ory Console +--- + +Search for identities by navigating to . + +Use the search bar to find identities by email, username, or any other attribute. + +![Search](console.png) diff --git a/docs/kratos/mfa/15_totp.mdx b/docs/kratos/mfa/15_totp.mdx index 18f0729fc5..e96c96dd8c 100644 --- a/docs/kratos/mfa/15_totp.mdx +++ b/docs/kratos/mfa/15_totp.mdx @@ -168,7 +168,7 @@ For example, to select the user's email address as the identifier for TOTP: "format": "email", "title": "Your E-Mail", "minLength": 3, - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { // ... // highlight-start diff --git a/docs/kratos/mfa/20_webauthn-fido-yubikey.mdx b/docs/kratos/mfa/20_webauthn-fido-yubikey.mdx index 04ca2f2923..9e353ce654 100644 --- a/docs/kratos/mfa/20_webauthn-fido-yubikey.mdx +++ b/docs/kratos/mfa/20_webauthn-fido-yubikey.mdx @@ -168,7 +168,7 @@ This configuration is the default for the Ory Network. "format": "email", "title": "Your E-Mail", "minLength": 3, - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { // ... // highlight-start diff --git a/docs/kratos/mfa/30_sms.mdx b/docs/kratos/mfa/30_sms.mdx index 7e4e090883..506cc525e6 100644 --- a/docs/kratos/mfa/30_sms.mdx +++ b/docs/kratos/mfa/30_sms.mdx @@ -77,7 +77,7 @@ To enable MFA via SMS, you need to configure an SMS channel in the Ory configura ```json title="identity.schema.json" {25-28,45-48} { - "$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/identity.email.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -89,7 +89,7 @@ To enable MFA via SMS, you need to configure an SMS channel in the Ory configura "type": "string", "format": "email", "title": "E-Mail", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -118,7 +118,7 @@ To enable MFA via SMS, you need to configure an SMS channel in the Ory configura "type": "string", "format": "tel", "title": "Phone Number", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "code": { "identifier": true, diff --git a/docs/kratos/organizations/_static/onboarding-portal-home.png b/docs/kratos/organizations/_static/onboarding-portal-home.png new file mode 100644 index 0000000000..4b89f80b1f Binary files /dev/null and b/docs/kratos/organizations/_static/onboarding-portal-home.png differ diff --git a/docs/kratos/organizations/_static/onboarding-portal-link.png b/docs/kratos/organizations/_static/onboarding-portal-link.png index 6afc2b4e51..a7f8e61c31 100644 Binary files a/docs/kratos/organizations/_static/onboarding-portal-link.png and b/docs/kratos/organizations/_static/onboarding-portal-link.png differ diff --git a/docs/kratos/organizations/_static/onboarding-portal-scim.png b/docs/kratos/organizations/_static/onboarding-portal-scim.png new file mode 100644 index 0000000000..342f787d24 Binary files /dev/null and b/docs/kratos/organizations/_static/onboarding-portal-scim.png differ diff --git a/docs/kratos/organizations/_static/onboarding-portal-sso.png b/docs/kratos/organizations/_static/onboarding-portal-sso.png new file mode 100644 index 0000000000..05364c234d Binary files /dev/null and b/docs/kratos/organizations/_static/onboarding-portal-sso.png differ diff --git a/docs/kratos/organizations/_static/onboarding-portal.png b/docs/kratos/organizations/_static/onboarding-portal.png deleted file mode 100644 index 3d3d9d1d51..0000000000 Binary files a/docs/kratos/organizations/_static/onboarding-portal.png and /dev/null differ diff --git a/docs/kratos/organizations/organizations.mdx b/docs/kratos/organizations/organizations.mdx index 6b90e59858..df7d195c0c 100644 --- a/docs/kratos/organizations/organizations.mdx +++ b/docs/kratos/organizations/organizations.mdx @@ -3,15 +3,19 @@ id: organizations title: B2B SSO & SAML --- -# B2B Single Sign-On & SAML +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" -:::info + +``` -Organizations are only available in Ory Network and are not supported in self-hosted Ory Kratos. If you have any questions, or if -you would like more information about transitioning to Ory Network, please don't hesitate to -[reach out](https://www.ory.sh/contact/). +# B2B Single Sign-On & SAML -::: +```mdx-code-block +import Help from '@site/docs/_common/need-help.mdx' + + +``` ```mdx-code-block import webm from './_static/organizations-ory-network.webm' @@ -276,7 +280,7 @@ This guide will walk you through the steps required to set up SAML Single Sign-O #### Prerequisites Before proceeding, ensure you are on a plan that supports SAML SSO. SAML is available exclusively on select Enterprise plans. -[Contact us](https://www.ory.sh/contact/) if you need SAML support. +[Contact us](https://www.ory.com/contact/) if you need SAML support. ```mdx-code-block @@ -395,7 +399,7 @@ local claims = std.extVar('claims'); :::note Before proceeding, ensure you are on a plan that supports onboarding portal. It is available exclusively on select enterprise -plans. The portal requires that you enable Account Experience 2.0. Please contact us [Ory Support](mailto:support@ory.sh) if you +plans. The portal requires that you enable Account Experience 2.0. Please contact us [Ory Support](mailto:support@ory.com) if you have any questions or feedback. ::: @@ -408,13 +412,13 @@ partners. The onboarding portal addresses the often-burdensome process of setting up and managing identity connections with external organizations. Traditionally, integrating with a customer's or partner's identity provider (IdP) for single sign-on (SSO) or synchronizing user directories involves manual, error-prone configurations. This often requires deep technical expertise in -protocols such as SAML. +protocols such as SAML/SCIM. Onboarding portal aims to: - Simplify complex integrations: By providing a self-service or guided onboarding experience, they abstract away the underlying - technical complexities of SAML. This means IT administrators on the client side don't need to be SAML experts to connect their - organization's identity system. + technical complexities of SAML/SCIM. This means IT administrators on the client side don't need to be SAML/SCIM experts to + connect their organization's identity system. - Reduce onboarding time: Instead of lengthy back-and-forth communication and manual configuration, an onboarding portal link allows an external administrator to configure the connection directly through a user-friendly interface. This drastically reduces the time and effort required to establish new B2B integrations. @@ -422,7 +426,7 @@ Onboarding portal aims to: administrator receiving the link can configure their side of the connection securely, maintaining control over their IdP settings while establishing a trusted connection with your application. - Enable Self-Service for Organizations: For SaaS providers, this means empowering your customers to self-onboard and manage their - own SSO connections, freeing up your engineering and support teams. Support Scalability for B2B Models: As your application + own SSO/SCIM connections, freeing up your engineering and support teams. Support Scalability for B2B Models: As your application grows and serves more enterprise clients, manually managing each integration becomes unsustainable. These features provide a scalable solution for onboarding and managing a large number of organizational customers. - Validate SSO Connections instantly: The onboarding portal includes the ability to immediately test the configured SSO @@ -440,11 +444,15 @@ These features are relevant for: management for applications that serve multiple organizations. Each organization has its own authentication and user provisioning requirements. -Current limitations: +Provider support: + +- The onboarding portal supports all well known providers. You can also connect any SAML/OIDC compliant provider using the Generic + SAML/OIDC IdP option. If you don't find your provider listed, please [contact us](https://www.ory.com/contact/). + +### SCIM support -- The onboarding portal currently supports Microsoft Entra ID and Okta. You can also connect all SAML-compliant providers using - the custom SAML provider option. If you don't find your provider listed, please [contact us](https://www.ory.sh/contact/). While - OIDC and SCIM are part of Ory Network's capabilities, their integration with the onboarding portal is still under development. +The onboarding portal allows you to set up SCIM provisioning. For an organization, you can create, update, and remove SCIM +servers. Guided walkthroughs are available for Microsoft Entra ID and Okta. ### Manage onboarding portal links @@ -457,8 +465,9 @@ Current limitations: Go to and continue by configuring the selected organization. -In the **Edit Organization** page, under the **Onboarding Portal** section, click **Generate link** to create a link. You can then -share this link with the organization admins. +On the **Edit Organization** page, under the **Onboarding Portal** section, click **Generate link**. If your project has a custom +domain configured, you must choose between the project slug and the custom domain as the link's base URL. You can then share this +link with the organization administrators. ```mdx-code-block import BrowserWindow from "@site/src/theme/BrowserWindow" @@ -486,7 +495,9 @@ curl -X POST --location "https://api.console.ory.sh/projects/$PROJECT_ID/organiz%20%20%20%20%20%20-H"Content-Type: application/json" \ -d '{ "expires_at": "2025-06-01T00:00:00Z", - "enable_sso": true + "enable_sso": true, + "enable_scim": true, + "custom_hostname_id": "use a custom domain id from branding, omit the field otherwise" }' ``` @@ -499,8 +510,10 @@ Result: "project_id": "836b03f7-fdce-466a-9407-8595a0f615ce", "organization_id": "517cc5e7-1ab6-4dcf-ba02-00fad003af92", "enable_sso": true, + "enable_scim": true, "created_at": "2025-06-02T05:23:45.299988Z", - "expires_at": "2025-06-03T05:23:45Z" + "expires_at": "2025-06-03T05:23:45Z", + "custom_hostname_id": "aa4c8766-02b8-423a-80d2-47adf8e8c2ca" } ``` @@ -508,6 +521,34 @@ The response contains a `value` token that you can use to construct the onboardi `https://your-slug.projects.oryapis.com/onboarding/` +#### Update an onboarding portal link + +```shell +curl -X POST --location "https://api.console.ory.sh/projects/$PROJECT_ID/organizations/$ORGANIZATION_ID/onboarding-portal-links/$ONBOARDING_PORTAL_LINK_ID" \ + -H "Authorization: Bearer $WORKSPACE_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "expires_at": "2025-06-01T00:00:00Z", + "enable_sso": true, + "enable_scim": true + }' +``` + +Result: + +```json +{ + "id": "655fa1d7-8404-4aa5-a90d-7f0aee060bc6", + "value": "emH8rO0f9S8VtLXLhBdNc9vBPSgsoT3qYHQQd7ROf8HwMmtK", + "project_id": "94d32bfd-08ea-4a11-a026-b9d7ddda0f09", + "organization_id": "9e83d579-ba29-43dd-b245-28c525c82066", + "enable_sso": true, + "enable_scim": true, + "created_at": "2025-08-21T15:48:00.101704Z", + "expires_at": "2027-06-01T00:00:00Z" +} +``` + #### Delete an onboarding portal link ```shell @@ -533,6 +574,7 @@ Result: "project_id": "836b03f7-fdce-466a-9407-8595a0f615ce", "organization_id": "517cc5e7-1ab6-4dcf-ba02-00fad003af92", "enable_sso": true, + "enable_scim": true, "created_at": "2025-06-02T05:44:24.883665Z", "expires_at": "2025-06-03T05:44:24Z" } @@ -553,11 +595,28 @@ expiry of 1 day. Once the link expires, it no longer works. You can also delete #### Handover and using the portal Once you generate the link, share it with the organization's administrator. They can access this link multiple times until its -expiration to manage (add, edit, or delete) the organization's SSO connections. +expiration to manage SSO and SCIM connections. ```mdx-code-block - ![Onboarding portal](./_static/onboarding-portal.png) + ![Onboarding portal](./_static/onboarding-portal-home.png) + +``` + +##### Manage SSO + +```mdx-code-block + + ![Onboarding portal](./_static/onboarding-portal-sso.png) + +``` + +##### Manage SCIM + +```mdx-code-block + + + ![Onboarding portal](./_static/onboarding-portal-scim.png) ``` diff --git a/docs/kratos/passwordless/05_passkeys.mdx b/docs/kratos/passwordless/05_passkeys.mdx index 79c3c3674c..f9c61d1c43 100644 --- a/docs/kratos/passwordless/05_passkeys.mdx +++ b/docs/kratos/passwordless/05_passkeys.mdx @@ -130,7 +130,7 @@ is defined, the passkey strategy will not work. format: "email", title: "Your E-Mail", minLength: 3, - "ory.sh/kratos": { + "ory.com/kratos": { credentials: { // ... passkey: { @@ -310,7 +310,7 @@ This is used for WebAuthn both in passwordless flows and multi-factor authentica format: "email", title: "Your E-Mail", minLength: 3, - "ory.sh/kratos": { + "ory.com/kratos": { credentials: { // ... webauthn: { diff --git a/docs/kratos/passwordless/06_code.mdx b/docs/kratos/passwordless/06_code.mdx index f443997217..a209e42fd9 100644 --- a/docs/kratos/passwordless/06_code.mdx +++ b/docs/kratos/passwordless/06_code.mdx @@ -137,7 +137,7 @@ schema is the primary identifier for the one-time code strategy. title: "Your email", minLength: 3, // highlight-start - "ory.sh/kratos": { + "ory.com/kratos": { credentials: { code: { identifier: true, @@ -155,7 +155,7 @@ schema is the primary identifier for the one-time code strategy. title: "Your phone number", minLength: 3, // highlight-start - "ory.sh/kratos": { + "ory.com/kratos": { credentials: { code: { identifier: true, diff --git a/docs/kratos/quickstart.mdx b/docs/kratos/quickstart.mdx index f3c6d45538..3b3966ceb3 100644 --- a/docs/kratos/quickstart.mdx +++ b/docs/kratos/quickstart.mdx @@ -5,6 +5,12 @@ title: Quickstart # Ory Kratos Identity Server Quickstart +```mdx-code-block +import Help from '@site/docs/_common/need-selfhosted-support.mdx' + + +``` + import Mermaid from "@site/src/theme/Mermaid" import CodeFromRemote from "@site/src/theme/CodeFromRemote" @@ -514,12 +520,12 @@ Next, click the verification link. You will end up at the dashboard, with a veri "first": "Foo", "last": "Bar" }, - "email": "foo@ory.sh" + "email": "foo@ory.com" }, "verifiable_addresses": [ { "id": "9fccf5c1-c374-4a15-8f01-1fd5cb3bea55", - "value": "foo@ory.sh", + "value": "foo@ory.com", "verified": true, "via": "email", "status": "completed", @@ -531,7 +537,7 @@ Next, click the verification link. You will end up at the dashboard, with a veri "recovery_addresses": [ { "id": "0df6ddf6-780b-4c3c-ba31-4a349a2a1bc5", - "value": "foo@ory.sh", + "value": "foo@ory.com", "via": "email", "created_at": "2021-12-13T19:32:48.775823Z", "updated_at": "2021-12-13T19:34:53.449207Z" diff --git a/docs/kratos/sdk/05_go.mdx b/docs/kratos/sdk/05_go.mdx index 2f530447ee..6310473b38 100644 --- a/docs/kratos/sdk/05_go.mdx +++ b/docs/kratos/sdk/05_go.mdx @@ -42,11 +42,11 @@ Install the Ory Go SDK ## Frontend API -The following code examples show how to use the Frontend API [`frontend`](https://www.ory.sh/docs/reference/api#tag/frontend). +The following code examples show how to use the Frontend API [`frontend`](https://www.ory.com/docs/reference/api#tag/frontend). These endpoints are used by frontend applications (e.g. Single-Page-App, Native Apps, Server Apps, ...) to manage a user's own profile. There are two types of flows: native flows and browser flows. Native flows are used by **API clients**. Browser flows are -used by **browser clients**. Read the [Browser vs. native apps](https://www.ory.sh/docs/identities/native-browser) document and -the [Self-service flows](https://www.ory.sh/docs/kratos/self-service) overview to learn more. +used by **browser clients**. Read the [Browser vs. native apps](https://www.ory.com/docs/identities/native-browser) document and +the [Self-service flows](https://www.ory.com/docs/kratos/self-service) overview to learn more. ### Browser clients @@ -54,124 +54,124 @@ the [Self-service flows](https://www.ory.sh/docs/kratos/self-service) overview t ### Create login flow -[Create a login flow for API clients](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createNativeRegistrationFlow) +[Create a login flow for API clients](https://www.ory.com/docs/reference/api#tag/frontend/operation/createNativeRegistrationFlow) such as mobile devices or native applications. For browser clients use -[`CreateBrowserLoginFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createBrowserLoginFlow). +[`CreateBrowserLoginFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/createBrowserLoginFlow). ```mdx-code-block import createLogin from '!!raw-loader!../../../code-examples/sdk/go/frontend/create-login.go' -{createLogin} +{createLogin} ``` ### Create registration flow -[Create a registration flow for API clients](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createNativeRegistrationFlow) +[Create a registration flow for API clients](https://www.ory.com/docs/reference/api#tag/frontend/operation/createNativeRegistrationFlow) such as mobile devices or native applications. For browser clients use -[`createBrowserLoginFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createBrowserLoginFlow). +[`createBrowserLoginFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/createBrowserLoginFlow). ```mdx-code-block import createRegistration from '!!raw-loader!../../../code-examples/sdk/go/frontend/create-registration.go' -{createRegistration} +{createRegistration} ``` ### Create recovery flow -[Create a recovery flow for API clients](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createNativeRecoveryFlow) +[Create a recovery flow for API clients](https://www.ory.com/docs/reference/api#tag/frontend/operation/createNativeRecoveryFlow) such as mobile devices or native applications. For browser clients use -[`createBrowserRecoveryFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createBrowserRecoveryFlow). +[`createBrowserRecoveryFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/createBrowserRecoveryFlow). ```mdx-code-block import createRecovery from '!!raw-loader!../../../code-examples/sdk/go/frontend/create-recovery.go' -{createRecovery} +{createRecovery} ``` ### Create verification flow -[Create a verification flow for API clients](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createNativeVerificationFlow) +[Create a verification flow for API clients](https://www.ory.com/docs/reference/api#tag/frontend/operation/createNativeVerificationFlow) such as mobile devices or native applications. For browser clients use -[`createBrowserRecoveryFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createBrowserVerificationFlow). +[`createBrowserRecoveryFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/createBrowserVerificationFlow). ```mdx-code-block import createVerification from '!!raw-loader!../../../code-examples/sdk/go/frontend/create-verification.go' -{createVerification} +{createVerification} ``` ### Get registration flow -[Get a registration flow](https://www.ory.sh/docs/reference/api#tag/frontend/operation/getRegistrationFlow). +[Get a registration flow](https://www.ory.com/docs/reference/api#tag/frontend/operation/getRegistrationFlow). ```mdx-code-block import getRegistration from '!!raw-loader!../../../code-examples/sdk/go/frontend/get-registration.go' -{getRegistration} +{getRegistration} ``` ### Get recovery flow -[Get a recovery flow](https://www.ory.sh/docs/reference/api#tag/frontend/operation/getRecoveryFlow). +[Get a recovery flow](https://www.ory.com/docs/reference/api#tag/frontend/operation/getRecoveryFlow). ```mdx-code-block import getRecovery from '!!raw-loader!../../../code-examples/sdk/go/frontend/get-recovery.go' -{getRecovery} +{getRecovery} ``` ### Get verification flow -[Get a verification flow](https://www.ory.sh/docs/reference/api#tag/frontend/operation/getVerificationFlow). +[Get a verification flow](https://www.ory.com/docs/reference/api#tag/frontend/operation/getVerificationFlow). ```mdx-code-block import getVerification from '!!raw-loader!../../../code-examples/sdk/go/frontend/get-verification.go' -{getVerification} +{getVerification} ``` ### Submit login flow To submit or complete a login flow you need to call the -[`updateLoginFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/updateLoginFlow) endpoint. +[`updateLoginFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/updateLoginFlow) endpoint. ```mdx-code-block import submitLogin from '!!raw-loader!../../../code-examples/sdk/go/frontend/submit-login.go' -{submitLogin} +{submitLogin} ``` ### Submit registration flow To submit or complete a registration flow you need to call the -[`updateRegistrationFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/updateRegistrationFlow) endpoint. +[`updateRegistrationFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/updateRegistrationFlow) endpoint. ```mdx-code-block import submitRegistration from '!!raw-loader!../../../code-examples/sdk/go/frontend/submit-registration.go' -{submitRegistration} +{submitRegistration} ``` ### Submit recovery flow To submit or complete a recovery flow you need to call the -[`updateRecoveryFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/updateRecoveryFlow) endpoint. +[`updateRecoveryFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/updateRecoveryFlow) endpoint. ```mdx-code-block import submitRecovery from '!!raw-loader!../../../code-examples/sdk/go/frontend/submit-recovery.go' -{submitRecovery} +{submitRecovery} ``` ### Submit verification flow To submit or complete a recovery flow you need to call the -[`updateVerificationFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/updateVerificationFlow) endpoint. +[`updateVerificationFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/updateVerificationFlow) endpoint. ```mdx-code-block import submitVerification from '!!raw-loader!../../../code-examples/sdk/go/frontend/submit-verification.go' -{submitVerification} +{submitVerification} ``` ### Browser - check who the current HTTP session belongs to @@ -193,7 +193,7 @@ Traits map[email:youremail@example.com] ```mdx-code-block import whoamiBrowser from '!!raw-loader!../../../code-examples/sdk/go/frontend/whoami-browser.go' -{whoamiBrowser} +{whoamiBrowser} ``` ### Native - check who the current HTTP session belongs to @@ -203,66 +203,67 @@ This example uses [toSession](../reference/api#tag/frontend/operation/toSession) ```mdx-code-block import whoamiNative from '!!raw-loader!../../../code-examples/sdk/go/frontend/whoami-native.go' -{whoamiNative} +{whoamiNative} ``` ### Get active sessions -[Get all active sessions](https://www.ory.sh/docs/reference/api#tag/frontend/operation/listMySessions) for the current user. +[Get all active sessions](https://www.ory.com/docs/reference/api#tag/frontend/operation/listMySessions) for the current user. ```mdx-code-block import getActiveSessions from '!!raw-loader!../../../code-examples/sdk/go/frontend/get-active-sessions.go' -{getActiveSessions} +{getActiveSessions} ``` ### Perform logout flow -Use [performNativeLogout](https://www.ory.sh/docs/reference/api#tag/frontend/operation/performNativeLogout) to log out the current -user for API clients such as mobile devices or native applications. For browser clients create a logout URL using -[`createBrowserLogoutFlow`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/createBrowserLogoutFlow). . +Use [performNativeLogout](https://www.ory.com/docs/reference/api#tag/frontend/operation/performNativeLogout) to log out the +current user for API clients such as mobile devices or native applications. For browser clients create a logout URL using +[`createBrowserLogoutFlow`](https://www.ory.com/docs/reference/api#tag/frontend/operation/createBrowserLogoutFlow). . ```mdx-code-block import logout from '!!raw-loader!../../../code-examples/sdk/go/frontend/logout.go' -{logout} +{logout} ``` ### Disable session -[Revoke a specific session](https://www.ory.sh/docs/reference/api#tag/identity/operation/disableSession) for the current user. +[Revoke a specific session](https://www.ory.com/docs/reference/api#tag/identity/operation/disableSession) for the current user. ```mdx-code-block import revokeSession from '!!raw-loader!../../../code-examples/sdk/go/frontend/revoke-session.go' -{revokeSession} +{revokeSession} ``` ### Disable all other sessions -[Revoke all other sessions](https://www.ory.sh/docs/reference/api#tag/frontend/operation/disableMyOtherSessions) for the current +[Revoke all other sessions](https://www.ory.com/docs/reference/api#tag/frontend/operation/disableMyOtherSessions) for the current user. ```mdx-code-block import revokeOtherSessions from '!!raw-loader!../../../code-examples/sdk/go/frontend/revoke-other-sessions.go' -{revokeOtherSessions} +{revokeOtherSessions} ``` ## Identity API -To use the Identity Management API [`identity`](https://www.ory.sh/docs/reference/api#tag/identity) requests need to be +To use the Identity Management API [`identity`](https://www.ory.com/docs/reference/api#tag/identity) requests need to be authorized. -- Create a free Developer project with the [Ory CLI](https://www.ory.sh/docs/guides/cli/installation) or +- Create a free Developer project with the [Ory CLI](https://www.ory.com/docs/guides/cli/installation) or [Ory Console](https://console.ory.sh/guides): `ory create project --name "Ory IdentityAPI Example"` -- Create a new [API key](https://www.ory.sh/docs/concepts/personal-access-token) and export it `export ORY_API_KEY=` +- Create a new [API key](https://www.ory.com/docs/concepts/personal-access-token) and export it + `export ORY_API_KEY=` - Run the example with `go run main.go` ### Create and delete identity -With this example you [create an identity](https://www.ory.sh/docs/reference/api#tag/identity/operation/createIdentity) and -[delete it](https://www.ory.sh/docs/reference/api#tag/identity/operation/deleteIdentity). +With this example you [create an identity](https://www.ory.com/docs/reference/api#tag/identity/operation/createIdentity) and +[delete it](https://www.ory.com/docs/reference/api#tag/identity/operation/deleteIdentity). ```mdx-code-block import createDeleteIdentity from '!!raw-loader!../../../code-examples/sdk/go/identity/create-delete-identity.go' @@ -272,18 +273,18 @@ import createDeleteIdentity from '!!raw-loader!../../../code-examples/sdk/go/ide ### Get identity -[Get an identity](https://www.ory.sh/docs/reference/api#tag/identity/operation/getIdentity) by its ID. You can optionally include +[Get an identity](https://www.ory.com/docs/reference/api#tag/identity/operation/getIdentity) by its ID. You can optionally include credentials, in this example social sign in connections. ```mdx-code-block import gettoken from '!!raw-loader!../../../code-examples/sdk/go/social/get_token.go' -{gettoken} +{gettoken} ``` ### Patch identity -[Patch an identity](https://www.ory.sh/docs/reference/api#tag/identity/operation/patchIdentity). In this example this is used to +[Patch an identity](https://www.ory.com/docs/reference/api#tag/identity/operation/patchIdentity). In this example this is used to set the identity `state`. ```mdx-code-block @@ -294,52 +295,52 @@ import state from '!!raw-loader!../../../code-examples/sdk/go/identity/state.go' ### Delete session -[Delete a specific session](https://www.ory.sh/docs/reference/api#tag/identity/operation/disableSession). +[Delete a specific session](https://www.ory.com/docs/reference/api#tag/identity/operation/disableSession). ```mdx-code-block import disableSession from '!!raw-loader!../../../code-examples/sdk/go/session/disable-session.go' -{disableSession} +{disableSession} ``` ### Delete sessions -[Delete all sessions](https://www.ory.sh/docs/reference/api#tag/identity/operation/deleteIdentitySessions) for a user. +[Delete all sessions](https://www.ory.com/docs/reference/api#tag/identity/operation/deleteIdentitySessions) for a user. ```mdx-code-block import deleteIdentitySessions from '!!raw-loader!../../../code-examples/sdk/go/session/delete-sessions.go' -{deleteIdentitySessions} +{deleteIdentitySessions} ``` ### Get session -[Get a specifc session](https://www.ory.sh/docs/reference/api#tag/identity/operation/getSessio{getSession} +{getSession} ``` ### Get sessions -[Get all sessions](https://www.ory.sh/docs/reference/api#tag/identity/operation/listSessions) for all users. +[Get all sessions](https://www.ory.com/docs/reference/api#tag/identity/operation/listSessions) for all users. ```mdx-code-block import listSessions from '!!raw-loader!../../../code-examples/sdk/go/session/get-sessions.go' -{listSessions} +{listSessions} ``` ### Refresh session -[Extend a session](https://www.ory.sh/docs/reference/api#tag/identity/operation/extendSession). +[Extend a session](https://www.ory.com/docs/reference/api#tag/identity/operation/extendSession). ```mdx-code-block import extendSession from '!!raw-loader!../../../code-examples/sdk/go/session/refresh-session.go' -{extendSession} +{extendSession} ``` ## Go frameworks @@ -364,7 +365,7 @@ pong ```mdx-code-block import gin from '!!raw-loader!../../../code-examples/sdk/go/frameworks/gin.go' -{gin} +{gin} ``` ### Echo middleware @@ -386,5 +387,5 @@ Hello World ```mdx-code-block import echo from '!!raw-loader!../../../code-examples/sdk/go/frameworks/echo.go' -{echo} +{echo} ``` diff --git a/docs/kratos/self-service/flows/account-recovery-password-reset.mdx b/docs/kratos/self-service/flows/account-recovery-password-reset.mdx index 868b04e314..ed5cfea6c2 100644 --- a/docs/kratos/self-service/flows/account-recovery-password-reset.mdx +++ b/docs/kratos/self-service/flows/account-recovery-password-reset.mdx @@ -160,12 +160,24 @@ In the Ory Console go to ### Account recovery address To start account recovery, Ory Identities must know which address to send the recovery message to. Usually this is the email -address the user provides when registering their account. Other fields inside the `traits` section are supported as well. +address the user provides when registering their account. Other fields inside the `traits` section are supported as well such as +phone number to receive the code via an SMS. + +If a user has multiple recovery addresses and the `choose_recovery_address` feature flag is +[enabled](../../../identities/get-started/account-recovery.mdx#enable-the-feature-flag-choose_recovery_address-unlocks-sending-a-recovery-code-via-sms), +the process is as follows: + +1. The user enters any of their registered addresses to begin the recovery flow. +1. A masked list of their recovery addresses is displayed. Up to 10 addresses are shown. +1. After selecting an address, the user must enter it in full. This step verifies ownership and helps prevent information leaks. +1. The recovery message is sent to the confirmed address via email or SMS. + +A [SMS HTTP gateway](../../emails-sms/10_sending-sms.mdx) must be configured to deliver SMS messages. :::info -If the email address used for recovery is the same as the email used for verification and the account isn't activated when the -recovery flow is started, completing the recovery flow also verifies the user's email address. +If the address used for recovery is the same as the address used for verification and the account isn't activated when the +recovery flow is started, completing the recovery flow also verifies the user's address. Read [this document](./verify-email-account-activation.mdx) to learn about the account verification flow. @@ -175,7 +187,7 @@ To specify a trait of the identity to be used for recovery, use the following id ```diff { - "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/quickstart/email-password/identity.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -186,7 +198,7 @@ To specify a trait of the identity to be used for recovery, use the following id "email": { "type": "string", "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -204,6 +216,68 @@ To specify a trait of the identity to be used for recovery, use the following id } ``` +Example to allow recovery via an email or an SMS: + +```json +{ + "$id": "https://example.com/registration.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "traits": { + "type": "object", + "properties": { + "email": { + "title": "Email", + "type": "string", + "format": "email", + "ory.com/kratos": { + "credentials": { + "password": { + "identifier": true + }, + "code": { + "identifier": true, + "via": "email" + } + }, + "recovery": { + "via": "email" + } + } + }, + "telephoneNumber": { + "type": "string", + "format": "tel", + "title": "Telephone Number", + "minLength": 3, + "ory.com/kratos": { + "credentials": { + "password": { + "identifier": true + }, + "code": { + "identifier": true, + "via": "sms" + } + }, + "verification": { + "via": "sms" + }, + "recovery": { + "via": "sms" + } + } + } + }, + "required": ["email"], + "additionalProperties": false + } + } +} +``` + ### Attempted recovery notifications When this option is on and users attempt to initiate recovery for unregistered addresses, the system sends an attempted recovery @@ -211,7 +285,10 @@ notification to the email address that was used in the attempt. This prevents ac [blog post by Troy Hunt](https://www.troyhunt.com/website-enumeration-insanity-how-our-personal-data-is-leaked/). By default, this feature is disabled in newly created Ory Network projects. -Follow these steps to enable sending attempted recovery notifications: +For cost reasons, the attempted recovery notification does not apply to SMS. An attempt to recover an account using an incorrect +phone number will not trigger an SMS message. + +Follow these steps to send attempted recovery notification emails: ```mdx-code-block @@ -260,12 +337,13 @@ Go to and toggle **Notify unknown recip ``` -### Email templates +### Templates -Ory Identities comes with default email templates for recovery flows. +Ory Identities comes with default templates for recovery flows. You can replace the defaults and customize the messages to match the look and feel of your solution. Read the -[email templates documentation](../../emails-sms/05_custom-email-templates.mdx) to learn more. +[email templates documentation](../../emails-sms/05_custom-email-templates.mdx) and +[SMS templates documentation](../../emails-sms/10_sending-sms.mdx#templates) to learn more. ## Invalidate other sessions @@ -324,11 +402,11 @@ Learn how to [add and configure hooks for self-service user flows](../../hooks/0 ## Fallback recovery address -In some scenarios, users may want to recover their account using a different email address than the one they used to register, for -example if they no longer have access to the original email address. To use two (or more) recovery email addresses, you need to -define a secondary email field, such as `email_secondary` in the traits section of the identity schema. This field will serve as -the fallback email address for account recovery. Read more about identity schemas -[here](../../manage-identities/05_identity-schema.mdx). +A user may need a fallback recovery address if they lose access to the address used for registration. + +To enable this, define a secondary field, such as email_secondary, in the traits section of your +[identity schema](../../manage-identities/05_identity-schema.mdx). This field will serve as the alternative address for account +recovery. This is an example of an identity schema with a secondary email address: @@ -343,7 +421,7 @@ This is an example of an identity schema with a secondary email address: "properties": { "email": { "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -375,7 +453,7 @@ This is an example of an identity schema with a secondary email address: }, "email_secondary": { "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "recovery": { "via": "email" }, @@ -400,6 +478,10 @@ In this schema, you define both `email` and `email_secondary` fields as recovery messages to both addresses when the recovery flow is initiated. The user should provide the `email_secondary` field during registration or update it later in their account settings so it can be used in the recovery process. +This is different from the scenario where a user has multiple recovery addresses of different types, such as one email address and +one phone number. In that case, the user is prompted to choose which address to use, and a recovery message is sent to only the +one they select. + ## Native recovery flows Ory Identities supports recovery flows in native applications. This allows you to build a native application that allows the user diff --git a/docs/kratos/self-service/flows/code/verification/samples/link.success.txt b/docs/kratos/self-service/flows/code/verification/samples/link.success.txt index 1a5419ce94..7ab7a3b0e8 100644 --- a/docs/kratos/self-service/flows/code/verification/samples/link.success.txt +++ b/docs/kratos/self-service/flows/code/verification/samples/link.success.txt @@ -40,7 +40,7 @@ curl -H "Accept: application/json" -s \ "attributes": { "name": "email", "type": "email", - "value": "foo@ory.sh", + "value": "foo@ory.com", "required": true, "disabled": false }, diff --git a/docs/kratos/self-service/flows/user-login.mdx b/docs/kratos/self-service/flows/user-login.mdx index e9f3174b9f..44331fbd5f 100644 --- a/docs/kratos/self-service/flows/user-login.mdx +++ b/docs/kratos/self-service/flows/user-login.mdx @@ -384,7 +384,7 @@ The social sign-in method (`oidc`) enables you to use - [GitLab](https://docs.gitlab.com/ee/integration/openid_connect_provider.html); - [Google](https://developers.google.com/identity/sign-in/web/sign-in); - [Facebook](https://developers.facebook.com/docs/facebook-login/); -- [Ory OAuth2 & OpenID Connect (Ory Hydra)](https://www.ory.sh/hydra); +- [Ory OAuth2 & OpenID Connect (Ory Hydra)](https://www.ory.com/hydra); - [Keycloak](https://www.keycloak.org); - and every other OpenID Connect Certified Provider @@ -519,7 +519,7 @@ curl -s -H "Cookie: ory_kratos_session=MTU5OTE2ODc2N3xEdi1CQkFFQ180SUFBUkFCRUFBQ "schema_id": "default", "schema_url": "https://playground.projects.oryapis.com/schemas/default", "traits": { - "email": "foouser@ory.sh", + "email": "foouser@ory.com", "name": { "first": "foo", "last": "user" @@ -528,7 +528,7 @@ curl -s -H "Cookie: ory_kratos_session=MTU5OTE2ODc2N3xEdi1CQkFFQ180SUFBUkFCRUFBQ "verifiable_addresses": [ { "id": "81bbdeae-6333-42f2-877e-26c78acb6ea5", - "value": "foouser@ory.sh", + "value": "foouser@ory.com", "verified": false, "via": "email", "status": "pending", @@ -538,7 +538,7 @@ curl -s -H "Cookie: ory_kratos_session=MTU5OTE2ODc2N3xEdi1CQkFFQ180SUFBUkFCRUFBQ "recovery_addresses": [ { "id": "596c1db4-ccaa-4f4e-9623-cb7e768026ad", - "value": "foouser@ory.sh", + "value": "foouser@ory.com", "via": "email" } ] diff --git a/docs/kratos/self-service/flows/user-registration.mdx b/docs/kratos/self-service/flows/user-registration.mdx index 790ec291bd..269ad136e7 100644 --- a/docs/kratos/self-service/flows/user-registration.mdx +++ b/docs/kratos/self-service/flows/user-registration.mdx @@ -434,7 +434,7 @@ The Social Sign Up Method (`oidc`) enables you to use - [GitLab](https://docs.gitlab.com/ee/integration/openid_connect_provider.html); - [Google](https://developers.google.com/identity/sign-in/web/sign-in); - [Facebook](https://developers.facebook.com/docs/facebook-login/); -- [Ory OAuth2 & OpenID Connect (Ory Hydra)](https://www.ory.sh/hydra); +- [Ory OAuth2 & OpenID Connect (Ory Hydra)](https://www.ory.com/hydra); - [Keycloak](https://www.keycloak.org); - and every other OpenID Connect Certified Provider @@ -524,11 +524,11 @@ The form payloads are then submitted to Ory Identities which follows up with: ### Registration with username/email and password To complete the registration process, the end-user fills out the form which must include a field marked as the identifier -(`ory.sh/kratos.credentials.password.identifier: true`) in the Identity JSON Schema, for example: +(`ory.com/kratos.credentials.password.identifier: true`) in the Identity JSON Schema, for example: ```diff { - "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/quickstart/email-password/identity.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -539,7 +539,7 @@ To complete the registration process, the end-user fills out the form which must "email": { "type": "string", "format": "email", -+ "ory.sh/kratos": { ++ "ory.com/kratos": { + "credentials": { + "password": { + "identifier": true @@ -592,7 +592,7 @@ Let's assume the Identity Schema JSON requires a `website` trait ```diff { - "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/quickstart/email-password/identity.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -603,7 +603,7 @@ Let's assume the Identity Schema JSON requires a `website` trait "email": { "type": "string", "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -699,7 +699,7 @@ curl -s -H "Cookie: ory_kratos_session=MTU5OTE2ODc2N3xEdi1CQkFFQ180SUFBUkFCRUFBQ "schema_id": "default", "schema_url": "https://playground.projects.oryapis.com/schemas/default", "traits": { - "email": "foouser@ory.sh", + "email": "foouser@ory.com", "name": { "first": "foo", "last": "user" @@ -708,7 +708,7 @@ curl -s -H "Cookie: ory_kratos_session=MTU5OTE2ODc2N3xEdi1CQkFFQ180SUFBUkFCRUFBQ "verifiable_addresses": [ { "id": "81bbdeae-6333-42f2-877e-26c78acb6ea5", - "value": "foouser@ory.sh", + "value": "foouser@ory.com", "verified": false, "via": "email", "status": "pending", @@ -718,7 +718,7 @@ curl -s -H "Cookie: ory_kratos_session=MTU5OTE2ODc2N3xEdi1CQkFFQ180SUFBUkFCRUFBQ "recovery_addresses": [ { "id": "596c1db4-ccaa-4f4e-9623-cb7e768026ad", - "value": "foouser@ory.sh", + "value": "foouser@ory.com", "via": "email" } ] diff --git a/docs/kratos/self-service/flows/user-settings.mdx b/docs/kratos/self-service/flows/user-settings.mdx index 3df612075a..f427d32de0 100644 --- a/docs/kratos/self-service/flows/user-settings.mdx +++ b/docs/kratos/self-service/flows/user-settings.mdx @@ -191,7 +191,7 @@ Before we start with the examples below, let's create a user using the API-based token which then use to perform the Settings Flow on this page: ```shell script -username=dev+docs.$(date +%s)@ory.sh +username=dev+docs.$(date +%s)@ory.com password=$(openssl rand -base64 12) actionUrl=$(curl -s -H "Accept: application/json" \ @@ -377,12 +377,12 @@ curl -s -X GET \ "state": "active", "state_changed_at": "2021-07-09T11:06:02.23703Z", "traits": { - "email": "dev+docs.1625828760@ory.sh" + "email": "dev+docs.1625828760@ory.com" }, "verifiable_addresses": [ { "id": "a5c0a49b-aa8d-44fd-ae20-361136a7260e", - "value": "dev+docs.1625828760@ory.sh", + "value": "dev+docs.1625828760@ory.com", "verified": false, "via": "email", "status": "sent", @@ -394,7 +394,7 @@ curl -s -X GET \ "recovery_addresses": [ { "id": "ac4b8521-905c-4492-9b9c-c877d94ca7db", - "value": "dev+docs.1625828760@ory.sh", + "value": "dev+docs.1625828760@ory.com", "via": "email", "created_at": "2021-07-09T11:06:02.249405Z", "updated_at": "2021-07-09T11:06:02.249405Z" @@ -453,7 +453,7 @@ curl -s -X GET \ "attributes": { "name": "traits.email", "type": "email", - "value": "dev+docs.1625828760@ory.sh", + "value": "dev+docs.1625828760@ory.com", "disabled": false }, "messages": [], @@ -542,6 +542,11 @@ curl -s -X GET \ } ``` +The new password must be different from the current one. Attempting to reuse an old password will trigger an error: +`The new password must be different from the old password.` + +This ensures that a new, unique password is set, and prevents the reuse of a potentially compromised password. + ### Link and unlink from Google, Facebook, GitHub, ..., OpenID Connect / OAuth 2.0 :::tip Before you start @@ -804,12 +809,12 @@ curl -s -X GET \ "schema_id": "default", "schema_url": "https://playground.projects.oryapis.com/schemas/default", "traits": { - "email": "example.user@ory.sh" + "email": "example.user@ory.com" }, "verifiable_addresses": [ { "id": "d2214ea2-8b0e-49c0-a9e0-9998ea4527aa", - "value": "example.user@ory.sh", + "value": "example.user@ory.com", "verified": false, "via": "email", "status": "pending", @@ -819,7 +824,7 @@ curl -s -X GET \ "recovery_addresses": [ { "id": "29ef1378-0f13-4f2e-a9cf-683320771d5b", - "value": "example.user@ory.sh", + "value": "example.user@ory.com", "via": "email" } ] @@ -883,12 +888,12 @@ session=$( \ "schema_id": "default", "schema_url": "https://playground.projects.oryapis.com/schemas/default", "traits": { - "email": "example.user@ory.sh" + "email": "example.user@ory.com" }, "verifiable_addresses": [ { "id": "d2214ea2-8b0e-49c0-a9e0-9998ea4527aa", - "value": "example.user@ory.sh", + "value": "example.user@ory.com", "verified": false, "via": "email", "status": "pending", @@ -898,7 +903,7 @@ session=$( \ "recovery_addresses": [ { "id": "29ef1378-0f13-4f2e-a9cf-683320771d5b", - "value": "example.user@ory.sh", + "value": "example.user@ory.com", "via": "email" } ] @@ -948,12 +953,12 @@ curl -s -X POST -H "Accept: application/json" -H "Content-Type: application/json "schema_id": "default", "schema_url": "https://playground.projects.oryapis.com/schemas/default", "traits": { - "email": "example.user@ory.sh" + "email": "example.user@ory.com" }, "verifiable_addresses": [ { "id": "d2214ea2-8b0e-49c0-a9e0-9998ea4527aa", - "value": "example.user@ory.sh", + "value": "example.user@ory.com", "verified": false, "via": "email", "status": "pending", @@ -963,7 +968,7 @@ curl -s -X POST -H "Accept: application/json" -H "Content-Type: application/json "recovery_addresses": [ { "id": "29ef1378-0f13-4f2e-a9cf-683320771d5b", - "value": "example.user@ory.sh", + "value": "example.user@ory.com", "via": "email" } ] diff --git a/docs/kratos/self-service/flows/verify-email-account-activation.mdx b/docs/kratos/self-service/flows/verify-email-account-activation.mdx index cccb9231fa..3f00a1324e 100644 --- a/docs/kratos/self-service/flows/verify-email-account-activation.mdx +++ b/docs/kratos/self-service/flows/verify-email-account-activation.mdx @@ -131,7 +131,7 @@ provides when registering their account. Other fields inside the `traits` sectio ```diff title="identity-schema.json" { - "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/quickstart/email-password/identity.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -142,7 +142,7 @@ provides when registering their account. Other fields inside the `traits` sectio "email": { "type": "string", "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -327,7 +327,7 @@ email. email: { format: "email", type: "string", - "ory.sh/kratos": { + "ory.com/kratos": { // highlight-start verification: { via: "email", @@ -351,7 +351,7 @@ verifiable address via the `verification` extension. Here's an example of how to ```json { - "$id": "https://schemas.ory.sh/presets/kratos/quickstart/phone-password/identity.schema.json", + "$id": "https://schemas.ory.com/presets/kratos/quickstart/phone-password/identity.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", @@ -363,7 +363,7 @@ verifiable address via the `verification` extension. Here's an example of how to "type": "string", "title": "E-Mail", "format": "email", - "ory.sh/kratos": { + "ory.com/kratos": { "credentials": { "password": { "identifier": true @@ -378,7 +378,7 @@ verifiable address via the `verification` extension. Here's an example of how to "type": "string", "title": "Phone number", "format": "tel", - "ory.sh/kratos": { + "ory.com/kratos": { // highlight-start "verification": { "via": "sms" diff --git a/docs/kratos/session-management/01_overview.mdx b/docs/kratos/session-management/01_overview.mdx index 9fd3b7c5dd..12355cef4f 100644 --- a/docs/kratos/session-management/01_overview.mdx +++ b/docs/kratos/session-management/01_overview.mdx @@ -220,7 +220,7 @@ several options: ### Use Ory Oathkeeper to convert sessions to JWTs -[Ory Oathkeeper](https://www.ory.sh/oathkeeper) is an API Gateway capable of converting sessions to JWTs. +[Ory Oathkeeper](https://www.ory.com/oathkeeper) is an API Gateway capable of converting sessions to JWTs. ```mdx-code-block import Mermaid from '@theme/Mermaid'; diff --git a/docs/kratos/social-signin/09_ory.mdx b/docs/kratos/social-signin/09_ory.mdx index 8c726a044d..3942847ad8 100644 --- a/docs/kratos/social-signin/09_ory.mdx +++ b/docs/kratos/social-signin/09_ory.mdx @@ -6,7 +6,7 @@ sidebar_label: Ory # Ory -This document explains how to add [Ory OAuth2](../../oauth2-oidc/index.md) as an OIDC provider to your Ory Network project. +This document explains how to add [Ory OAuth2](../../oauth2-oidc/index.mdx) as an OIDC provider to your Ory Network project. The setup we will describe here is as follows: diff --git a/docs/kratos/social-signin/90_data-mapping.mdx b/docs/kratos/social-signin/90_data-mapping.mdx index 022a78c291..0027663273 100644 --- a/docs/kratos/social-signin/90_data-mapping.mdx +++ b/docs/kratos/social-signin/90_data-mapping.mdx @@ -10,13 +10,12 @@ Every social sign-in provider returns different data in their payloads. Some pro While you might expect to get some basic information consistently, the payload isn't standardized. As a result, when integrating with social sign-in providers, you must specify how to map the data you get from the specific provider to the Identity traits. -You define this mapping by creating a [Jsonnet code snippet](../../kratos/reference/jsonnet.mdx). This snippet becomes a part of -the Ory Identities configuration for the given social sign-in provider. +You define this mapping by creating a [Jsonnet](https://jsonnet.org/) code snippet. This snippet becomes a part of the Ory +Identities configuration for the given social sign-in provider. :::tip -You can find the mapping required for a basic configuration of social sign-in providers in our documentation. For example, -[learn how to create a data mapping for GitHub.](25_github.mdx#data-mapping) +To learn more about Jsonnet, see the [Data mapping with Jsonnet guide](../reference/jsonnet). ::: @@ -91,8 +90,8 @@ returns this object: { "identity": { "traits": { - "email": "foo@ory.sh", - "website": "https://www.ory.sh/" + "email": "foo@ory.com", + "website": "https://www.ory.com/" } } } @@ -282,7 +281,7 @@ Let's assume that GitHub returns the following for `std.extVar('claims')`: ```json { "sub": "some-identity-id-4hA8gk", - "email": "foo@ory.sh", + "email": "foo@ory.com", "email_verified": true, "username": "foo-user" } @@ -294,7 +293,7 @@ The JsonNet data mapper will return the following data from GitHub: { "identity": { "traits": { - "email": "foo@ory.sh" + "email": "foo@ory.com" }, "metadata_public": { "github_username": "foo-user" @@ -324,7 +323,7 @@ credentials: schema_id: some-example traits: - email: foo@ory.sh + email: foo@ory.com metadata_public: github_username: foo-user diff --git a/docs/kratos/social-signin/99_amazon.mdx b/docs/kratos/social-signin/99_amazon.mdx new file mode 100644 index 0000000000..36cf2c5997 --- /dev/null +++ b/docs/kratos/social-signin/99_amazon.mdx @@ -0,0 +1,145 @@ +--- +id: amazon +title: Add Amazon as a social sign-in provider in Ory +sidebar_label: Amazon +--- + +# Amazon + +:::note + +To add Amazon as a social sign-in provider, you need a Amazon Developer account. Go to +[Amazon Developers](https://developer.amazon.com/) to create one. + +::: + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +Follow these steps to add Amazon as a social sign-in provider for your project, using the Ory Console. + +1. Go to . +1. Enable the **Enable OpenID Connect** toggle, then click **Add new OpenID Connect provider**. +1. Click the Amazon logo to open the **Configure Amazon** screen. You may need to click **Show more providers** to see the full list of providers. +1. Copy the Redirect URI and save it for later use. +1. Follow the [official steps](https://developer.amazon.com/docs/login-with-amazon/register-web.html) to create a security profile. +1. Once you've created the security profile, click **Show Client Secret** and copy the Client ID and Client secret. Then paste them into the corresponding fields in the Ory Console's **Configure Amazon** screen. +1. In the Ory Console, click **Save Configuration** to enable Amazon as a social sign-in provider. +1. On Amazon Developers, click **Save Changes**. +1. Open the Amazon **Security Profile Management** screen, select the **Web Settings** tab, click **Edit**, and paste the redirect URI into the **Allowed Return URLs** field. Click **Save**. + +:::note + +These steps cover the basic configuration of a social sign-in provider integration. At this point, the user experience is +incomplete. To complete the configuration and ensure a smooth and secure user experience, configure the [scopes](#scopes) and +[data mapping](#data-mapping) as described in the next section. + +::: + +## Additional configuration + +When adding a social sign-in provider, you can customize the integration by defining the OAuth scopes Ory requests from the +provider and by setting up custom data mappings. + +### Scopes + +In the **Scopes** field, you can define the OAuth (access) scopes that Ory requests from the sign-in provider. Defining access scopes enables you to +interact with the provider's APIs on behalf of the user, or to access additional user data, which is exposed as claims for data +mapping. + +For a basic setup, follow these steps to add the profile access scope: + +- In Ory Console's **Configure Amazon** screen, click **Show advanced settings**. +- In the **Scopes** field, enter `profile` and click **Add**. + +To learn more about the scopes available for Amazon, read the +[related documentation](https://developer.amazon.com/docs/login-with-amazon/customer-profile.html). + +### Data mapping + +In the **Data mapping** field, you can map the data returned by the sign-in provider to traits as defined in the identity +schema. + +To define the mapping, create a Jsonnet code snippet. Read [this document](./data-mapping) to learn more about Jsonnet data +mapping. + +In this sample Jsonnet snippet, the user's `email`, is mapped to `email` in the identity schema. + +```jsonnet +local claims = std.extVar('claims'); +{ + identity: { + traits: { + // The email might be empty if the user hasn't granted permissions for the email scope. + [if 'email' in claims then 'email' else null]: claims.email, + }, + }, +} +``` + + + + +Follow these steps to add Amazon as a social sign-in provider to your project using the Ory CLI: +3. Encode the Jsonnet snippet with [Base64](https://www.base64encode.org/) or host it under an URL accessible to Ory Network. + + ```shell + cat your-data-mapping.jsonnet | base64 + ``` + +4. Download the Ory Identities config from your project and save it to a file: + + ```shell + ## List all available workspaces + ory list workspaces + + ## List all available projects + ory list projects --workspace + + ## Get config + ory get identity-config --project --workspace --format yaml > identity-config.yaml + ``` + +5. Add the social sign-in provider configuration to the downloaded config. Add the Jsonnet snippet with mappings as a Base64 + string or provide an URL to the file. + + ```yaml + selfservice: + methods: + oidc: + config: + providers: + - id: amazon # this is `` in the Authorization callback URL. DO NOT CHANGE IT ONCE SET! + provider: amazon + client_id: .... # Replace this with the OAuth2 Client ID provided by Amazon app + client_secret: .... # Replace this with the OAuth2 Client Secret provided by Amazon app + mapper_url: "base64://{YOUR_BASE64_ENCODED_JSONNET_HERE}" + # Alternatively, use an URL like this example + # mapper_url: https://storage.googleapis.com/example-example-prd/example-file + scope: + - profile + pkce: "force" + enabled: true + ``` + +6. Update the Ory Identities configuration using the file you worked with: + + ```shell + ory update identity-config --project --workspace --file identity-config.yaml + ``` + + + +```` + +## Troubleshooting + +```mdx-code-block +import SocialSigninTroubleshooting from '../_common/social-sign-in-troubleshooting.mdx' + + +``` diff --git a/docs/migrate-to-ory/index.mdx b/docs/migrate-to-ory/index.mdx index ac5e53cff3..2c4cd06378 100644 --- a/docs/migrate-to-ory/index.mdx +++ b/docs/migrate-to-ory/index.mdx @@ -5,13 +5,19 @@ sidebar_label: Migrate to Ory sidebar_position: 1 --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + This tutorial will guide you through the process of migrating your existing authentication system to Ory Identities, creating Ory Network projects, setting up identity schemas, and customizing the user interface to match your current interface. :::note This guide is an initial reference and may not cover all aspects of your use case. If you have any questions or need more help, -don't hesitate to get in [touch with Ory Support for help](https://www.ory.sh/contact). +don't hesitate to get in [touch with Ory Support for help](https://www.ory.com/contact). ::: @@ -47,7 +53,7 @@ If you are not sure whether or not you need OAuth2 for your use case, please rea If your authentication system doesn't fall into the categories described above - such as hybrid systems, legacy protocols, or any other unique solution - you may need a different approach to migration. For such unique or complex migrations, we recommend - [consulting with Ory](https://www.ory.sh/contact/) to get a recommendation. The Ory team can help you design a custom migration + [consulting with Ory](https://www.ory.com/contact/) to get a recommendation. The Ory team can help you design a custom migration plan that aligns with your specific requirements. ### Migration strategy @@ -189,7 +195,7 @@ using the API directly, the SDK for your language, or - if you are working in th a component library designed to make building login, registration, and account pages for Ory easy. It is modular and customizable, allowing you to use only the components you need while tailoring them to fit your implementation's design. The UI created with Ory Elements changes dynamically to adapt to your Ory Network configuration. More details about customizing the user interface with -Ory Elements can be found [here](../kratos/bring-your-own-ui/custom-ui-ory-elements). +Ory Elements can be found [here](../elements/index.mdx). ## Integrate backend @@ -270,10 +276,8 @@ live with Ory in your production environment. Once your Ory integration is stable and users are successfully authenticating with the new system, your migration is complete. -:::info +```mdx-code-block +import Help from '@site/docs/_common/need-help.mdx' -Ory is here to help! To get support in your migration beyond this guide join the [Ory Community Slack](https://slack.ory.sh/) and -get support from the community. Or contact us for a [free consultation](https://ory.sh/contact) and get expert help from the Ory -Team. - -::: + +``` diff --git a/docs/oathkeeper/configure-deploy.mdx b/docs/oathkeeper/configure-deploy.mdx index 4f4f345abf..a6e4dbe508 100644 --- a/docs/oathkeeper/configure-deploy.mdx +++ b/docs/oathkeeper/configure-deploy.mdx @@ -5,8 +5,8 @@ title: Configure and deploy The Ory Oathkeeper HTTP serve process `oathkeeper serve` opens two ports exposing the -- [reverse proxy](index.md#reverse-proxy) -- REST API which serves the [Access Control Decision API](index.md#access-control-decision-api) as well as other API endpoints +- [reverse proxy](index.mdx#reverse-proxy) +- REST API which serves the [Access Control Decision API](index.mdx#access-control-decision-api) as well as other API endpoints such as health checks, JSON Web Key Sets, and a list of available rules. For this guide we're using Docker. Ory Oathkeeper however can be [installed in a variety of ways](install.mdx). @@ -48,7 +48,7 @@ errors: redirect: enabled: true config: - to: https://www.ory.sh/docs + to: https://www.ory.com/docs mutators: header: @@ -92,7 +92,7 @@ perfect for seeing how Ory Oathkeeper works. Let's define three rules: 1. An access rule that allowing anonymous access to `https://httpbin.org/anything/header` and using the `header` mutator. 2. An access rule denying every access to `https://httpbin.org/anything/deny`. If the request header has `Accept: application/json`, we will receive a JSON response. If however the accept header has `Accept: text/*`, a HTTP Redirect - will be sent (to `https://www.ory.sh/docs` as configured above). + will be sent (to `https://www.ory.com/docs` as configured above). 3. An access rule allowing anonymous access to `https://httpbin.org/anything/id_token` using the `id_token` mutator. ```mdx-code-block @@ -248,7 +248,7 @@ We're doing this for demonstration purposes only. In a production environment yo the build artifact itself. In Kubernetes, it would make most sense to provide the JSON Web Keys as a Kubernetes Secret mounted as in a directory, for example. -We encourage you to check out our [helm charts](https://k8s.ory.sh/helm/) which apply these best practices. +We encourage you to check out our [helm charts](https://k8s.ory.com/helm/) which apply these best practices. ## Build & run @@ -329,7 +329,7 @@ curl -H "Accept: application/json" -X GET http://127.0.0.1:4455/anything/deny # Make request and accept text/* (we get a redirect response). curl -H "Accept: text/html" -X GET http://127.0.0.1:4455/anything/deny -Found. +Found. curl -X GET http://127.0.0.1:4455/anything/id_token { diff --git a/docs/oathkeeper/guides/traefik-proxy-integration.md b/docs/oathkeeper/guides/traefik-proxy-integration.md index be7a527f4e..1088c9d887 100644 --- a/docs/oathkeeper/guides/traefik-proxy-integration.md +++ b/docs/oathkeeper/guides/traefik-proxy-integration.md @@ -5,7 +5,7 @@ title: Traefik proxy integration [Traefik](https://doc.traefik.io/traefik/) is modern HTTP proxy and load balancer for microservices, oathkeeper can be integrated with via the [ForwardAuth Middleware](https://doc.traefik.io/traefik/middlewares/http/forwardauth/) by making use of the available -[Access Control Decision API](../index.md#access-control-decision-api). +[Access Control Decision API](../index.mdx#access-control-decision-api). To achieve this, diff --git a/docs/oathkeeper/guides/upgrade.mdx b/docs/oathkeeper/guides/upgrade.mdx index 69039c3b6b..ed4c5eb2a3 100644 --- a/docs/oathkeeper/guides/upgrade.mdx +++ b/docs/oathkeeper/guides/upgrade.mdx @@ -6,8 +6,8 @@ title: Upgrade Ory Oathkeeper OSS Follow this guide when you upgrade Ory Oathkeeper OSS to a newer version. Upgrade to the latest version for the newest features, security updates, and performance improvements. -If you encounter any issues during the upgrade process, please reach out to the [community chat](https://slack.ory.sh/) or start a -[discussion](https://github.com/ory/oathkeeper/discussions) for assistance. +If you encounter any issues during the upgrade process, please reach out to the [community chat](https://slack.ory.com/) or start +a [discussion](https://github.com/ory/oathkeeper/discussions) for assistance. ## Prerequisites diff --git a/docs/oathkeeper/index.md b/docs/oathkeeper/index.mdx similarity index 98% rename from docs/oathkeeper/index.md rename to docs/oathkeeper/index.mdx index 16073f2b3b..29c6798a1f 100644 --- a/docs/oathkeeper/index.md +++ b/docs/oathkeeper/index.mdx @@ -3,6 +3,18 @@ id: index title: Introduction to Ory Oathkeeper Zero Trust Proxy --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + +```mdx-code-block +import Help from '@site/docs/_common/need-selfhosted-support.mdx' + + +``` + Ory Oathkeeper authorizes incoming HTTP requests. It can be the Policy Enforcement Point in your cloud architecture, i.e. a reverse proxy in front of your upstream API or web server that rejects unauthorized requests and forwards authorized ones to your server. If you want to use another API Gateway (Kong, Nginx, Envoy, AWS API Gateway, ...), Oathkeeper can also plug into that and diff --git a/docs/oathkeeper/pipeline/authn.md b/docs/oathkeeper/pipeline/authn.md index 36c8429e49..8a21cb708c 100644 --- a/docs/oathkeeper/pipeline/authn.md +++ b/docs/oathkeeper/pipeline/authn.md @@ -364,6 +364,8 @@ note that Gzipped responses from `check_session_url` are not supported, and will It can't be set along with `header` or `query_parameter` - `forward_http_headers` ([]string, optional - defaults ["Authorization", "Cookie"]) - If set, you can specify which headers will be forwarded. +- `prefix` (string, optional) - If the bearer token does not begin with this prefix, the `bearer_token` authenticator will not + handle the request. ```yaml # Global configuration file oathkeeper.yml @@ -422,6 +424,25 @@ authenticators: - X-Forwarded-For ``` +```yaml +# Some Access Rule Handling a Token with a Specified Prefix: access-rule-3.yaml +id: access-rule-2 +# match: ... +# upstream: ... +authenticators: + - handler: bearer_token + config: + check_session_url: https://session-store-host/check-session + token_from: + header: Authorization + # or + # header: Custom-Authorization-Header + # or + # cookie: auth-token + # Will only handle requests with Authorization: bearer custom_token_prefix_xxxxxx + prefix: "custom_token_prefix_" +``` + ### `bearer_token` access rule example ```shell diff --git a/docs/oathkeeper/pipeline/error.md b/docs/oathkeeper/pipeline/error.md index e8a2e86c87..1f29ce6a85 100644 --- a/docs/oathkeeper/pipeline/error.md +++ b/docs/oathkeeper/pipeline/error.md @@ -275,7 +275,7 @@ HTTP Requests that include one of the matching IP Addresses in the `X-Forwarded- The HTTP `Accept` Header is the most common way to tell an HTTP API what MIME content type is expected. For example, FireFox sends `Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` for all regular requests for example when opening -[www.ory.sh](https://www.ory.sh/). And a REST API Client usually sends `Accept: application/json`. +[www.ory.com](https://www.ory.com/). And a REST API Client usually sends `Accept: application/json`. Therefore, using the `Accept` header is one of the most common ways to distinguish between "regular" browser traffic, REST API traffic, and other types of HTTP traffic. diff --git a/docs/oathkeeper/scope-strategies-hydra.mdx b/docs/oathkeeper/scope-strategies-hydra.mdx index 342a5b7e1b..f534394dd0 100644 --- a/docs/oathkeeper/scope-strategies-hydra.mdx +++ b/docs/oathkeeper/scope-strategies-hydra.mdx @@ -12,15 +12,15 @@ When using Ory Oathkeeper together with Ory Hydra the scope strategy needs to be Ory Oathkeeper sends the scope as part of the introspection request. [(More about token introspection)](https://www.oauth.com/oauth2-servers/token-introspection-endpoint/) -[Hydra](https://www.ory.sh/hydra/docs/guides/oauth2-token-introspection/) processes this scope parameter (which is actually not +[Hydra](https://www.ory.com/hydra/docs/guides/oauth2-token-introspection/) processes this scope parameter (which is actually not defined in the OAuth2 Introspection RFC) according to the scope strategy defined in Hydra. The scope strategy defined in Ory Oathkeeper serves as a fallback for when OAuth2 servers don't implement this feature. Therefore, these two settings must be kept in sync. -[Here](https://www.ory.sh/hydra/docs/reference/api#parameters-27) you can find the Hydra setting and -[here](https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/authn/#configuration-5) the respective one for Oathkeeper. +[Here](https://www.ory.com/hydra/docs/reference/api#parameters-27) you can find the Hydra setting and +[here](https://www.ory.com/oathkeeper/docs/v0.37/pipeline/authn/#configuration-5) the respective one for Oathkeeper. The same problem would arise if you configure your client to be allowed to request scope foo and your OAuth2 request requests foo.bar. diff --git a/docs/oauth2-oidc/device-authorization.mdx b/docs/oauth2-oidc/device-authorization.mdx new file mode 100644 index 0000000000..fc8a901702 --- /dev/null +++ b/docs/oauth2-oidc/device-authorization.mdx @@ -0,0 +1,184 @@ +--- +id: device-authorization +title: Device Authorization +sidebar_label: Device authorization flow +--- + +The OAuth 2.0 Device Authorization Grant (RFC 8628) brings OAuth to devices with internet connectivity but limited input +capabilities. This flow is designed for smart TVs, streaming devices, IoT hardware, printers, remote terminal sessions, AI agents, +and other connected devices where typing credentials or opening a browser isn't practical or possible. Here's how it works: the +device to be authenticated displays a URL and a short code, prompting you to open that URL on your phone or computer to authorize +access. After successful authorization, the device will get an access and (optionally) a refresh token. The two devices don't need +to communicate directly; the authorization happens through the OAuth provider. + +This document provides an overview of the Ory's device authorization grant flow, with a step-by-step example of its +implementation, configuration options, and guidance on creating custom user interfaces for the verification screen. + +## Overview of the flow + +Here is the high-level overview for the device authorization grant flow: + +1. The user attempts to log in to the device. This initiates the device to request authorization from the authorization server. +1. When the authorization server responds, the user is instructed to visit a URL and enter the provided user code, which they do + on a different device. +1. On the different device the user visits the URL, enters the user code, logs in, and grants access to the device. +1. In the meantime, the device polls the authorization server. Once the user authenticates and grants access, the authentication + server sends an access token to the device, which is used to access the protected resource. + +```mdx-code-block +import Mermaid from "@site/src/theme/Mermaid"; + +>+AS: Start device code grant + AS-->>-D: Verification URI, Device-code, User-code + loop background poll before user authorized + D->>+AS: Request Token by device code + AS-->>-D: Error + end + D->>+U: Ask visit verification URI
Reveal User-code + U->>+AS: Request verification URI + AS-->>-U: Prompt for User-code + U->>+AS: Sumbit User-code + AS-->>-U: Prompt for login and consent + U->>+AS: Submit credentials and consent + AS-->>-U: Show success + deactivate U + loop background poll after user authorized + D->>+AS: Request Token by device code + end + AS-->>-D: Token + D-->>D: Process and store token + deactivate D +`} /> +``` + +### Step 1: Device requests authorization + +The user attempts to log in through the limited input device. The device sends a POST request to the authorization server to +initiate the flow with the following parameters: + +- `client_id`: The ID of the client (device) that's making the request +- `scope` (optional): The scope of the access request, which specifies which resources the requesting device can access + +The authorization server responds with the following information: + +- `device_code`: A unique code to identify the authorization request +- `user_code`: A code the user enters at the verification URL +- `verification_uri`: The URL where the user authorizes the device +- `verification_uri_complete`: The URL where the user authorizes the device, with the user_code already filled in +- `expires_in`: The lifespan of the device code (in seconds) +- `interval`: The polling interval (in seconds) for the client to check if the user has authorized the device yet + +### Step 2: Display user code and verification URI + +The device shows the user the `user_code` and `verification_uri` it received from the authorization server. Depending on the +device, this can be in the form of a URL, QR code, acoustically, or any other form that the device can communicate with the user. + +### Step 3: User grants permission + +The user visits the provided URI on a separate device, such as a phone, and enters the code. Once the user enters the code, the +user is prompted to log in, if not already authenticated, and grants or denies permission to the client (device). After granting +permission, the user is redirected to a page confirming they are successfully logged in. + +### Step 4: Device polls for the access token + +While the user is authorizing the device, the device polls the `token` endpoint of the authorization server to check whether the +user has completed the authorization process by making a POST request with the following parameters: + +- `client_id`: The ID of the client that's making the request +- `device_code`: The device code returned from the authorization request +- `grant_type`: This must always be `urn:ietf:params:oauth:grant-type:device_code` + +After the user grants their consent, the authentication server sends an access token to the device, which is used to access the +protected resource. + +## Configuration options + +### Configure the user interface + +To enable and configure the device authorization grant in Ory Hydra, adjust the following settings in your configuration file: + +```yaml +urls: + device: + # The verification UI is where the user inputs the user-code + verification: http://path/to/device/verification/ui + # The success UI is where the user is sent to after successful authorization + success: http://path/to/device/success +``` + +### Configure user code entropy + +Depending on your security needs and your traffic load, you should choose the appropriate `user_code` entropy. The +`oauth2.device_authorization.user_code.entropy_preset` configuration supports 3 values: + +- `high`: `user_code` is 8 characters long and consists of alphanumeric characters, excluding some ambiguous symbols +- `medium`: `user_code` is 8 characters long and consists of only upper case alphabetic characters +- `low`: `user_code` is 9 characters long and consists of only numeric characters + +It is also possible to configure the length and character set directly: + +```yaml +oauth2: + device_authorization: + user_code: + length: 8 + character_set: abcdefghijklmnopqrstuvwxyz0123456789 +``` + +It is important to strike the right balance between security and user experience here. Higher entropy enhances security and +protects against an attacker randomly guessing valid user-codes. This is especially important when more concurrent device flows +are being performed. As users will need to manually enter the user code, the higher the entropy, the more difficult it will be for +the user to enter the user code. For a better user experience, ambiguous characters should be avoided, for example `O` and `0` on +any display, or `1` and `7` on a 7-segment display. This isn't of any concern when the user doesn't need to input the user-code +manually, for example when scanning a QR code. + +## Device verification UI implementation + +Here is a sample UI implementation for device verification: + +```js +import { Configuration, OAuth2Api } from "@ory/client" +import { Request, Response } from "express" + +const ory = new OAuth2Api( + new Configuration({ + basePath: `https://${process.env.ORY_PROJECT_SLUG}.projects.oryapis.com`, + accessToken: process.env.ORY_API_KEY, + }), +) + +// Please note that this is an example implementation. +// In a production app, please add proper error handling. +export async function handleLogin(request: Request, response: Response) { + const challenge = request.query.device_challenge.toString() + const userCode = request.query.user_code.toString() + + // Show the login form if the form was not submitted. + if (request.method === "GET") { + response.render("device", { + challenge, + userCode, + }) + return + } + + // User was authenticated successfully, + return await ory + .acceptUserCodeRequest({ + deviceChallenge: challenge, + acceptDeviceUserCodeRequest: { + user_code: userCode, + }, + }) + .then(({ redirect_to }) => { + response.redirect(String(redirect_to)) + }) +} +``` diff --git a/docs/oauth2-oidc/identity-provider-integration-settings.mdx b/docs/oauth2-oidc/identity-provider-integration-settings.mdx index 00e650587b..7734045227 100644 --- a/docs/oauth2-oidc/identity-provider-integration-settings.mdx +++ b/docs/oauth2-oidc/identity-provider-integration-settings.mdx @@ -32,7 +32,7 @@ import TabItem from '@theme/TabItem'; -Go to and `Enable Override Return To` setting. +Go to and enable the `OAuth2 provider override "return_to` setting. diff --git a/docs/oauth2-oidc/index.md b/docs/oauth2-oidc/index.mdx similarity index 97% rename from docs/oauth2-oidc/index.md rename to docs/oauth2-oidc/index.mdx index c49c432327..a8cb333e2c 100644 --- a/docs/oauth2-oidc/index.md +++ b/docs/oauth2-oidc/index.mdx @@ -4,6 +4,12 @@ title: Introduction to Ory Hydra OAuth2 sidebar_label: Introduction --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + OAuth2 is the industry-standard protocol that enables secure machine-to-machine communication and grants limited access to data and services on behalf of users. OpenID Connect, built on top of OAuth2, is required to become a social sign-in provider. diff --git a/docs/oauth2-oidc/jwt-access-token.mdx b/docs/oauth2-oidc/jwt-access-token.mdx index dcece1c7f7..f5b8b26492 100644 --- a/docs/oauth2-oidc/jwt-access-token.mdx +++ b/docs/oauth2-oidc/jwt-access-token.mdx @@ -156,6 +156,8 @@ Which results in the following access token: } ``` +### Add custom claims to top level + If you want `some_custom_claim` to be added to the top level (instead of a nested level) in the access token, you need to modify the `/oauth2/allowed_top_level_claims` configuration: diff --git a/docs/oauth2-oidc/overview/oauth2-concepts.mdx b/docs/oauth2-oidc/overview/oauth2-concepts.mdx index 333a13d6b3..98ef87d29e 100644 --- a/docs/oauth2-oidc/overview/oauth2-concepts.mdx +++ b/docs/oauth2-oidc/overview/oauth2-concepts.mdx @@ -260,8 +260,8 @@ access to protected resources. To achieve this, the resource server uses the OAu ## Resource Owner Password Credentials flow -Ory doesn't support the resource owner Password Credentials Grant Type as we prepare for [OAuth 2.1](https://oauth.net/2.1/) which -removed this grant type. +Ory supports the resource owner Password Credentials Grant Type only in special cases as we prepare for +[OAuth 2.1](https://oauth.net/2.1/) which removed this grant type. ## Implicit flow diff --git a/docs/oauth2-oidc/resource-owner-password-grant.mdx b/docs/oauth2-oidc/resource-owner-password-grant.mdx index c65c01c834..a6ceed39aa 100644 --- a/docs/oauth2-oidc/resource-owner-password-grant.mdx +++ b/docs/oauth2-oidc/resource-owner-password-grant.mdx @@ -4,12 +4,11 @@ title: OAuth2 resource owner password credentials grant sidebar_label: Resource owner password flow --- -:::info - -The resource owner password credentials grant is a legacy grant that Ory Network only supports for enterprise customers. Please -contact [sales@ory.sh](mailto:sales@ory.sh) for support. +```mdx-code-block +import Help from '@site/docs/_common/need-help.mdx' -::: + +``` The OAuth 2.0 Resource Owner Password Credentials Grant is an OAuth 2.0 grant where the application exchanges the user's username and password for an access token. This grant type suits clients highly trusted by the user, such as their computer operating diff --git a/docs/open-source.mdx b/docs/open-source.mdx index d1757c78e0..d549209b80 100644 --- a/docs/open-source.mdx +++ b/docs/open-source.mdx @@ -4,13 +4,13 @@ title: Ory is open source sidebar_label: Projects --- +This document provides an overview of the most popular Ory open-source projects, and other related resources. + Ory has an open-source architecture, attitude, and heart. We believe in collaboration, participation, and the open exchange of ideas. Open source is a fundamental part of modern software development and allows everyone regardless of economic background to build a better world with software. -Therefore, most of what Ory does is open source. Read more about [Ory's commitment to open source](./open-source/commitment.mdx). - -This document provides an overview of our most popular open-source projects, and other related resources. +Most of what Ory does is open source. Read more about [Ory's commitment to open source](./open-source/commitment.mdx). ## Projects @@ -29,7 +29,7 @@ You can find all of our open-source projects on GitHub: | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [Ory SDK](https://github.com/ory/sdk) | Software development kit for all popular programming languages, generated using openapi-generator. | [SDK docs](./sdk) | | [Ory Dockertest](https://github.com/ory/dockertest) | Dockertest helps you boot up docker images for your Go tests with minimal work. | [Dockertest godoc](https://godoc.org/github.com/ory/dockertest) | -| [Ory Kubernetes Helm Charts](https://github.com/ory/k8s) | Kubernetes Helm Charts for the Ory ecosystem. | [k8s.ory.sh](https://k8s.ory.sh/helm/) | +| [Ory Kubernetes Helm Charts](https://github.com/ory/k8s) | Kubernetes Helm Charts for the Ory ecosystem. | [k8s.ory.com](https://k8s.ory.com/helm/) | | [Ory Fosite](https://github.com/ory/fosite) | Extensible OAuth 2.0 and OpenID Connect SDK for Go. | [Fosite godoc](https://godoc.org/github.com/ory/fosite) | | [Ory Ladon](https://github.com/ory/ladon) | An SDK for access control policies: authorization for the microservice and IoT age. Inspired by AWS IAM policies. | [Ladon godoc](https://godoc.org/github.com/ory/ladon) | | [Ory Herodot](https://github.com/ory/herodot) | A lightweight Go library for writing responses and errors to HTTP, serves millions of requests daily through Ory Hydra. | [Herodot README](https://github.com/ory/herodot/blob/master/README.md) | @@ -40,10 +40,26 @@ For many more visit [Ory on GitHub](https://github.com/ory). ## Open source resources -- [Contribute to Ory](./ecosystem/contributing.md) +- [Contribute to Ory](./ecosystem/contributing.mdx) - [Ory is committed to open source](./open-source/commitment.mdx) -- [Ory architecture principles](./ecosystem/software-architecture-philosophy.md) -- [Community resources in the Ory documentation](./ecosystem/community.md) -- [Ory Community Chat](https://slack.ory.sh/) +- [Ory architecture principles](./ecosystem/software-architecture-philosophy.mdx) +- [Community resources in the Ory documentation](./ecosystem/community.mdx) +- [Ory Community Chat](https://slack.ory.com/) - [GitHub discussions](https://github.com/discussions?discussions_q=org%3Aory) - [Ory Community Examples](https://github.com/ory/examples) + +## Is open source taking a back seat? + +No — open source remains at the core of Ory. + +The Ory Network and the Ory Enterprise License are commercial offerings designed to fund and accelerate the development of Ory +Open Source. They enable long-term sustainability, support enterprise requirements, and provide capabilities that are difficult to +deliver through open source alone — such as multi-tenancy, analytics, SLAs, SRE support, high scalability, high availability, +globally distributed low-latency infrastructure, and more. + +Both Ory Network and the Ory Enterprise License are built on top of the [Ory Open Source](https://github.com/ory/) code base. They +use the same APIs, features, and configurations, with enhancements tailored for multi-tenant architectures and enterprise-grade +security and operations. + +Ory is committed to continuing the growth of its open-source ecosystem — making it even more accessible, customizable, and +developer-friendly. The commercial offerings play a key role in accelerating and sustaining the development of Ory Open Source. diff --git a/docs/open-source/guidelines/rest-api-guidelines.md b/docs/open-source/guidelines/rest-api-guidelines.md index b2e8d43d69..1d7739fd60 100644 --- a/docs/open-source/guidelines/rest-api-guidelines.md +++ b/docs/open-source/guidelines/rest-api-guidelines.md @@ -3,7 +3,7 @@ id: rest-api-guidelines title: REST API Guidelines --- -This design documents provides guidelines for specifying API documentation in Go Code using go-swagger, OpenAPI 3.0, and OpenAPI +This design document provides guidelines for specifying API documentation in Go Code using go-swagger, OpenAPI 3.0, and OpenAPI Generator. This document standardizes Ory's V1 API contract. ## Context and Reference @@ -68,7 +68,7 @@ Non-normative example of a fully-defined route: // // Lists all identities. Does not support search at the moment. // -// Learn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.sh/docs/next/kratos/concepts/identity-user-model). +// Learn how identities work in [Ory Kratos' User And Identity Model Documentation](https://www.ory.com/docs/next/kratos/concepts/identity-user-model). // // Produces: // - application/json diff --git a/docs/polis/_assets/sso/box-1.png b/docs/polis/_assets/sso/box-1.png new file mode 100644 index 0000000000..c3c4fe0774 Binary files /dev/null and b/docs/polis/_assets/sso/box-1.png differ diff --git a/docs/polis/_assets/sso/dropbox-1.png b/docs/polis/_assets/sso/dropbox-1.png new file mode 100644 index 0000000000..942018eef9 Binary files /dev/null and b/docs/polis/_assets/sso/dropbox-1.png differ diff --git a/docs/polis/_assets/sso/dropbox-2.png b/docs/polis/_assets/sso/dropbox-2.png new file mode 100644 index 0000000000..5814922ae2 Binary files /dev/null and b/docs/polis/_assets/sso/dropbox-2.png differ diff --git a/docs/polis/_assets/sso/freshchat-1.png b/docs/polis/_assets/sso/freshchat-1.png new file mode 100644 index 0000000000..b9e656226d Binary files /dev/null and b/docs/polis/_assets/sso/freshchat-1.png differ diff --git a/docs/polis/_assets/sso/freshchat-2.png b/docs/polis/_assets/sso/freshchat-2.png new file mode 100644 index 0000000000..4156c45c5a Binary files /dev/null and b/docs/polis/_assets/sso/freshchat-2.png differ diff --git a/docs/polis/_assets/sso/postman-1.png b/docs/polis/_assets/sso/postman-1.png new file mode 100644 index 0000000000..59fe2f991e Binary files /dev/null and b/docs/polis/_assets/sso/postman-1.png differ diff --git a/docs/polis/_assets/sso/postman-2.png b/docs/polis/_assets/sso/postman-2.png new file mode 100644 index 0000000000..1489ef8176 Binary files /dev/null and b/docs/polis/_assets/sso/postman-2.png differ diff --git a/docs/polis/_assets/sso/sentry-metadata.png b/docs/polis/_assets/sso/sentry-metadata.png new file mode 100644 index 0000000000..caded37040 Binary files /dev/null and b/docs/polis/_assets/sso/sentry-metadata.png differ diff --git a/docs/polis/admin-portal/enterprise-sso.mdx b/docs/polis/admin-portal/enterprise-sso.mdx index 9e8d648868..e7fcd37ecd 100644 --- a/docs/polis/admin-portal/enterprise-sso.mdx +++ b/docs/polis/admin-portal/enterprise-sso.mdx @@ -20,7 +20,7 @@ Download the SAML Metadata file from your IdP and follow the below steps for add - Click the button **New Connection**. - Choose **SAML** as the type. - Give your new connection a **name**. -- Add your **Tenant** (Eg: ory.sh) and **Product** (Eg: flex). +- Add your **Tenant** (Eg: ory.com) and **Product** (Eg: flex). - Add **Allowed redirect URLs**. - Add **Default redirect URL**. - Paste the **Raw IdP XML**. @@ -42,7 +42,7 @@ Also get the OpenID provider [discovery](https://openid.net/specs/openid-connect - Click the button **New Connection**. - Choose **OIDC** as the type. - Give your new connection a **name**. -- Add your **Tenant** (Eg: ory.sh) and **Product** (Eg: flex). +- Add your **Tenant** (Eg: ory.com) and **Product** (Eg: flex). - Add **Allowed redirect URLs**. - Add **Default redirect URL**. - Enter the URL for OpenID Provider discovery which exposes the Provider Metadata. diff --git a/docs/polis/admin-portal/index.mdx b/docs/polis/admin-portal/index.mdx index 6d757e9989..33855adce4 100644 --- a/docs/polis/admin-portal/index.mdx +++ b/docs/polis/admin-portal/index.mdx @@ -3,6 +3,12 @@ id: index title: Get started with Admin Portal --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + Ory Polis comes with an Admin Portal that allows you to manage **Enterprise SSO**, **Directory Sync** and **Setup Links** products via an easy to use web interface. diff --git a/docs/polis/deploy/env-variables.mdx b/docs/polis/deploy/env-variables.mdx index 5f1cf7a356..be8529907b 100644 --- a/docs/polis/deploy/env-variables.mdx +++ b/docs/polis/deploy/env-variables.mdx @@ -59,7 +59,7 @@ recipient of a SAML response. The same value is also set in the SAML App created change this value unless you get your customers to reconfigure their SAML App again. It is case-sensitive. This does not have to be a real URL. -Default: `https://saml.ory.sh` +Default: `https://saml.boxyhq.com` NPM library option: `samlAudience` @@ -420,16 +420,17 @@ email verification token. More details [here](https://next-auth.js.org/configura ### **NEXTAUTH_ACL** Set this to a comma separated string of email addresses or glob patterns like: `tonystark@gmail.com,*@marvel.com`. Access will be -denied to email addresses which don't match. If you don't specify any value access is denied to all. +denied to email addresses which don't match. If you don't specify any value access is denied to all and magic links are turned +off. ### **NEXTAUTH_ADMIN_CREDENTIALS** Set this to a comma separated string of the pattern `email:password` to enable login to the Admin Portal, for example -`NEXTAUTH_ADMIN_CREDENTIALS=deepak@ory.sh:Password123`. If you don't specify any value access is denied to all. +`NEXTAUTH_ADMIN_CREDENTIALS=deepak@ory.com:Password123`. If you don't specify any value access is denied to all. -### **ADMIN_PORTAL_HIDE_AUDIT_LOGS** +### **ADMIN_PORTAL_HIDE_DIRECTORY_SYNC** -Set this to `true` if you want to hide the Audit Logs product in the sidebar. +Set this to `true` if you want to hide the Directory Sync product in the sidebar. Default: `false` @@ -537,7 +538,7 @@ For example: `/api/scim/oauth/callback` ### **BOXYHQ_LICENSE_KEY** -Please [reach out](https://ory.sh/contact) to obtain a license for enterprise features. +Please [reach out](https://ory.com/contact) to obtain a license for enterprise features. ## Logger options diff --git a/docs/polis/directory-sync/api-reference.mdx b/docs/polis/directory-sync/api-reference.mdx index 60a1b4f646..269bdbdaf0 100644 --- a/docs/polis/directory-sync/api-reference.mdx +++ b/docs/polis/directory-sync/api-reference.mdx @@ -273,11 +273,11 @@ curl --request GET \ "id": "6296f71e-15fd-4af4-86ee-d6623b3ef1a4", "first_name": "Aswin", "last_name": "Venugopal", - "email": "aswin@ory.sh", + "email": "aswin@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "aswin@ory.sh", + "userName": "aswin@ory.com", "name": { "givenName": "Aswin", "familyName": "Venugopal", @@ -286,7 +286,7 @@ curl --request GET \ "emails": [ { "primary": true, - "value": "aswin@ory.sh", + "value": "aswin@ory.com", "type": "work" } ], @@ -308,11 +308,11 @@ curl --request GET \ "id": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", "first_name": "Kiran", "last_name": "Krishnan", - "email": "kiran@ory.sh", + "email": "kiran@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "kiran@ory.sh", + "userName": "kiran@ory.com", "name": { "givenName": "Kiran", "familyName": "Krishnan" @@ -320,7 +320,7 @@ curl --request GET \ "emails": [ { "primary": true, - "value": "kiran@ory.sh", + "value": "kiran@ory.com", "type": "work" } ], @@ -383,11 +383,11 @@ curl --request GET \ "id": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", "first_name": "Kiran", "last_name": "Krishnan", - "email": "kiran@ory.sh", + "email": "kiran@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "kiran@ory.sh", + "userName": "kiran@ory.com", "name": { "givenName": "Kiran", "familyName": "Krishnan" @@ -395,7 +395,7 @@ curl --request GET \ "emails": [ { "primary": true, - "value": "kiran@ory.sh", + "value": "kiran@ory.com", "type": "work" } ], @@ -462,11 +462,11 @@ curl --request GET \ "members": [ { "value": "6296f71e-15fd-4af4-86ee-d6623b3ef1a4", - "display": "aswin@ory.sh" + "display": "aswin@ory.com" }, { "value": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", - "display": "kiran@ory.sh" + "display": "kiran@ory.com" } ], "id": "44d08c0e-d185-4a5e-80a6-b47a717ffaa5" @@ -522,11 +522,11 @@ curl --request GET \ "members": [ { "value": "6296f71e-15fd-4af4-86ee-d6623b3ef1a4", - "display": "aswin@ory.sh" + "display": "aswin@ory.com" }, { "value": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", - "display": "kiran@ory.sh" + "display": "kiran@ory.com" } ], "id": "44d08c0e-d185-4a5e-80a6-b47a717ffaa5" @@ -704,7 +704,7 @@ await directorySyncController.google.setToken({ "tenant": "ory", "product": "polis", "type": "google", - "google_domain": "ory.sh", + "google_domain": "ory.com", "google_access_token": "ya29.a0AWY7CknlXtELCHzdKuS...", "google_refresh_token": "1//03MJpa-zseicbCgYIARAAGAMSNwF-..." }, diff --git a/docs/polis/directory-sync/events.mdx b/docs/polis/directory-sync/events.mdx index d8113b0353..5479af782d 100644 --- a/docs/polis/directory-sync/events.mdx +++ b/docs/polis/directory-sync/events.mdx @@ -27,11 +27,11 @@ Directory Sync app. "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82", "first_name": "Deepak", "last_name": "Prabhakara", - "email": "deepak@ory.sh", + "email": "deepak@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "deepak@ory.sh", + "userName": "deepak@ory.com", "name": { "givenName": "Deepak", "familyName": "Prabhakara" @@ -39,7 +39,7 @@ Directory Sync app. "emails": [ { "primary": true, - "value": "deepak@ory.sh", + "value": "deepak@ory.com", "type": "work" } ], @@ -73,11 +73,11 @@ Directory Sync app. "id": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", "first_name": "Kiran", "last_name": "Krishnan", - "email": "kiran@ory.sh", + "email": "kiran@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "kiran@ory.sh", + "userName": "kiran@ory.com", "name": { "givenName": "Kiran", "familyName": "Krishnan" @@ -85,7 +85,7 @@ Directory Sync app. "emails": [ { "primary": true, - "value": "kiran@ory.sh", + "value": "kiran@ory.com", "type": "work" } ], @@ -123,11 +123,11 @@ Directory Sync app. "id": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", "first_name": "Kiran", "last_name": "Krishnan", - "email": "kiran@ory.sh", + "email": "kiran@ory.com", "active": false, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "kiran@ory.sh", + "userName": "kiran@ory.com", "name": { "givenName": "Kiran", "familyName": "Krishnan" @@ -135,7 +135,7 @@ Directory Sync app. "emails": [ { "primary": true, - "value": "kiran@ory.sh", + "value": "kiran@ory.com", "type": "work" } ], @@ -256,11 +256,11 @@ configured in the Directory Sync app. "id": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", "first_name": "Kiran", "last_name": "Krishnan", - "email": "kiran@ory.sh", + "email": "kiran@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "kiran@ory.sh", + "userName": "kiran@ory.com", "name": { "givenName": "Kiran", "familyName": "Krishnan" @@ -268,7 +268,7 @@ configured in the Directory Sync app. "emails": [ { "primary": true, - "value": "kiran@ory.sh", + "value": "kiran@ory.com", "type": "work" } ], @@ -317,11 +317,11 @@ configured in the Directory Sync app. "id": "ebc31d6e-7d62-4f81-b9e5-eb5f1a04ee92", "first_name": "Kiran", "last_name": "Krishnan", - "email": "kiran@ory.sh", + "email": "kiran@ory.com", "active": true, "raw": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "userName": "kiran@ory.sh", + "userName": "kiran@ory.com", "name": { "givenName": "Kiran", "familyName": "Krishnan" @@ -329,7 +329,7 @@ configured in the Directory Sync app. "emails": [ { "primary": true, - "value": "kiran@ory.sh", + "value": "kiran@ory.com", "type": "work" } ], diff --git a/docs/polis/directory-sync/index.mdx b/docs/polis/directory-sync/index.mdx index 415bb4b0fc..78c1ad326b 100644 --- a/docs/polis/directory-sync/index.mdx +++ b/docs/polis/directory-sync/index.mdx @@ -3,6 +3,12 @@ id: index title: Directory Sync --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + Directory sync helps organizations automate the provisioning and de-provisioning of their users. It is based on the System for Cross-domain Identity Management (SCIM) protocol. diff --git a/docs/polis/directory-sync/webhooks.mdx b/docs/polis/directory-sync/webhooks.mdx index 27914cbe46..559d56aa35 100644 --- a/docs/polis/directory-sync/webhooks.mdx +++ b/docs/polis/directory-sync/webhooks.mdx @@ -54,7 +54,7 @@ Ory-Signature: t=xxx,s=xxxx "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82", "first_name": "Deepak", "last_name": "Prabhakara", - "email": "deepak@ory.sh", + "email": "deepak@ory.com", "active": true, "raw": {...} } diff --git a/docs/polis/guides/configuring-saml-sso.mdx b/docs/polis/guides/configuring-saml-sso.mdx index f290c50c3a..ce74658bb1 100644 --- a/docs/polis/guides/configuring-saml-sso.mdx +++ b/docs/polis/guides/configuring-saml-sso.mdx @@ -46,9 +46,7 @@ the **Security** tab. Here is how Sentry does the SAML SSO configuration for their customers. -

- -

+![The SAML SSO settings](../_assets/sso/sentry-metadata.png) To create an [SSO connection with Ory Polis](../sso-flow/#2-sso-connection-api), you must pass the tenant identifier, product name, and XML metadata. So your settings page UI must display a form to capture the XML Metadata. diff --git a/docs/polis/guides/login-with-saml-sso.mdx b/docs/polis/guides/login-with-saml-sso.mdx index b7b6d03fc2..1215b50689 100644 --- a/docs/polis/guides/login-with-saml-sso.mdx +++ b/docs/polis/guides/login-with-saml-sso.mdx @@ -24,9 +24,9 @@ they click the button. **Postman** takes this approach to enable SAML SSO for their enterprise users. - +![Postman Login 1](../_assets/sso/postman-1.png) - +![Postman Login 2](../_assets/sso/postman-2.png) The user flow would be something similar to the one below. @@ -43,9 +43,9 @@ This approach hides the password field if SSO is enabled for a domain. You can see this approach on the **Dropbox** login form. - +![Dropbox Login 1](../_assets/sso/dropbox-1.png) - +![Dropbox Login 2](../_assets/sso/dropbox-2.png) The user flow would be something similar to the one below. @@ -63,11 +63,9 @@ application redirects users to the subdomain page to show the available authenti You can see this approach on the **Freshchat or Freshworks** login form. - +![Freshchat Login 1](../_assets/sso/freshchat-1.png) -

- -

+![Freshchat Login 2](../_assets/sso/freshchat-2.png) The user flow would be something similar to the one below. @@ -85,7 +83,7 @@ the current user. **Box** uses this approach for its authentication flow. - +![Box Login](../_assets/sso/box-1.png) The user flow would be something similar to the one below. diff --git a/docs/polis/guides/npm-library.mdx b/docs/polis/guides/npm-library.mdx index 2a8b7e57dc..a1cd8cf8c7 100644 --- a/docs/polis/guides/npm-library.mdx +++ b/docs/polis/guides/npm-library.mdx @@ -53,7 +53,7 @@ let connection: IConnectionAPIController; (async function init() { const jackson = await require('@boxyhq/saml-jackson').controllers({ externalUrl: 'https://your-app.com/', - samlAudience: 'https://saml.ory.sh/', + samlAudience: 'https://saml.boxyhq.com/', oidcPath: '/api/oauth/oidc', samlPath: '/api/oauth/saml', db: { diff --git a/docs/polis/index.mdx b/docs/polis/index.mdx index 07e72c86be..2b02518fcd 100644 --- a/docs/polis/index.mdx +++ b/docs/polis/index.mdx @@ -4,6 +4,12 @@ title: Introduction to Ory Polis sidebar_label: Introduction --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + # Introduction to Ory Polis Ory Polis - formerly known as BoxyHQ Jackson - is an Enterprise Single Sign-On (SSO) service for SAML and OIDC identity providers. @@ -56,4 +62,4 @@ Ory Polis is ideal for a variety of scenarios requiring enterprise-grade authent - Visit the [Ory Polis GitHub repository](https://github.com/ory/polis). - Engage with the community and maintainers through [GitHub Discussions](https://github.com/ory/polis/discussions) for questions and conversations. -- Join the [Ory Community Chat](https://slack.ory.sh/) for discussions. +- Join the [Ory Community Chat](https://slack.ory.com/) for discussions. diff --git a/docs/polis/quickstart.mdx b/docs/polis/quickstart.mdx index 568444fd50..037e33d066 100644 --- a/docs/polis/quickstart.mdx +++ b/docs/polis/quickstart.mdx @@ -5,6 +5,12 @@ title: Quickstart # Get started with SAML Single Sign-On authentication +```mdx-code-block +import Help from '@site/docs/_common/need-selfhosted-support.mdx' + + +``` + Ory Polis can be used with any web application to integrate Single Sign-On (SSO) authentication. There are two ways to integrate Ory Polis with an application. Depending on your use case, you can choose either one of them. diff --git a/docs/polis/reference/api.json b/docs/polis/reference/api.json index 4a8fe0992c..e7b36b5123 100644 --- a/docs/polis/reference/api.json +++ b/docs/polis/reference/api.json @@ -6,7 +6,7 @@ "description": "This is the API documentation for Polis.", "termsOfService": "/tos", "contact": { - "email": "support@ory.sh", + "email": "support@ory.com", "name": "Polis API Support" }, "license": { diff --git a/docs/polis/saml-federation/index.mdx b/docs/polis/saml-federation/index.mdx index 97b99f8109..7ab05b4d80 100644 --- a/docs/polis/saml-federation/index.mdx +++ b/docs/polis/saml-federation/index.mdx @@ -3,6 +3,12 @@ title: SAML Federation sidebar_label: SAML Federation --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + # SAML Federation SAML Federation is an enterprise feature and you need to have an enterprise license to use this feature. diff --git a/docs/polis/sso-flow/index.mdx b/docs/polis/sso-flow/index.mdx index f042fdeeb7..1a59685fe8 100644 --- a/docs/polis/sso-flow/index.mdx +++ b/docs/polis/sso-flow/index.mdx @@ -3,6 +3,12 @@ id: index title: Single Sign-On --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + import Tabs from "@theme/Tabs" import TabItem from "@theme/TabItem" @@ -47,7 +53,7 @@ curl --location --request POST 'http://localhost:5225/api/v1/connections' \ --data-urlencode 'defaultRedirectUrl=http://localhost:3366/login/saml' \ --data-urlencode 'redirectUrl=http://localhost:3366/*' \ --data-urlencode 'redirectUrl=http://localhost:3000/*' \ ---data-urlencode 'tenant=ory.sh' \ +--data-urlencode 'tenant=ory.com' \ --data-urlencode 'product=demo' \ --data-urlencode 'name=demo-connection' \ --data-urlencode 'description=Demo SAML connection' @@ -93,7 +99,7 @@ curl --location --request POST 'http://localhost:5225/api/v1/connections' \ --data-urlencode 'oidcClientSecret=' \ --data-urlencode 'redirectUrl=http://localhost:3366/*' \ --data-urlencode 'redirectUrl=http://localhost:3000/*' \ ---data-urlencode 'tenant=ory.sh' \ +--data-urlencode 'tenant=ory.com' \ --data-urlencode 'product=demo' \ --data-urlencode 'name=demo-connection' \ --data-urlencode 'description=Demo OIDC connection' @@ -137,7 +143,7 @@ the details to your customers. You can use either `clientID` or `tenant` and `pr curl -G --location 'http://localhost:5225/api/v1/connections' \ --header 'Authorization: Api-Key ' \ --header 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'tenant=ory.sh' \ +--data-urlencode 'tenant=ory.com' \ --data-urlencode 'product=demo' ``` @@ -158,7 +164,7 @@ is returned then we do not have any connection stored for the attributes you req curl -G --location 'http://localhost:5225/api/v1/connections' \ --header 'Authorization: Api-Key ' \ --header 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'tenant=ory.sh' \ +--data-urlencode 'tenant=ory.com' \ --data-urlencode 'product=demo' ``` @@ -192,7 +198,7 @@ curl --location --request PATCH 'http://localhost:5225/api/v1/connections' \ --data-urlencode 'defaultRedirectUrl=http://localhost:3366/login/saml' \ --data-urlencode 'redirectUrl=http://localhost:3366/*' \ --data-urlencode 'redirectUrl=http://localhost:3000/*' \ ---data-urlencode 'tenant=ory.sh' \ /* Required */ +--data-urlencode 'tenant=ory.com' \ /* Required */ --data-urlencode 'product=demo' \ /* Required */ --data-urlencode 'name=demo-connection' \ --data-urlencode 'description=Demo SAML connection' @@ -213,7 +219,7 @@ curl --location --request PATCH 'http://localhost:5225/api/v1/connections' \ --data-urlencode 'defaultRedirectUrl=http://localhost:3366/login/oidc' \ --data-urlencode 'redirectUrl=http://localhost:3366/*' \ --data-urlencode 'redirectUrl=http://localhost:3000/*' \ ---data-urlencode 'tenant=ory.sh' \ /* Required */ +--data-urlencode 'tenant=ory.com' \ /* Required */ --data-urlencode 'product=demo' \ /* Required */ --data-urlencode 'name=demo-connection' \ --data-urlencode 'description=Demo OIDC connection' @@ -229,7 +235,7 @@ This endpoint can be used to delete existing connections either by tenant/produc ```bash curl -X "DELETE" --location 'http://localhost:5225/api/v1/connections' \ --header 'Authorization: Api-Key ' \ ---url-query 'tenant=ory.sh' \ +--url-query 'tenant=ory.com' \ --url-query 'product=demo' ``` @@ -388,7 +394,7 @@ The SLO flow begins with redirecting your user to the `/api/logout` endpoint. ```bash https://localhost:5225/api/logout ?nameId=google-auth0-f92cc1834efc0f73e9c09 - &tenant=ory.sh + &tenant=ory.com &product=demo &redirectUrl=http://www.example.com/logout ``` diff --git a/docs/polis/sso-providers/generic-saml.mdx b/docs/polis/sso-providers/generic-saml.mdx index 62ed29791f..8277e54d96 100644 --- a/docs/polis/sso-providers/generic-saml.mdx +++ b/docs/polis/sso-providers/generic-saml.mdx @@ -16,7 +16,7 @@ Create them exactly as shown below: - Assertion consumer service URL / Single Sign-On URL / Destination URL: `http://localhost:5225/api/oauth/saml` -- Entity ID / Identifier / Audience URI / Audience Restriction: `https://saml.ory.sh` +- Entity ID / Identifier / Audience URI / Audience Restriction: `https://saml.boxyhq.com` - Response: `Signed` diff --git a/docs/polis/sso-providers/index.mdx b/docs/polis/sso-providers/index.mdx index 31687cb73b..c0967977c1 100644 --- a/docs/polis/sso-providers/index.mdx +++ b/docs/polis/sso-providers/index.mdx @@ -4,6 +4,12 @@ title: SAML SSO Providers sidebar_label: SSO Providers --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + Ory Polis supports the following SSO providers: - [Generic SAML 2.0 Provider](./generic-saml.mdx) diff --git a/docs/reference/api.json b/docs/reference/api.json index 792cfa23e6..8027f43bac 100644 --- a/docs/reference/api.json +++ b/docs/reference/api.json @@ -126,436 +126,436 @@ "schemas": { "AccountExperienceColors": { "properties": { - "ax-background-default": { + "ax_background_default": { "type": "string" }, - "brand-100": { + "brand_100": { "type": "string" }, - "brand-200": { + "brand_200": { "type": "string" }, - "brand-300": { + "brand_300": { "type": "string" }, - "brand-400": { + "brand_400": { "type": "string" }, - "brand-50": { + "brand_50": { "type": "string" }, - "brand-500": { + "brand_500": { "type": "string" }, - "brand-600": { + "brand_600": { "type": "string" }, - "brand-700": { + "brand_700": { "type": "string" }, - "brand-800": { + "brand_800": { "type": "string" }, - "brand-900": { + "brand_900": { "type": "string" }, - "brand-950": { + "brand_950": { "type": "string" }, - "button-identifier-background-default": { + "button_identifier_background_default": { "type": "string" }, - "button-identifier-background-hover": { + "button_identifier_background_hover": { "type": "string" }, - "button-identifier-border-border-default": { + "button_identifier_border_border_default": { "type": "string" }, - "button-identifier-border-border-hover": { + "button_identifier_border_border_hover": { "type": "string" }, - "button-identifier-foreground-default": { + "button_identifier_foreground_default": { "type": "string" }, - "button-identifier-foreground-hover": { + "button_identifier_foreground_hover": { "type": "string" }, - "button-link-brand-brand": { + "button_link_brand_brand": { "type": "string" }, - "button-link-brand-brand-hover": { + "button_link_brand_brand_hover": { "type": "string" }, - "button-link-default-primary": { + "button_link_default_primary": { "type": "string" }, - "button-link-default-primary-hover": { + "button_link_default_primary_hover": { "type": "string" }, - "button-link-default-secondary": { + "button_link_default_secondary": { "type": "string" }, - "button-link-default-secondary-hover": { + "button_link_default_secondary_hover": { "type": "string" }, - "button-link-disabled-disabled": { + "button_link_disabled_disabled": { "type": "string" }, - "button-primary-background-default": { + "button_primary_background_default": { "type": "string" }, - "button-primary-background-disabled": { + "button_primary_background_disabled": { "type": "string" }, - "button-primary-background-hover": { + "button_primary_background_hover": { "type": "string" }, - "button-primary-border-default": { + "button_primary_border_default": { "type": "string" }, - "button-primary-border-disabled": { + "button_primary_border_disabled": { "type": "string" }, - "button-primary-border-hover": { + "button_primary_border_hover": { "type": "string" }, - "button-primary-foreground-default": { + "button_primary_foreground_default": { "type": "string" }, - "button-primary-foreground-disabled": { + "button_primary_foreground_disabled": { "type": "string" }, - "button-primary-foreground-hover": { + "button_primary_foreground_hover": { "type": "string" }, - "button-secondary-background-default": { + "button_secondary_background_default": { "type": "string" }, - "button-secondary-background-disabled": { + "button_secondary_background_disabled": { "type": "string" }, - "button-secondary-background-hover": { + "button_secondary_background_hover": { "type": "string" }, - "button-secondary-border-default": { + "button_secondary_border_default": { "type": "string" }, - "button-secondary-border-disabled": { + "button_secondary_border_disabled": { "type": "string" }, - "button-secondary-border-hover": { + "button_secondary_border_hover": { "type": "string" }, - "button-secondary-foreground-default": { + "button_secondary_foreground_default": { "type": "string" }, - "button-secondary-foreground-disabled": { + "button_secondary_foreground_disabled": { "type": "string" }, - "button-secondary-foreground-hover": { + "button_secondary_foreground_hover": { "type": "string" }, - "button-social-background-default": { + "button_social_background_default": { "type": "string" }, - "button-social-background-disabled": { + "button_social_background_disabled": { "type": "string" }, - "button-social-background-generic-provider": { + "button_social_background_generic_provider": { "type": "string" }, - "button-social-background-hover": { + "button_social_background_hover": { "type": "string" }, - "button-social-border-default": { + "button_social_border_default": { "type": "string" }, - "button-social-border-disabled": { + "button_social_border_disabled": { "type": "string" }, - "button-social-border-generic-provider": { + "button_social_border_generic_provider": { "type": "string" }, - "button-social-border-hover": { + "button_social_border_hover": { "type": "string" }, - "button-social-foreground-default": { + "button_social_foreground_default": { "type": "string" }, - "button-social-foreground-disabled": { + "button_social_foreground_disabled": { "type": "string" }, - "button-social-foreground-generic-provider": { + "button_social_foreground_generic_provider": { "type": "string" }, - "button-social-foreground-hover": { + "button_social_foreground_hover": { "type": "string" }, - "checkbox-background-checked": { + "checkbox_background_checked": { "type": "string" }, - "checkbox-background-default": { + "checkbox_background_default": { "type": "string" }, - "checkbox-border-checkbox-border-checked": { + "checkbox_border_checkbox_border_checked": { "type": "string" }, - "checkbox-border-checkbox-border-default": { + "checkbox_border_checkbox_border_default": { "type": "string" }, - "checkbox-foreground-checked": { + "checkbox_foreground_checked": { "type": "string" }, - "checkbox-foreground-default": { + "checkbox_foreground_default": { "type": "string" }, - "form-background-default": { + "form_background_default": { "type": "string" }, - "form-border-default": { + "form_border_default": { "type": "string" }, - "input-background-default": { + "input_background_default": { "type": "string" }, - "input-background-disabled": { + "input_background_disabled": { "type": "string" }, - "input-background-hover": { + "input_background_hover": { "type": "string" }, - "input-border-default": { + "input_border_default": { "type": "string" }, - "input-border-disabled": { + "input_border_disabled": { "type": "string" }, - "input-border-focus": { + "input_border_focus": { "type": "string" }, - "input-border-hover": { + "input_border_hover": { "type": "string" }, - "input-foreground-disabled": { + "input_foreground_disabled": { "type": "string" }, - "input-foreground-primary": { + "input_foreground_primary": { "type": "string" }, - "input-foreground-secondary": { + "input_foreground_secondary": { "type": "string" }, - "input-foreground-tertiary": { + "input_foreground_tertiary": { "type": "string" }, - "interface-background-brand-primary": { + "interface_background_brand_primary": { "type": "string" }, - "interface-background-brand-primary-hover": { + "interface_background_brand_primary_hover": { "type": "string" }, - "interface-background-brand-secondary": { + "interface_background_brand_secondary": { "type": "string" }, - "interface-background-brand-secondary-hover": { + "interface_background_brand_secondary_hover": { "type": "string" }, - "interface-background-default-inverted": { + "interface_background_default_inverted": { "type": "string" }, - "interface-background-default-inverted-hover": { + "interface_background_default_inverted_hover": { "type": "string" }, - "interface-background-default-none": { + "interface_background_default_none": { "type": "string" }, - "interface-background-default-primary": { + "interface_background_default_primary": { "type": "string" }, - "interface-background-default-primary-hover": { + "interface_background_default_primary_hover": { "type": "string" }, - "interface-background-default-secondary": { + "interface_background_default_secondary": { "type": "string" }, - "interface-background-default-secondary-hover": { + "interface_background_default_secondary_hover": { "type": "string" }, - "interface-background-default-tertiary": { + "interface_background_default_tertiary": { "type": "string" }, - "interface-background-default-tertiary-hover": { + "interface_background_default_tertiary_hover": { "type": "string" }, - "interface-background-disabled-disabled": { + "interface_background_disabled_disabled": { "type": "string" }, - "interface-background-validation-danger": { + "interface_background_validation_danger": { "type": "string" }, - "interface-background-validation-success": { + "interface_background_validation_success": { "type": "string" }, - "interface-background-validation-warning": { + "interface_background_validation_warning": { "type": "string" }, - "interface-border-brand-brand": { + "interface_border_brand_brand": { "type": "string" }, - "interface-border-default-inverted": { + "interface_border_default_inverted": { "type": "string" }, - "interface-border-default-none": { + "interface_border_default_none": { "type": "string" }, - "interface-border-default-primary": { + "interface_border_default_primary": { "type": "string" }, - "interface-border-disabled-disabled": { + "interface_border_disabled_disabled": { "type": "string" }, - "interface-border-validation-danger": { + "interface_border_validation_danger": { "type": "string" }, - "interface-border-validation-success": { + "interface_border_validation_success": { "type": "string" }, - "interface-border-validation-warning": { + "interface_border_validation_warning": { "type": "string" }, - "interface-foreground-brand-on-primary": { + "interface_foreground_brand_on_primary": { "type": "string" }, - "interface-foreground-brand-on-secondary": { + "interface_foreground_brand_on_secondary": { "type": "string" }, - "interface-foreground-brand-primary": { + "interface_foreground_brand_primary": { "type": "string" }, - "interface-foreground-brand-secondary": { + "interface_foreground_brand_secondary": { "type": "string" }, - "interface-foreground-default-inverted": { + "interface_foreground_default_inverted": { "type": "string" }, - "interface-foreground-default-primary": { + "interface_foreground_default_primary": { "type": "string" }, - "interface-foreground-default-secondary": { + "interface_foreground_default_secondary": { "type": "string" }, - "interface-foreground-default-tertiary": { + "interface_foreground_default_tertiary": { "type": "string" }, - "interface-foreground-disabled-disabled": { + "interface_foreground_disabled_disabled": { "type": "string" }, - "interface-foreground-disabled-on-disabled": { + "interface_foreground_disabled_on_disabled": { "type": "string" }, - "interface-foreground-validation-danger": { + "interface_foreground_validation_danger": { "type": "string" }, - "interface-foreground-validation-success": { + "interface_foreground_validation_success": { "type": "string" }, - "interface-foreground-validation-warning": { + "interface_foreground_validation_warning": { "type": "string" }, - "ory-background-default": { + "ory_background_default": { "type": "string" }, - "ory-border-default": { + "ory_border_default": { "type": "string" }, - "ory-foreground-default": { + "ory_foreground_default": { "type": "string" }, - "radio-background-checked": { + "radio_background_checked": { "type": "string" }, - "radio-background-default": { + "radio_background_default": { "type": "string" }, - "radio-border-checked": { + "radio_border_checked": { "type": "string" }, - "radio-border-default": { + "radio_border_default": { "type": "string" }, - "radio-foreground-checked": { + "radio_foreground_checked": { "type": "string" }, - "radio-foreground-default": { + "radio_foreground_default": { "type": "string" }, - "toggle-background-checked": { + "toggle_background_checked": { "type": "string" }, - "toggle-background-default": { + "toggle_background_default": { "type": "string" }, - "toggle-border-checked": { + "toggle_border_checked": { "type": "string" }, - "toggle-border-default": { + "toggle_border_default": { "type": "string" }, - "toggle-foreground-checked": { + "toggle_foreground_checked": { "type": "string" }, - "toggle-foreground-default": { + "toggle_foreground_default": { "type": "string" }, - "ui-100": { + "ui_100": { "type": "string" }, - "ui-200": { + "ui_200": { "type": "string" }, - "ui-300": { + "ui_300": { "type": "string" }, - "ui-400": { + "ui_400": { "type": "string" }, - "ui-50": { + "ui_50": { "type": "string" }, - "ui-500": { + "ui_500": { "type": "string" }, - "ui-600": { + "ui_600": { "type": "string" }, - "ui-700": { + "ui_700": { "type": "string" }, - "ui-800": { + "ui_800": { "type": "string" }, - "ui-900": { + "ui_900": { "type": "string" }, - "ui-950": { + "ui_950": { "type": "string" }, - "ui-black": { + "ui_black": { "type": "string" }, - "ui-danger": { + "ui_danger": { "type": "string" }, - "ui-success": { + "ui_success": { "type": "string" }, - "ui-transparent": { + "ui_transparent": { "type": "string" }, - "ui-warning": { + "ui_warning": { "type": "string" }, - "ui-white": { + "ui_white": { "type": "string" } }, @@ -662,10 +662,20 @@ "CreateProjectNormalizedPayload": { "description": "Create project (normalized) request payload", "properties": { + "account_experience_custom_translations": { + "description": "The Account Experience's Custom Translations\n\nContains all Custom Translations for this project.", + "items": { + "$ref": "#/components/schemas/RevisionAccountExperienceCustomTranslation" + }, + "type": "array" + }, "account_experience_default_locale": { "description": "Holds the default locale for the account experience.", "type": "string" }, + "account_experience_enabled_locales": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "account_experience_favicon_dark": { "description": "Holds the URL to the account experience's dark theme favicon (currently unused).", "type": "string" @@ -794,6 +804,9 @@ "hydra_secrets_cookie": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, + "hydra_secrets_pagination": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "hydra_secrets_system": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, @@ -931,6 +944,9 @@ "keto_namespaces": { "$ref": "#/components/schemas/KetoNamespaces" }, + "keto_secrets_pagination": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "kratos_cookies_same_site": { "description": "Configures the Ory Kratos Cookie SameSite Attribute\n\nThis governs the \"cookies.same_site\" setting.", "type": "string" @@ -1143,6 +1159,10 @@ "description": "Configures the Ory Kratos Session caching max-age feature flag\n\nThis governs the \"feature_flags.cacheable_sessions_max_age\" setting.", "type": "string" }, + "kratos_feature_flags_choose_recovery_address": { + "description": "This governs the \"feature_flags.choose_recovery_address\" setting.", + "type": "boolean" + }, "kratos_feature_flags_faster_session_extend": { "description": "Configures the Ory Kratos Faster Session Extend setting\n\nIf enabled allows faster session extension by skipping the session lookup and returning 201 instead of 200.\nDisabling this feature will be deprecated in the future.\n\nThis governs the \"feature_flags.faster_session_extend\" setting.", "type": "boolean" @@ -1159,6 +1179,10 @@ "description": "Return a form error if the login identifier is not verified\n\nIf true, the login flow will return a form error if the login identifier is not verified, which restores legacy behavior. If this value is false, the `continue_with` array will contain a `show_verification_ui` hook instead.\n\nThis flag is deprecated and will be removed in the future.\n\nThis governs the \"feature_flags.legacy_require_verified_login_error\" setting.", "type": "boolean" }, + "kratos_feature_flags_password_profile_registration_node_group": { + "description": "Configures the group for the password method in the registration flow.\n\nIf true, it sets the password method group value to \"password\" if it is the only method available. This is the legacy behavior.\nIf false is, it sets the password method group value to \"default\".", + "type": "boolean" + }, "kratos_feature_flags_use_continue_with_transitions": { "description": "Configures the Ory Kratos Session use_continue_with_transitions flag\n\nThis governs the \"feature_flags.use_continue_with_transitions\" setting.", "type": "boolean" @@ -1190,6 +1214,9 @@ "kratos_secrets_default": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, + "kratos_secrets_pagination": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "kratos_security_account_enumeration_mitigate": { "description": "Configures if account enumeration should be mitigated when using identifier first login.", "type": "boolean" @@ -1393,6 +1420,9 @@ "type": "string", "x-go-enum-desc": "link SelfServiceMessageVerificationStrategyLink\ncode SelfServiceMessageVerificationStrategyCode" }, + "kratos_selfservice_methods_captcha_config_allowed_domains": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "kratos_selfservice_methods_captcha_config_cf_turnstile_secret": { "description": "Configures the Cloudflare Turnstile site secret for CAPTCHA protection\n\nThe site secret is private and will be never be shared with the client. This key is write only and the value will not be returned in response to a read request.\n\nReach out to your account manager to enable this feature.", "type": "string" @@ -1401,6 +1431,10 @@ "description": "Configures the Cloudflare Turnstile site key for CAPTCHA protection\n\nThe site key is public and will be shared with the client.\n\nReach out to your account manager to enable this feature.", "type": "string" }, + "kratos_selfservice_methods_captcha_config_legacy_inject_node": { + "description": "Configures the Ory Kratos Self-Service Methods' Captcha Enabled Setting\n\nReach out to your account manager to enable this feature.", + "type": "boolean" + }, "kratos_selfservice_methods_captcha_enabled": { "description": "Configures the Ory Kratos Self-Service Methods' Captcha Enabled Setting\n\nReach out to your account manager to enable this feature.", "type": "boolean" @@ -1409,6 +1443,9 @@ "description": "Configures the Ory Kratos Code Method's lifespan\n\nThis governs the \"selfservice.methods.code.config.lifespan\" setting.", "type": "string" }, + "kratos_selfservice_methods_code_config_max_submissions": { + "$ref": "#/components/schemas/nullInt64" + }, "kratos_selfservice_methods_code_config_missing_credential_fallback_enabled": { "description": "Enables a fallback method required in certain legacy use cases.\n\nThis governs the \"selfservice.methods.code.config.missing_credential_fallback_enabled\" setting.", "type": "boolean" @@ -2172,6 +2209,20 @@ "title": "RecoveryAddressType must not exceed 16 characters as that is the limitation in the SQL Schema.", "type": "string" }, + "RevisionAccountExperienceCustomTranslation": { + "properties": { + "locale": { + "description": "The locale (e.g. \"en\", \"de\")", + "type": "string" + }, + "translations": { + "description": "The URL where the i18n json can be found", + "type": "string" + } + }, + "required": ["locale", "translations"], + "type": "object" + }, "SessionActivityDatapoint": { "properties": { "country": { @@ -2329,9 +2380,6 @@ "grant_scope": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, - "handled_at": { - "$ref": "#/components/schemas/nullTime" - }, "remember": { "description": "Remember, if set to true, tells ORY Hydra to remember this consent authorization and reuse it if the same\nclient asks the same user for the same, or a subset of, scope.", "type": "boolean" @@ -2363,7 +2411,7 @@ "acceptOAuth2LoginRequest": { "properties": { "acr": { - "description": "ACR sets the Authentication AuthorizationContext Class Reference value for this authentication session. You can use it\nto express that, for example, a user authenticated using two factor authentication.", + "description": "ACR sets the Authentication AuthorizationContext Class Reference value for this authentication session. You can use it\nto express that, for example, a user authenticated using two-factor authentication.", "type": "string" }, "amr": { @@ -2385,7 +2433,7 @@ "type": "string" }, "remember": { - "description": "Remember, if set to true, tells ORY Hydra to remember this user by telling the user agent (browser) to store\na cookie with authentication data. If the same user performs another OAuth 2.0 Authorization Request, he/she\nwill not be asked to log in again.", + "description": "Remember, if set to true, tells Ory Hydra to remember this user by telling the user agent (browser) to store\na cookie with authentication data. If the same user performs another OAuth 2.0 Authorization Request, they\nwill not be asked to log in again.", "type": "boolean" }, "remember_for": { @@ -2410,6 +2458,12 @@ "default_redirect_url": { "type": "string" }, + "enabled_locales": { + "items": { + "type": "string" + }, + "type": "array" + }, "error_ui_url": { "type": "string" }, @@ -2455,6 +2509,12 @@ "stylesheet": { "type": "string" }, + "translations": { + "items": { + "$ref": "#/components/schemas/RevisionAccountExperienceCustomTranslation" + }, + "type": "array" + }, "verification_enabled": { "type": "boolean" }, @@ -2475,291 +2535,12 @@ "login_ui_url", "settings_ui_url", "error_ui_url", - "default_redirect_url" + "default_redirect_url", + "translations", + "enabled_locales" ], "type": "object" }, - "accountExperienceThemeVariables": { - "properties": { - "accent": { - "type": "string" - }, - "bg-default": { - "type": "string" - }, - "border-radius-branding": { - "type": "string" - }, - "border-radius-buttons": { - "type": "string" - }, - "border-radius-cards": { - "type": "string" - }, - "border-radius-forms": { - "type": "string" - }, - "border-radius-general": { - "type": "string" - }, - "button-primary-bg-default": { - "type": "string" - }, - "button-primary-bg-disabled": { - "type": "string" - }, - "button-primary-bg-hover": { - "type": "string" - }, - "button-primary-border-default": { - "type": "string" - }, - "button-primary-border-disabled": { - "type": "string" - }, - "button-primary-border-hover": { - "type": "string" - }, - "button-primary-fg-default": { - "type": "string" - }, - "button-primary-fg-disabled": { - "type": "string" - }, - "button-primary-fg-hover": { - "type": "string" - }, - "button-secondary-bg-default": { - "type": "string" - }, - "button-secondary-bg-disabled": { - "type": "string" - }, - "button-secondary-bg-hover": { - "type": "string" - }, - "button-secondary-border-default": { - "type": "string" - }, - "button-secondary-border-disabled": { - "type": "string" - }, - "button-secondary-border-hover": { - "type": "string" - }, - "button-secondary-fg-default": { - "type": "string" - }, - "button-secondary-fg-disabled": { - "type": "string" - }, - "button-secondary-fg-hover": { - "type": "string" - }, - "button-social-bg-default": { - "type": "string" - }, - "button-social-bg-disabled": { - "type": "string" - }, - "button-social-bg-hover": { - "type": "string" - }, - "button-social-bg-provider": { - "type": "string" - }, - "button-social-border-default": { - "type": "string" - }, - "button-social-border-disabled": { - "type": "string" - }, - "button-social-border-hover": { - "type": "string" - }, - "button-social-border-provider": { - "type": "string" - }, - "button-social-fg-default": { - "type": "string" - }, - "button-social-fg-disabled": { - "type": "string" - }, - "button-social-fg-hover": { - "type": "string" - }, - "button-social-fg-provider": { - "type": "string" - }, - "created_at": { - "format": "date-time", - "type": "string" - }, - "dialog-bg-default": { - "type": "string" - }, - "dialog-bg-subtle": { - "type": "string" - }, - "dialog-border-default": { - "type": "string" - }, - "dialog-fg-default": { - "type": "string" - }, - "dialog-fg-mute": { - "type": "string" - }, - "dialog-fg-subtle": { - "type": "string" - }, - "forms-bg-default": { - "type": "string" - }, - "forms-bg-disabled": { - "type": "string" - }, - "forms-bg-hover": { - "type": "string" - }, - "forms-border-default": { - "type": "string" - }, - "forms-border-disabled": { - "type": "string" - }, - "forms-border-error": { - "type": "string" - }, - "forms-border-focus": { - "type": "string" - }, - "forms-border-hover": { - "type": "string" - }, - "forms-border-success": { - "type": "string" - }, - "forms-border-warn": { - "type": "string" - }, - "forms-checkbox-bg-checked": { - "type": "string" - }, - "forms-checkbox-bg-default": { - "type": "string" - }, - "forms-checkbox-border-checked": { - "type": "string" - }, - "forms-checkbox-border-default": { - "type": "string" - }, - "forms-checkbox-fg-checked": { - "type": "string" - }, - "forms-checkbox-fg-default": { - "type": "string" - }, - "forms-fg-default": { - "type": "string" - }, - "forms-fg-error": { - "type": "string" - }, - "forms-fg-mute": { - "type": "string" - }, - "forms-fg-subtle": { - "type": "string" - }, - "forms-fg-success": { - "type": "string" - }, - "forms-fg-warn": { - "type": "string" - }, - "forms-radio-bg-checked": { - "type": "string" - }, - "forms-radio-bg-default": { - "type": "string" - }, - "forms-radio-border-checked": { - "type": "string" - }, - "forms-radio-border-default": { - "type": "string" - }, - "forms-radio-fg-checked": { - "type": "string" - }, - "forms-radio-fg-default": { - "type": "string" - }, - "forms-toggle-bg-checked": { - "type": "string" - }, - "forms-toggle-bg-default": { - "type": "string" - }, - "forms-toggle-border-checked": { - "type": "string" - }, - "forms-toggle-border-default": { - "type": "string" - }, - "forms-toggle-fg-checked": { - "type": "string" - }, - "forms-toggle-fg-default": { - "type": "string" - }, - "id": { - "format": "uuid", - "type": "string" - }, - "links-link-default": { - "type": "string" - }, - "links-link-disabled": { - "type": "string" - }, - "links-link-hover": { - "type": "string" - }, - "links-link-inverted-default": { - "type": "string" - }, - "links-link-inverted-hover": { - "type": "string" - }, - "links-link-mute-default": { - "type": "string" - }, - "links-link-mute-hover": { - "type": "string" - }, - "syntax-syntax": { - "type": "string" - }, - "syntax-syntax-key": { - "type": "string" - }, - "syntax-syntax-num": { - "type": "string" - }, - "syntax-syntax-value": { - "type": "string" - }, - "updated_at": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, "activeProjectInConsole": { "description": "The Active Project ID", "properties": { @@ -3170,6 +2951,10 @@ "credentials": { "$ref": "#/components/schemas/identityWithCredentials" }, + "external_id": { + "description": "ExternalID is an optional external ID of the identity. This is used to link\nthe identity to an external system. If set, the external ID must be unique\nacross all identities.", + "type": "string" + }, "metadata_admin": { "description": "Store metadata about the user which is only accessible through admin APIs such as `GET /admin/identities/\u003cid\u003e`." }, @@ -3235,15 +3020,38 @@ }, "createOrganizationOnboardingPortalLinkBody": { "properties": { + "custom_hostname_id": { + "$ref": "#/components/schemas/NullUUID" + }, + "enable_scim": { + "description": "Feature flag to enable SCIM configuration", + "type": "boolean" + }, "enable_sso": { "description": "Feature flag to enable SSO configuration", "type": "boolean" }, "expires_at": { "$ref": "#/components/schemas/Time" + }, + "proxy_acs_url": { + "description": "Proxy ACS URL if overriding with a customer-controlled URL", + "type": "string" + }, + "proxy_oidc_redirect_url": { + "description": "Proxy OIDC Redirect URL if overriding with a customer-controlled URL", + "type": "string" + }, + "proxy_saml_audience_override": { + "description": "SAML Audience Override if overriding with a customer-controlled one", + "type": "string" + }, + "proxy_scim_server_url": { + "description": "Proxy SCIM Server URL if overriding with a customer-controlled URL", + "type": "string" } }, - "required": ["enable_sso"], + "required": ["enable_sso", "enable_scim"], "type": "object" }, "createProjectBody": { @@ -3513,7 +3321,7 @@ "" ], "type": "string", - "x-go-enum-desc": "initializing initializing\npending_validation pending_validation\ndeleted deleted\npending_issuance pending_issuance\npending_deployment pending_deployment\npending_deletion pending_deletion\npending_expiration pending_expiration\nexpired expired\nactive active\ninitializing_timed_out initializing_timed_out\nvalidation_timed_out validation_timed_out\nissuance_timed_out issuance_timed_out\ndeployment_timed_out deployment_timed_out\ndeletion_timed_out deletion_timed_out\npending_cleanup pending_cleanup\nstaging_deployment staging_deployment\nstaging_active staging_active\ndeactivating deactivating\ninactive inactive\nbackup_issued backup_issued\nholding_deployment holding_deployment\n unknown Cloudflare sometimes returns an empty string." + "x-go-enum-desc": "initializing _\npending_validation _\ndeleted _\npending_issuance _\npending_deployment _\npending_deletion _\npending_expiration _\nexpired _\nactive _\ninitializing_timed_out _\nvalidation_timed_out _\nissuance_timed_out _\ndeployment_timed_out _\ndeletion_timed_out _\npending_cleanup _\nstaging_deployment _\nstaging_active _\ndeactivating _\ninactive _\nbackup_issued _\nholding_deployment _\n _ Cloudflare sometimes returns an empty string." }, "updated_at": { "format": "date-time", @@ -3859,7 +3667,7 @@ }, "type": "object" }, - "getAttributesCountResponse": { + "getAttributesCount": { "description": "Response of the getAttributesCount endpoint", "properties": { "data": { @@ -3883,22 +3691,40 @@ }, "type": "object" }, - "getMetricsEventAttributesResponse": { - "description": "Response of the getMetricsEventAttributes endpoint", + "getMetricsCount": { + "description": "Response of the getIdentityCount endpoint", "properties": { - "events": { - "description": "The list of data points.", - "items": { - "type": "string" - }, - "readOnly": true, + "count": { + "description": "The total count", + "format": "int64", + "readOnly": true, + "type": "integer" + }, + "service_name": { + "description": "Helper field to identify the service used for this response", + "readOnly": true, + "type": "string" + } + }, + "required": ["count", "service_name"], + "type": "object" + }, + "getMetricsEventAttributes": { + "description": "Response of the getMetricsEventAttributes endpoint", + "properties": { + "events": { + "description": "The list of data points.", + "items": { + "type": "string" + }, + "readOnly": true, "type": "array" } }, "required": ["events"], "type": "object" }, - "getMetricsEventTypesResponse": { + "getMetricsEventTypes": { "description": "Response of the getMetricsEventTypes endpoint", "properties": { "events": { @@ -3923,6 +3749,26 @@ "title": "getOrganizationResponse represents a B2B SSO Organization.", "type": "object" }, + "getProjectEvents": { + "description": "Response of the getProjectEvents endpoint", + "properties": { + "events": { + "description": "The list of data points.", + "items": { + "$ref": "#/components/schemas/ProjectEventsDatapoint" + }, + "readOnly": true, + "type": "array" + }, + "page_token": { + "description": "Pagination token to be included in next page request", + "readOnly": true, + "type": "string" + } + }, + "required": ["events"], + "type": "object" + }, "getProjectEventsBody": { "description": "Body of the getProjectEvents endpoint", "properties": { @@ -3962,27 +3808,7 @@ "required": ["from", "to"], "type": "object" }, - "getProjectEventsResponse": { - "description": "Response of the getProjectEvents endpoint", - "properties": { - "events": { - "description": "The list of data points.", - "items": { - "$ref": "#/components/schemas/ProjectEventsDatapoint" - }, - "readOnly": true, - "type": "array" - }, - "page_token": { - "description": "Pagination token to be included in next page request", - "readOnly": true, - "type": "string" - } - }, - "required": ["events"], - "type": "object" - }, - "getProjectMetricsResponse": { + "getProjectMetrics": { "description": "Response of the getMetrics endpoint", "properties": { "data": { @@ -3997,7 +3823,7 @@ "required": ["data"], "type": "object" }, - "getSessionActivityResponse": { + "getSessionActivity": { "description": "Response of the getSessionActivity endpoint", "properties": { "data": { @@ -4050,6 +3876,10 @@ "description": "Credentials represents all credentials that can be used for authenticating this identity.", "type": "object" }, + "external_id": { + "description": "ExternalID is an optional external ID of the identity. This is used to link\nthe identity to an external system. If set, the external ID must be unique\nacross all identities.", + "type": "string" + }, "id": { "description": "ID is the identity's unique identifier.\n\nThe Identity ID can not be changed and can not be chosen. This ensures future\ncompatibility and optimization for distributed stores such as CockroachDB.", "format": "uuid", @@ -4295,6 +4125,7 @@ "type": "object" } }, + "required": ["id", "schema"], "type": "object" }, "identitySchemaPreset": { @@ -4480,6 +4311,16 @@ "required": ["project_slug", "path"], "type": "object" }, + "internalIsOwnerForProjectBySlug": { + "properties": { + "project_id": { + "description": "ProjectID is the project's ID.", + "type": "string" + } + }, + "required": ["project_id"], + "type": "object" + }, "internalIsOwnerForProjectBySlugBody": { "description": "Is Owner For Project By Slug Request Body", "properties": { @@ -4504,16 +4345,6 @@ "required": ["subject", "namespace", "project_slug"], "type": "object" }, - "internalIsOwnerForProjectBySlugResponse": { - "properties": { - "project_id": { - "description": "ProjectID is the project's ID.", - "type": "string" - } - }, - "required": ["project_id"], - "type": "object" - }, "introspectedOAuth2Token": { "description": "Introspection contains an access token's session data as specified by\n[IETF RFC 7662](https://tools.ietf.org/html/rfc7662)", "properties": { @@ -4767,6 +4598,36 @@ }, "type": "object" }, + "keysetPaginationRequestParameters": { + "description": "For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "properties": { + "page_size": { + "default": 250, + "description": "Items per Page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "format": "int64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "page_token": { + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "type": "string" + } + }, + "title": "Pagination Request Parameters", + "type": "object" + }, + "keysetPaginationResponseHeaders": { + "description": "The `Link` HTTP header contains multiple links (`first`, `next`) formatted as:\n`\u003chttps://{project-slug}.projects.oryapis.com/admin/sessions?page_size=250\u0026page_token=\u003e; rel=\"first\"`\n\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "properties": { + "link": { + "description": "The Link HTTP Header\n\nThe `Link` header contains a comma-delimited list of links to the following pages:\n\nfirst: The first page of results.\nnext: The next page of results.\n\nPages are omitted if they do not exist. For example, if there is no next page, the `next` link is omitted. Examples:\n\n\u003c/admin/sessions?page_size=250\u0026page_token={last_item_uuid}; rel=\"first\",/admin/sessions?page_size=250\u0026page_token=\u003e; rel=\"next\"", + "type": "string" + } + }, + "title": "Pagination Response Header", + "type": "object" + }, "listCustomDomains": { "description": "Custom Hostname List", "items": { @@ -4896,6 +4757,10 @@ "format": "uuid", "type": "string" }, + "identity_schema": { + "description": "IdentitySchema optionally holds the ID of the identity schema that is used\nfor this flow. This value can be set by the user when creating the flow and\nshould be retained when the flow is saved or converted to another flow.", + "type": "string" + }, "issued_at": { "description": "IssuedAt is the time (UTC) when the flow started.", "format": "date-time", @@ -5367,10 +5232,20 @@ }, "normalizedProjectRevision": { "properties": { + "account_experience_custom_translations": { + "description": "The Account Experience's Custom Translations\n\nContains all Custom Translations for this project.", + "items": { + "$ref": "#/components/schemas/RevisionAccountExperienceCustomTranslation" + }, + "type": "array" + }, "account_experience_default_locale": { "description": "Holds the default locale for the account experience.", "type": "string" }, + "account_experience_enabled_locales": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "account_experience_favicon_dark": { "description": "Holds the URL to the account experience's dark theme favicon (currently unused).", "type": "string" @@ -5480,6 +5355,9 @@ "hydra_secrets_cookie": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, + "hydra_secrets_pagination": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "hydra_secrets_system": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, @@ -5617,6 +5495,9 @@ "keto_namespaces": { "$ref": "#/components/schemas/KetoNamespaces" }, + "keto_secrets_pagination": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "kratos_cookies_same_site": { "description": "Configures the Ory Kratos Cookie SameSite Attribute\n\nThis governs the \"cookies.same_site\" setting.", "type": "string" @@ -5829,6 +5710,10 @@ "description": "Configures the Ory Kratos Session caching max-age feature flag\n\nThis governs the \"feature_flags.cacheable_sessions_max_age\" setting.", "type": "string" }, + "kratos_feature_flags_choose_recovery_address": { + "description": "This governs the \"feature_flags.choose_recovery_address\" setting.", + "type": "boolean" + }, "kratos_feature_flags_faster_session_extend": { "description": "Configures the Ory Kratos Faster Session Extend setting\n\nIf enabled allows faster session extension by skipping the session lookup and returning 201 instead of 200.\nDisabling this feature will be deprecated in the future.\n\nThis governs the \"feature_flags.faster_session_extend\" setting.", "type": "boolean" @@ -5845,6 +5730,10 @@ "description": "Return a form error if the login identifier is not verified\n\nIf true, the login flow will return a form error if the login identifier is not verified, which restores legacy behavior. If this value is false, the `continue_with` array will contain a `show_verification_ui` hook instead.\n\nThis flag is deprecated and will be removed in the future.\n\nThis governs the \"feature_flags.legacy_require_verified_login_error\" setting.", "type": "boolean" }, + "kratos_feature_flags_password_profile_registration_node_group": { + "description": "Configures the group for the password method in the registration flow.\n\nIf true, it sets the password method group value to \"password\" if it is the only method available. This is the legacy behavior.\nIf false is, it sets the password method group value to \"default\".", + "type": "boolean" + }, "kratos_feature_flags_use_continue_with_transitions": { "description": "Configures the Ory Kratos Session use_continue_with_transitions flag\n\nThis governs the \"feature_flags.use_continue_with_transitions\" setting.", "type": "boolean" @@ -5876,6 +5765,9 @@ "kratos_secrets_default": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, + "kratos_secrets_pagination": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "kratos_security_account_enumeration_mitigate": { "description": "Configures if account enumeration should be mitigated when using identifier first login.", "type": "boolean" @@ -6079,6 +5971,9 @@ "type": "string", "x-go-enum-desc": "link SelfServiceMessageVerificationStrategyLink\ncode SelfServiceMessageVerificationStrategyCode" }, + "kratos_selfservice_methods_captcha_config_allowed_domains": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, "kratos_selfservice_methods_captcha_config_cf_turnstile_secret": { "description": "Configures the Cloudflare Turnstile site secret for CAPTCHA protection\n\nThe site secret is private and will be never be shared with the client. This key is write only and the value will not be returned in response to a read request.\n\nReach out to your account manager to enable this feature.", "type": "string" @@ -6087,6 +5982,10 @@ "description": "Configures the Cloudflare Turnstile site key for CAPTCHA protection\n\nThe site key is public and will be shared with the client.\n\nReach out to your account manager to enable this feature.", "type": "string" }, + "kratos_selfservice_methods_captcha_config_legacy_inject_node": { + "description": "Configures the Ory Kratos Self-Service Methods' Captcha Enabled Setting\n\nReach out to your account manager to enable this feature.", + "type": "boolean" + }, "kratos_selfservice_methods_captcha_enabled": { "description": "Configures the Ory Kratos Self-Service Methods' Captcha Enabled Setting\n\nReach out to your account manager to enable this feature.", "type": "boolean" @@ -6095,6 +5994,9 @@ "description": "Configures the Ory Kratos Code Method's lifespan\n\nThis governs the \"selfservice.methods.code.config.lifespan\" setting.", "type": "string" }, + "kratos_selfservice_methods_code_config_max_submissions": { + "$ref": "#/components/schemas/nullInt64" + }, "kratos_selfservice_methods_code_config_missing_credential_fallback_enabled": { "description": "Enables a fallback method required in certain legacy use cases.\n\nThis governs the \"selfservice.methods.code.config.missing_credential_fallback_enabled\" setting.", "type": "boolean" @@ -6425,6 +6327,9 @@ "format": "uuid", "type": "string" }, + "selfservice_selectable": { + "type": "boolean" + }, "updated_at": { "description": "Last Time Project's Revision was Updated", "format": "date-time", @@ -6442,6 +6347,9 @@ }, "normalizedProjectRevisionSAMLProvider": { "properties": { + "audience_override_base_url": { + "$ref": "#/components/schemas/String" + }, "created_at": { "description": "The Project's Revision Creation Date", "format": "date-time", @@ -6472,6 +6380,12 @@ "description": "ID is the provider's ID", "type": "string" }, + "proxy_acs_url": { + "$ref": "#/components/schemas/String" + }, + "proxy_saml_audience_override": { + "$ref": "#/components/schemas/String" + }, "raw_idp_metadata_xml": { "description": "RawIDPMetadataXML is the raw XML metadata of the IDP.", "type": "string" @@ -6508,6 +6422,10 @@ "readOnly": true, "type": "string" }, + "id": { + "format": "uuid", + "type": "string" + }, "label": { "description": "The SCIM server's label", "type": "string" @@ -6521,6 +6439,9 @@ "format": "uuid", "type": "string" }, + "proxy_scim_server_url": { + "$ref": "#/components/schemas/String" + }, "state": { "description": "State indicates the state of the SCIM server\n\nOnly servers with state `enabled` will be available for SCIM provisioning.\nenabled ThirdPartyProviderStateEnabled\ndisabled ThirdPartyProviderStateDisabled", "enum": ["enabled", "disabled"], @@ -6614,10 +6535,8 @@ "$ref": "#/components/schemas/NullUUID" }, "pkce": { - "description": "PKCE controls if the OpenID Connect OAuth2 flow should use PKCE (Proof Key for Code Exchange).\nPossible values are: `auto` (default), `never`, `force`.\n`auto`: PKCE is used if the provider supports it. Requires setting `issuer_url`.\n`never`: Disable PKCE entirely for this provider, even if the provider advertises support for it.\n`force`: Always use PKCE, even if the provider does not advertise support for it. OAuth2 flows will fail if the provider does not support PKCE.\nIMPORTANT: If you set this to `force`, you must whitelist a different return URL for your OAuth2 client in the provider's configuration.\nInstead of \u003cbase-url\u003e/self-service/methods/oidc/callback/\u003cprovider\u003e, you must use \u003cbase-url\u003e/self-service/methods/oidc/callback\n(Note the missing \u003cprovider\u003e path segment and no trailing slash).", "enum": ["auto", "never", "force"], - "nullable": true, - "type": "string" + "nullable": true }, "project_revision_id": { "description": "The Revision's ID this schema belongs to", @@ -6633,6 +6552,11 @@ "description": "ID is the provider's ID", "type": "string" }, + "proxy_oidc_redirect_url": { + "description": "Proxy OIDC Redirect URL if overriding with a customer-controlled URL", + "readOnly": true, + "type": "string" + }, "requested_claims": { "$ref": "#/components/schemas/JSONRawMessage" }, @@ -6693,6 +6617,12 @@ "format": "uuid", "type": "string" }, + "subject_source": { + "default": "id", + "description": "Subject source for the tokenizer\n\nCan be either id or external_id or empty", + "enum": ["id", "external_id"], + "type": "string" + }, "ttl": { "default": "1m", "description": "Token time to live", @@ -7009,10 +6939,6 @@ "context": { "$ref": "#/components/schemas/JSONRawMessage" }, - "device_challenge_id": { - "description": "DeviceChallenge is the device challenge this consent challenge belongs to, if this flow was initiated by a device.", - "type": "string" - }, "login_challenge": { "description": "LoginChallenge is the login challenge this consent challenge belongs to. It can be used to associate\na login and consent request in the login \u0026 consent app.", "type": "string" @@ -7093,31 +7019,6 @@ "context": { "$ref": "#/components/schemas/JSONRawMessage" }, - "expires_at": { - "properties": { - "access_token": { - "format": "date-time", - "type": "string" - }, - "authorize_code": { - "format": "date-time", - "type": "string" - }, - "id_token": { - "format": "date-time", - "type": "string" - }, - "par_context": { - "format": "date-time", - "type": "string" - }, - "refresh_token": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, "grant_access_token_audience": { "$ref": "#/components/schemas/StringSliceJSONFormat" }, @@ -7553,6 +7454,13 @@ "readOnly": true, "type": "string" }, + "custom_hostname_id": { + "$ref": "#/components/schemas/NullUUID" + }, + "enable_scim": { + "description": "Feature flag to enable SCIM configuration", + "type": "boolean" + }, "enable_sso": { "description": "Feature flag to enable SSO configuration", "type": "boolean" @@ -7581,6 +7489,22 @@ "readOnly": true, "type": "string" }, + "proxy_acs_url": { + "description": "Proxy ACS URL if overriding with a customer-controlled URL", + "type": "string" + }, + "proxy_oidc_redirect_url": { + "description": "Proxy OIDC Redirect URL if overriding with a customer-controlled URL", + "type": "string" + }, + "proxy_saml_audience_override": { + "description": "SAML Audience Override if overriding with a customer-controlled one", + "type": "string" + }, + "proxy_scim_server_url": { + "description": "Proxy SCIM Server URL if overriding with a customer-controlled URL", + "type": "string" + }, "value": { "description": "The onboarding portal link's value", "readOnly": true, @@ -7601,11 +7525,13 @@ "base_url": { "type": "string" }, + "kratos_selfservice_methods_oidc_config_providers": { + "$ref": "#/components/schemas/projectRevisionThirdPartyLoginProviders" + }, "kratos_selfservice_methods_saml_config_providers": { "$ref": "#/components/schemas/projectRevisionSamlProviders" }, "organization_id": { - "description": "Organization ID", "format": "uuid", "type": "string" }, @@ -7613,15 +7539,45 @@ "description": "Organization Label", "type": "string" }, + "proxy_acs_url": { + "description": "Proxy ACS URL if overriding with a customer-controlled URL", + "type": "string" + }, + "proxy_oidc_redirect_url": { + "description": "Proxy OIDC Redirect URL if overriding with a customer-controlled URL", + "type": "string" + }, + "proxy_saml_audience_override": { + "description": "SAML Audience Override if overriding with a customer-controlled one", + "type": "string" + }, + "proxy_scim_server_url": { + "description": "Proxy SCIM Server URL if overriding with a customer-controlled URL", + "type": "string" + }, "revision_id": { "format": "uuid", "type": "string" + }, + "scim_clients": { + "$ref": "#/components/schemas/projectRevisionScimClients" + }, + "scim_enabled": { + "type": "boolean" + }, + "sso_enabled": { + "type": "boolean" } }, "required": [ "revision_id", "base_url", - "kratos_selfservice_methods_saml_config_providers" + "sso_enabled", + "scim_enabled", + "kratos_selfservice_methods_saml_config_providers", + "kratos_selfservice_methods_oidc_config_providers", + "scim_clients", + "organization_id" ], "type": "object" }, @@ -7666,38 +7622,6 @@ }, "type": "array" }, - "pagination": { - "properties": { - "page_size": { - "default": 250, - "description": "Items per page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", - "format": "int64", - "maximum": 1000, - "minimum": 1, - "type": "integer" - }, - "page_token": { - "default": "1", - "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", - "minimum": 1, - "type": "string" - } - }, - "type": "object" - }, - "paginationHeaders": { - "properties": { - "link": { - "description": "The link header contains pagination links.\n\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).\n\nin: header", - "type": "string" - }, - "x-total-count": { - "description": "The total number of clients.\n\nin: header", - "type": "string" - } - }, - "type": "object" - }, "patchIdentitiesBody": { "description": "Patch Identities Body", "properties": { @@ -8117,17 +8041,6 @@ "description": "AccentSubtleColor is a hex color code used by the Ory Account Experience theme.", "type": "string" }, - "account_experience_variables": { - "description": "The Account Experience Theme Variables.", - "items": { - "$ref": "#/components/schemas/accountExperienceThemeVariables" - }, - "type": "array" - }, - "account_experience_variables_stylesheet": { - "description": "AccountExperienceVariableStylesheet holds a reference to the current stylesheet that can be used in the AX", - "type": "string" - }, "background_canvas_color": { "description": "BackgroundCanvasColor is a hex color code used by the Ory Account Experience theme.", "type": "string" @@ -8473,6 +8386,15 @@ }, "type": "array" }, + "projectServiceAccountExperience": { + "properties": { + "config": { + "type": "object" + } + }, + "required": ["config"], + "type": "object" + }, "projectServiceIdentity": { "properties": { "config": { @@ -8502,6 +8424,9 @@ }, "projectServices": { "properties": { + "account_experience": { + "$ref": "#/components/schemas/projectServiceAccountExperience" + }, "identity": { "$ref": "#/components/schemas/projectServiceIdentity" }, @@ -8524,7 +8449,7 @@ "type": "boolean" }, "feature": { - "description": "\nproduction_projects ProductionProjects\nstaging_projects StagingProjects\ndevelopment_projects DevelopmentProjects\ndaily_active_users DailyActiveUsers\ncustom_domains CustomDomains\nevent_streams EventStreams\nevent_stream_events EventStreamEvents\nsla SLA\ncollaborator_seats CollaboratorSeats\nedge_cache EdgeCache\nbranding_themes BrandingThemes\nzendesk_support ZendeskSupport\nproject_metrics ProjectMetrics\nproject_metrics_time_window ProjectMetricsTimeWindow\nproject_metrics_events_history ProjectMetricsEventsHistory\norganizations Organizations\nrop_grant ResourceOwnerPasswordGrant\nconcierge_onboarding ConciergeOnboarding\ncredit Credit\ndata_location_global DataLocationGlobal\ndata_location_us DataLocationUS\ndata_location_asiane DataLocationAsiaNorthEast\nm2m_token_issuance M2MTokenIssuance\npermission_checks PermissionChecks\ncaptcha Captcha\nsaml_sp SAMLSP\nsaml_idp SAMLIDP\nauto_link_policy AutoLinkPolicy\nscim_clients SCIMClients\ndefault_smtp_email_customization DefaultSMTPEmailCustomization\nonboarding_portal OnboardingPortal\nupdate_self_service_registration_rate_limit_tier RateLimitTierUpdateSelfServiceRegistration Self-service rate limits\nupdate_self_service_recovery_rate_limit_tier RateLimitTierUpdateSelfServiceRecovery\nupdate_self_service_settings_rate_limit_tier RateLimitTierUpdateSelfServiceSettings\nupdate_self_service_verification_rate_limit_tier RateLimitTierUpdateSelfServiceVerification\nidentities_create_rate_limit_tier RateLimitTierIdentitiesCreate\nidentities_import_rate_limit_tier RateLimitTierIdentitiesImport\ndata_location_regional DataLocationRegional Required Features\nrate_limit_tier RateLimitTier\nsession_rate_limit_tier RateLimitTierSessions\nidentities_list_rate_limit_tier RateLimitTierIdentitiesList\npermission_checks_rate_limit_tier RateLimitTierPermissionChecks\noauth2_introspect_rate_limit_tier RateLimitTierOAuth2Introspect\ncreate_recovery_admin_rate_limit_tier RateLimitTierCreateAdminRecovery\nscim_rate_limit_tier RateLimitTierSCIM", + "description": "\nproduction_projects ProductionProjects\nstaging_projects StagingProjects\ndevelopment_projects DevelopmentProjects\ndaily_active_users DailyActiveUsers\ncustom_domains CustomDomains\nevent_streams EventStreams\nevent_stream_events EventStreamEvents\nsla SLA\ncollaborator_seats CollaboratorSeats\nedge_cache EdgeCache\nbranding_themes BrandingThemes\nzendesk_support ZendeskSupport\nzendesk_support_on_call ZendeskSupportOnCall\nproject_metrics ProjectMetrics\nproject_metrics_time_window ProjectMetricsTimeWindow\nproject_metrics_events_history ProjectMetricsEventsHistory\norganizations Organizations\nrop_grant ResourceOwnerPasswordGrant\nconcierge_onboarding ConciergeOnboarding\ncredit Credit\ndata_location_global DataLocationGlobal\ndata_location_us DataLocationUS\ndata_location_asiane DataLocationAsiaNorthEast\nm2m_token_issuance M2MTokenIssuance\npermission_checks PermissionChecks\ncaptcha Captcha\nidentity_search_api IdentitySearchAPI\nsaml_sp SAMLSP\nsaml_idp SAMLIDP\nauto_link_policy AutoLinkPolicy\nscim_clients SCIMClients\ndefault_smtp_email_customization DefaultSMTPEmailCustomization\nonboarding_portal OnboardingPortal\nupdate_self_service_registration_rate_limit_tier RateLimitTierUpdateSelfServiceRegistration Self-service rate limits\nupdate_self_service_recovery_rate_limit_tier RateLimitTierUpdateSelfServiceRecovery\nupdate_self_service_settings_rate_limit_tier RateLimitTierUpdateSelfServiceSettings\nupdate_self_service_verification_rate_limit_tier RateLimitTierUpdateSelfServiceVerification\nidentities_create_rate_limit_tier RateLimitTierIdentitiesCreate\nidentities_import_rate_limit_tier RateLimitTierIdentitiesImport\nfed_cm_parameters_rate_limit_tier RateLimitTierFedCMParameters\ndata_location_regional DataLocationRegional Required Features\nrate_limit_tier RateLimitTier\nsession_rate_limit_tier RateLimitTierSessions\nidentities_list_rate_limit_tier RateLimitTierIdentitiesList\npermission_checks_rate_limit_tier RateLimitTierPermissionChecks\noauth2_introspect_rate_limit_tier RateLimitTierOAuth2Introspect\ncreate_recovery_admin_rate_limit_tier RateLimitTierCreateAdminRecovery\nscim_rate_limit_tier RateLimitTierSCIM", "enum": [ "production_projects", "staging_projects", @@ -8538,6 +8463,7 @@ "edge_cache", "branding_themes", "zendesk_support", + "zendesk_support_on_call", "project_metrics", "project_metrics_time_window", "project_metrics_events_history", @@ -8551,6 +8477,7 @@ "m2m_token_issuance", "permission_checks", "captcha", + "identity_search_api", "saml_sp", "saml_idp", "auto_link_policy", @@ -8563,6 +8490,7 @@ "update_self_service_verification_rate_limit_tier", "identities_create_rate_limit_tier", "identities_import_rate_limit_tier", + "fed_cm_parameters_rate_limit_tier", "data_location_regional", "rate_limit_tier", "session_rate_limit_tier", @@ -8573,7 +8501,7 @@ "scim_rate_limit_tier" ], "type": "string", - "x-go-enum-desc": "production_projects ProductionProjects\nstaging_projects StagingProjects\ndevelopment_projects DevelopmentProjects\ndaily_active_users DailyActiveUsers\ncustom_domains CustomDomains\nevent_streams EventStreams\nevent_stream_events EventStreamEvents\nsla SLA\ncollaborator_seats CollaboratorSeats\nedge_cache EdgeCache\nbranding_themes BrandingThemes\nzendesk_support ZendeskSupport\nproject_metrics ProjectMetrics\nproject_metrics_time_window ProjectMetricsTimeWindow\nproject_metrics_events_history ProjectMetricsEventsHistory\norganizations Organizations\nrop_grant ResourceOwnerPasswordGrant\nconcierge_onboarding ConciergeOnboarding\ncredit Credit\ndata_location_global DataLocationGlobal\ndata_location_us DataLocationUS\ndata_location_asiane DataLocationAsiaNorthEast\nm2m_token_issuance M2MTokenIssuance\npermission_checks PermissionChecks\ncaptcha Captcha\nsaml_sp SAMLSP\nsaml_idp SAMLIDP\nauto_link_policy AutoLinkPolicy\nscim_clients SCIMClients\ndefault_smtp_email_customization DefaultSMTPEmailCustomization\nonboarding_portal OnboardingPortal\nupdate_self_service_registration_rate_limit_tier RateLimitTierUpdateSelfServiceRegistration Self-service rate limits\nupdate_self_service_recovery_rate_limit_tier RateLimitTierUpdateSelfServiceRecovery\nupdate_self_service_settings_rate_limit_tier RateLimitTierUpdateSelfServiceSettings\nupdate_self_service_verification_rate_limit_tier RateLimitTierUpdateSelfServiceVerification\nidentities_create_rate_limit_tier RateLimitTierIdentitiesCreate\nidentities_import_rate_limit_tier RateLimitTierIdentitiesImport\ndata_location_regional DataLocationRegional Required Features\nrate_limit_tier RateLimitTier\nsession_rate_limit_tier RateLimitTierSessions\nidentities_list_rate_limit_tier RateLimitTierIdentitiesList\npermission_checks_rate_limit_tier RateLimitTierPermissionChecks\noauth2_introspect_rate_limit_tier RateLimitTierOAuth2Introspect\ncreate_recovery_admin_rate_limit_tier RateLimitTierCreateAdminRecovery\nscim_rate_limit_tier RateLimitTierSCIM" + "x-go-enum-desc": "production_projects ProductionProjects\nstaging_projects StagingProjects\ndevelopment_projects DevelopmentProjects\ndaily_active_users DailyActiveUsers\ncustom_domains CustomDomains\nevent_streams EventStreams\nevent_stream_events EventStreamEvents\nsla SLA\ncollaborator_seats CollaboratorSeats\nedge_cache EdgeCache\nbranding_themes BrandingThemes\nzendesk_support ZendeskSupport\nzendesk_support_on_call ZendeskSupportOnCall\nproject_metrics ProjectMetrics\nproject_metrics_time_window ProjectMetricsTimeWindow\nproject_metrics_events_history ProjectMetricsEventsHistory\norganizations Organizations\nrop_grant ResourceOwnerPasswordGrant\nconcierge_onboarding ConciergeOnboarding\ncredit Credit\ndata_location_global DataLocationGlobal\ndata_location_us DataLocationUS\ndata_location_asiane DataLocationAsiaNorthEast\nm2m_token_issuance M2MTokenIssuance\npermission_checks PermissionChecks\ncaptcha Captcha\nidentity_search_api IdentitySearchAPI\nsaml_sp SAMLSP\nsaml_idp SAMLIDP\nauto_link_policy AutoLinkPolicy\nscim_clients SCIMClients\ndefault_smtp_email_customization DefaultSMTPEmailCustomization\nonboarding_portal OnboardingPortal\nupdate_self_service_registration_rate_limit_tier RateLimitTierUpdateSelfServiceRegistration Self-service rate limits\nupdate_self_service_recovery_rate_limit_tier RateLimitTierUpdateSelfServiceRecovery\nupdate_self_service_settings_rate_limit_tier RateLimitTierUpdateSelfServiceSettings\nupdate_self_service_verification_rate_limit_tier RateLimitTierUpdateSelfServiceVerification\nidentities_create_rate_limit_tier RateLimitTierIdentitiesCreate\nidentities_import_rate_limit_tier RateLimitTierIdentitiesImport\nfed_cm_parameters_rate_limit_tier RateLimitTierFedCMParameters\ndata_location_regional DataLocationRegional Required Features\nrate_limit_tier RateLimitTier\nsession_rate_limit_tier RateLimitTierSessions\nidentities_list_rate_limit_tier RateLimitTierIdentitiesList\npermission_checks_rate_limit_tier RateLimitTierPermissionChecks\noauth2_introspect_rate_limit_tier RateLimitTierOAuth2Introspect\ncreate_recovery_admin_rate_limit_tier RateLimitTierCreateAdminRecovery\nscim_rate_limit_tier RateLimitTierSCIM" }, "feature_available": { "type": "boolean" @@ -8713,7 +8641,7 @@ "$ref": "#/components/schemas/RecoveryAddressType" } }, - "required": ["id", "value", "via"], + "required": ["value", "via"], "type": "object" }, "recoveryLinkForIdentity": { @@ -8763,6 +8691,10 @@ "format": "uuid", "type": "string" }, + "identity_schema": { + "description": "IdentitySchema optionally holds the ID of the identity schema that is used\nfor this flow. This value can be set by the user when creating the flow and\nshould be retained when the flow is saved or converted to another flow.", + "type": "string" + }, "issued_at": { "description": "IssuedAt is the time (UTC) when the flow occurred.", "format": "date-time", @@ -9032,7 +8964,7 @@ "type": "string" }, "tokenized": { - "description": "Tokenized is the tokenized (e.g. JWT) version of the session.\n\nIt is only set when the `tokenize` query parameter was set to a valid tokenize template during calls to `/session/whoami`.", + "description": "Tokenized is the tokenized (e.g. JWT) version of the session.\n\nIt is only set when the `tokenize_as` query parameter was set to a valid tokenize template during calls to `/session/whoami`.", "type": "string" } }, @@ -9051,19 +8983,22 @@ "type": "string" }, "method": { + "description": "The method used in this authenticator.\npassword CredentialsTypePassword\noidc CredentialsTypeOIDC\ntotp CredentialsTypeTOTP\nlookup_secret CredentialsTypeLookup\nwebauthn CredentialsTypeWebAuthn\ncode CredentialsTypeCodeAuth\npasskey CredentialsTypePasskey\nprofile CredentialsTypeProfile\nsaml CredentialsTypeSAML\nlink_recovery CredentialsTypeRecoveryLink CredentialsTypeRecoveryLink is a special credential type linked to the link strategy (recovery flow). It is not used within the credentials object itself.\ncode_recovery CredentialsTypeRecoveryCode", "enum": [ - "link_recovery", - "code_recovery", "password", - "code", - "totp", "oidc", - "webauthn", + "totp", "lookup_secret", - "v0.6_legacy_session" + "webauthn", + "code", + "passkey", + "profile", + "saml", + "link_recovery", + "code_recovery" ], - "title": "The method used", - "type": "string" + "type": "string", + "x-go-enum-desc": "password CredentialsTypePassword\noidc CredentialsTypeOIDC\ntotp CredentialsTypeTOTP\nlookup_secret CredentialsTypeLookup\nwebauthn CredentialsTypeWebAuthn\ncode CredentialsTypeCodeAuth\npasskey CredentialsTypePasskey\nprofile CredentialsTypeProfile\nsaml CredentialsTypeSAML\nlink_recovery CredentialsTypeRecoveryLink CredentialsTypeRecoveryLink is a special credential type linked to the link strategy (recovery flow). It is not used within the credentials object itself.\ncode_recovery CredentialsTypeRecoveryCode" }, "organization": { "description": "The Organization id used for authentication", @@ -9171,18 +9106,21 @@ }, "setOrganizationFromOnboardingPortalLinkBody": { "properties": { + "kratos_selfservice_methods_oidc_config_providers": { + "$ref": "#/components/schemas/projectRevisionThirdPartyLoginProviders" + }, "kratos_selfservice_methods_saml_config_providers": { "$ref": "#/components/schemas/projectRevisionSamlProviders" }, "revision_id": { "format": "uuid", "type": "string" + }, + "scim_clients": { + "$ref": "#/components/schemas/projectRevisionScimClients" } }, - "required": [ - "revision_id", - "kratos_selfservice_methods_saml_config_providers" - ], + "required": ["revision_id"], "type": "object" }, "setProject": { @@ -9748,7 +9686,7 @@ }, "node_type": { "description": "NodeType represents this node's types. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"a\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", - "enum": ["text", "input", "img", "a", "script", "div"], + "enum": ["a"], "type": "string", "x-go-enum-desc": "text Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division" }, @@ -9798,7 +9736,7 @@ "description": "Division sections are used for interactive widgets that require a hook in the DOM / view.", "properties": { "class": { - "description": "The script MIME type", + "description": "A classname that should be rendered into the DOM.", "type": "string" }, "data": { @@ -9813,8 +9751,8 @@ "type": "string" }, "node_type": { - "description": "NodeType represents this node's types. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"script\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", - "enum": ["text", "input", "img", "a", "script", "div"], + "description": "NodeType represents this node's type. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"script\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", + "enum": ["div"], "type": "string", "x-go-enum-desc": "text Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division" } @@ -9836,7 +9774,7 @@ }, "node_type": { "description": "NodeType represents this node's types. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"img\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", - "enum": ["text", "input", "img", "a", "script", "div"], + "enum": ["img"], "type": "string", "x-go-enum-desc": "text Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division" }, @@ -9889,7 +9827,7 @@ }, "node_type": { "description": "NodeType represents this node's types. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"input\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", - "enum": ["text", "input", "img", "a", "script", "div"], + "enum": ["input"], "type": "string", "x-go-enum-desc": "text Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division" }, @@ -9992,7 +9930,7 @@ }, "node_type": { "description": "NodeType represents this node's types. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"script\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", - "enum": ["text", "input", "img", "a", "script", "div"], + "enum": ["script"], "type": "string", "x-go-enum-desc": "text Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division" }, @@ -10035,7 +9973,7 @@ }, "node_type": { "description": "NodeType represents this node's types. It is a mirror of `node.type` and\nis primarily used to allow compatibility with OpenAPI 3.0. In this struct it technically always is \"text\".\ntext Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division", - "enum": ["text", "input", "img", "a", "script", "div"], + "enum": ["text"], "type": "string", "x-go-enum-desc": "text Text\ninput Input\nimg Image\na Anchor\nscript Script\ndiv Division" }, @@ -10091,6 +10029,10 @@ "credentials": { "$ref": "#/components/schemas/identityWithCredentials" }, + "external_id": { + "description": "ExternalID is an optional external ID of the identity. This is used to link\nthe identity to an external system. If set, the external ID must be unique\nacross all identities.", + "type": "string" + }, "metadata_admin": { "description": "Store metadata about the user which is only accessible through admin APIs such as `GET /admin/identities/\u003cid\u003e`." }, @@ -10399,6 +10341,23 @@ "required": ["identifier", "method"], "type": "object" }, + "updateOrganizationOnboardingPortalLinkBody": { + "properties": { + "enable_scim": { + "description": "Feature flag to enable SCIM configuration", + "type": "boolean" + }, + "enable_sso": { + "description": "Feature flag to enable SSO configuration", + "type": "boolean" + }, + "expires_at": { + "$ref": "#/components/schemas/Time" + } + }, + "required": ["enable_sso", "enable_scim"], + "type": "object" + }, "updateRecoveryFlowBody": { "description": "Update Recovery Flow Request Body", "discriminator": { @@ -10438,6 +10397,22 @@ "type": "string", "x-go-enum-desc": "link RecoveryStrategyLink\ncode RecoveryStrategyCode" }, + "recovery_address": { + "description": "A recovery address that is registered for the user.\nIt can be an email, a phone number (to receive the code via SMS), etc.\nUsed in RecoveryV2.", + "type": "string" + }, + "recovery_confirm_address": { + "description": "If there are multiple recovery addresses registered for the user, and the initially provided address\nis different from the address chosen when the choice (of masked addresses) is presented, then we need to make sure\nthat the user actually knows the full address to avoid information exfiltration, so we ask for the full address.\nUsed in RecoveryV2.", + "type": "string" + }, + "recovery_select_address": { + "description": "If there are multiple addresses registered for the user, a choice is presented and this field\nstores the result of this choice.\nAddresses are 'masked' (never sent in full to the client and shown partially in the UI) since at this point in the recovery flow,\nthe user has not yet proven that it knows the full address and we want to avoid\ninformation exfiltration.\nSo for all intents and purposes, the value of this field should be treated as an opaque identifier.\nUsed in RecoveryV2.", + "type": "string" + }, + "screen": { + "description": "Set to \"previous\" to go back in the flow, meaningfully.\nUsed in RecoveryV2.", + "type": "string" + }, "transient_payload": { "description": "Transient data to pass along to any webhooks", "type": "object" @@ -11237,19 +11212,12 @@ }, "verifyUserCodeRequest": { "properties": { - "challenge": { - "description": "ID is the identifier (\"device challenge\") of the device request. It is used to\nidentify the session.", - "type": "string" - }, "client": { "$ref": "#/components/schemas/oAuth2Client" }, "device_code_request_id": { "type": "string" }, - "handled_at": { - "$ref": "#/components/schemas/nullTime" - }, "request_url": { "description": "RequestURL is the original Device Authorization URL requested.", "type": "string" @@ -11507,7 +11475,7 @@ "schema": { "default": 250, "format": "int64", - "maximum": 500, + "maximum": 1000, "minimum": 1, "type": "integer" } @@ -11517,8 +11485,6 @@ "in": "query", "name": "page_token", "schema": { - "default": "1", - "minimum": 1, "type": "string" } }, @@ -12097,7 +12063,7 @@ "tags": ["identity"] }, "patch": { - "description": "Creates multiple\n[identities](https://www.ory.sh/docs/kratos/concepts/identity-user-model).\nThis endpoint can also be used to [import\ncredentials](https://www.ory.sh/docs/kratos/manage-identities/import-user-accounts-identities)\nfor instance passwords, social sign in configurations or multi-factor authentications methods.\n\nYou can import up to 1000 identities per request or up to 200 identities with a plaintext password per request.", + "description": "Creates multiple [identities](https://www.ory.sh/docs/kratos/concepts/identity-user-model).\n\nYou can also use this endpoint to [import credentials](https://www.ory.sh/docs/kratos/manage-identities/import-user-accounts-identities),\nincluding passwords, social sign-in settings, and multi-factor authentication methods.\n\nYou can import:\nUp to 1,000 identities per request\nUp to 200 identities per request if including plaintext passwords\n\nAvoid importing large batches with plaintext passwords. They can cause timeouts as the passwords need to be hashed before they are stored.\n\nIf at least one identity is imported successfully, the response status is 200 OK.\nIf all imports fail, the response is one of the following 4xx errors:\n400 Bad Request: The request payload is invalid or improperly formatted.\n409 Conflict: Duplicate identities or conflicting data were detected.\n\nIf you get a 504 Gateway Timeout:\nReduce the batch size\nAvoid duplicate identities\nPre-hash passwords with BCrypt\n\nIf the issue persists, contact support.", "operationId": "batchPatchIdentities", "requestBody": { "content": { @@ -12223,9 +12189,89 @@ "tags": ["identity"] } }, + "/admin/identities/by/external/{externalID}": { + "get": { + "description": "Return an [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model) by its external ID. You can optionally\ninclude credentials (e.g. social sign in connections) in the response by using the `include_credential` query parameter.", + "operationId": "getIdentityByExternalID", + "parameters": [ + { + "description": "ExternalID must be set to the ID of identity you want to get", + "in": "path", + "name": "externalID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Include Credentials in Response\n\nInclude any credential, for example `password` or `oidc`, in the response. When set to `oidc`, This will return\nthe initial OAuth 2.0 Access Token, OAuth 2.0 Refresh Token and the OpenID Connect ID Token if available.", + "in": "query", + "name": "include_credential", + "schema": { + "items": { + "enum": [ + "password", + "oidc", + "totp", + "lookup_secret", + "webauthn", + "code", + "passkey", + "profile", + "saml", + "link_recovery", + "code_recovery" + ], + "type": "string" + }, + "type": "array" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/identity" + } + } + }, + "description": "identity" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + } + }, + "security": [ + { + "oryAccessToken": [] + } + ], + "summary": "Get an Identity by its External ID", + "tags": ["identity"] + } + }, "/admin/identities/{id}": { "delete": { - "description": "Calling this endpoint irrecoverably and permanently deletes the [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model) 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.", + "description": "Calling this endpoint irrecoverably and permanently deletes the [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model) given its ID. This action can not be undone.\nThis endpoint returns 204 when the identity was deleted or 404 if the identity was not found.", "operationId": "deleteIdentity", "parameters": [ { @@ -12434,7 +12480,7 @@ "tags": ["identity"] }, "put": { - "description": "This endpoint updates an [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model). The full identity\npayload (except credentials) is expected. It is possible to update the identity's credentials as well.", + "description": "This endpoint updates an [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model). The full identity\npayload, except credentials, is expected. For partial updates, use the [patchIdentity](https://www.ory.sh/docs/reference/api#tag/identity/operation/patchIdentity) operation.\n\nA credential can be provided via the `credentials` field in the request body.\nIf provided, the credentials will be imported and added to the existing credentials of the identity.", "operationId": "updateIdentity", "parameters": [ { @@ -12520,7 +12566,7 @@ }, "/admin/identities/{id}/credentials/{type}": { "delete": { - "description": "Delete an [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model) credential by its type.\nYou cannot delete password or code auth credentials through this API.", + "description": "Delete an [identity](https://www.ory.sh/docs/kratos/concepts/identity-user-model) credential by its type.\nYou cannot delete passkeys or code auth credentials through this API.", "operationId": "deleteIdentityCredentials", "parameters": [ { @@ -12556,7 +12602,7 @@ "x-go-enum-desc": "password CredentialsTypePassword\noidc CredentialsTypeOIDC\ntotp CredentialsTypeTOTP\nlookup_secret CredentialsTypeLookup\nwebauthn CredentialsTypeWebAuthn\ncode CredentialsTypeCodeAuth\npasskey CredentialsTypePasskey\nprofile CredentialsTypeProfile\nsaml CredentialsTypeSAML\nlink_recovery CredentialsTypeRecoveryLink CredentialsTypeRecoveryLink is a special credential type linked to the link strategy (recovery flow). It is not used within the credentials object itself.\ncode_recovery CredentialsTypeRecoveryCode" }, { - "description": "Identifier is the identifier of the OIDC credential to delete.\nFind the identifier by calling the `GET /admin/identities/{id}?include_credential=oidc` endpoint.", + "description": "Identifier is the identifier of the OIDC/SAML credential to delete.\nFind the identifier by calling the `GET /admin/identities/{id}?include_credential={oidc,saml}` endpoint.", "in": "query", "name": "identifier", "schema": { @@ -14567,19 +14613,23 @@ "operationId": "listTrustedOAuth2JwtGrantIssuers", "parameters": [ { + "description": "Items per Page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", "in": "query", - "name": "MaxItems", + "name": "page_size", "schema": { + "default": 250, "format": "int64", + "maximum": 1000, + "minimum": 1, "type": "integer" } }, { + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", "in": "query", - "name": "DefaultItems", + "name": "page_token", "schema": { - "format": "int64", - "type": "integer" + "type": "string" } }, { @@ -14858,7 +14908,7 @@ }, "/oauth2/device/auth": { "post": { - "description": "This endpoint is not documented here because you should never use your own implementation to perform OAuth2 flows.\nOAuth2 is a very popular protocol and a library for your programming language will exists.\n\nTo learn more about this flow please refer to the specification: https://tools.ietf.org/html/rfc8628", + "description": "This endpoint is not documented here because you should never use your own implementation to perform OAuth2 flows.\nOAuth2 is a very popular protocol and a library for your programming language will exist.\n\nTo learn more about this flow please refer to the specification: https://tools.ietf.org/html/rfc8628", "operationId": "oAuth2DeviceFlow", "responses": { "200": { @@ -14888,7 +14938,7 @@ }, "/oauth2/device/verify": { "get": { - "description": "This is the device user verification endpoint. The user is redirected here when trying to login using the device flow.", + "description": "This is the device user verification endpoint. The user is redirected here when trying to log in using the device flow.", "operationId": "performOAuth2DeviceVerificationFlow", "responses": { "302": { @@ -16593,6 +16643,313 @@ "tags": ["project"] } }, + "/projects/{project_id}/organizations/{organization_id}/onboarding-portal-links": { + "get": { + "description": "Retrieves the organization onboarding portal links.", + "operationId": "getOrganizationOnboardingPortalLinks", + "parameters": [ + { + "description": "Project ID\n\nThe project's ID.", + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Organization ID\n\nThe Organization's ID.", + "in": "path", + "name": "organization_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/organizationOnboardingPortalLinksResponse" + } + } + }, + "description": "organizationOnboardingPortalLinksResponse" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + } + }, + "security": [ + { + "oryWorkspaceApiKey": [] + } + ], + "servers": [ + { + "description": "The Ory Network control plane API which is used to manage your Ory Network projects and workspaces.", + "url": "https://api.console.ory.sh/" + } + ], + "summary": "Get the organization onboarding portal links", + "tags": ["project"] + }, + "post": { + "description": "Create a onboarding portal link for an organization.", + "operationId": "createOrganizationOnboardingPortalLink", + "parameters": [ + { + "description": "Project ID\n\nThe project's ID.", + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Organization ID\n\nThe Organization's ID.", + "in": "path", + "name": "organization_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/createOrganizationOnboardingPortalLinkBody" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/onboardingPortalLink" + } + } + }, + "description": "onboardingPortalLink" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + } + }, + "security": [ + { + "oryWorkspaceApiKey": [] + } + ], + "servers": [ + { + "description": "The Ory Network control plane API which is used to manage your Ory Network projects and workspaces.", + "url": "https://api.console.ory.sh/" + } + ], + "summary": "Create organization onboarding portal link", + "tags": ["project"] + } + }, + "/projects/{project_id}/organizations/{organization_id}/onboarding-portal-links/{onboarding_portal_link_id}": { + "delete": { + "description": "Deletes a onboarding portal link for an organization.", + "operationId": "deleteOrganizationOnboardingPortalLink", + "parameters": [ + { + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "organization_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "onboarding_portal_link_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + }, + "403": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + } + }, + "security": [ + { + "oryWorkspaceApiKey": [] + } + ], + "servers": [ + { + "description": "The Ory Network control plane API which is used to manage your Ory Network projects and workspaces.", + "url": "https://api.console.ory.sh/" + } + ], + "summary": "Delete an organization onboarding portal link", + "tags": ["project"] + }, + "post": { + "description": "Update a onboarding portal link for an organization.", + "operationId": "updateOrganizationOnboardingPortalLink", + "parameters": [ + { + "description": "Project ID\n\nThe project's ID.", + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Organization ID\n\nThe Organization's ID.", + "in": "path", + "name": "organization_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "onboarding_portal_link_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/updateOrganizationOnboardingPortalLinkBody" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/onboardingPortalLink" + } + } + }, + "description": "onboardingPortalLink" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorGeneric" + } + } + }, + "description": "errorGeneric" + } + }, + "security": [ + { + "oryWorkspaceApiKey": [] + } + ], + "servers": [ + { + "description": "The Ory Network control plane API which is used to manage your Ory Network projects and workspaces.", + "url": "https://api.console.ory.sh/" + } + ], + "summary": "Update organization onboarding portal link", + "tags": ["project"] + } + }, "/projects/{project_id}/revision/{revision_id}": { "patch": { "description": "This endpoints allows you to patch individual Ory Network Project configuration keys for\nOry's services (identity, permission, ...). The configuration format is fully compatible\nwith the open source projects for the respective services (e.g. Ory Kratos for Identity, Ory Keto for Permissions).\n\nThis endpoint expects the `version` key to be set in the payload. If it is unset, it\nwill try to import the config as if it is from the most recent version.\n\nIf you have an older version of a configuration, you should set the version key in the payload!\n\nWhile this endpoint is able to process all configuration items related to features (e.g. password reset),\nit does not support operational configuration items (e.g. port, tracing, logging) otherwise available in the\nopen source.\n\nFor configuration items that can not be translated to the Ory Network, this endpoint will return a list of warnings\nto help you understand which parts of your config could not be processed.", @@ -17032,18 +17389,23 @@ "operationId": "getRelationships", "parameters": [ { + "description": "Items per Page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", "in": "query", - "name": "page_token", + "name": "page_size", "schema": { - "type": "string" + "default": 250, + "format": "int64", + "maximum": 1000, + "minimum": 1, + "type": "integer" } }, { + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", "in": "query", - "name": "page_size", + "name": "page_token", "schema": { - "format": "int64", - "type": "integer" + "type": "string" } }, { @@ -18134,6 +18496,14 @@ "schema": { "type": "string" } + }, + { + "description": "An optional identity schema to use for the registration flow.", + "in": "query", + "name": "identity_schema", + "schema": { + "type": "string" + } } ], "responses": { @@ -18232,6 +18602,14 @@ "schema": { "type": "string" } + }, + { + "description": "An optional identity schema to use for the registration flow.", + "in": "query", + "name": "identity_schema", + "schema": { + "type": "string" + } } ], "responses": { @@ -18910,6 +19288,14 @@ "schema": { "type": "string" } + }, + { + "description": "An optional identity schema to use for the registration flow.", + "in": "query", + "name": "identity_schema", + "schema": { + "type": "string" + } } ], "responses": { @@ -18984,6 +19370,14 @@ "schema": { "type": "string" } + }, + { + "description": "An optional identity schema to use for the registration flow.", + "in": "query", + "name": "identity_schema", + "schema": { + "type": "string" + } } ], "responses": { @@ -20819,7 +21213,7 @@ "variables": { "project_slug": { "default": "playground", - "description": "Your Ory Network Project slug. You can find it in the [Ory Network Console](https://console.ory.sh/projects/current/developers/guides)." + "description": "Your Ory Network Project slug. You can find it in the [Ory Network Console](https://console.ory.sh/projects/current/get-started)." } } } diff --git a/docs/security-compliance/compliance-and-certifications.md b/docs/security-compliance/compliance-and-certifications.md index 6fa5b67ecd..8f61db9a73 100644 --- a/docs/security-compliance/compliance-and-certifications.md +++ b/docs/security-compliance/compliance-and-certifications.md @@ -11,7 +11,7 @@ programs and adopted the best industry practices and technologies to keep our cu ## ISO 27001 Ory holds a certificate for [ISO 27001:2013](https://www.iso.org/standard/27001), which you can can -[download for inspection](https://www.ory.sh/resources/iso27001/OryCorp-ISO27001-Certificate-of-Registration.pdf). You can also +[download for inspection](https://www.ory.com/resources/iso27001/OryCorp-ISO27001-Certificate-of-Registration.pdf). You can also verify the ISO 27001:2013 certification directly with [our auditor](https://barrcertifications.com/certificate-directory/). The ISO 27001 certification verifies that Ory has an information security management system (ISMS) in place to assure the confidentiality and integrity of your data. Our internal security team is dedicated to ensuring that Ory maintains the highest @@ -24,7 +24,7 @@ confidentiality, and privacy of data in service organizations. It is not a stand organization's internal controls and processes meet specific criteria. The Type 2 designation indicates that an independent auditor has evaluated and tested these controls over a period of time (typically three months to a year) to ensure they are effectively implemented. Current and prospective customers interested in obtaining a copy of Ory’s latest SOC 2 report may request -access at the [Ory Trust Center](https://trust.ory.sh/). +access at the [Ory Trust Center](https://trust.ory.com/). ## GDPR diff --git a/docs/security-compliance/personal-data-location.mdx b/docs/security-compliance/personal-data-location.mdx index 002d5f199c..361558d4bf 100644 --- a/docs/security-compliance/personal-data-location.mdx +++ b/docs/security-compliance/personal-data-location.mdx @@ -5,7 +5,7 @@ sidebar_label: Personal data storage --- Ory Network is globally distributed for maximum resilience and minimum latency. Check out the -[blog post](https://www.ory.sh/global-identity-and-access-management-multi-region/) for details on how this works. +[blog post](https://www.ory.com/global-identity-and-access-management-multi-region/) for details on how this works. As discussed in that blog post, replicating personal data (also known as personally identifiable data or PII) across the globe is prohibited or made difficult by legislation like GDPR and would impede your user's control over their data. @@ -60,10 +60,10 @@ Networks storage locations across the globe. "US Continental" means the user's p closest storage location inside the contiguous United States. We are working toward making it easy query and change personal data storage location on a per-identity basis via UI and API. If -this sounds interesting to you, please [reach out](https://www.ory.sh/contact/) to discuss your use case. +this sounds interesting to you, please [reach out](https://www.ory.com/contact/) to discuss your use case. ## Regions and availability zones When an identity's personal data is stored in a region, say US west, it is still highly available and replicated across at least three availability zones within that region. Standard backup and disaster recovery plans are in place and regularly tested as -well. See [https://trust.ory.sh/](https://trust.ory.sh/) for details. +well. See [https://trust.ory.com/](https://trust.ory.com/) for details. diff --git a/docs/security-model.mdx b/docs/security-model.mdx index fc990247d5..1404d5f31a 100644 --- a/docs/security-model.mdx +++ b/docs/security-model.mdx @@ -27,8 +27,8 @@ to set the domain in HTTP Cookies to the same domain as the application that con - When working with an application that runs on `http://localhost:3000` for local development, Ory must be able to set `domain=localhost` in the HTTP cookie. -Ory offers SDKs for certain deployment options such as [Vercel](getting-started/integrate-auth/15_nextjs.mdx) which mirror Ory's -APIs without the need of running another process. +{/* TODO: add document describing deployment on vercel */} Ory offers SDKs for certain deployment options such as +[Vercel](https://vercel.com) which mirror Ory's APIs without the need of running another process. - When working with an application that runs on `https://app.example.org`, Ory must be able to set `domain=example.org` in the HTTP cookie. @@ -164,24 +164,24 @@ To learn how to use Session to JWT, read the [Session to JWT documentation](./id ## Can I use OAuth 2.0 / OpenID Connect? Ory is fully compliant with OAuth 2.0 and OpenID Connect. If you are interested to use OAuth 2.0 / OpenID Connect for advanced use -cases, check out [Ory OAuth 2.0 and OpenID](https://www.ory.sh/hydra) documentation. +cases, check out [Ory OAuth 2.0 and OpenID](https://www.ory.com/hydra) documentation. :::tip -[You probably do not need OAuth2 / OpenID Connect](https://www.ory.sh/oauth2-openid-connect-do-you-need-use-cases-examples/) +[You probably do not need OAuth2 / OpenID Connect](https://www.ory.com/oauth2-openid-connect-do-you-need-use-cases-examples/) covers common misconceptions about OAuth2 and OpenID Connect and is worth a read if you are unsure whether OAuth2 is the right fit for you. ::: At Ory, we believe that OAuth 2.0 and OpenID Connect isn't a one-size-fits-all solution. In fact, we think that you probably don't -need to use such complicated protocols at all! We recommend using [Ory OAuth2 & OpenID](https://www.ory.sh/hydra) for targeted use -cases only, such as providing third-party integration with your application (for example, in the form of the familiar "Sign in +need to use such complicated protocols at all! We recommend using [Ory OAuth2 & OpenID](https://www.ory.com/hydra) for targeted +use cases only, such as providing third-party integration with your application (for example, in the form of the familiar "Sign in with [PROVIDER_NAME]" button). ## What about access tokens / refresh tokens? -You can generate access and refresh tokens using [Ory OAuth2 & OpenID](https://www.ory.sh/hydra). We do not recommend using access -and refresh tokens for session management! Visit -[ Why you probably do not need OAuth2 / OpenID Connect](https://www.ory.sh/oauth2-openid-connect-do-you-need-use-cases-examples/) +You can generate access and refresh tokens using [Ory OAuth2 & OpenID](https://www.ory.com/hydra). We do not recommend using +access and refresh tokens for session management! Visit +[ Why you probably do not need OAuth2 / OpenID Connect](https://www.ory.com/oauth2-openid-connect-do-you-need-use-cases-examples/) to read more about it. diff --git a/docs/self-hosted/deployment.md b/docs/self-hosted/deployment.md index 583a1035c5..51cbb5fb2f 100644 --- a/docs/self-hosted/deployment.md +++ b/docs/self-hosted/deployment.md @@ -6,21 +6,21 @@ title: Database ## Integrates with Kubernetes Ory technology is cloud first and runs natively on Docker and Kubernetes and naturally supports Kubernetes Helm Charts. Head over -to our [Kubernetes Helm Chart Repository](https://k8s.ory.sh/helm) for Charts and accompanying Documentation. +to our [Kubernetes Helm Chart Repository](https://k8s.ory.com/helm) for Charts and accompanying Documentation. ## Data storage and persistence All Ory projects support storing data in memory and in relational databases: -- PostgreSQL is recommended as the default database. -- MySQL is supported, some flavors like MariaDB and AWS Aurora may require additional work. -- CockroachDB is supported. -- SQLite is supported (in-memory and persistent) but must not be used for a production service. +- PostgreSQL is fully supported. +- MySQL is fully supported. Some flavors like MariaDB and AWS Aurora may require additional setup. +- CockroachDB is fully supported. +- SQLite is supported (in-memory and persistent) but must not be used in a production deployment. ### PostgreSQL If configuration key `dsn` (Data Source Name) is prefixed with `postgres://`, then PostgreSQL will be used as storage backend. An -exemplary configuration would look like this: +example configuration would look like this: ``` DSN=postgres://user:password@host:123/database @@ -30,7 +30,7 @@ Parameters are configured by appending them to the DSN query. For example, to se the DSN query like this: ``` -postgres://user:password@host:123/database?sslmode=verify-full +DSN=postgres://user:password@host:123/database?sslmode=verify-full ``` #### Supported parameters @@ -40,79 +40,92 @@ postgres://user:password@host:123/database?sslmode=verify-full - `require` - Always SSL (skip verification) - `verify-ca` - Always SSL (verify that the certificate presented by the `server` was signed by a trusted CA) - `verify-full` - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server - host name matches the one in the certificate) -- `application_name` (string): An initial value for the application_name session variable. + host name matches the one in the certificate). This is the recommended setting. +- `application_name` (string): Set to your application name (.e.g. `ory_hydra`, `ory_kratos`). This identifier will show up in + your database's metrics, allowing you to easily see which application performs which queries. - `fallback_application_name` (string): An application_name to fall back to if one isn't provided. - `search_path` (string): specifies the [search path](https://www.postgresql.org/docs/12/ddl-schemas.html), such as the schema. -- `sslcert` (string): Cert file location. The file must contain PEM encoded data. -- `sslkey` (string): Key file location. The file must contain PEM encoded data. -- `sslrootcert` (string): The location of the root certificate file. The file must contain PEM encoded data. +- `sslcert` (string): TLS client certificate file location. The file must contain PEM encoded data. +- `sslkey` (string): TLS client certificate private key file location, matching `sslcert`. The file must contain PEM encoded data. +- `sslrootcert` (string): The location of the CA (root) certificate file. The file must contain PEM encoded data. ##### Standard pooling -- `max_idle_conns` (number): Sets the maximum number of connections in the idle. Defaults to the number of CPU cores. -- `max_conns` (number): Sets the maximum number of open connections to the database. Defaults to the number of CPU cores times 2. -- `max_conn_lifetime` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection may be reused. -- `max_conn_idle_time` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection can be kept alive. +- `max_conns` (number): Sets the maximum number of open (in use+idle) connections to the database. If this number is too low, + operations will be blocked waiting for a database connection. For the database server, connections might be expensive (e.g. + PostgreSQL without an intermediary connection pool), quite cheap (e.g. MySQL), or very cheap (e.g. CockroachDB). For the client + (Ory Software), database connections are always very cheap. +- `max_idle_conns` (number): The maximum number of _idle_ (not currently in use) connections. Useful to lower resource consumption + in your database if connections are expensive for the database server (primarily PostgreSQL without an intermediary connection + pool such as `pgbouncer`). +- `max_conn_lifetime` (duration: for example "500ms", "5s", "30m", "1h"): Sets the time after which a connection will be closed, + irrespective of how long it has been idle. This is useful for maintenance: most database systems will not close connections + towards the client even if the database server is being drained (for example for a software upgrade). Instead, the server relies + on the client to close the connection. In those scenarios, this value determines the drain time of your database nodes. Setting + this too short will cause connections to be re-established very frequently, negatively impacting latency. +- `max_conn_idle_time` (duration: for example "500ms", "5s", "30m", "1h"): Database connections will be closed after idling for + this duration. Potentially useful to reduce resource consumption on the database server (see `max_idle_conns`) after a traffic + spike. - `connect_timeout` (number): Maximum wait for connection, in seconds. Zero or not specified means wait indefinitely. ##### High-performance pooling -:::note - -High-performance pooling is supported in Ory Enterprise License (OEL) images. - -::: - -High-performance pooling is built using [pgxpool](https://pkg.go.dev/github.com/jackc/pgx/v5/pgxpool) and provides additional -configuration options to the ones listed under "Standard pooling". - -Using pool configuration overrides standard pool options. It is recommended to set both `pool_` and not `pool_` prefixed values to -ensure that the standard pool options are set as well (`postgres://...?max_conns=4&pool_max_conns=4`). - -To activate high-performance pooling, you must set at least the `pool_min_conns` parameter; otherwise, high-performance pooling -will not be enabled. - -- `pool_max_conns` (number): Sets the maximum number of open connections to the database. Defaults to the number of CPU cores - times 2. Overrides `max_conns`. -- `pool_max_conn_lifetime` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection may be reused. Overrides - `max_conn_lifetime`. -- `pool_max_conn_idle_time` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection can be kept alive. - Overrides `max_conn_idle_time`. -- `pool_min_conns` (number): The minimum size of the pool. After connection closes, the pool might dip below MinConns. A low - number of MinConns might mean the pool is empty after MaxConnLifetime until the health check has a chance to create new - connections. Defaults to 0. -- `pool_health_check_period` (duration): Sets the period for health checks to potentially kill stale - connections.` Defaults to 1 minute.` -- `pool_max_conn_lifetime_jitter` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection may be reused. - This is a random value that is added to the `pool_max_conn_lifetime` value. This is useful to avoid thundering herd problems - when many connections are closed at the same time. +High-performance pooling is supported in Ory Enterprise License (OEL) images. Read more about it in the +[high-performance pooling](./oel/high-performance-pooling) documentation. ### CockroachDB If configuration key `dsn` (Data Source Name) is prefixed with `cockroach://`, then CockroachDB will be used as storage backend. CockroachDB supports the same parameters as PostgreSQL. -An exemplary configuration would look like this: +An example configuration would look like this: ``` DSN=cockroach://user:password@host:123/database?sslmode=verify-full&... ``` +In CockroachDB, database connections consume little resources server-side. By contrast, establishing a new TLS connection to a +cluster can take several hundred milliseconds in many scenarios. As a consequence, Ory recommends using +[high-performance pooling](#high-performance-pooling) and setting the minimum and maximum pool sizes equal, as well as disabling +termination of idle connections (`pool_max_conn_idle_time=0`). + +In this configuration, a fixed-size pool of database connections is available at all times, preventing connection storms during +traffic spikes. This pool size should be oversized for normal use: you might see most connections seemingly idle in your database +metrics. Because connections are virtually free to keep around for both client and server, this is not a concern. An excessively +sized connection pool may overload your database during extreme traffic peaks, whereas an undersized pool will have requests +waiting unnecessarily. + +We recommend setting `pool_max_conn_lifetime=30m&pool_max_conn_lifetime_jitter=5m` as a compromise between low drain times during +CockroachDB upgrades and re-establishing connections more frequently than necessary. + ### MySQL -If configuration key `dsn` (Data Source Name) is prefixed with `mysql://`, then MySQL will be used as storage backend. An -exemplary configuration would look like this: `DSN=mysql://user:password@tcp(host:123)/database?parseTime=true` +If configuration key `dsn` (Data Source Name) is prefixed with `mysql://`, then MySQL will be used as storage backend. An example +configuration would look like this: + +``` +DSN=mysql://user:password@tcp(host:123)/database?parseTime=true +``` #### Supported parameters The following DSN parameters are supported: -- `max_conns` (number): Sets the maximum number of open connections to the database. Defaults to the number of CPU cores times 2. -- `max_idle_conns` (number): Sets the maximum number of connections in the idle. Defaults to the number of CPU cores. -- `max_conn_lifetime` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection may be reused. Defaults to 0s - (disabled). -- `max_conn_idle_time` (duration): Sets the maximum amount of time ("ms", "s", "m", "h") a connection can be kept alive. +- `max_conns` (number): Sets the maximum number of open (in use+idle) connections to the database. If this number is too low, + operations will be blocked waiting for a database connection. For the database server, connections might be expensive (e.g. + PostgreSQL without an intermediary connection pool), quite cheap (e.g. MySQL), or very cheap (e.g. CockroachDB). For the client + (Ory Software), database connections are always very cheap. +- `max_idle_conns` (number): The maximum number of _idle_ (not currently in use) connections. Useful to lower resource consumption + in your database if connections are expensive for the database server (primarily PostgreSQL without an intermediary connection + pool such as `pgbouncer`). +- `max_conn_lifetime` (duration: for example "500ms", "5s", "30m", "1h"): Sets the time after which a connection will be closed, + irrespective of how long it has been idle. This is useful for maintenance: most database systems will not close connections + towards the client even if the database server is being drained (for example for a software upgrade). Instead, the server relies + on the client to close the connection. In those scenarios, this value determines the drain time of your database nodes. Setting + this too short will cause connections to be re-established very frequently, negatively impacting latency. +- `max_conn_idle_time` (duration: for example "500ms", "5s", "30m", "1h"): Database connections will be closed after idling for + this duration. Potentially useful to reduce resource consumption on the database server (see `max_idle_conns`) after a traffic + spike. - `collation` (string): Sets the collation used for client-server interaction on connection. In contrast to charset, collation doesn't issue additional queries. If the specified collation is unavailable on the target server, the connection will fail. - `loc` (string): Sets the location for time.Time values. Note that this sets the location for time.Time values but doesn't change @@ -156,7 +169,11 @@ See also: If configuration key `dsn` (Data Source Name) is prefixed with `sqlite://`, then SQLite will be used as storage backend. SQLite is a great choice for development but has many drawbacks and should not be used in production. -An exemplary configuration would look like this: `DSN=sqlite:///tmp/some-db.sqlite?_fk=true` +An example configuration would look like this: + +``` +DSN=sqlite:///tmp/some-db.sqlite?_fk=true +``` The following DSN parameters are required: diff --git a/docs/self-hosted/oel/index.mdx b/docs/self-hosted/oel/index.mdx index 9f75bbc6cc..3be7b25965 100644 --- a/docs/self-hosted/oel/index.mdx +++ b/docs/self-hosted/oel/index.mdx @@ -4,6 +4,12 @@ title: Introduction to Ory Enterprise License sidebar_label: Introduction --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + The Ory Enterprise License (OEL) is a commercial license designed for businesses and organizations that rely on Ory's open-source identity and access control software (Ory Hydra, Ory Kratos, Ory Keto, Ory Oathkeeper, and Ory Polis) in production and mission-critical environments. It grants access to enterprise-grade features, dedicated support, and builds optimized for @@ -59,4 +65,4 @@ All Ory Enterprise builds share common advantages over their open-source counter The Ory Enterprise License is leveraged by organizations requiring robust and scalable identity infrastructure. For instance, OpenAI utilizes the Ory Enterprise License with Ory Hydra Enterprise to manage authentication for its 400 million weekly active users, ensuring reliability, massive scale, and uninterrupted service. Read more about -[OpenAI's use of Ory](https://www.ory.sh/case-studies/openai). +[OpenAI's use of Ory](https://www.ory.com/case-studies/openai). diff --git a/docs/self-hosted/oel/keto/changelog.mdx b/docs/self-hosted/oel/keto/changelog.mdx new file mode 100644 index 0000000000..7adc4ab81a --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog.mdx @@ -0,0 +1,9 @@ +--- +id: changelog +title: Changelog for Ory Keto OEL +sidebar_label: Changelog +--- + +import ListChangelogs from "@site/src/components/ListChangelogs/ListChangelogs.jsx" + + diff --git a/docs/self-hosted/oel/keto/changelog/.changelog b/docs/self-hosted/oel/keto/changelog/.changelog new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/self-hosted/oel/keto/changelog/v25.3.3.md b/docs/self-hosted/oel/keto/changelog/v25.3.3.md new file mode 100644 index 0000000000..9bfb7fc229 --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.3.3.md @@ -0,0 +1,5 @@ +## v25.3.3 + +### Improved tracing and metrics for the high-performance SQL connection pool + +This change adds distributed tracing and advanced metrics for the high-performance SQL connection pool in all Ory OEL products. diff --git a/docs/self-hosted/oel/keto/changelog/v25.3.4.md b/docs/self-hosted/oel/keto/changelog/v25.3.4.md new file mode 100644 index 0000000000..681208ec83 --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.3.4.md @@ -0,0 +1 @@ +No changelog entries found for keto/oel in versions v25.3.4 diff --git a/docs/self-hosted/oel/keto/changelog/v25.3.5.md b/docs/self-hosted/oel/keto/changelog/v25.3.5.md new file mode 100644 index 0000000000..5ce770a3e2 --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.3.5.md @@ -0,0 +1,7 @@ +## v25.3.5 + +### Change of base image + +The base image for OEL images is now set to "gcr.io/distroless/static-debian12:nonroot". Previously, it was +"gcr.io/distroless/static-debian12:debug-nonroot", which included BusyBox (a minimal shell and basic debugging utilities). Debug +images are still available using the "-debug" tag suffix. diff --git a/docs/self-hosted/oel/keto/changelog/v25.3.6.md b/docs/self-hosted/oel/keto/changelog/v25.3.6.md new file mode 100644 index 0000000000..78c9446903 --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.3.6.md @@ -0,0 +1 @@ +No changelog entries found for keto/oel in versions v25.3.6 diff --git a/docs/self-hosted/oel/keto/changelog/v25.3.8.md b/docs/self-hosted/oel/keto/changelog/v25.3.8.md new file mode 100644 index 0000000000..373d5794af --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.3.8.md @@ -0,0 +1 @@ +No changelog entries found for keto/oel in versions v25.3.8 diff --git a/docs/self-hosted/oel/keto/changelog/v25.3.9.md b/docs/self-hosted/oel/keto/changelog/v25.3.9.md new file mode 100644 index 0000000000..c31226cfd8 --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.3.9.md @@ -0,0 +1 @@ +No changelog entries found for keto/oel in versions v25.3.9 diff --git a/docs/self-hosted/oel/keto/changelog/v25.4.0.md b/docs/self-hosted/oel/keto/changelog/v25.4.0.md new file mode 100644 index 0000000000..b366cfca4e --- /dev/null +++ b/docs/self-hosted/oel/keto/changelog/v25.4.0.md @@ -0,0 +1 @@ +No changelog entries found for keto/oel in versions v25.4.0 diff --git a/docs/self-hosted/oel/keto/configuration.mdx b/docs/self-hosted/oel/keto/configuration.mdx new file mode 100644 index 0000000000..484a6248b9 --- /dev/null +++ b/docs/self-hosted/oel/keto/configuration.mdx @@ -0,0 +1,10 @@ +--- +id: configuration +title: OEL Configuration +--- + +```mdx-code-block +import ConfigMarkdown from '@site/src/components/ConfigMarkdown'; + + +``` diff --git a/docs/self-hosted/oel/kratos/changelog.mdx b/docs/self-hosted/oel/kratos/changelog.mdx index e1cee16757..c12fb3ddbc 100644 --- a/docs/self-hosted/oel/kratos/changelog.mdx +++ b/docs/self-hosted/oel/kratos/changelog.mdx @@ -4,6 +4,38 @@ title: Changelog for Ory Kratos OEL sidebar_label: Changelog --- +import ListChangelogs from "@site/src/components/ListChangelogs/ListChangelogs.jsx" + +# Kratos + + + +## 2025-07-25 + +Tag: `beebb63c5cd4a58b218a792027b34d231735dc05` + +### Support for External Identity IDs + +Identity admins can now set an external_id field on an identity. If set, the external ID must be unique within the project. Admins +can retrieve an identity by external ID through the `/admin/identities/by/external/{id}` endpoint. In responses, the `external_id` +is contained in all identity and session responses. When tokenizing a session, the `external_id` is available in the Jsonnet +context. Optionally, admins can set the `subject_source` option on the tokenization config to `external_id`, in which case the sub +claim will be the external ID. Note that in this case tokenization fails if the external ID is not set for the identity bound to +that session. + +Read more about the external ID feature in our documentation: https://www.ory.com/docs/kratos/manage-identities/external-id + +:::info + +This release needs previous version (`097934fff2bda05c808d962a92f52140f80dff83`) to be applied first + +::: + +Tag: `097934fff2bda05c808d962a92f52140f80dff83` + +Improved SQL queries to gracefully handle new columns added via future migrations, preventing upgrade-time failures due to schema +changes. + ## 2025-06-11 Tag: `290abca8469dc46c1ba07708849fed28fdbc1b69` @@ -13,7 +45,7 @@ Tag: `290abca8469dc46c1ba07708849fed28fdbc1b69` Previously the maximum number of submission attempts for codes (e.g., 2FA codes, email verification codes) was set to 5 in Ory Kratos. This release allows the submission attempts to be configurable for system administrators based on specific security policies or business requirements, the default value of 5 remains. To find out more how to configure it please read our -documentation https://www.ory.sh/docs/identities/sign-in/code-submission-limit +documentation https://www.ory.com/docs/identities/sign-in/code-submission-limit ## 2025-05-27 diff --git a/docs/self-hosted/oel/kratos/changelog/.changelog b/docs/self-hosted/oel/kratos/changelog/.changelog new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/self-hosted/oel/kratos/changelog/v25.3.3.md b/docs/self-hosted/oel/kratos/changelog/v25.3.3.md new file mode 100644 index 0000000000..a4a78a054f --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.3.3.md @@ -0,0 +1,13 @@ +## v25.3.3 + +### FedCM Sign-In Now Triggers Login Hooks + +We updated the Federated Credential Management (FedCM) sign-in flow to correctly trigger any "after login" hooks configured for +the OIDC (OpenID Connect) method. + +This change ensures that when a returning user signs in using a FedCM provider, the system behaves consistently with other +OIDC-based logins. + +### Improved tracing and metrics for the high-performance SQL connection pool + +This change adds distributed tracing and advanced metrics for the high-performance SQL connection pool in all Ory OEL products. diff --git a/docs/self-hosted/oel/kratos/changelog/v25.3.4.md b/docs/self-hosted/oel/kratos/changelog/v25.3.4.md new file mode 100644 index 0000000000..fef8bafe38 --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.3.4.md @@ -0,0 +1,18 @@ +## v25.3.4 + +### Remove counting courier messages in `/admin/courier/messages` + +We've removed the `X-Total-Count` HTTP response header from the `/admin/courier/messages` endpoint. This change prevents a costly, +linear scan of the database on every request, which was defeating the purpose of pagination. + +Additionally, there is a new configuration field in Kratos: `secrets.pagination` which is a list of encryption keys used to +encrypt/decrypt the pagination token. This is **not** security sensitive and only used to avoid having API clients relying on the +specific implementation of the pagination token. This way the implementation is free to change in the future. If no keys are +configured, a fallback key is transparently used. + +#### Breaking changes + +- Clients can no longer rely on the `X-Total-Count` HTTP response header. +- The total number of messages is now indeterminate. You can determine the last page when the number of returned items is less + than the page size. But note that due to the real-time nature of this data, subsequent calls with identical filters may return + different results as the total number of messages can change rapidly. diff --git a/docs/self-hosted/oel/kratos/changelog/v25.3.5.md b/docs/self-hosted/oel/kratos/changelog/v25.3.5.md new file mode 100644 index 0000000000..5ce770a3e2 --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.3.5.md @@ -0,0 +1,7 @@ +## v25.3.5 + +### Change of base image + +The base image for OEL images is now set to "gcr.io/distroless/static-debian12:nonroot". Previously, it was +"gcr.io/distroless/static-debian12:debug-nonroot", which included BusyBox (a minimal shell and basic debugging utilities). Debug +images are still available using the "-debug" tag suffix. diff --git a/docs/self-hosted/oel/kratos/changelog/v25.3.6.md b/docs/self-hosted/oel/kratos/changelog/v25.3.6.md new file mode 100644 index 0000000000..5e574135b0 --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.3.6.md @@ -0,0 +1 @@ +No changelog entries found for kratos/oel in versions v25.3.6 diff --git a/docs/self-hosted/oel/kratos/changelog/v25.3.8.md b/docs/self-hosted/oel/kratos/changelog/v25.3.8.md new file mode 100644 index 0000000000..285f2e7ca4 --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.3.8.md @@ -0,0 +1,7 @@ +## v25.3.8 + +### Add 'Login with Amazon' + +Amazon is added to the list of OIDC providers to enable 'Login with Amazon'. + +Note that 'Code Based Linking' and 'Login and Pay with Amazon' are not part of this release. diff --git a/docs/self-hosted/oel/kratos/changelog/v25.3.9.md b/docs/self-hosted/oel/kratos/changelog/v25.3.9.md new file mode 100644 index 0000000000..cc3501a0a9 --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.3.9.md @@ -0,0 +1,7 @@ +## v25.3.9 + +### Make the ID of the recovery address of an identity optional when creating it + +Before this fix, attempting to create, via the API, an identity with a recovery address which did not contain an ID, would fail +with an opaque error (`uuid: incorrect UUID length 0 in string ""`). Now, if the ID is not present at creation time, it will be +auto-generated. diff --git a/docs/self-hosted/oel/kratos/changelog/v25.4.0.md b/docs/self-hosted/oel/kratos/changelog/v25.4.0.md new file mode 100644 index 0000000000..7ca8264193 --- /dev/null +++ b/docs/self-hosted/oel/kratos/changelog/v25.4.0.md @@ -0,0 +1,12 @@ +## v25.4.0 + +### Session now available in settings after hook + +When using the `After Hook` feature in Ory Kratos, the session is now accessible in the webhook's body context. This enhancement +allows developers to access session information directly within the after hook, enabling more dynamic and context-aware settings +webhooks. + +### Significantly faster identity updates + +This patch improves the performance of identity updates by optimizing database queries and reducing redundant operations. Users +will experience faster response times when signing up, updating their profiles, or changing credentials. diff --git a/docs/self-hosted/oel/kratos/configuration.mdx b/docs/self-hosted/oel/kratos/configuration.mdx new file mode 100644 index 0000000000..bffd20a384 --- /dev/null +++ b/docs/self-hosted/oel/kratos/configuration.mdx @@ -0,0 +1,10 @@ +--- +id: configuration +title: OEL Configuration +--- + +```mdx-code-block +import ConfigMarkdown from '@site/src/components/ConfigMarkdown'; + + +``` diff --git a/docs/self-hosted/oel/monitoring/monitoring.mdx b/docs/self-hosted/oel/monitoring/monitoring.mdx index 295d7353e8..d2884d7ad5 100644 --- a/docs/self-hosted/oel/monitoring/monitoring.mdx +++ b/docs/self-hosted/oel/monitoring/monitoring.mdx @@ -3,6 +3,12 @@ id: monitoring title: Monitoring --- +```mdx-code-block +import CanonicalUrl from "@site/src/components/CanonicalUrl" + + +``` + This guide presents exemplary monitoring configuration that will work with OEL applications. ## Prerequisites @@ -66,7 +72,7 @@ grafana: name: Tempo type: tempo uid: demo_tempo - url: http://tempo.default.svc.cluster.local:3100 + url: http://tempo.default.svc.cluster.local:3200 - access: proxy jsonData: derivedFields: @@ -121,6 +127,8 @@ loki: commonConfig: # cannot be bigger than replica count replication_factor: 1 + storage: + type: filesystem useTestSchema: true minio: enabled: true diff --git a/docs/self-hosted/oel/oathkeeper/changelog.mdx b/docs/self-hosted/oel/oathkeeper/changelog.mdx index 1fcde6a0b4..abbb28a964 100644 --- a/docs/self-hosted/oel/oathkeeper/changelog.mdx +++ b/docs/self-hosted/oel/oathkeeper/changelog.mdx @@ -4,6 +4,10 @@ title: Changelog for Ory Oathkeeper OEL sidebar_label: Changelog --- +import ListChangelogs from "@site/src/components/ListChangelogs/ListChangelogs.jsx" + + + ## 2025-05-08 ### Initial Ory Oathkeeper OEL release diff --git a/docs/self-hosted/oel/oathkeeper/changelog/.changelog b/docs/self-hosted/oel/oathkeeper/changelog/.changelog new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.3.3.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.3.md new file mode 100644 index 0000000000..7371611718 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.3.md @@ -0,0 +1 @@ +No changelog entries found for oathkeeper/oel in versions v25.3.3 diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.3.4.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.4.md new file mode 100644 index 0000000000..68da2b8d9a --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.4.md @@ -0,0 +1 @@ +No changelog entries found for oathkeeper/oel in versions v25.3.4 diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.3.5.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.5.md new file mode 100644 index 0000000000..5ce770a3e2 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.5.md @@ -0,0 +1,7 @@ +## v25.3.5 + +### Change of base image + +The base image for OEL images is now set to "gcr.io/distroless/static-debian12:nonroot". Previously, it was +"gcr.io/distroless/static-debian12:debug-nonroot", which included BusyBox (a minimal shell and basic debugging utilities). Debug +images are still available using the "-debug" tag suffix. diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.3.6.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.6.md new file mode 100644 index 0000000000..4567fd3c10 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.6.md @@ -0,0 +1 @@ +No changelog entries found for oathkeeper/oel in versions v25.3.6 diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.3.8.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.8.md new file mode 100644 index 0000000000..cec11966e5 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.8.md @@ -0,0 +1 @@ +No changelog entries found for oathkeeper/oel in versions v25.3.8 diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.3.9.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.9.md new file mode 100644 index 0000000000..396f313dc6 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.3.9.md @@ -0,0 +1 @@ +No changelog entries found for oathkeeper/oel in versions v25.3.9 diff --git a/docs/self-hosted/oel/oathkeeper/changelog/v25.4.0.md b/docs/self-hosted/oel/oathkeeper/changelog/v25.4.0.md new file mode 100644 index 0000000000..e0e926e852 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/changelog/v25.4.0.md @@ -0,0 +1 @@ +No changelog entries found for oathkeeper/oel in versions v25.4.0 diff --git a/docs/self-hosted/oel/oathkeeper/configuration.mdx b/docs/self-hosted/oel/oathkeeper/configuration.mdx new file mode 100644 index 0000000000..0e26458058 --- /dev/null +++ b/docs/self-hosted/oel/oathkeeper/configuration.mdx @@ -0,0 +1,10 @@ +--- +id: configuration +title: OEL Configuration +--- + +```mdx-code-block +import ConfigMarkdown from '@site/src/components/ConfigMarkdown'; + + +``` diff --git a/docs/self-hosted/oel/oauth2/changelog.mdx b/docs/self-hosted/oel/oauth2/changelog.mdx index d2fa19df70..6137e397c2 100644 --- a/docs/self-hosted/oel/oauth2/changelog.mdx +++ b/docs/self-hosted/oel/oauth2/changelog.mdx @@ -4,6 +4,10 @@ title: Changelog for Ory Hydra OEL sidebar_label: Changelog --- +import ListChangelogs from "@site/src/components/ListChangelogs/ListChangelogs.jsx" + + + ## 2025-06-11 Tag: `290abca8469dc46c1ba07708849fed28fdbc1b69` @@ -25,7 +29,7 @@ Changes: - fix for sql migration for Azure Postgres Flexible Server - https://github.com/ory/hydra/pull/3958 - introduces implementation of OAuth 2.0 Device Authorization Grant - https://github.com/ory/hydra/pull/3912 -- enables ["high performance pooling"](https://www.ory.sh/docs/self-hosted/deployment#high-performance-pooling) parameters in the +- enables ["high performance pooling"](https://www.ory.com/docs/self-hosted/deployment#high-performance-pooling) parameters in the DSN for PostgreSQL and CockroachDB ## 2025-03-19 @@ -43,7 +47,7 @@ Furthermore, graceful token refresh has been improved to handle a variety of edg This will remove/reduce serializable errors in CockroachDB during OAuth2 token exchanges. -https://www.ory.sh/docs/hydra/guides/graceful-token-refresh +https://www.ory.com/docs/hydra/guides/graceful-token-refresh ## 2024-07-17 diff --git a/docs/self-hosted/oel/oauth2/changelog/.changelog b/docs/self-hosted/oel/oauth2/changelog/.changelog new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.3.3.md b/docs/self-hosted/oel/oauth2/changelog/v25.3.3.md new file mode 100644 index 0000000000..9bfb7fc229 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.3.3.md @@ -0,0 +1,5 @@ +## v25.3.3 + +### Improved tracing and metrics for the high-performance SQL connection pool + +This change adds distributed tracing and advanced metrics for the high-performance SQL connection pool in all Ory OEL products. diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.3.4.md b/docs/self-hosted/oel/oauth2/changelog/v25.3.4.md new file mode 100644 index 0000000000..34e8062662 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.3.4.md @@ -0,0 +1,12 @@ +## v25.3.4 + +### Increased Refresh Token Grace Period + +The maximum duration for the Refresh Token Rotation Grace Period has been extended from 30 days to 180 days in Ory Hydra with the +Ory Enterprise License (OEL). For Ory Network projects and non-OEL Hydra, the maximum grace period remains 5 minutes. + +The extended 180-day period is only available when a reuse count (rotation_grace_reuse_count) is configured. Without a reuse +count, the limit remains 5 minutes. + +Important: The 180-day grace period is considered insecure for general use. It is offered exclusively to support legacy migration +scenarios and is not recommended for production deployments. diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.3.5.md b/docs/self-hosted/oel/oauth2/changelog/v25.3.5.md new file mode 100644 index 0000000000..01f4ad8f7e --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.3.5.md @@ -0,0 +1,15 @@ +## v25.3.5 + +### Change of base image + +The base image for OEL images is now set to "gcr.io/distroless/static-debian12:nonroot". Previously, it was +"gcr.io/distroless/static-debian12:debug-nonroot", which included BusyBox (a minimal shell and basic debugging utilities). Debug +images are still available using the "-debug" tag suffix. + +### JWK Cache + +Ory Hydra OEL now supports in-memory caching of JWKs to improve performance and reduce latency. The cache is enabled by setting +the `db.jwk_cache.enabled` configuration option to `true`. Other available configuration options are `db.jwk_cache.size`, which is +the maximum number of keys to be cached, and `db.jwk_cache.ttl`, which is the time-to-live for cached keys. It is recommended to +set a cache TTL to force regular refreshes of the keys. Updates to keys are not actively propagated to the cache, as clients are +expected to accept old keys for a certain period of time. diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.3.6.md b/docs/self-hosted/oel/oauth2/changelog/v25.3.6.md new file mode 100644 index 0000000000..b41c03ef16 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.3.6.md @@ -0,0 +1 @@ +No changelog entries found for hydra/oel in versions v25.3.6 diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.3.8.md b/docs/self-hosted/oel/oauth2/changelog/v25.3.8.md new file mode 100644 index 0000000000..0f47d4ae95 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.3.8.md @@ -0,0 +1 @@ +No changelog entries found for hydra/oel in versions v25.3.8 diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.3.9.md b/docs/self-hosted/oel/oauth2/changelog/v25.3.9.md new file mode 100644 index 0000000000..2b946f12b0 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.3.9.md @@ -0,0 +1,10 @@ +## v25.3.9 + +### Fix regression in refresh token UsedTimes calculation + +Fixed a regression in Hydra OAuth2 refresh token handling where the `UsedTimes` validation was incorrectly checking the `Valid` +flag before comparing against the graceful count limit. This caused refresh tokens to be incorrectly rejected during the grace +period when the `UsedTimes` field was not explicitly set, even when the usage count was within acceptable limits. + +The fix ensures that refresh tokens are properly validated based on the usage count alone, without requiring the `UsedTimes` field +to be explicitly marked as valid in the database. diff --git a/docs/self-hosted/oel/oauth2/changelog/v25.4.0.md b/docs/self-hosted/oel/oauth2/changelog/v25.4.0.md new file mode 100644 index 0000000000..935c451691 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/changelog/v25.4.0.md @@ -0,0 +1 @@ +No changelog entries found for hydra/oel in versions v25.4.0 diff --git a/docs/self-hosted/oel/oauth2/configuration.mdx b/docs/self-hosted/oel/oauth2/configuration.mdx new file mode 100644 index 0000000000..6e9b315e13 --- /dev/null +++ b/docs/self-hosted/oel/oauth2/configuration.mdx @@ -0,0 +1,10 @@ +--- +id: configuration +title: OEL Configuration +--- + +```mdx-code-block +import ConfigMarkdown from '@site/src/components/ConfigMarkdown'; + + +``` diff --git a/docs/self-hosted/oel/oauth2/revert-database-migrations.mdx b/docs/self-hosted/oel/oauth2/revert-database-migrations.mdx index 1924e38fee..aefba81d42 100644 --- a/docs/self-hosted/oel/oauth2/revert-database-migrations.mdx +++ b/docs/self-hosted/oel/oauth2/revert-database-migrations.mdx @@ -52,7 +52,7 @@ time=2025-03-05T11:47:18Z level=info msg=Successfully applied 2 migrations. audi Pull the newest version of the Ory Helm chart and update the repository: ``` -helm repo add ory https://k8s.ory.sh/helm/charts +helm repo add ory https://k8s.ory.com/helm/charts helm repo update ``` diff --git a/docs/self-hosted/oel/oauth2/token-prefix.mdx b/docs/self-hosted/oel/oauth2/token-prefix.mdx index c10eb451c8..5edd7efd10 100644 --- a/docs/self-hosted/oel/oauth2/token-prefix.mdx +++ b/docs/self-hosted/oel/oauth2/token-prefix.mdx @@ -10,7 +10,7 @@ This document explains how to configure the token prefix for OAuth2 access token default, all tokens use the `ory_%s_` template, where `%s` is replaced with the token type. Customizing the token prefix is available only to customers on an Ory Enterprise plan (Ory Enterprise License / Ory Network -Enterprise). If you are interested in this feature, please [contact us](https://www.ory.sh/contact). +Enterprise). If you are interested in this feature, please [contact us](https://www.ory.com/contact). ## Default token prefix diff --git a/docs/self-hosted/oel/oel-high-performance-pooling.mdx b/docs/self-hosted/oel/oel-high-performance-pooling.mdx new file mode 100644 index 0000000000..a948b9881d --- /dev/null +++ b/docs/self-hosted/oel/oel-high-performance-pooling.mdx @@ -0,0 +1,44 @@ +--- +id: high-performance-pooling +title: High-performance database connection pooling +sidebar_label: High-performance pooling +--- + +High-performance pooling is available for CockroachDB and PostgreSQL with an Ory Enterprise License (OEL). It provides additional +configuration options for managing database connections under variable load. + +To activate high-performance pooling, you must set the `pool_min_conns` parameter, otherwise high-performance pooling will not be +enabled. + +- `pool_min_conns` (number): The minimum number of total (in-use and idle) database connections to keep open at all times. After a + connection closes, the pool may dip below `pool_min_conns` momentarily. Defaults to 0. +- `pool_max_conns` (number): Sets the maximum number of open connections to the database. Overrides `max_conns`. +- `pool_max_conn_idle_time` (duration: for example "500ms", "5s", "30m", "1h"): Database connections will be closed after idling + for this duration. Overrides `max_conn_idle_time`. +- `pool_max_conn_lifetime` (duration: for example "500ms", "5s", "30m", "1h"): Sets the time after which a connection will be + closed, irrespective of how long it has been idle. Overrides `max_conn_lifetime`. +- `pool_max_conn_lifetime_jitter` (duration: for example "500ms", "5s", "30m", "1h"): Jitter to add to the + `pool_max_conn_lifetime` value. This is useful to avoid thundering herd problems when many connections are closed and re-opened + at the same time. +- `pool_health_check_period` (duration: for example "500ms", "5s", "30m", "1h"): Sets the period for health checks to potentially + kill stale connections. Defaults to "1m". + +## When to use high-performance pooling + +Standard pooling opens connections on demand and closes them after idle timeout, which can cause connection storms during sudden +traffic spikes. High-performance pooling maintains `min_pool` persistent connections and includes refresh jitter to prevent +synchronized resets, without initialization overhead and reducing the risk of database overload during demand surges. + +Consider high-performance pooling when your workload exhibits: + +- Large, unpredictable traffic spikes +- Sudden transitions from low to high request volume +- Time-sensitive operations where connection initialization latency is problematic + +For steady-state traffic or gradual load changes, standard pooling may be enough. + +## When not to use high-performance pooling + +High-performance pooling does not reload TLS certificates while the process is running. If database TLS certificates change, you +must restart the Ory service to establish connections using the new certificates. Standard pooling supports hot reloading of TLS +certificates because connections close after idle timeout and reconnect with refreshed credentials. diff --git a/docs/self-hosted/oel/oel-hydra-image-tags.md b/docs/self-hosted/oel/oel-hydra-image-tags.md index f419619eaf..d559414b6e 100644 --- a/docs/self-hosted/oel/oel-hydra-image-tags.md +++ b/docs/self-hosted/oel/oel-hydra-image-tags.md @@ -1,5 +1,27 @@ | Image Tag | Release Date | | ---------------------------------------- | ------------ | +| 25.4.0 | 2025-11-07 | +| 25.3.9 | 2025-10-30 | +| 25.3.8 | 2025-10-23 | +| 25.3.6 | 2025-10-10 | +| 25.3.5 | 2025-10-03 | +| 25.3.4 | 2025-09-26 | +| 25.3.3 | 2025-09-18 | +| 25.3.2 | 2025-09-08 | +| 25.3.1 | 2025-09-03 | +| 25.3.0 | 2025-08-20 | +| 8d6ee03cc8181d3277100a4b7412a3a113799964 | 2025-08-12 | +| 8fcb534888e8853836a97ead241bef518f6fc263 | 2025-08-04 | +| beebb63c5cd4a58b218a792027b34d231735dc05 | 2025-07-25 | +| 097934fff2bda05c808d962a92f52140f80dff83 | 2025-07-25 | +| cab093b480501b914f6b2eda1f306b8d6e179ab4 | 2025-07-16 | +| 9cde70b7b994db145ab08bc3e1288b49cd7b3696 | 2025-07-08 | +| 6147132bd97e3d9146037beeaebf8d315b760ed2 | 2025-07-04 | +| 86970d22e81479695c130079707f8f9dc0929885 | 2025-07-03 | +| 4a0cd2779d9c80fecb3f1ce49efad606942421fd | 2025-07-01 | +| 37fbe9cc74369230ab90af9ea92817e39191b549 | 2025-06-27 | +| ea3038323329fb703a31bde1abc1a0cf41a08926 | 2025-06-23 | +| 19fae4f763fa139db38db601000cb80b53ebde4d | 2025-06-20 | | 290abca8469dc46c1ba07708849fed28fdbc1b69 | 2025-06-11 | | d389bd4c1bc21c1cdaf5e60688314a5bf9bfce3e | 2025-06-06 | | d4f640cf72989adf24ba153919ede18d4cddc98e | 2025-05-27 | diff --git a/docs/self-hosted/oel/oel-keto-image-tags.md b/docs/self-hosted/oel/oel-keto-image-tags.md index 1b4686136a..72e4bdc24b 100644 --- a/docs/self-hosted/oel/oel-keto-image-tags.md +++ b/docs/self-hosted/oel/oel-keto-image-tags.md @@ -1,4 +1,25 @@ | Image Tag | Release Date | | ---------------------------------------- | ------------ | +| 25.4.0 | 2025-11-07 | +| 25.3.9 | 2025-10-30 | +| 25.3.8 | 2025-10-23 | +| 25.3.6 | 2025-10-10 | +| 25.3.5 | 2025-10-03 | +| 25.3.4 | 2025-09-26 | +| 25.3.3 | 2025-09-18 | +| 25.3.2 | 2025-09-08 | +| 25.3.1 | 2025-09-03 | +| 25.3.0 | 2025-08-19 | +| 8d6ee03cc8181d3277100a4b7412a3a113799964 | 2025-08-12 | +| 8fcb534888e8853836a97ead241bef518f6fc263 | 2025-08-04 | +| beebb63c5cd4a58b218a792027b34d231735dc05 | 2025-07-25 | +| 097934fff2bda05c808d962a92f52140f80dff83 | 2025-07-25 | +| cab093b480501b914f6b2eda1f306b8d6e179ab4 | 2025-07-16 | +| 9cde70b7b994db145ab08bc3e1288b49cd7b3696 | 2025-07-08 | +| 6147132bd97e3d9146037beeaebf8d315b760ed2 | 2025-07-04 | +| 86970d22e81479695c130079707f8f9dc0929885 | 2025-07-03 | +| ea3038323329fb703a31bde1abc1a0cf41a08926 | 2025-06-23 | +| 19fae4f763fa139db38db601000cb80b53ebde4d | 2025-06-20 | +| de9debec0a2c8e8f35b2a8924cc133925162a0a6 | 2025-06-18 | | d389bd4c1bc21c1cdaf5e60688314a5bf9bfce3e | 2025-06-06 | | d4f640cf72989adf24ba153919ede18d4cddc98e | 2025-05-27 | diff --git a/docs/self-hosted/oel/oel-kratos-image-tags.md b/docs/self-hosted/oel/oel-kratos-image-tags.md index f1f7d0b2a4..3368a0d523 100644 --- a/docs/self-hosted/oel/oel-kratos-image-tags.md +++ b/docs/self-hosted/oel/oel-kratos-image-tags.md @@ -1,5 +1,29 @@ | Image Tag | Release Date | | ---------------------------------------- | ------------ | +| 25.4.0 | 2025-11-07 | +| 25.3.9 | 2025-10-30 | +| 25.3.8 | 2025-10-23 | +| 25.3.6 | 2025-10-10 | +| 25.3.5 | 2025-10-03 | +| 25.3.4 | 2025-09-26 | +| 25.3.3 | 2025-09-18 | +| 25.3.2 | 2025-09-08 | +| 25.3.1 | 2025-09-03 | +| 25.3.0 | 2025-08-20 | +| 8d6ee03cc8181d3277100a4b7412a3a113799964 | 2025-08-12 | +| 9de37a48b68c7ee29caefb01c83f1a78999dc15b | 2025-08-06 | +| 8fcb534888e8853836a97ead241bef518f6fc263 | 2025-08-04 | +| 7b52ec8a8c7b6bbdde96d0dd1b44c720fa07fca2 | 2025-07-25 | +| beebb63c5cd4a58b218a792027b34d231735dc05 | 2025-07-25 | +| 097934fff2bda05c808d962a92f52140f80dff83 | 2025-07-25 | +| cab093b480501b914f6b2eda1f306b8d6e179ab4 | 2025-07-16 | +| 9cde70b7b994db145ab08bc3e1288b49cd7b3696 | 2025-07-08 | +| 6147132bd97e3d9146037beeaebf8d315b760ed2 | 2025-07-04 | +| 86970d22e81479695c130079707f8f9dc0929885 | 2025-07-03 | +| 37fbe9cc74369230ab90af9ea92817e39191b549 | 2025-06-27 | +| ea3038323329fb703a31bde1abc1a0cf41a08926 | 2025-06-23 | +| 19fae4f763fa139db38db601000cb80b53ebde4d | 2025-06-20 | +| de9debec0a2c8e8f35b2a8924cc133925162a0a6 | 2025-06-18 | | 290abca8469dc46c1ba07708849fed28fdbc1b69 | 2025-06-11 | | d389bd4c1bc21c1cdaf5e60688314a5bf9bfce3e | 2025-06-06 | | 36a91ed05c344b7cecac02b52be211501d3d49a1 | 2025-05-28 | diff --git a/docs/self-hosted/oel/oel-oathkeeper-image-tags.md b/docs/self-hosted/oel/oel-oathkeeper-image-tags.md index ed3b476e2f..3b68e09dc9 100644 --- a/docs/self-hosted/oel/oel-oathkeeper-image-tags.md +++ b/docs/self-hosted/oel/oel-oathkeeper-image-tags.md @@ -1,4 +1,21 @@ | Image Tag | Release Date | | ---------------------------------------- | ------------ | +| 25.4.0 | 2025-11-07 | +| 25.3.9 | 2025-10-30 | +| 25.3.8 | 2025-10-23 | +| 25.3.6 | 2025-10-10 | +| 25.3.5 | 2025-10-03 | +| 25.3.4 | 2025-09-26 | +| 25.3.3 | 2025-09-18 | +| 25.3.2 | 2025-09-08 | +| 25.3.1 | 2025-09-03 | +| 25.3.0 | 2025-08-19 | +| 8d6ee03cc8181d3277100a4b7412a3a113799964 | 2025-08-12 | +| beebb63c5cd4a58b218a792027b34d231735dc05 | 2025-07-25 | +| 097934fff2bda05c808d962a92f52140f80dff83 | 2025-07-25 | +| 9cde70b7b994db145ab08bc3e1288b49cd7b3696 | 2025-07-08 | +| 6147132bd97e3d9146037beeaebf8d315b760ed2 | 2025-07-04 | +| ea3038323329fb703a31bde1abc1a0cf41a08926 | 2025-06-23 | +| de9debec0a2c8e8f35b2a8924cc133925162a0a6 | 2025-06-18 | | d389bd4c1bc21c1cdaf5e60688314a5bf9bfce3e | 2025-06-06 | | 936e2f934cae31d47939e342dcc1e8c5f6f81fe7 | 2025-05-05 | diff --git a/docs/self-hosted/oel/oel-polis-image-tags.md b/docs/self-hosted/oel/oel-polis-image-tags.md new file mode 100644 index 0000000000..9c913f0b22 --- /dev/null +++ b/docs/self-hosted/oel/oel-polis-image-tags.md @@ -0,0 +1,14 @@ +| Image Tag | Release Date | +| ---------------------------------------- | ------------ | +| 25.4.0 | 2025-11-07 | +| 25.3.9 | 2025-10-30 | +| 25.3.8 | 2025-10-23 | +| 25.3.6 | 2025-10-10 | +| 25.3.5 | 2025-10-03 | +| 25.3.4 | 2025-09-26 | +| 25.3.3 | 2025-09-18 | +| 25.3.2 | 2025-09-08 | +| 25.3.1 | 2025-09-03 | +| 25.3.0 | 2025-08-19 | +| 8fcb534888e8853836a97ead241bef518f6fc263 | 2025-08-04 | +| c2370d3c35c060459b46f1c77b2241a23a1b04eb | 2025-07-28 | diff --git a/docs/self-hosted/oel/polis/changelog.mdx b/docs/self-hosted/oel/polis/changelog.mdx new file mode 100644 index 0000000000..8d1bf1b815 --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog.mdx @@ -0,0 +1,16 @@ +--- +id: changelog +title: Changelog for Ory Polis OEL +sidebar_label: Changelog +--- + +import ListChangelogs from "@site/src/components/ListChangelogs/ListChangelogs.jsx" + + + +## 2025-07-28 + +Tag: `c2370d3c35c060459b46f1c77b2241a23a1b04eb` + +No specific upgrade steps are required for this release. The Ory Polis OEL image is now available in the Ory Enterprise Docker +Registry. diff --git a/docs/self-hosted/oel/polis/changelog/.changelog b/docs/self-hosted/oel/polis/changelog/.changelog new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/self-hosted/oel/polis/changelog/v25.3.3.md b/docs/self-hosted/oel/polis/changelog/v25.3.3.md new file mode 100644 index 0000000000..bf2aff425d --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.3.3.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.3.3 diff --git a/docs/self-hosted/oel/polis/changelog/v25.3.4.md b/docs/self-hosted/oel/polis/changelog/v25.3.4.md new file mode 100644 index 0000000000..5b6954a3e0 --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.3.4.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.3.4 diff --git a/docs/self-hosted/oel/polis/changelog/v25.3.5.md b/docs/self-hosted/oel/polis/changelog/v25.3.5.md new file mode 100644 index 0000000000..2d2112ff74 --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.3.5.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.3.5 diff --git a/docs/self-hosted/oel/polis/changelog/v25.3.6.md b/docs/self-hosted/oel/polis/changelog/v25.3.6.md new file mode 100644 index 0000000000..3847b7de88 --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.3.6.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.3.6 diff --git a/docs/self-hosted/oel/polis/changelog/v25.3.8.md b/docs/self-hosted/oel/polis/changelog/v25.3.8.md new file mode 100644 index 0000000000..e18a535db3 --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.3.8.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.3.8 diff --git a/docs/self-hosted/oel/polis/changelog/v25.3.9.md b/docs/self-hosted/oel/polis/changelog/v25.3.9.md new file mode 100644 index 0000000000..a839864a2e --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.3.9.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.3.9 diff --git a/docs/self-hosted/oel/polis/changelog/v25.4.0.md b/docs/self-hosted/oel/polis/changelog/v25.4.0.md new file mode 100644 index 0000000000..bd4a94c727 --- /dev/null +++ b/docs/self-hosted/oel/polis/changelog/v25.4.0.md @@ -0,0 +1 @@ +No changelog entries found for polis/oel in versions v25.4.0 diff --git a/docs/self-hosted/oel/quickstart.mdx b/docs/self-hosted/oel/quickstart.mdx index 69f8f9d0ee..567ed586f0 100644 --- a/docs/self-hosted/oel/quickstart.mdx +++ b/docs/self-hosted/oel/quickstart.mdx @@ -16,7 +16,7 @@ To be able to run an enterprise build, you need: :::note Support for MySQL and PostgreSQL is available as well, but some features will be unavailable. Please -[contact the team](https://www.ory.sh/contact) to talk about your use case. +[contact the team](https://www.ory.com/contact) to talk about your use case. ::: @@ -37,18 +37,6 @@ When using CockroachDB Enterprise: - Zero-downtime migrations. - Automatic clean up of stale records - no Hydra Janitor needed. -## Ory Oathkeeper Enterprise License - -The Ory Oathkeeper Enterprise license includes additional features and support for enterprise customers: - -- Regular releases addressing CVEs and security vulnerabilities. - -## Ory Kratos Enterprise License - -The Ory Kratos Enterprise license includes additional features and support for enterprise customers: - -- Regular releases addressing CVEs and security vulnerabilities. - ### Ory Hydra Docker Registry There are two Docker registries available in different regions: @@ -62,35 +50,6 @@ import ImageTagsHydra from "./oel-hydra-image-tags.md" -### Ory Oathkeeper Docker Registry - -This is Docker registries available in the EU region: -`europe-docker.pkg.dev/ory-artifacts/ory-enterprise-oathkeeper/oathkeeper-oel` - -import ImageTagsOathkeeper from "./oel-oathkeeper-image-tags.md" - -Image tags: - - - -import ImageTagsKratos from "./oel-kratos-image-tags.md" - -Image tags: - - - -### Docker - -Enterprise Docker images are kept in a private registry that requires authorization. An authorization key is provided for each -customer separately. The next steps assume that the key is stored in `keyfile.json`. - -To authenticate to docker registry execute: - -``` -gcloud auth activate-service-account --key-file=keyfile.json -gcloud auth configure-docker europe-docker.pkg.dev -``` - To run the Ory Hydra Enterprise build, you need to set the `DSN` environment variable to the [database connection string](../deployment.md) and provide a [configuration file](../../hydra/reference/configuration.mdx). @@ -111,7 +70,7 @@ docker run -e DSN=cockroach://... europe-docker.pkg.dev/ory-artifacts/ory-enterp Setup Ory helm repository: ``` -helm repo add ory https://k8s.ory.sh/helm/charts +helm repo add ory https://k8s.ory.com/helm/charts helm repo update ``` @@ -141,7 +100,7 @@ metadata: namespace: ory data: dsn: cockroach:// - # https://www.ory.sh/docs/hydra/reference/configuration + # https://www.ory.com/docs/hydra/reference/configuration secretsCookie: secretsSystem: ``` @@ -166,7 +125,7 @@ secret: nameOverride: "ory-oel-hydra-secret" config: # --hydra config-- - # https://www.ory.sh/docs/hydra/reference/configuration + # https://www.ory.com/docs/hydra/reference/configuration ``` Install Ory Hydra @@ -174,3 +133,65 @@ Install Ory Hydra ``` helm install ory-oel-hydra ory/hydra --namespace ory --create-namespace -f values.yaml ``` + +## Ory Oathkeeper Enterprise License + +The Ory Oathkeeper Enterprise license includes additional features and support for enterprise customers: + +- Regular releases addressing CVEs and security vulnerabilities. + +### Ory Oathkeeper Docker Registry + +This is Docker registries available in the EU region: +`europe-docker.pkg.dev/ory-artifacts/ory-enterprise-oathkeeper/oathkeeper-oel` + +import ImageTagsOathkeeper from "./oel-oathkeeper-image-tags.md" + +Image tags: + + + +## Ory Polis Enterprise License + +The Ory Polis Enterprise license includes additional features and support for enterprise customers: + +- Regular releases addressing CVEs and security vulnerabilities. + +### Ory Polis Docker Registry + +This is Docker registries available in the EU region: `europe-docker.pkg.dev/ory-artifacts/ory-enterprise-polis/polis-oel` + +import ImageTagsPolis from "./oel-polis-image-tags.md" + +Image tags: + + + +## Ory Kratos Enterprise License + +The Ory Kratos Enterprise license includes additional features and support for enterprise customers: + +- Regular releases addressing CVEs and security vulnerabilities. +- Multitenancy + +### Ory Kratos Docker Registry + +This is Docker registries available in the EU region: `europe-docker.pkg.dev/ory-artifacts/ory-enterprise-kratos/kratos-oel` + +import ImageTagsKratos from "./oel-kratos-image-tags.md" + +Image tags: + + + +## Docker Registry + +Enterprise Docker images are kept in a private registry that requires authorization. An authorization key is provided for each +customer separately. The next steps assume that the key is stored in `keyfile.json`. + +To authenticate to docker registry execute: + +``` +gcloud auth activate-service-account --key-file=keyfile.json +gcloud auth configure-docker europe-docker.pkg.dev +``` diff --git a/docs/self-hosted/operations/20_logging.md b/docs/self-hosted/operations/20_logging.md index 005e41b2de..6f349eb23a 100644 --- a/docs/self-hosted/operations/20_logging.md +++ b/docs/self-hosted/operations/20_logging.md @@ -27,7 +27,7 @@ The `level` configuration key supports the following values: - `fatal`: the program is unable to continue execution and ended with a fatal state. Can happen when the configuration is invalid, for example. - `error`: used for errors that should be noted. -- `warn`: non-critical entries that deserve eyes. +- `warning`: non-critical entries that deserve eyes. - `info`: general operational entries about what's going on inside the application. - `debug`: usually only enabled when debugging. Very verbose logging. If `json` is the log format, the JSON will be prettified for better readability. diff --git a/docs/troubleshooting/30_iframes.mdx b/docs/troubleshooting/30_iframes.mdx index f88f92d981..225bc87629 100644 --- a/docs/troubleshooting/30_iframes.mdx +++ b/docs/troubleshooting/30_iframes.mdx @@ -5,12 +5,26 @@ sidebar_label: Troubleshooting iframes --- Iframes can pose a significant security risk for authentication services due to many attack vectors such as clickjacking, iframe -injection, iframe phishing, and many others. +injection, iframe phishing, and others. Most browsers have implemented measures to block cookies in iframe contexts that break +authentication, CSRF-prevention, and sessions. -Safari has additionally implemented a feature called -[Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention/) that blocks third-party cookies -by default in iframe contexts, which breaks authentication, CSRF-prevention, and sessions. Chrome is planning on rolling out the -same changes in 2024. +- Safari has implemented [Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention/) which + blocks third-party cookies by default. +- Firefox has implemented + [Total Cookie Protection](https://blog.mozilla.org/en/mozilla/firefox-rolls-out-total-cookie-protection-by-default-to-all-users-worldwide/) + which gives third-party cookies a separate cookie jar per site by default, preventing cross-site tracking. +- Google Chrome only blocks third-party cookies in Incognito mode by default, but users can set Google Chrome to block all + third-party cookies in regular mode. As an alternative, Google has implemented FedCM, which Ory supports. Read more about + [FedCM](../kratos/social-signin/fedcm.mdx). +- Edge blocks trackers by default. Microsoft is also exploring blocking third-party cookies in Edge by default. +- Brave browser blocks third-party cookies by default. -We therefore discourage use of iframes when using Ory and have implemented HTTP headers (`X-Frame-Options: DENY`) indicating to -browsers that iframes can not be used with the Ory Account Experience. +:::danger + +Identity flows, such as authentication, login, registration, and MFA, must not be embedded inside an iframe! Embedding these flows +increases the risk of phishing, session hijacking, and clickjacking. + +::: + +Ory has implemented HTTP headers (`X-Frame-Options: DENY` and `Content-Security-Policy: frame-ancestors 'none'`) to indicate to +browsers that iframes can't be used with the Ory Account Experience self-service user flows. diff --git a/docs/troubleshooting/40_mandatory-redirect-uri.mdx b/docs/troubleshooting/40_mandatory-redirect-uri.mdx index 6ccda21803..afbb725433 100644 --- a/docs/troubleshooting/40_mandatory-redirect-uri.mdx +++ b/docs/troubleshooting/40_mandatory-redirect-uri.mdx @@ -28,7 +28,7 @@ You must include the `redirect_uri` parameter: ### Action Required - Update your OpenID Connect flow requests to include `redirect_uri`. -- If you depend on data pending removal, contact us via [Zendesk](https://console.ory.sh/support), - [Slack](https://slack.ory.sh/invitation), or email to support@ory.sh. +- If you depend on data pending removal, contact us via [Zendesk](https://console.ory.sh/support), [Slack](https://slack.ory.com), + or email to support@ory.com. For any questions or further assistance, please reach out to our support channels. diff --git a/docs/troubleshooting/50_account-linking-response-code.mdx b/docs/troubleshooting/50_account-linking-response-code.mdx index 58d77b799c..3e646af879 100644 --- a/docs/troubleshooting/50_account-linking-response-code.mdx +++ b/docs/troubleshooting/50_account-linking-response-code.mdx @@ -25,7 +25,7 @@ Ory Network will now return a `400 Bad Request` response in the same scenario. - Ensure that your application can handle a `400 Bad Request` response when signing up with Social Sign-In for an existing account. -- If you have questions or concerns, contact us via [Zendesk](https://console.ory.sh/support), [Slack](https://slack.ory.sh/), or - email at support@ory.sh. +- If you have questions or concerns, contact us via [Zendesk](https://console.ory.sh/support), [Slack](https://slack.ory.com/), or + email at support@ory.com. For further assistance, reach out through our support channels. diff --git a/docs/troubleshooting/55_one_tap.mdx b/docs/troubleshooting/55_one_tap.mdx new file mode 100644 index 0000000000..b74742ae54 --- /dev/null +++ b/docs/troubleshooting/55_one_tap.mdx @@ -0,0 +1,19 @@ +--- +id: one-tap-nonce-provided-google +title: Google One Tap fails +--- + +If you receive an error such as + +```json +"error": { + "message": "Upstream error", + "reason": "No nonce was provided but is required by the provider", + "status": "Bad Gateway", + "status_code": 502 +} +``` + +when performing social sign in using Google One Tap, you must +[set the nonce parameter](https://developers.google.com/identity/gsi/web/reference/js-reference#nonce) when calling the Google +SDK. diff --git a/docs/troubleshooting/index.mdx b/docs/troubleshooting/index.mdx deleted file mode 100644 index ecc4e085df..0000000000 --- a/docs/troubleshooting/index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: index -hide_title: true -title: Troubleshooting Index -sidebar_label: Troubleshooting ---- - -This is an index of the different troubleshooting guides. - -import DocCardList from "@theme/DocCardList" - - diff --git a/docs/welcome.mdx b/docs/welcome.mdx index d188f3c2d9..9f27befd32 100644 --- a/docs/welcome.mdx +++ b/docs/welcome.mdx @@ -23,6 +23,6 @@ import * as welcomeContent from "@site/src/pages/_assets/welcome-content"; If you need assistance with implementing Ory in your application or have any questions, please check out the [GitHub discussions](https://github.com/discussions?discussions_q=org%3Aory+sort%3Aupdated-desc) or join the -[Ory Community Chat](https://slack.ory.sh/). +[Ory Community Chat](https://slack.ory.com/). For enterprise support, please [open a ticket](https://console.ory.sh/support). diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 8ed137929d..983f912de7 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -13,7 +13,7 @@ const config: Config = { }, title: "Ory", tagline: "Open Source Identity and Access Infrastructure", - url: `https://www.ory.sh`, + url: `https://www.ory.com`, baseUrl: "/docs/", favicon: "img/favico.png", onBrokenLinks: "throw", @@ -93,40 +93,40 @@ const config: Config = { links: [ { label: "Need Support?", - href: "https://www.ory.sh/support/", + href: "https://www.ory.com/support/", }, { label: "Search", - href: "https://www.ory.sh/docs/search/", + href: "https://www.ory.com/docs/search/", }, { label: "Status", - href: "https://status.ory.sh/", + href: "https://status.ory.com/", }, { label: "Privacy", - href: "https://www.ory.sh/privacy", + href: "https://www.ory.com/privacy", }, { label: "Company", - href: "https://www.ory.sh/legal/company", + href: "https://www.ory.com/legal/company", }, { label: "Terms of Service", - href: "https://www.ory.sh/tos", + href: "https://www.ory.com/tos", }, { label: "Schedule a discovery call", - href: "https://www.ory.sh/contact/", + href: "https://www.ory.com/contact/", }, { - html: ``, + html: ``, }, ] satisfies Preset.ThemeConfig["footer"]["links"], logo: { alt: "Ory logo in white", src: "/docs/img/logos/logo-ory-white-2022-11-04.svg", - href: "https://www.ory.sh/", + href: "https://www.ory.com/", height: 80, width: 130.7, }, @@ -249,11 +249,11 @@ const config: Config = { async: true, }, { - src: "https://consent.ory.sh/cmp/init.js", + src: "https://consent.ory.com/cmp/init.js", async: true, }, { - src: "https://consent.ory.sh/index.js", + src: "https://consent.ory.com/index.js", async: true, }, ], diff --git a/package-lock.json b/package-lock.json index 02fd1360b1..285d60509a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "ory-docs", "version": "1.0.0", "dependencies": { - "@apidevtools/json-schema-ref-parser": "11.7.3", + "@apidevtools/json-schema-ref-parser": "14.2.0", "@docusaurus/core": "3.8.0", "@docusaurus/plugin-client-redirects": "3.8.0", "@docusaurus/plugin-content-docs": "3.8.0", @@ -17,6 +17,7 @@ "@docusaurus/preset-classic": "3.8.0", "@docusaurus/theme-classic": "3.8.0", "@docusaurus/theme-search-algolia": "3.8.0", + "@iconify-json/tabler": "1.2.19", "@octokit/rest": "20.0.2", "@ory/client-fetch": "1.15.16", "@rjsf/bootstrap-4": "5.24.1", @@ -351,18 +352,21 @@ } }, "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "11.7.3", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.2.0.tgz", + "integrity": "sha512-NaGMMWwppbByagq+LwQMq6PMXHFWVu6kSwwx+eJfYTJ5zdpOvb9TIk6ZWxEEeXMUvGdVOZq3JalYsjsTZDvtkA==", "license": "MIT", "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" }, "engines": { - "node": ">= 16" + "node": ">= 20" }, "funding": { "url": "https://github.com/sponsors/philsturgeon" + }, + "peerDependencies": { + "@types/json-schema": "^7.0.15" } }, "node_modules/@babel/code-frame": { @@ -4240,6 +4244,15 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@iconify-json/tabler": { + "version": "1.2.19", + "resolved": "https://registry.npmjs.org/@iconify-json/tabler/-/tabler-1.2.19.tgz", + "integrity": "sha512-JDeQTQxHD8KE12pAbPVHX1WFVOPq8D0XfRb/LwYHwGwYE0HP9OIjJ//TKxS1Gt++RirYu6Xsx+Jm5LA5KbykoA==", + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@iconify/types": { "version": "2.0.0", "license": "MIT" @@ -4726,10 +4739,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "license": "MIT" - }, "node_modules/@jsep-plugin/assignment": { "version": "1.3.0", "license": "MIT", diff --git a/package.json b/package.json index 48d15a4200..4b05452826 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ ] }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "11.7.3", + "@apidevtools/json-schema-ref-parser": "14.2.0", "@docusaurus/core": "3.8.0", "@docusaurus/plugin-client-redirects": "3.8.0", "@docusaurus/plugin-content-docs": "3.8.0", @@ -38,6 +38,7 @@ "@docusaurus/preset-classic": "3.8.0", "@docusaurus/theme-classic": "3.8.0", "@docusaurus/theme-search-algolia": "3.8.0", + "@iconify-json/tabler": "1.2.19", "@octokit/rest": "20.0.2", "@ory/client-fetch": "1.15.16", "@rjsf/bootstrap-4": "5.24.1", diff --git a/src/components/CanonicalUrl/index.tsx b/src/components/CanonicalUrl/index.tsx new file mode 100644 index 0000000000..d43ce54014 --- /dev/null +++ b/src/components/CanonicalUrl/index.tsx @@ -0,0 +1,17 @@ +import Head from "@docusaurus/Head" +import useBaseUrl from "@docusaurus/useBaseUrl" + +interface CanonicalUrlProps { + path: string +} + +export default function CanonicalUrl({ path }: CanonicalUrlProps) { + const absoluteUrl = useBaseUrl(path, { absolute: true }) + const canonicalUrl = absoluteUrl.replace(/\/$/, "") + + return ( + + + + ) +} diff --git a/src/components/ConfigMarkdown/index.tsx b/src/components/ConfigMarkdown/index.tsx index d2a93f89bc..0141758597 100644 --- a/src/components/ConfigMarkdown/index.tsx +++ b/src/components/ConfigMarkdown/index.tsx @@ -13,6 +13,9 @@ const parser = new RefParser() const refs = { "ory://tracing-config": `https://raw.githubusercontent.com/ory/x/master/otelx/config.schema.json`, "ory://logging-config": `https://raw.githubusercontent.com/ory/x/master/logrusx/config.schema.json`, + "ory://serve-config": `https://raw.githubusercontent.com/ory/x/master/configx/serve.schema.json`, + "ory://cors-config": `https://raw.githubusercontent.com/ory/x/master/configx/cors.schema.json`, + "ory://tls-config": `https://raw.githubusercontent.com/ory/x/master/configx/tls.schema.json`, } const enhance = @@ -113,7 +116,36 @@ const enhance = export const oryResolver = { order: 1, canRead: /^ory:/i, - read: ({ url }) => axios.get(refs[url]).then(({ data }) => data), + read: ({ url }) => + axios.get(refs[url]).then(({ data }) => { + // Manually resolve internal $refs for schemas that have this issue + const resolveInternalRefs = (obj, definitions) => { + if (typeof obj === "object" && obj !== null) { + for (const key in obj) { + if ( + key === "$ref" && + typeof obj[key] === "string" && + obj[key].startsWith("#/definitions/") + ) { + const defName = obj[key].replace("#/definitions/", "") + if (definitions && definitions[defName]) { + // Replace the $ref with the actual definition + delete obj["$ref"] + Object.assign(obj, definitions[defName]) + } + } else if (typeof obj[key] === "object") { + resolveInternalRefs(obj[key], definitions) + } + } + } + } + + if (data.definitions) { + resolveInternalRefs(data, data.definitions) + } + + return data + }), } export default function ConfigMarkdown(props: { src: string; binary: string }) { @@ -132,6 +164,10 @@ export default function ConfigMarkdown(props: { src: string; binary: string }) { .then((r) => r.json()) .then((schema) => { new Promise((resolve, reject) => { + if (schema.title === "ORY Oathkeeper Configuration") { + schema["$id"] = + "https://github.com/ory/oathkeeper/schema/config.schema.json" + } parser.dereference( schema, { diff --git a/src/components/ConsoleLink/console-nav-data.ts b/src/components/ConsoleLink/console-nav-data.ts index 96cdc6d0dd..d925a9ae86 100644 --- a/src/components/ConsoleLink/console-nav-data.ts +++ b/src/components/ConsoleLink/console-nav-data.ts @@ -22,7 +22,7 @@ export const getStartedPaths: Path[] = [ href: routes.project.getStarted.route + "#integrations", }, { - title: "Guides and Tutorials", + title: "Guides and concepts", href: routes.project.getStarted.route + "#guides-tutorials", }, { title: "Community", href: routes.project.getStarted.route + "#community" }, @@ -31,15 +31,15 @@ export const getStartedPaths: Path[] = [ export const activityPaths: Path[] = [ { title: "Live", href: routes.project.activity.route }, { - title: "Logs & Events", + title: "Logs & events", href: routes.project.activity.events.route, }, { title: "Sessions", href: routes.project.sessions.list.route }, - { title: "Email delivery", href: routes.project.courierMessages.route }, + { title: "Message delivery", href: routes.project.courierMessages.route }, ] export const identititesPaths: Path[] = [ - { title: "Users & Identities", href: routes.project.identities.list.route }, + { title: "Users & identities", href: routes.project.identities.list.route }, { title: "Identity schema", href: routes.project.identitySchema.route }, { title: "Import users", @@ -53,6 +53,10 @@ export const brandingPaths: Path[] = [ title: "Theming", href: routes.project.accountExperience.theming.route, }, + { + title: "Localization", + href: routes.project.accountExperience.locales.route, + }, { title: "Custom domains", href: routes.project.cname.route, @@ -65,11 +69,15 @@ export const brandingPaths: Path[] = [ title: "UI URLs", href: routes.project.ui.route, }, + { + title: "Email templates", + href: routes.project.emailTemplates.route, + }, ] export const authenticationPaths: Path[] = [ { - title: "Registration", + title: "General", href: routes.project.authentication.route, }, { @@ -81,17 +89,23 @@ export const authenticationPaths: Path[] = [ href: routes.project.mfa.route, }, { - title: "Social Sign-In", + title: "Social Sign-In (OIDC)", href: routes.project.socialSignIn.route, }, { - title: "Actions & Webhooks", - href: routes.project.developers.actions.route, + title: "SAML Sign-In", + href: routes.project.saml.route, + pill: "Preview", }, { title: "Enterprise SSO", href: routes.project.authentication.organizations.route, }, + + { + title: "Sessions", + href: routes.project.authentication.sessionSettings.route, + }, { title: "Account recovery", href: routes.project.recovery.route, @@ -101,39 +115,51 @@ export const authenticationPaths: Path[] = [ href: routes.project.verification.route, }, { - title: "Email configuration", + title: "Email Configuration", href: routes.project.emailConfiguration.route, }, { - title: "Email templates", - href: routes.project.emailTemplates.route, - }, - { - title: "SMS configuration", + title: "SMS Configuration", href: routes.project.smsConfiguration.route, }, { - title: "Sessions", - href: routes.project.authentication.sessionSettings.route, + title: "Actions & Webhooks", + href: routes.project.developers.actions.route, }, ] export const oauthPaths: Path[] = [ { - title: "Overview", - href: routes.project.oauthConfiguration.overview.route, + title: "Clients and applications", + href: routes.project.oauthConfiguration.route, }, { - title: "OAuth2 Clients", - href: routes.project.oauthConfiguration.route, + title: "Endpoints", + href: routes.project.oauthConfiguration.endpoints.route, }, { - title: "Configuration", + title: "General", href: routes.project.oauthConfiguration.configure.route, }, { - title: "Identity integration settings", - href: routes.project.oauthConfiguration.identityIntegration.route, + title: "OpenID Connect", + href: routes.project.oauthConfiguration.openid.route, + }, + { + title: "URLs", + href: routes.project.oauthConfiguration.urls.route, + }, + { + title: "Lifespans", + href: routes.project.oauthConfiguration.lifespans.route, + }, + { + title: "Token strategies", + href: routes.project.oauthConfiguration.strategies.route, + }, + { + title: "Cookies", + href: routes.project.oauthConfiguration.cookies.route, }, ] @@ -217,7 +243,7 @@ export const projectPaths: RootPath[] = [ }, { title: "OAuth 2", - href: routes.project.oauthConfiguration.overview.route, + href: routes.project.oauthConfiguration.route, paths: oauthPaths, }, { diff --git a/src/components/ConsoleLink/console-routes.ts b/src/components/ConsoleLink/console-routes.ts index 78b523cb9d..9e4871a02c 100644 --- a/src/components/ConsoleLink/console-routes.ts +++ b/src/components/ConsoleLink/console-routes.ts @@ -1,23 +1,23 @@ export const routes = { default: { - homepage: "https://ory.sh/", - pricing: "https://ory.sh/pricing", + homepage: "https://ory.com/", + pricing: "https://ory.com/pricing", console: "https://console.ory.sh/", - tos: "https://ory.sh/ptos", - privacy: "https://ory.sh/privacy", - docs: "https://ory.sh/docs", + tos: "https://ory.com/ptos", + privacy: "https://ory.com/privacy", + docs: "https://ory.com/docs", videos: "https://www.youtube.com/c/ORYAcadamy/videos", - status: "https://status.ory.sh/", - slack: "https://slack.ory.sh/", + status: "https://status.ory.com/", + slack: "https://slack.ory.com/", github: "https://github.com/ory", bug: "https://github.com/ory/network/issues/new", - contact: "https://www.ory.sh/contact/", + contact: "https://www.ory.com/contact/", twitter: "https://twitter.com/orycorp", - talkToUs: "https://ory.sh/talk-to-us", + talkToUs: "https://ory.com/talk-to-us", }, resources: { iso27001: - "https://www.ory.sh/resources/iso27001/OryCorp-ISO27001-Certificate-of-Registration.pdf", + "https://www.ory.com/resources/iso27001/OryCorp-ISO27001-Certificate-of-Registration.pdf", }, root: "/", "404": "/404", @@ -26,6 +26,7 @@ export const routes = { support: "/support", account: { login: "/login", + consent: "/oauth2/consent", recovery: "/recovery", verification: "/verification", register: "/registration", @@ -36,7 +37,6 @@ export const routes = { onboard: "/get-started", }, invites: "/invites", - guides: "/guides", project: { activity: { route: "/projects/[project]/activity", @@ -57,10 +57,6 @@ export const routes = { route: "/projects/[project]/developers/actions", href: (project: string) => `/projects/${project}/developers/actions`, }, - guides: { - route: "/projects/[project]/developers/guides", - href: (project: string) => `/projects/${project}/developers/guides`, - }, }, list: "/projects", create: "/projects/create", @@ -98,12 +94,21 @@ export const routes = { href: (project: string) => `/projects/${project}/mfa`, }, recovery: { - route: "/projects/[project]/recovery", - href: (project: string) => `/projects/${project}/recovery`, + route: "/projects/[project]/authentication/recovery", + href: (project: string) => `/projects/${project}/authentication/recovery`, }, verification: { - route: "/projects/[project]/verification", - href: (project: string) => `/projects/${project}/verification`, + route: "/projects/[project]/authentication/verification", + href: (project: string) => + `/projects/${project}/authentication/verification`, + }, + smsConfiguration: { + route: "/projects/[project]/sms-configuration", + href: (project: string) => `/projects/${project}/sms-configuration`, + }, + limits: { + route: "/projects/[project]/limits", + href: (project: string) => `/projects/${project}/limits`, }, emailConfiguration: { route: "/projects/[project]/email-configuration", @@ -113,10 +118,6 @@ export const routes = { route: "/projects/[project]/email-templates", href: (project: string) => `/projects/${project}/email-templates`, }, - smsConfiguration: { - route: "/projects/[project]/sms-configuration", - href: (project: string) => `/projects/${project}/sms-configuration`, - }, sessionSettings: { route: "/projects/[project]/session-settings", href: (project: string) => `/projects/${project}/session-settings`, @@ -172,30 +173,45 @@ export const routes = { `/projects/${project}/social-signin/${providerId}`, }, }, + saml: { + route: "/projects/[project]/saml", + href: (project: string) => `/projects/${project}/saml`, + configureProvider: { + route: "/projects/[project]/saml/[provider]", + href: (project: string, providerId: string) => + `/projects/${project}/saml/${providerId}`, + }, + }, oauthConfiguration: { route: "/projects/[project]/oauth", href: (project: string) => `/projects/${project}/oauth`, - edit: { - route: "/projects/[project]/oauth/[client]", - href: (project: string, client: string) => - `/projects/${project}/oauth/${client}`, - }, - create: { - route: "/projects/[project]/oauth/create", - href: (project: string) => `/projects/${project}/oauth/create`, - }, - overview: { - route: "/projects/[project]/oauth/overview", - href: (project: string) => `/projects/${project}/oauth/overview`, + endpoints: { + route: "/projects/[project]/oauth/endpoints", + href: (project: string) => `/projects/${project}/oauth/endpoints`, }, configure: { route: "/projects/[project]/oauth/configure", href: (project: string) => `/projects/${project}/oauth/configure`, }, - identityIntegration: { - route: "/projects/[project]/oauth/identity-integration-settings", - href: (project: string) => - `/projects/${project}/oauth/identity-integration-settings`, + openid: { + route: "/projects/[project]/oauth/openid", + href: (project: string) => `/projects/${project}/oauth/openid`, + }, + urls: { + route: "/projects/[project]/oauth/urls", + href: (project: string) => `/projects/${project}/oauth/urls`, + }, + lifespans: { + route: "/projects/[project]/oauth/lifespans", + href: (project: string) => `/projects/${project}/oauth/lifespans`, + }, + strategies: { + route: "/projects/[project]/oauth/strategies", + href: (project: string) => `/projects/${project}/oauth/strategies`, + }, + cookies: { + route: "/projects/[project]/oauth/cookies", + href: (project: string) => `/projects/${project}/oauth/cookies`, }, }, courierMessages: { @@ -214,6 +230,21 @@ export const routes = { route: "/projects/[project]/account-experience/theming", href: (project: string) => `/projects/${project}/account-experience/theming`, + customize: { + route: "/projects/[project]/account-experience/theming/customize", + href: (project: string) => + `/projects/${project}/account-experience/theming/customize`, + }, + }, + locales: { + route: "/projects/[project]/account-experience/locales", + href: (project: string) => + `/projects/${project}/account-experience/locales`, + edit: { + route: "/projects/[project]/account-experience/locales/[locale]", + href: (project: string, locale: string) => + `/projects/${project}/account-experience/locales/${locale}`, + }, }, }, authentication: { @@ -261,16 +292,16 @@ export const routes = { href: (workspace: string) => `/workspaces/${workspace}/settings/members`, }, - apiKeys: { - route: "/workspaces/[workspace]/settings/api-keys", - href: (workspace: string) => - `/workspaces/${workspace}/settings/api-keys`, - }, subscription: { route: "/workspaces/[workspace]/settings/subscription", href: (workspace: string) => `/workspaces/${workspace}/settings/subscription`, }, + apiKeys: { + route: "/workspaces/[workspace]/settings/api-keys", + href: (workspace: string) => + `/workspaces/${workspace}/settings/api-keys`, + }, billing: { route: "/workspaces/[workspace]/settings/billing", href: (workspace: string) => diff --git a/src/components/Examples/example-list.module.css b/src/components/Examples/example-list.module.css index 72411eea30..d65c638732 100644 --- a/src/components/Examples/example-list.module.css +++ b/src/components/Examples/example-list.module.css @@ -51,6 +51,7 @@ cursor: pointer; border-radius: 4px; transition: all 0.2s ease; + font-size: 0.8rem; } .cardbutton:hover { diff --git a/src/components/Examples/example-list.tsx b/src/components/Examples/example-list.tsx index 7dbb4d7c35..043b262f0b 100644 --- a/src/components/Examples/example-list.tsx +++ b/src/components/Examples/example-list.tsx @@ -1,10 +1,11 @@ import React from "react" import styles from "./example-list.module.css" +import Link from "@docusaurus/Link" export interface PropTypes { - id - title? - description? + id: string + title?: string + description?: string examples: Array } @@ -44,11 +45,7 @@ const ExampleCard = ({
- + {docs && ( - + )}
diff --git a/src/components/Install/MacOS.tsx b/src/components/Install/MacOS.tsx index c4d867bcab..e7c6bceb16 100644 --- a/src/components/Install/MacOS.tsx +++ b/src/components/Install/MacOS.tsx @@ -1,15 +1,19 @@ import React from "react" import CodeBlock from "@theme/CodeBlock" -export default function MacOS(props: { repo: string; name: string }) { - const { repo, name } = props +export default function MacOS(props: { + repo: string + name: string + command: string +}) { + const { repo, name, command } = props return ( <>

Install {name} using homebrew on macOS:

{`brew install ory/tap/${repo} -${repo} help`} +${command} help`} ) } diff --git a/src/components/ListChangelogs/ListChangelogs.jsx b/src/components/ListChangelogs/ListChangelogs.jsx new file mode 100644 index 0000000000..32bcbdb850 --- /dev/null +++ b/src/components/ListChangelogs/ListChangelogs.jsx @@ -0,0 +1,129 @@ +import React from "react" +import Heading from "@theme/Heading" + +const contexts = { + keto: require.context( + "../../../docs/self-hosted/oel/keto/changelog", + false, + /\.md$/, + ), + kratos: require.context( + "../../../docs/self-hosted/oel/kratos/changelog", + false, + /\.md$/, + ), + oathkeeper: require.context( + "../../../docs/self-hosted/oel/oathkeeper/changelog", + false, + /\.md$/, + ), + oauth2: require.context( + "../../../docs/self-hosted/oel/oauth2/changelog", + false, + /\.md$/, + ), + polis: require.context( + "../../../docs/self-hosted/oel/polis/changelog", + false, + /\.md$/, + ), +} + +const rawContexts = { + keto: require.context( + "!!raw-loader!../../../docs/self-hosted/oel/keto/changelog", + false, + /\.md$/, + ), + kratos: require.context( + "!!raw-loader!../../../docs/self-hosted/oel/kratos/changelog", + false, + /\.md$/, + ), + oathkeeper: require.context( + "!!raw-loader!../../../docs/self-hosted/oel/oathkeeper/changelog", + false, + /\.md$/, + ), + oauth2: require.context( + "!!raw-loader!../../../docs/self-hosted/oel/oauth2/changelog", + false, + /\.md$/, + ), + polis: require.context( + "!!raw-loader!../../../docs/self-hosted/oel/polis/changelog", + false, + /\.md$/, + ), +} + +function baseFromPath(p) { + // "./v1.3.2.md" -> "v1.3.2" ; "./CHANGELOG_2.0.md" -> "CHANGELOG_2.0" + return p.replace("./", "").replace(/\.md$/, "") +} + +function extractVersion(name) { + // Find a version-like pattern (e.g., 1.2.3). If none, return the whole basename. + const m = name.match(/\d+(?:\.\d+)*/) + return m ? m[0] : name +} + +function compareSemverDesc(a, b) { + const va = extractVersion(baseFromPath(a)) + const vb = extractVersion(baseFromPath(b)) + + const pa = va.split(".").map((n) => parseInt(n, 10) || 0) + const pb = vb.split(".").map((n) => parseInt(n, 10) || 0) + + for (let i = 0; i < Math.max(pa.length, pb.length); i++) { + const da = pa[i] ?? 0 + const db = pb[i] ?? 0 + if (da !== db) return db - da // descending + } + + // Fallback to basename descending if versions equal or missing + const ba = baseFromPath(a) + const bb = baseFromPath(b) + if (ba < bb) return 1 + if (ba > bb) return -1 + return 0 +} + +export default function ListChangelogs({ dir }) { + const ctx = contexts[dir] + const rawCtx = rawContexts[dir] + if (!ctx) return

No changelogs for "{dir}"

+ + const keys = ctx.keys().sort(compareSemverDesc) + const Components = keys.map((k) => ctx(k).default) + const raws = rawCtx + ? keys.map((k) => { + const mod = rawCtx(k) + return typeof mod === "string" ? mod : mod.default + }) + : keys.map(() => "") + + return ( + <> + {Components.map((Comp, i) => { + const basename = baseFromPath(keys[i]) + const version = extractVersion(basename) + const raw = raws[i] || "" + const isNoChanges = /no changelog entries found/i.test(raw.trim()) + return ( +
+ {isNoChanges ? ( + <> + {version} +

No changes requiring a changelog in the {version}.

+ + ) : ( + + )} +
+
+ ) + })} + + ) +} diff --git a/src/components/WelcomeCard/welcome-card.tsx b/src/components/WelcomeCard/welcome-card.tsx index d5106d0419..1424d25f52 100644 --- a/src/components/WelcomeCard/welcome-card.tsx +++ b/src/components/WelcomeCard/welcome-card.tsx @@ -9,6 +9,7 @@ export interface CardItem { description?: string language?: string languageLogoAlt?: string + logoUrl?: string author?: string tested?: boolean repo?: string @@ -22,6 +23,7 @@ export const Card: React.FC = ({ description, language, languageLogoAlt, + logoUrl, author, tested, repo, @@ -32,7 +34,7 @@ export const Card: React.FC = ({ const link = docs || repo || "" // Generate language logo path based on language prop - const logoPath = language ? `/docs/img/examples/${language}.svg` : null + const logoPath = language ? `/docs/img/examples/${language}.svg` : logoUrl const cardContent = (
diff --git a/src/css/theme.css b/src/css/theme.css index ad9cdee6d4..68c5b9a3c7 100644 --- a/src/css/theme.css +++ b/src/css/theme.css @@ -61,7 +61,6 @@ svg[class*="iconExternalLink"] { background-color: rgba(255, 0, 0, 0.2); margin: 0 -12px; padding: 0 12px; - display: block; text-decoration: line-through; } @@ -69,7 +68,6 @@ svg[class*="iconExternalLink"] { background-color: rgba(0, 255, 0, 0.2); margin: 0 -12px; padding: 0 12px; - display: block; } @media (max-width: 996px) { @@ -103,6 +101,24 @@ svg[class*="iconExternalLink"] { transform: translateX(-4px); } +.menu__list-item.external-link a:after { + content: ""; + mask: url('data:image/svg+xml,') + no-repeat 100% 100%; + display: flex; + height: 20px; + width: 20px; + mask-size: cover; + background-color: #2c3e50; + margin-left: auto; + margin-right: 8px; + transition: transform 0.2s; +} + +.menu__list-item.external-link a:hover:after { + transform: translateX(4px); +} + .theme-doc-sidebar-item-link, .theme-doc-sidebar-item-category-level-2 { font-size: 14px; @@ -147,3 +163,19 @@ svg[class*="iconExternalLink"] { .config-editor p { margin: unset; } + +.footer__link-item:hover { + color: unset; +} +.footer__link-item button { + background-color: transparent; + border: none; + color: inherit; + cursor: pointer; + font: inherit; + padding: 0; +} + +.footer__link-item button:hover { + text-decoration: underline; +} diff --git a/src/navbar.ts b/src/navbar.ts index 2deb1ee361..c79eed81e1 100644 --- a/src/navbar.ts +++ b/src/navbar.ts @@ -6,7 +6,7 @@ export const navbar: Navbar = { alt: "Ory", src: `/docs/img/logos/logo-docs-2023-02-15.svg`, srcDark: `/docs/img/logos/logo-docs-dark-2023-02-15.svg`, - href: `https://www.ory.sh`, + href: `https://www.ory.com`, width: 63, height: 32, }, @@ -44,6 +44,10 @@ export const navbar: Navbar = { to: "/docs/self-hosted/oel", label: "Ory Enterprise License", }, + { + to: "/docs/elements", + label: "Ory Elements", + }, ], }, { @@ -82,6 +86,10 @@ export const navbar: Navbar = { to: "/docs/sdk", label: "Ory SDKs", }, + { + to: "/docs/category/operations-reference", + label: "Operations", + }, ], }, { @@ -94,15 +102,15 @@ export const navbar: Navbar = { position: "right", items: [ { - to: "https://www.ory.sh/support", + to: "https://www.ory.com/support", label: "Enterprise Support", }, { - to: "https://www.ory.sh/docs/search", + to: "https://www.ory.com/docs/search", label: "Search the docs", }, { - to: "https://www.ory.sh/chat", + to: "https://www.ory.com/chat", label: "Ory Community Slack", }, { @@ -114,7 +122,7 @@ export const navbar: Navbar = { label: "Stack Overflow", }, { - to: "https://www.ory.sh/contact", + to: "https://www.ory.com/contact", label: "Schedule a discovery call", }, ], diff --git a/src/pages/_assets/examples-content.tsx b/src/pages/_assets/examples-content.tsx index cfe671f399..0221f06e8f 100644 --- a/src/pages/_assets/examples-content.tsx +++ b/src/pages/_assets/examples-content.tsx @@ -13,7 +13,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/nextjs", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/nextjs", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/nextjs", }, { title: "Protect a page with login: React", @@ -22,7 +22,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/react", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/react", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/react", }, { title: "Protect a Page with Login: React Native", @@ -31,7 +31,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/kratos-selfservice-ui-react-native", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/react-native", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/react-native", }, { title: "Protect a page with login: Express.js", @@ -40,7 +40,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/expressjs", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/expressjs", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/expressjs", }, { title: "Protect a page with login: Go", @@ -49,7 +49,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/go", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/go", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/go", }, { title: "Protect a page with login: PHP", @@ -58,7 +58,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/php", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/php", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/php", }, { title: "Protect a page with login: Vue.js", @@ -67,7 +67,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/vue", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/vue", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/vue", }, { title: "Protect a page with login: Flutter", @@ -76,7 +76,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/flutter_web_redirect", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/flutter-web-redirect", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/flutter-web-redirect", }, { title: "Protect a page with login: Django", @@ -94,7 +94,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/examples/tree/master/kratos-keto-flask", - docs: "https://www.ory.sh/securing-flask-application-using-kratos-and-keto/", + docs: "https://www.ory.com/securing-flask-application-using-kratos-and-keto/", }, { title: "Protect a page with login: .NET Core", @@ -103,7 +103,7 @@ export const basic: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/docs/tree/master/code-examples/protect-page-login/dotnet", - docs: "https://www.ory.sh/docs/getting-started/integrate-auth/dotnet", + docs: "https://www.ory.com/docs/getting-started/integrate-auth/dotnet", }, { title: "Protect a page with login: ASP.NET Core", @@ -140,7 +140,7 @@ export const customui: PropTypes = { author: "ory", tested: true, repo: "https://github.com/ory/kratos-nextjs-react-example", - docs: "https://www.ory.sh/nextjs-authentication-spa-custom-flows-open-source/", + docs: "https://www.ory.com/nextjs-authentication-spa-custom-flows-open-source/", }, { title: "Customize self-service UI: React Native", @@ -149,7 +149,7 @@ export const customui: PropTypes = { author: "ory", tested: false, repo: "https://github.com/ory/kratos-selfservice-ui-react-native", - docs: "https://www.ory.sh/login-react-native-authentication-example-api/", + docs: "https://www.ory.com/login-react-native-authentication-example-api/", }, ], } @@ -167,7 +167,7 @@ export const community: PropTypes = { author: "IGLU-Agency", tested: false, repo: "https://github.com/IGLU-Agency/iglu-ory-kratos-example", - docs: "https://www.ory.sh/login-flutter-authentication-example-api-open-source/", + docs: "https://www.ory.com/login-flutter-authentication-example-api-open-source/", }, { title: "Protect a page with login: Quarkus", diff --git a/src/pages/_assets/project-overview-graph.tsx b/src/pages/_assets/project-overview-graph.tsx new file mode 100644 index 0000000000..f39615b5f5 --- /dev/null +++ b/src/pages/_assets/project-overview-graph.tsx @@ -0,0 +1,293 @@ +import Mermaid from "@site/src/theme/Mermaid" +import { useState } from "react" + +// Types +type ComponentKey = + | "kratos" + | "hydra" + | "keto" + | "polis" + | "oathkeeper" + | "elements" + +interface ComponentConfig { + key: ComponentKey + label: string + logoUrl: string + description: string +} + +interface ChartNode { + id: string + config: string + condition?: (components: ComponentKey[]) => boolean +} + +interface ChartConnection { + from: string + to: string + label?: string + condition?: (components: ComponentKey[]) => boolean +} + +// Configuration +const COMPONENT_CONFIGS: ComponentConfig[] = [ + { + key: "kratos", + label: "Identity Management", + logoUrl: + "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-kratos.svg", + description: "Identity Management", + }, + { + key: "hydra", + label: "OAuth2 & OpenID Connect Server", + logoUrl: + "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-hydra.svg", + description: "OAuth2 & OpenID Connect Server", + }, + { + key: "keto", + label: "Permissions", + logoUrl: + "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-keto.svg", + description: "Permissions", + }, + { + key: "polis", + label: "Enterprise SSO bridge / SAML support", + logoUrl: + "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-polis.svg", + description: "Enterprise SSO bridge", + }, + { + key: "oathkeeper", + label: "Identity and Access Proxy IAP", + logoUrl: + "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-oathkeeper.svg", + description: "Identity and Access Proxy IAP", + }, + { + key: "elements", + label: "Pre-built UI", + logoUrl: + "https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-elements.svg", + description: "Ory Elements", + }, +] + +const COMPONENT_KEYS: ComponentKey[] = COMPONENT_CONFIGS.map( + (config) => config.key, +) + +const LABELS: Record = Object.fromEntries( + COMPONENT_CONFIGS.map((config) => [config.key, config.label]), +) as Record + +// Chart configuration +const CHART_NODES: ChartNode[] = [ + { id: "User", config: '@{ icon: "tabler:user" }' }, + { id: "Devices", config: '@{ icon: "tabler:devices"}' }, + { + id: "Kratos", + config: + '@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-kratos.svg", pos: "b", w: 120, constraint: "on", label: "Identity Management" }', + }, + { + id: "Hydra", + config: + '@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-hydra.svg", pos: "b", w: 120, constraint: "on", label: "OAuth2 & OpenID Connect Server" }', + condition: (components) => components.includes("hydra"), + }, + { + id: "Keto", + config: + '@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-keto.svg", pos: "b", w: 120, constraint: "on", label: "Permissions" }', + condition: (components) => components.includes("keto"), + }, + { + id: "Polis", + config: + '@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-polis.svg", pos: "b", w: 120, constraint: "on", label: "Enterprise SSO bridge" }', + condition: (components) => components.includes("polis"), + }, + { + id: "Oathkeeper", + config: + '@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-oathkeeper.svg", pos: "b", w: 120, constraint: "on", label: "Identity and Access Proxy IAP" }', + condition: (components) => components.includes("oathkeeper"), + }, + { + id: "API", + config: + '@{ icon: "tabler:code", label: "API Endpoint 1
API Endpoint 2" }', + }, + { + id: "Elements", + config: + '@{ img: "https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-elements.svg", pos: "b", w: 120, constraint: "on", label: "Ory Elements" }', + condition: (components) => components.includes("elements"), + }, +] + +const CHART_CONNECTIONS: ChartConnection[] = [ + { from: "User", to: "Devices" }, + { + from: "Devices", + to: "Oathkeeper", + condition: (components) => components.includes("oathkeeper"), + }, + { + from: "Oathkeeper", + to: "API", + label: "protects", + condition: (components) => components.includes("oathkeeper"), + }, + { + from: "Oathkeeper", + to: "Hydra", + label: "authenticates credentials with", + condition: (components) => + components.includes("hydra") && components.includes("oathkeeper"), + }, + { + from: "User", + to: "Kratos", + label: "Registers, log in,
manages profile via API", + }, + { + from: "User", + to: "Elements", + label: "Registers, log in,
manages profile via prebuilt UI", + condition: (components) => components.includes("elements"), + }, + { + from: "Elements", + to: "Kratos", + condition: (components) => components.includes("elements"), + }, + { + from: "Elements", + to: "Hydra", + condition: (components) => + components.includes("elements") && components.includes("hydra"), + }, + { + from: "Oathkeeper", + to: "Kratos", + label: "checks session with", + condition: (components) => components.includes("oathkeeper"), + }, + { + from: "Oathkeeper", + to: "Keto", + label: "checks permissions with", + condition: (components) => + components.includes("keto") && components.includes("oathkeeper"), + }, + { + from: "yourCode", + to: "Keto", + label: "Checks permissions with", + condition: (components) => + components.includes("keto") && !components.includes("oathkeeper"), + }, + { + from: "Devices", + to: "yourCode", + condition: (components) => !components.includes("oathkeeper"), + }, + { + from: "Kratos", + to: "Polis", + label: "OIDC", + condition: (components) => components.includes("polis"), + }, + { + from: "yourCode", + to: "Hydra", + label: "OAuth2", + condition: (components) => + !components.includes("oathkeeper") && + !components.includes("elements") && + components.includes("hydra"), + }, + { + from: "yourCode", + to: "Kratos", + label: "Checks session with", + condition: (components) => !components.includes("oathkeeper"), + }, +] + +// Helper functions +function generateChartNodes(components: ComponentKey[]): string { + return CHART_NODES.filter( + (node) => !node.condition || node.condition(components), + ) + .map((node) => `${node.id}${node.config}`) + .join("\n") +} + +function generateChartConnections(components: ComponentKey[]): string { + return CHART_CONNECTIONS.filter( + (connection) => !connection.condition || connection.condition(components), + ) + .map((connection) => { + const label = connection.label ? `|${connection.label}|` : "" + return `${connection.from} -->${label} ${connection.to}` + }) + .join("\n") +} + +function generateMermaidChart(components: ComponentKey[]): string { + const nodes = generateChartNodes(components) + const connections = generateChartConnections(components) + + return `graph LR + +${nodes} + +subgraph yourCode[Your Code] + API@{ icon: "tabler:code", label: "API Endpoint 1
API Endpoint 2" } + ${components.includes("elements") ? `Elements@{ img: "https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-elements.svg", pos: "b", w: 120, constraint: "on", label: "Ory Elements" }` : ""} +end + +${connections} +` +} + +// Component +export function ProjectOverviewGraph() { + const [components, setComponents] = useState(COMPONENT_KEYS) + + const toggleComponent = (component: ComponentKey) => () => { + setComponents((prev) => + prev.includes(component) + ? prev.filter((c) => c !== component) + : [...prev, component], + ) + } + + const chart = generateMermaidChart(components) + + return ( +
+ I need: +
+ {COMPONENT_KEYS.map((component) => ( +
+ + +
+ ))} + +
+ ) +} diff --git a/src/pages/_assets/ui-graphs.tsx b/src/pages/_assets/ui-graphs.tsx new file mode 100644 index 0000000000..2dcf8aebf3 --- /dev/null +++ b/src/pages/_assets/ui-graphs.tsx @@ -0,0 +1,77 @@ +export const elementsArchitectureGraph = `flowchart LR + subgraph ory[Ory Network] + kratos@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-kratos.svg", pos: "b", w: 120, constraint: "on", label: "Identity Management" } + hydra@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-hydra.svg", pos: "b", w: 120, constraint: "on", label: "OAuth2 & OpenID Connect Server" } + keto@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-keto.svg", pos: "b", w: 120, constraint: "on", label: "Permissions" } + polis@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-polis.svg", pos: "b", w: 120, constraint: "on", label: "Enterprise SSO bridge" } + end + subgraph app[Your Application] + subgraph nextjs[Next.js] + n@{ img: "/docs/img/examples/nextjs.svg", pos: "b", constraint: "on", h: 44, label: "Next.js" } + n-->|Uses|react + react@{ img: "/docs/img/examples/react.svg", pos: "b", constraint: "on", h: 44, label: "React" } + elements@{ img: "https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-elements.svg", pos: "b", w: 120, constraint: "on", label: "Ory Elements" } + react-->|Renders|elements + end + subgraph yourCode[Your Code] + otherCode@{ shape: braces, label: "Your other code" } + components@{ shape: braces, label: "Custom Components" } + end + + elements-.->|Fetches UI description & updates flow states|kratos + elements-.->|Fetches & Accepts OAuth2 consent|hydra + + react-->otherCode + end + otherCode-->|Checks session|kratos + + elements-.->|Renders|components +` + +export const axArchitectureGraph = `flowchart LR + subgraph ory[Ory Network] + kratos@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-kratos.svg", pos: "b", w: 120, constraint: "on", label: "Identity Management" } + hydra@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-hydra.svg", pos: "b", w: 120, constraint: "on", label: "OAuth2 & OpenID Connect Server" } + keto@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-keto.svg", pos: "b", w: 120, constraint: "on", label: "Permissions" } + polis@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-polis.svg", pos: "b", w: 120, constraint: "on", label: "Enterprise SSO bridge" } + subgraph ax[Ory Account Experience] + elements@{ img: "https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-elements.svg", pos: "b", w: 120, constraint: "on", label: "Ory Elements" } + end + + ax-.->|Fetches UI description|kratos + ax-.->|Fetches & Accepts OAuth2 consent|hydra + elements-.->|Updates flow states|kratos + end + subgraph app[Your Application] + yourCode@{ shape: braces, label: "Your code" } + end + app-->|Checks session|kratos + app-->|Redirects to|ax + ax-.->|Redirects to|app +` + +export const customArchitectureGraph = `flowchart LR + subgraph ory[Ory Network] + kratos@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-kratos.svg", pos: "b", w: 120, constraint: "on", label: "Identity Management" } + hydra@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-hydra.svg", pos: "b", w: 120, constraint: "on", label: "OAuth2 & OpenID Connect Server" } + keto@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-keto.svg", pos: "b", w: 120, constraint: "on", label: "Permissions" } + polis@{ img: "https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-polis.svg", pos: "b", w: 120, constraint: "on", label: "Enterprise SSO bridge" } + + end + subgraph app[Your Application] + direction TB + yourCode@{ shape: braces, label: "Your code" } + + render-->|Fetches UI description|kratos + render-->|Fetches consent challenge|hydra + yourCode-->render + render[[Renders your UI components]] + render-->|Prompts for passkeys, passwords, or other credentials|formValidation + formValidation[[Validates form data]] + formValidation-->submit + submit[[Submits data to Ory]] + submit-->|Updates flow states|kratos + submit-->|Accepts OAuth2 consent|hydra + end + yourCode-->|Checks session|kratos +` diff --git a/src/pages/_assets/welcome-content.tsx b/src/pages/_assets/welcome-content.tsx index 0511428686..e2ca898cf8 100644 --- a/src/pages/_assets/welcome-content.tsx +++ b/src/pages/_assets/welcome-content.tsx @@ -187,7 +187,7 @@ export const frontendFrameworks: { "Integrate authentication into your Next.js application with Ory", language: "nextjs", languageLogoAlt: "Next.js logo", - docs: "/docs/getting-started/integrate-auth/nextjs", + docs: "/docs/getting-started/integrate-auth/nextjs-app-router-quickstart", }, { title: "Vue.js integration", @@ -233,7 +233,7 @@ export const backendFrameworks: { "Integrate Ory authentication and permissions with your Python application", language: "python", languageLogoAlt: "Python logo", - docs: "https://www.ory.sh/blog/securing-flask-application-using-kratos-and-keto", + docs: "https://www.ory.com/blog/securing-flask-application-using-kratos-and-keto", }, ], } @@ -266,3 +266,57 @@ export const deploymentOptions: { }, ], } + +export const elements: { + id: string + title: string + description: string + cards: CardItem[] +} = { + id: "elements", + title: "Ory Elements Quickstart", + description: "Quickly add authentication to your app with Ory Elements", + cards: [ + { + title: "Next.js (App Router)", + description: + "Learn how to use Ory Elements in your Next.js application with the App Router.", + logoUrl: "/docs/img/examples/nextjs.svg", + docs: "/docs/getting-started/integrate-auth/nextjs-app-router-quickstart", + }, + { + title: "Next.js (Pages Router)", + description: + "Learn how to use Ory Elements in your Next.js application with the Pages Router.", + logoUrl: "/docs/img/examples/nextjs.svg", + docs: "/docs/getting-started/integrate-auth/nextjs-pages-router-quickstart", + }, + ], +} + +export const elementsGuides: { + id: string + title: string + description: string + cards: CardItem[] +} = { + id: "elements", + title: "Ory Elements Guides", + description: "", + cards: [ + { + title: "Next.js (App Router)", + description: + "Learn how to use Ory Elements in your Next.js application with the App Router.", + logoUrl: "/docs/img/examples/nextjs.svg", + docs: "/docs/getting-started/integrate-auth/nextjs-app-router-quickstart", + }, + { + title: "Next.js (Pages Router)", + description: + "Learn how to use Ory Elements in your Next.js application with the Pages Router.", + logoUrl: "/docs/img/examples/nextjs.svg", + docs: "/docs/getting-started/integrate-auth/nextjs-pages-router-quickstart", + }, + ], +} diff --git a/src/plugins/docusaurus-polyfill/index.js b/src/plugins/docusaurus-polyfill/index.js index 0ef3af76f6..2d11bd28f8 100644 --- a/src/plugins/docusaurus-polyfill/index.js +++ b/src/plugins/docusaurus-polyfill/index.js @@ -9,9 +9,6 @@ module.exports = function (context, options) { configureWebpack(config, isServer, utils) { const plugins = [ new NodePolyfillPlugin(), - new webpack.DefinePlugin({ - "process.env.DEBUG": "({}).DEBUG", - }), ] return { diff --git a/src/scripts/config.js b/src/scripts/config.js index 322bd2ebad..06b1bbcc52 100644 --- a/src/scripts/config.js +++ b/src/scripts/config.js @@ -239,7 +239,7 @@ If you are looking for an example configuration, it is better to try out the qui ::: To find out more about edge cases like setting string array values through environmental variables head to the -[Configuration](https://www.ory.sh/docs/ecosystem/configuring) section. +[Configuration](https://www.ory.com/docs/ecosystem/configuring) section. \`\`\`yaml ${out.yaml} diff --git a/src/sidebar.js b/src/sidebar.js deleted file mode 100644 index b02dd69027..0000000000 --- a/src/sidebar.js +++ /dev/null @@ -1,762 +0,0 @@ -// Copyright © 2022 Ory Corp -// SPDX-License-Identifier: Apache-2.0 - -module.exports = { - docs: [ - "welcome", - { - type: "category", - label: "Quickstarts", - link: { type: "doc", id: "getting-started/overview" }, - items: [ - "getting-started/local-development", - { - type: "category", - label: "Login", - items: [ - { - type: "autogenerated", - dirName: "getting-started/integrate-auth", - }, - ], - }, - { - type: "category", - label: "OAuth2 / OpenID", - items: [ - "getting-started/ory-network-oauth2", - "getting-started/oauth2-openid/expressjs", - ], - }, - "guides/permissions/overview", - "getting-started/custom-ui", - ], - }, - { - type: "category", - label: "Identities and sessions", - items: [ - "identities/index", - "identities/native-browser", - "security-model", - { - type: "category", - label: "Sign-in and registration", - items: [ - { - type: "category", - label: "Passwordless", - items: [ - { - type: "autogenerated", - dirName: "kratos/passwordless", - }, - ], - }, - { - type: "category", - label: "Password", - items: ["kratos/concepts/credentials/username-email-password"], - }, - { - type: "category", - label: "Social sign-in", - items: [ - "kratos/social-signin/overview", - { - "Integrating providers": [ - "kratos/social-signin/generic", - "kratos/social-signin/ory", - "kratos/social-signin/google", - "kratos/social-signin/facebook", - "kratos/social-signin/microsoft", - "kratos/social-signin/github", - "kratos/social-signin/apple", - "kratos/social-signin/gitlab", - "kratos/social-signin/auth0", - "kratos/social-signin/salesforce", - "kratos/social-signin/slack", - "kratos/social-signin/spotify", - "kratos/social-signin/discord", - "kratos/social-signin/twitch", - "kratos/social-signin/netid", - "kratos/social-signin/yandex", - "kratos/social-signin/vk", - "kratos/social-signin/dingtalk", - "kratos/social-signin/lark", - "kratos/social-signin/patreon", - "kratos/social-signin/linkedin", - "kratos/social-signin/x-twitter", - ], - }, - "kratos/social-signin/get-tokens", - "identities/sign-in/social-sign-in/redirect-url", - "kratos/social-signin/data-mapping", - "kratos/social-signin/account-linking", - "kratos/social-signin/native-apps", - "kratos/social-signin/oidc-pkce", - ], - }, - "identities/sign-in/saml", - "identities/sign-in/check-session", - "identities/sign-in/actions", - "identities/sign-in/login-hint", - "identities/sign-in/two-step-registration", - ], - }, - { - type: "category", - label: "Identity model", - items: [ - "kratos/manage-identities/overview", - "kratos/manage-identities/identity-schema", - "kratos/manage-identities/managing-users-identities-metadata", - "identities/model/manage-identity-schema", - "kratos/manage-identities/customize-identity-schema", - "kratos/manage-identities/best-practices", - ], - }, - { - type: "category", - label: "Manage identities", - items: [ - "kratos/manage-identities/create-users-identities", - "kratos/manage-identities/import-user-accounts-identities", - "identities/model/identity-state", - "kratos/manage-identities/invite-users", - "kratos/manage-identities/account-recovery", - "kratos/manage-identities/export-user-accounts-identities", - ], - }, - "kratos/self-service/flows/user-logout", - "identities/session-to-jwt-cors", - "kratos/self-service/flows/verify-email-account-activation", - "kratos/self-service/flows/account-recovery-password-reset", - { - type: "category", - label: "Manage sessions", - items: [ - { - type: "autogenerated", - dirName: "kratos/session-management", - }, - ], - }, - { - type: "category", - label: "Bring your own UI", - items: [ - { - type: "autogenerated", - dirName: "kratos/bring-your-own-ui", - }, - "kratos/concepts/ui-user-interface", - ], - }, - "concepts/redirects", - { - type: "category", - label: "Multi-factor authentication (MFA)", - items: [ - { - type: "autogenerated", - dirName: "kratos/mfa", - }, - ], - }, - { - type: "category", - label: "Sending emails & SMS", - items: [ - { - type: "autogenerated", - dirName: "kratos/emails-sms", - }, - ], - }, - { - Concepts: [ - "kratos/concepts/browser-redirect-flow-completion", - { - label: "Identity Credentials", - type: "category", - items: ["kratos/concepts/credentials"], - }, - ], - }, - { - label: "Self-service user flows", - type: "category", - items: [ - "kratos/self-service", - "kratos/self-service/flows/user-registration", - "kratos/self-service/flows/user-login", - "kratos/self-service/flows/user-settings", - "kratos/self-service/flows/user-facing-errors", - ], - }, - "kratos/organizations/organizations", - ], - }, - { - type: "category", - label: "OAuth2 and OpenID Connect", - items: [ - "oauth2-oidc/index", - { - "Concepts explained": [ - "oauth2-oidc/overview/oauth2-concepts", - "oauth2-oidc/overview/oidc-concepts", - "hydra/concepts/before-oauth2", - "hydra/guides/using-oauth2", - ], - }, - "oauth2-oidc/identity-provider-integration-settings", - "oauth2-oidc/client-credentials", - "oauth2-oidc/authorization-code-flow", - "oauth2-oidc/resource-owner-password-grant", - "oauth2-oidc/refresh-token-grant", - "oauth2-oidc/jwt-access-token", - "hydra/guides/oauth2-clients", - "hydra/guides/oauth2-token-introspection", - "hydra/guides/client-token-expiration", - "oauth2-oidc/userinfo-oidc", - "oauth2-oidc/claims-scope", - "hydra/jwks", - "hydra/guides/openid", - "hydra/guides/audiences", - "hydra/guides/jwt", - "oauth2-oidc/revoke-consent", - "oauth2-oidc/skip-consent", - "oauth2-oidc/oidc-logout", - "oauth2-oidc/issuer-url", - { - "Bring your own users and UI": [ - "hydra/guides/custom-ui-oauth2", - "oauth2-oidc/custom-login-consent/flow", - "hydra/guides/logout", - ], - }, - ], - }, - { - type: "category", - label: "Permissions and relationships", - items: [ - "keto/index", - "keto/guides/simple-access-check-guide", - "keto/modeling/create-permission-model", - { - Concepts: [ - { - type: "autogenerated", - dirName: "keto/concepts", - }, - ], - }, - { - Guides: [ - "keto/guides/list-api-display-objects", - "keto/guides/expand-api-display-who-has-access", - "keto/guides/rbac", - ], - }, - { - Examples: ["keto/examples/olymp-file-sharing"], - }, - "keto/reference/ory-permission-language", - ], - }, - { - type: "category", - label: "Actions", - items: [ - "kratos/hooks/configure-hooks", - "actions/live-events", - "guides/integrate-with-ory-cloud-through-webhooks", - "actions/session", - "actions/revoke-active-sessions", - "actions/require-verified-address", - "hydra/guides/claims-at-refresh", - { - type: "category", - label: "CRM Integrations", - items: [ - "actions/integrations/mailchimp", - "actions/integrations/hubspot", - ], - }, - { - type: "category", - label: "Analytics Integrations", - items: ["actions/integrations/segment"], - }, - ], - }, - "account-experience/index", - { - type: "category", - label: "Ory Console", - items: ["console/usage-billing", "concepts/personal-access-token"], - }, - { - type: "category", - label: "Ory CLI", - items: [ - { - type: "autogenerated", - dirName: "guides/cli", - }, - { - Reference: [ - { - type: "autogenerated", - dirName: "cli", - }, - ], - }, - ], - }, - { - type: "category", - label: "Migrating to Ory", - items: [ - "migrate-to-ory/index", - "hydra/self-hosted/migrating-from-mitreid", - "migrate-to-ory/auth0", - ], - }, - { - type: "category", - label: "From dev to prod", - items: [ - "guides/custom-domains", - "guides/cors", - "guides/manage-project-via-api", - "guides/gitops", - "guides/rate-limits", - "guides/allowlist", - ], - }, - { - type: "category", - label: "Open source", - items: [ - "open-source", - "ecosystem/community", - "ecosystem/contributing", - "open-source/commitment", - "ecosystem/software-architecture-philosophy", - { - type: "category", - label: "Guidelines", - items: [ - "open-source/guidelines/rest-api-guidelines", - "kratos/guides/e2e-integration-tests", - ], - }, - ], - }, - { - type: "category", - label: "Security and compliance", - items: [ - "security-compliance/compliance-and-certifications", - "security-compliance/personal-data-location", - "ecosystem/security", - "kratos/concepts/security", - "security-compliance/token-formats", - "concepts/password-policy", - "hydra/security-architecture", - "security-compliance/gdpr", - ], - }, - { - type: "category", - label: "Troubleshooting", - items: [ - { - type: "autogenerated", - dirName: "troubleshooting", - }, - { - type: "category", - label: "OAuth2 and OpenID Connect", - items: [ - "hydra/debug", - "hydra/debug/token-endpoint-auth-method", - "hydra/debug/logout", - ], - }, - ], - }, - { - type: "category", - label: "Upgrade guides", - items: [ - { - type: "autogenerated", - dirName: "guides/upgrade", - }, - ], - }, - { - type: "link", - label: "Search", - href: "https://www.ory.sh/docs/search", - }, - ], - selfhosting: [ - "ecosystem/projects", - { - type: "category", - label: "Open source", - items: [ - "open-source", - "ecosystem/community", - "ecosystem/contributing", - "open-source/commitment", - "ecosystem/software-architecture-philosophy", - { - type: "category", - label: "Guidelines", - items: [ - "open-source/guidelines/rest-api-guidelines", - "kratos/guides/e2e-integration-tests", - ], - }, - ], - }, - { - type: "category", - label: "Ory Enterprise License (OEL)", - items: [ - "self-hosted/oel/quickstart", - { - type: "category", - label: "OAuth2 Server Ory Hydra", - items: [ - { - type: "category", - label: "Upgrade", - items: [ - "self-hosted/oel/oauth2/upgrade", - "self-hosted/oel/oauth2/changelog", - ], - }, - "self-hosted/oel/oauth2/token-prefix", - "self-hosted/oel/oauth2/migrate", - ], - }, - ], - }, - "self-hosted/deployment", - "ecosystem/configuring", - { - type: "category", - label: "Operations and SRE", - items: [ - { - type: "autogenerated", - dirName: "self-hosted/operations", - }, - ], - }, - "ecosystem/upgrading", - "ecosystem/sqa", - "ecosystem/changelog", - "ecosystem/benchmark", - { - type: "category", - label: "Ory Kratos", - items: [ - "kratos/install", - "kratos/quickstart", - "kratos/guides/docker", - "kratos/guides/deploy-kratos-example", - "kratos/guides/upgrade", - { - type: "category", - label: "Configuration", - items: [ - "kratos/configuring", - "kratos/guides/configuring-cookies", - "kratos/guides/multi-domain-cookies", - "self-hosted/kratos/configuration/password", - "kratos/self-hosted/mfa", - "kratos/guides/setting-up-cors", - "kratos/self-hosted/account-activation-email-verification", - "self-hosted/kratos/configuration/oidc", - "kratos/guides/setting-up-password-hashing-parameters", - "kratos/guides/select-cipher-algorithm", - "kratos/self-hosted/email-http", - "kratos/reference/configuration-editor", - ], - }, - { - type: "category", - label: "Guides", - items: [ - "kratos/guides/production", - "kratos/guides/multi-tenancy-multitenant", - "self-hosted/operations/scalability", - "kratos/self-hosted/mail-courier-templates", - "kratos/guides/tracing", - "kratos/guides/zero-trust-iap-proxy-identity-access-proxy", - "kratos/guides/https-tls", - "kratos/guides/hosting-own-have-i-been-pwned-api", - "kratos/guides/secret-key-rotation", - ], - }, - { - type: "category", - label: "Troubleshooting", - items: [ - { - type: "autogenerated", - dirName: "kratos/debug", - }, - ], - }, - { - type: "category", - label: "Reference", - items: [ - "kratos/reference/api", - { - "Command Line Interface (CLI)": [ - { - type: "autogenerated", - dirName: "kratos/cli", - }, - ], - }, - { - SDK: ["kratos/sdk/overview", "kratos/self-hosted/go"], - }, - "kratos/reference/configuration", - "kratos/reference/json-schema-json-paths", - "kratos/reference/html-forms", - "kratos/reference/jsonnet", - ], - }, - ], - }, - { - type: "category", - label: "Ory Hydra", - items: [ - "hydra/self-hosted/install", - "hydra/5min-tutorial", - "hydra/self-hosted/deploy-hydra-example", - "hydra/self-hosted/upgrade", - { - type: "category", - label: "Configuration", - items: [ - "hydra/reference/configuration", - "hydra/reference/configuration-editor", - "hydra/self-hosted/configure-deploy", - "hydra/self-hosted/dependencies-environment", - "hydra/self-hosted/production", - "hydra/self-hosted/hsm-support", - "self-hosted/operations/scalability", - "hydra/self-hosted/merge-multiple-db-secrets", - "hydra/self-hosted/gitlab", - "hydra/self-hosted/secrets-key-rotation", - "hydra/self-hosted/kubernetes-helm-chart", - "hydra/self-hosted/ssl-https-tls", - "self-hosted/operations/tracing", - "hydra/guides/cookies", - "hydra/guides/cors", - "self-hosted/hydra/debug/csrf", - ], - }, - { - type: "category", - label: "Reference", - items: [ - "hydra/reference/api", - { - "Command Line Interface (CLI)": [ - { - type: "autogenerated", - dirName: "hydra/cli", - }, - ], - }, - { - SDK: [ - "hydra/sdk/overview", - "hydra/self-hosted/go", - "hydra/self-hosted/js", - ], - }, - ], - }, - "ecosystem/benchmark", - "hydra/case-study", - "hydra/faq", - ], - }, - { - type: "category", - label: "Ory Keto", - items: [ - "keto/install", - "keto/quickstart", - "keto/guides/production", - "keto/guides/v0.7-migration", - "keto/guides/migrating-legacy-policies", - "keto/guides/upgrade", - { - Reference: [ - "keto/reference/rest-api", - "keto/reference/proto-api", - { - "Command Line Interface (CLI)": [ - { - type: "autogenerated", - dirName: "keto/cli", - }, - ], - }, - { - SDK: ["keto/sdk/overview", "keto/self-hosted/go"], - }, - "keto/reference/configuration", - "keto/reference/configuration-editor", - ], - }, - ], - }, - { - type: "category", - label: "Ory Oathkeeper", - items: [ - { - Introduction: ["oathkeeper/index", "oathkeeper/install"], - }, - { - "Core Concepts": [ - "oathkeeper/api-access-rules", - { - type: "category", - label: "Handlers", - items: [ - "oathkeeper/pipeline", - "oathkeeper/pipeline/authn", - "oathkeeper/pipeline/authz", - "oathkeeper/pipeline/mutator", - "oathkeeper/pipeline/error", - ], - }, - "oathkeeper/grpc-middleware", - ], - }, - { - Guides: [ - "oathkeeper/configure-deploy", - "oathkeeper/guides/proxy-websockets", - "oathkeeper/guides/traefik-proxy-integration", - "oathkeeper/guides/upgrade", - ], - }, - "oathkeeper/reference/api", - { - Reference: [ - "oathkeeper/reference/configuration", - "oathkeeper/reference/configuration-editor", - { - "Command Line Interface (CLI)": [ - { - type: "autogenerated", - dirName: "oathkeeper/cli", - }, - ], - }, - "oathkeeper/sdk", - ], - }, - ], - }, - { - type: "link", - label: "Search", - href: "https://www.ory.sh/docs/search", - }, - ], - api: [ - "api/index", - "concepts/personal-access-token", - "ecosystem/api-design", - "api/eventual-consistency", - "concepts/cache", - "reference/api", - { - type: "link", - label: "Search", - href: "https://www.ory.sh/docs/search", - }, - ], - - sdk: [ - "sdk", - { - type: "category", - label: "Examples", - items: [ - { - type: "category", - label: "Ory Identities", - items: ["kratos/sdk/go"], - }, - { - type: "category", - label: "Ory Permissions", - items: ["keto/sdk/go", "keto/sdk/python"], - }, - { - type: "category", - label: "Ory OAuth2 & OpenID", - items: ["hydra/sdk/go", "hydra/sdk/js"], - }, - { - type: "category", - label: "Self-hosted Ory", - items: [ - { - type: "category", - label: "Ory Kratos", - items: ["kratos/sdk/overview", "kratos/self-hosted/go"], - }, - { - type: "category", - label: "Ory Hydra", - items: [ - "hydra/sdk/overview", - "hydra/self-hosted/go", - "hydra/self-hosted/js", - ], - }, - { - type: "category", - label: "Ory Keto", - items: ["keto/sdk/overview", "keto/self-hosted/go"], - }, - { - type: "category", - label: "Ory Oathkeeper", - items: ["oathkeeper/sdk"], - }, - ], - }, - ], - }, - { - type: "link", - label: "Search", - href: "https://www.ory.sh/docs/search", - }, - ], -} diff --git a/src/sidebar.ts b/src/sidebar.ts index 79976f6414..e1974cb4ca 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -58,6 +58,7 @@ const oidcSSO: SidebarItemConfig = { "kratos/social-signin/linkedin", "kratos/social-signin/x-twitter", "kratos/social-signin/line", + "kratos/social-signin/amazon", ], }, "kratos/social-signin/data-mapping", @@ -91,6 +92,8 @@ const api: SidebarItemsConfig = [ "guides/rate-limits", "guides/ip-allowlist", "api/eventual-consistency", + "kratos/reference/jsonnet", + "guides/user-impersonation", ], }, ] @@ -182,17 +185,12 @@ const quickstart: SidebarItemsConfig = [ type: "doc", id: "getting-started/overview", }, + items: [ - "getting-started/integrate-auth/go", - "getting-started/integrate-auth/php", - "getting-started/integrate-auth/auth-js", - "getting-started/integrate-auth/nextjs", - "getting-started/integrate-auth/react", - "getting-started/integrate-auth/react-native", - "getting-started/integrate-auth/expressjs", - "getting-started/integrate-auth/vue", - "getting-started/integrate-auth/flutter-web-redirect", - "getting-started/integrate-auth/dotnet", + { + type: "autogenerated", + dirName: "getting-started/integrate-auth", + }, ], }, { @@ -213,7 +211,7 @@ const troubleshooting: SidebarItemsConfig = [ collapsed: false, link: { type: "generated-index", - slug: "category/troubleshooting/", + slug: "/category/troubleshooting", }, items: [ { @@ -410,6 +408,14 @@ const kratos: SidebarItemsConfig = [ }, ], }, + { + type: "category", + label: "Search", + items: [ + "kratos/manage-identities/search/identity-search-console", + "kratos/manage-identities/search/identity-search-api", + ], + }, { type: "category", label: "Identity management", @@ -435,8 +441,11 @@ const kratos: SidebarItemsConfig = [ items: [ "kratos/manage-identities/scim/ms-entra", "kratos/manage-identities/scim/okta", + "kratos/manage-identities/scim/google-workspace", ], }, + + "kratos/manage-identities/external-id", ], }, { @@ -450,6 +459,7 @@ const kratos: SidebarItemsConfig = [ "kratos/manage-identities/managing-users-identities-metadata", "identities/model/manage-identity-schema", "kratos/manage-identities/customize-identity-schema", + "identities/model/identity-schema-selection", "kratos/manage-identities/best-practices", ], }, @@ -464,6 +474,13 @@ const kratos: SidebarItemsConfig = [ items: [ "account-experience/index", "kratos/bring-your-own-ui/configure-ory-to-use-your-ui", + "kratos/bring-your-own-ui/custom-vs-built-in-ui", + { + type: "doc", + id: "elements/index", + label: "Ory Elements", + className: "external-link", + }, { type: "category", label: "Build your own UI", @@ -474,8 +491,13 @@ const kratos: SidebarItemsConfig = [ items: [ "kratos/bring-your-own-ui/custom-ui-basic-integration", "kratos/bring-your-own-ui/custom-ui-advanced-integration", - "kratos/bring-your-own-ui/custom-ui-ory-elements", "kratos/concepts/ui-user-interface", + { + type: "doc", + id: "elements/index", + label: "Ory Elements", + className: "external-link", + }, ], }, ], @@ -571,7 +593,6 @@ const kratos: SidebarItemsConfig = [ "kratos/reference/configuration", "kratos/reference/json-schema-json-paths", "kratos/reference/html-forms", - "kratos/reference/jsonnet", ], }, ], @@ -632,6 +653,7 @@ const hydra: SidebarItemsConfig = [ items: [ "oauth2-oidc/authorization-code-flow", "oauth2-oidc/client-credentials", + "oauth2-oidc/device-authorization", "oauth2-oidc/resource-owner-password-grant", "oauth2-oidc/refresh-token-grant", "oauth2-oidc/userinfo-oidc", @@ -721,22 +743,6 @@ const hydra: SidebarItemsConfig = [ items: [ "hydra/self-hosted/deploy-hydra-example", "hydra/self-hosted/upgrade", - "hydra/reference/api", - { - "Command Line Interface (CLI)": [ - { - type: "autogenerated", - dirName: "hydra/cli", - }, - ], - }, - { - SDK: [ - "hydra/sdk/overview", - "hydra/self-hosted/go", - "hydra/self-hosted/js", - ], - }, ], }, { @@ -1165,7 +1171,7 @@ const opensource: SidebarItemsConfig = [ { type: "link", label: "Search", - href: "https://www.ory.sh/docs/search", + href: "https://www.ory.com/docs/search", }, ] @@ -1183,6 +1189,7 @@ const oel: SidebarItemsConfig = [ "self-hosted/oel/oauth2/token-prefix", "self-hosted/oel/oauth2/migrate-postgresql-ttl", "self-hosted/oel/oauth2/revert-database-migrations", + "self-hosted/oel/oauth2/configuration", ], }, { @@ -1191,6 +1198,7 @@ const oel: SidebarItemsConfig = [ items: [ "self-hosted/oel/oathkeeper/upgrade-oathkeeper", "self-hosted/oel/oathkeeper/changelog", + "self-hosted/oel/oathkeeper/configuration", ], }, { @@ -1199,9 +1207,21 @@ const oel: SidebarItemsConfig = [ items: [ "self-hosted/oel/kratos/upgrade", "self-hosted/oel/kratos/changelog", + "self-hosted/oel/kratos/configuration", ], }, + { + type: "category", + label: "Ory Keto Permissions", + items: ["self-hosted/oel/keto/configuration"], + }, + { + type: "category", + label: "Ory Polis", + items: ["self-hosted/oel/polis/changelog"], + }, "self-hosted/oel/monitoring/monitoring", + "self-hosted/oel/high-performance-pooling", ] const security: SidebarItemsConfig = [ @@ -1216,6 +1236,45 @@ const security: SidebarItemsConfig = [ "security-compliance/gdpr", ] +const elements: SidebarItemsConfig = [ + homeLink, + "elements/index", + { + type: "category", + label: "Guides", + collapsible: false, + link: { + type: "generated-index", + title: "Quickstarts", + description: "Learn how to use Ory Elements in your application!", + slug: "/elements/guides", + keywords: ["guides"], + }, + items: [ + { + type: "autogenerated", + dirName: "elements/guides", + }, + ], + }, + { + type: "category", + label: "Reference", + collapsible: false, + link: { + type: "generated-index", + title: "Ory Elements Reference", + description: "Learn about the most important Ory Elements concepts!", + slug: "/elements/reference", + keywords: ["guides"], + }, + items: [ + ...require("../docs/elements/reference/typedoc-sidebar.ts").items, + "elements/css-reference", + ], + }, +] + module.exports = { quickstart, troubleshooting, @@ -1232,4 +1291,5 @@ module.exports = { sdk, cli, security, + elements, } diff --git a/src/sitemaps/sitemap_docs.xml b/src/sitemaps/sitemap_docs.xml index 6b68e5650f..ef9faab386 100644 --- a/src/sitemaps/sitemap_docs.xml +++ b/src/sitemaps/sitemap_docs.xml @@ -1 +1 @@ -https://www.ory.sh/docs/http-apiweekly0.5https://www.ory.sh/docs/searchweekly0.5https://www.ory.sh/docs/versionsweekly0.5https://www.ory.sh/docs/weekly0.5https://www.ory.sh/docs/cliweekly0.5https://www.ory.sh/docs/cli/oryweekly0.5https://www.ory.sh/docs/cli/ory-identitiesweekly0.5https://www.ory.sh/docs/cli/ory-identities-deleteweekly0.5https://www.ory.sh/docs/cli/ory-identities-getweekly0.5https://www.ory.sh/docs/cli/ory-identities-listweekly0.5https://www.ory.sh/docs/cli/ory-proxyweekly0.5https://www.ory.sh/docs/cli/ory-versionweekly0.5https://www.ory.sh/docs/cloud/cloud-roadmapweekly0.5https://www.ory.sh/docs/cloud/developerweekly0.5https://www.ory.sh/docs/concepts/emailsweekly0.5https://www.ory.sh/docs/concepts/identityweekly0.5https://www.ory.sh/docs/concepts/managed-uiweekly0.5https://www.ory.sh/docs/concepts/password-policyweekly0.5https://www.ory.sh/docs/concepts/personal-access-tokenweekly0.5https://www.ory.sh/docs/concepts/projectweekly0.5https://www.ory.sh/docs/concepts/project-invite-membershipweekly0.5https://www.ory.sh/docs/concepts/redirectsweekly0.5https://www.ory.sh/docs/concepts/self-serviceweekly0.5https://www.ory.sh/docs/concepts/services-apiweekly0.5https://www.ory.sh/docs/concepts/sessionweekly0.5https://www.ory.sh/docs/concepts/social-sign-inweekly0.5https://www.ory.sh/docs/concepts/terminologyweekly0.5https://www.ory.sh/docs/debug/smtp-courier-1weekly0.5https://www.ory.sh/docs/ecosystem/api-designweekly0.5https://www.ory.sh/docs/ecosystem/communityweekly0.5https://www.ory.sh/docs/ecosystem/configuringweekly0.5https://www.ory.sh/docs/ecosystem/contributingweekly0.5https://www.ory.sh/docs/ecosystem/deploymentweekly0.5https://www.ory.sh/docs/ecosystem/loggingweekly0.5https://www.ory.sh/docs/ecosystem/persistenceweekly0.5https://www.ory.sh/docs/ecosystem/projectsweekly0.5https://www.ory.sh/docs/ecosystem/roadmapweekly0.5https://www.ory.sh/docs/ecosystem/securityweekly0.5https://www.ory.sh/docs/ecosystem/software-architecture-philosophyweekly0.5https://www.ory.sh/docs/ecosystem/sqaweekly0.5https://www.ory.sh/docs/ecosystem/upgradingweekly0.5https://www.ory.sh/docs/ecosystem/versioningweekly0.5https://www.ory.sh/docs/get-startedweekly0.5https://www.ory.sh/docs/guides/bring-your-user-interfaceweekly0.5https://www.ory.sh/docs/guides/create-personal-access-tokenweekly0.5https://www.ory.sh/docs/guides/custom-domainsweekly0.5https://www.ory.sh/docs/guides/customize-identity-schemaweekly0.5https://www.ory.sh/docs/guides/integrate-golangweekly0.5https://www.ory.sh/docs/guides/proxyweekly0.5https://www.ory.sh/docs/open-sourceweekly0.5https://www.ory.sh/docs/reference/apiweekly0.5https://www.ory.sh/docs/sdkweekly0.5https://www.ory.sh/docs/start-buildingweekly0.5https://www.ory.sh/docs/start-building/create-projectweekly0.5https://www.ory.sh/docs/start-building/deploy-auth-productionweekly0.5https://www.ory.sh/docs/start-building/native-mobile-appweekly0.5https://www.ory.sh/docs/start-building/ory-cli-install-useweekly0.5https://www.ory.sh/docs/start-building/other-languagesweekly0.5https://www.ory.sh/docs/start-building/server-side-web-appweekly0.5https://www.ory.sh/docs/start-building/single-page-app-spaweekly0.5 \ No newline at end of file +https://www.ory.com/docs/http-apiweekly0.5https://www.ory.com/docs/searchweekly0.5https://www.ory.com/docs/versionsweekly0.5https://www.ory.com/docs/weekly0.5https://www.ory.com/docs/cliweekly0.5https://www.ory.com/docs/cli/oryweekly0.5https://www.ory.com/docs/cli/ory-identitiesweekly0.5https://www.ory.com/docs/cli/ory-identities-deleteweekly0.5https://www.ory.com/docs/cli/ory-identities-getweekly0.5https://www.ory.com/docs/cli/ory-identities-listweekly0.5https://www.ory.com/docs/cli/ory-proxyweekly0.5https://www.ory.com/docs/cli/ory-versionweekly0.5https://www.ory.com/docs/cloud/cloud-roadmapweekly0.5https://www.ory.com/docs/cloud/developerweekly0.5https://www.ory.com/docs/concepts/emailsweekly0.5https://www.ory.com/docs/concepts/identityweekly0.5https://www.ory.com/docs/concepts/managed-uiweekly0.5https://www.ory.com/docs/concepts/password-policyweekly0.5https://www.ory.com/docs/concepts/personal-access-tokenweekly0.5https://www.ory.com/docs/concepts/projectweekly0.5https://www.ory.com/docs/concepts/project-invite-membershipweekly0.5https://www.ory.com/docs/concepts/redirectsweekly0.5https://www.ory.com/docs/concepts/self-serviceweekly0.5https://www.ory.com/docs/concepts/services-apiweekly0.5https://www.ory.com/docs/concepts/sessionweekly0.5https://www.ory.com/docs/concepts/social-sign-inweekly0.5https://www.ory.com/docs/concepts/terminologyweekly0.5https://www.ory.com/docs/debug/smtp-courier-1weekly0.5https://www.ory.com/docs/ecosystem/api-designweekly0.5https://www.ory.com/docs/ecosystem/communityweekly0.5https://www.ory.com/docs/ecosystem/configuringweekly0.5https://www.ory.com/docs/ecosystem/contributingweekly0.5https://www.ory.com/docs/ecosystem/deploymentweekly0.5https://www.ory.com/docs/ecosystem/loggingweekly0.5https://www.ory.com/docs/ecosystem/persistenceweekly0.5https://www.ory.com/docs/ecosystem/projectsweekly0.5https://www.ory.com/docs/ecosystem/roadmapweekly0.5https://www.ory.com/docs/ecosystem/securityweekly0.5https://www.ory.com/docs/ecosystem/software-architecture-philosophyweekly0.5https://www.ory.com/docs/ecosystem/sqaweekly0.5https://www.ory.com/docs/ecosystem/upgradingweekly0.5https://www.ory.com/docs/ecosystem/versioningweekly0.5https://www.ory.com/docs/get-startedweekly0.5https://www.ory.com/docs/guides/bring-your-user-interfaceweekly0.5https://www.ory.com/docs/guides/create-personal-access-tokenweekly0.5https://www.ory.com/docs/guides/custom-domainsweekly0.5https://www.ory.com/docs/guides/customize-identity-schemaweekly0.5https://www.ory.com/docs/guides/integrate-golangweekly0.5https://www.ory.com/docs/guides/proxyweekly0.5https://www.ory.com/docs/open-sourceweekly0.5https://www.ory.com/docs/reference/apiweekly0.5https://www.ory.com/docs/sdkweekly0.5https://www.ory.com/docs/start-buildingweekly0.5https://www.ory.com/docs/start-building/create-projectweekly0.5https://www.ory.com/docs/start-building/deploy-auth-productionweekly0.5https://www.ory.com/docs/start-building/native-mobile-appweekly0.5https://www.ory.com/docs/start-building/ory-cli-install-useweekly0.5https://www.ory.com/docs/start-building/other-languagesweekly0.5https://www.ory.com/docs/start-building/server-side-web-appweekly0.5https://www.ory.com/docs/start-building/single-page-app-spaweekly0.5 \ No newline at end of file diff --git a/src/sitemaps/sitemap_hydra.xml b/src/sitemaps/sitemap_hydra.xml index 55927ddd94..9e79271c9c 100644 --- a/src/sitemaps/sitemap_hydra.xml +++ b/src/sitemaps/sitemap_hydra.xml @@ -1 +1 @@ -https://www.ory.sh/hydra/docs/http-apiweekly0.5https://www.ory.sh/hydra/docs/searchweekly0.5https://www.ory.sh/hydra/docs/versionsweekly0.5https://www.ory.sh/hydra/docs/next/weekly0.5https://www.ory.sh/hydra/docs/next/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/next/advancedweekly0.5https://www.ory.sh/hydra/docs/next/benchmarkweekly0.5https://www.ory.sh/hydra/docs/next/case-studyweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydraweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clientsweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clients-createweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clients-deleteweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clients-getweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clients-importweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clients-listweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-clients-updateweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-janitorweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-keysweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-keys-createweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-keys-deleteweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-keys-getweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-keys-importweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-migrateweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-migrate-sqlweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-serveweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-serve-adminweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-serve-allweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-serve-publicweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-tokenweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-token-clientweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-token-deleteweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-token-flushweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-token-introspectweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-token-revokeweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-token-userweekly0.5https://www.ory.sh/hydra/docs/next/cli/hydra-versionweekly0.5https://www.ory.sh/hydra/docs/next/concepts/before-oauth2weekly0.5https://www.ory.sh/hydra/docs/next/concepts/consentweekly0.5https://www.ory.sh/hydra/docs/next/concepts/loginweekly0.5https://www.ory.sh/hydra/docs/next/concepts/logoutweekly0.5https://www.ory.sh/hydra/docs/next/concepts/oauth2weekly0.5https://www.ory.sh/hydra/docs/next/concepts/openid-connect-oidcweekly0.5https://www.ory.sh/hydra/docs/next/configure-deployweekly0.5https://www.ory.sh/hydra/docs/next/contributingweekly0.5https://www.ory.sh/hydra/docs/next/debugweekly0.5https://www.ory.sh/hydra/docs/next/debug/configweekly0.5https://www.ory.sh/hydra/docs/next/debug/csrfweekly0.5https://www.ory.sh/hydra/docs/next/debug/logoutweekly0.5https://www.ory.sh/hydra/docs/next/debug/token-endpoint-auth-methodweekly0.5https://www.ory.sh/hydra/docs/next/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/next/faqweekly0.5https://www.ory.sh/hydra/docs/next/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.sh/hydra/docs/next/guides/consentweekly0.5https://www.ory.sh/hydra/docs/next/guides/cookiesweekly0.5https://www.ory.sh/hydra/docs/next/guides/corsweekly0.5https://www.ory.sh/hydra/docs/next/guides/gitlabweekly0.5https://www.ory.sh/hydra/docs/next/guides/hsm-supportweekly0.5https://www.ory.sh/hydra/docs/next/guides/kubernetes-helm-chartweekly0.5https://www.ory.sh/hydra/docs/next/guides/loginweekly0.5https://www.ory.sh/hydra/docs/next/guides/logoutweekly0.5https://www.ory.sh/hydra/docs/next/guides/merge-multiple-db-secretsweekly0.5https://www.ory.sh/hydra/docs/next/guides/migrating-from-mitreidweekly0.5https://www.ory.sh/hydra/docs/next/guides/oauth2-clientsweekly0.5https://www.ory.sh/hydra/docs/next/guides/oauth2-grant-type-jwt-bearerweekly0.5https://www.ory.sh/hydra/docs/next/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.sh/hydra/docs/next/guides/oauth2-token-introspectionweekly0.5https://www.ory.sh/hydra/docs/next/guides/openid-connect-dynamic-client-registrationweekly0.5https://www.ory.sh/hydra/docs/next/guides/scaling-hydraweekly0.5https://www.ory.sh/hydra/docs/next/guides/secrets-key-rotationweekly0.5https://www.ory.sh/hydra/docs/next/guides/ssl-https-tlsweekly0.5https://www.ory.sh/hydra/docs/next/guides/token-expirationweekly0.5https://www.ory.sh/hydra/docs/next/guides/tracingweekly0.5https://www.ory.sh/hydra/docs/next/guides/using-oauth2weekly0.5https://www.ory.sh/hydra/docs/next/installweekly0.5https://www.ory.sh/hydra/docs/next/jwksweekly0.5https://www.ory.sh/hydra/docs/next/limitationsweekly0.5https://www.ory.sh/hydra/docs/next/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/next/milestonesweekly0.5https://www.ory.sh/hydra/docs/next/productionweekly0.5https://www.ory.sh/hydra/docs/next/reference/apiweekly0.5https://www.ory.sh/hydra/docs/next/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/next/sdkweekly0.5https://www.ory.sh/hydra/docs/next/sdk/goweekly0.5https://www.ory.sh/hydra/docs/next/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/next/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/next/security-architectureweekly0.5https://www.ory.sh/hydra/docs/v1.4/weekly0.5https://www.ory.sh/hydra/docs/v1.4/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/v1.4/advancedweekly0.5https://www.ory.sh/hydra/docs/v1.4/benchmarkweekly0.5https://www.ory.sh/hydra/docs/v1.4/case-studyweekly0.5https://www.ory.sh/hydra/docs/v1.4/configure-deployweekly0.5https://www.ory.sh/hydra/docs/v1.4/debuggingweekly0.5https://www.ory.sh/hydra/docs/v1.4/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/v1.4/faqweekly0.5https://www.ory.sh/hydra/docs/v1.4/implementing-consentweekly0.5https://www.ory.sh/hydra/docs/v1.4/installweekly0.5https://www.ory.sh/hydra/docs/v1.4/integrationweekly0.5https://www.ory.sh/hydra/docs/v1.4/jwksweekly0.5https://www.ory.sh/hydra/docs/v1.4/limitationsweekly0.5https://www.ory.sh/hydra/docs/v1.4/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/v1.4/oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.4/productionweekly0.5https://www.ory.sh/hydra/docs/v1.4/reference/apiweekly0.5https://www.ory.sh/hydra/docs/v1.4/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/v1.4/sdk/goweekly0.5https://www.ory.sh/hydra/docs/v1.4/sdk/indexweekly0.5https://www.ory.sh/hydra/docs/v1.4/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/v1.4/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/v1.4/security-architectureweekly0.5https://www.ory.sh/hydra/docs/v1.5/weekly0.5https://www.ory.sh/hydra/docs/v1.5/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/v1.5/advancedweekly0.5https://www.ory.sh/hydra/docs/v1.5/benchmarkweekly0.5https://www.ory.sh/hydra/docs/v1.5/case-studyweekly0.5https://www.ory.sh/hydra/docs/v1.5/configure-deployweekly0.5https://www.ory.sh/hydra/docs/v1.5/debuggingweekly0.5https://www.ory.sh/hydra/docs/v1.5/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/v1.5/faqweekly0.5https://www.ory.sh/hydra/docs/v1.5/implementing-consentweekly0.5https://www.ory.sh/hydra/docs/v1.5/installweekly0.5https://www.ory.sh/hydra/docs/v1.5/integrationweekly0.5https://www.ory.sh/hydra/docs/v1.5/jwksweekly0.5https://www.ory.sh/hydra/docs/v1.5/limitationsweekly0.5https://www.ory.sh/hydra/docs/v1.5/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/v1.5/oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.5/productionweekly0.5https://www.ory.sh/hydra/docs/v1.5/reference/apiweekly0.5https://www.ory.sh/hydra/docs/v1.5/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/v1.5/sdkweekly0.5https://www.ory.sh/hydra/docs/v1.5/sdk/goweekly0.5https://www.ory.sh/hydra/docs/v1.5/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/v1.5/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/v1.5/security-architectureweekly0.5https://www.ory.sh/hydra/docs/v1.6/weekly0.5https://www.ory.sh/hydra/docs/v1.6/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/v1.6/advancedweekly0.5https://www.ory.sh/hydra/docs/v1.6/benchmarkweekly0.5https://www.ory.sh/hydra/docs/v1.6/case-studyweekly0.5https://www.ory.sh/hydra/docs/v1.6/concepts/consentweekly0.5https://www.ory.sh/hydra/docs/v1.6/concepts/loginweekly0.5https://www.ory.sh/hydra/docs/v1.6/concepts/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.6/concepts/oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.6/concepts/openid-connect-oidcweekly0.5https://www.ory.sh/hydra/docs/v1.6/configure-deployweekly0.5https://www.ory.sh/hydra/docs/v1.6/debugweekly0.5https://www.ory.sh/hydra/docs/v1.6/debug/csrfweekly0.5https://www.ory.sh/hydra/docs/v1.6/debug/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.6/debug/token-endpoint-auth-methodweekly0.5https://www.ory.sh/hydra/docs/v1.6/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/v1.6/faqweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/consentweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/cookiesweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/corsweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/kubernetes-helm-chartweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/loginweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/oauth2-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/oauth2-token-introspectionweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/scaling-hydraweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/secrets-key-rotationweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/ssl-https-tlsweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/tracingweekly0.5https://www.ory.sh/hydra/docs/v1.6/guides/using-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.6/installweekly0.5https://www.ory.sh/hydra/docs/v1.6/jwksweekly0.5https://www.ory.sh/hydra/docs/v1.6/limitationsweekly0.5https://www.ory.sh/hydra/docs/v1.6/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/v1.6/productionweekly0.5https://www.ory.sh/hydra/docs/v1.6/reference/apiweekly0.5https://www.ory.sh/hydra/docs/v1.6/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/v1.6/sdkweekly0.5https://www.ory.sh/hydra/docs/v1.6/sdk/goweekly0.5https://www.ory.sh/hydra/docs/v1.6/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/v1.6/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/v1.6/security-architectureweekly0.5https://www.ory.sh/hydra/docs/v1.7/weekly0.5https://www.ory.sh/hydra/docs/v1.7/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/v1.7/advancedweekly0.5https://www.ory.sh/hydra/docs/v1.7/benchmarkweekly0.5https://www.ory.sh/hydra/docs/v1.7/case-studyweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydraweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-createweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-getweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-importweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-listweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keysweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-createweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-getweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-importweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-migrateweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-migrate-sqlweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serveweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve-adminweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve-allweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve-publicweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-tokenweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-clientweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-flushweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-introspectweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-revokeweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-userweekly0.5https://www.ory.sh/hydra/docs/v1.7/cli/hydra-versionweekly0.5https://www.ory.sh/hydra/docs/v1.7/concepts/before-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.7/concepts/consentweekly0.5https://www.ory.sh/hydra/docs/v1.7/concepts/loginweekly0.5https://www.ory.sh/hydra/docs/v1.7/concepts/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.7/concepts/oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.7/concepts/openid-connect-oidcweekly0.5https://www.ory.sh/hydra/docs/v1.7/configure-deployweekly0.5https://www.ory.sh/hydra/docs/v1.7/contributingweekly0.5https://www.ory.sh/hydra/docs/v1.7/debugweekly0.5https://www.ory.sh/hydra/docs/v1.7/debug/csrfweekly0.5https://www.ory.sh/hydra/docs/v1.7/debug/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.7/debug/token-endpoint-auth-methodweekly0.5https://www.ory.sh/hydra/docs/v1.7/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/v1.7/faqweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/consentweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/cookiesweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/corsweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/kubernetes-helm-chartweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/loginweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/oauth2-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/oauth2-token-introspectionweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/scaling-hydraweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/secrets-key-rotationweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/ssl-https-tlsweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/token-expirationweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/tracingweekly0.5https://www.ory.sh/hydra/docs/v1.7/guides/using-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.7/installweekly0.5https://www.ory.sh/hydra/docs/v1.7/jwksweekly0.5https://www.ory.sh/hydra/docs/v1.7/limitationsweekly0.5https://www.ory.sh/hydra/docs/v1.7/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/v1.7/milestonesweekly0.5https://www.ory.sh/hydra/docs/v1.7/productionweekly0.5https://www.ory.sh/hydra/docs/v1.7/reference/apiweekly0.5https://www.ory.sh/hydra/docs/v1.7/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/v1.7/sdkweekly0.5https://www.ory.sh/hydra/docs/v1.7/sdk/goweekly0.5https://www.ory.sh/hydra/docs/v1.7/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/v1.7/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/v1.7/security-architectureweekly0.5https://www.ory.sh/hydra/docs/v1.8/weekly0.5https://www.ory.sh/hydra/docs/v1.8/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/v1.8/advancedweekly0.5https://www.ory.sh/hydra/docs/v1.8/benchmarkweekly0.5https://www.ory.sh/hydra/docs/v1.8/case-studyweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydraweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-createweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-getweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-importweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-listweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-updateweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keysweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-createweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-getweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-importweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-migrateweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-migrate-sqlweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serveweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve-adminweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve-allweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve-publicweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-tokenweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-clientweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-flushweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-introspectweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-revokeweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-userweekly0.5https://www.ory.sh/hydra/docs/v1.8/cli/hydra-versionweekly0.5https://www.ory.sh/hydra/docs/v1.8/concepts/before-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.8/concepts/consentweekly0.5https://www.ory.sh/hydra/docs/v1.8/concepts/loginweekly0.5https://www.ory.sh/hydra/docs/v1.8/concepts/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.8/concepts/oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.8/concepts/openid-connect-oidcweekly0.5https://www.ory.sh/hydra/docs/v1.8/configure-deployweekly0.5https://www.ory.sh/hydra/docs/v1.8/contributingweekly0.5https://www.ory.sh/hydra/docs/v1.8/debugweekly0.5https://www.ory.sh/hydra/docs/v1.8/debug/csrfweekly0.5https://www.ory.sh/hydra/docs/v1.8/debug/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.8/debug/token-endpoint-auth-methodweekly0.5https://www.ory.sh/hydra/docs/v1.8/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/v1.8/faqweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/consentweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/cookiesweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/corsweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/gitlabweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/kubernetes-helm-chartweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/loginweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/oauth2-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/oauth2-token-introspectionweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/scaling-hydraweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/secrets-key-rotationweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/ssl-https-tlsweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/token-expirationweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/tracingweekly0.5https://www.ory.sh/hydra/docs/v1.8/guides/using-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.8/installweekly0.5https://www.ory.sh/hydra/docs/v1.8/jwksweekly0.5https://www.ory.sh/hydra/docs/v1.8/limitationsweekly0.5https://www.ory.sh/hydra/docs/v1.8/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/v1.8/milestonesweekly0.5https://www.ory.sh/hydra/docs/v1.8/productionweekly0.5https://www.ory.sh/hydra/docs/v1.8/reference/apiweekly0.5https://www.ory.sh/hydra/docs/v1.8/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/v1.8/sdkweekly0.5https://www.ory.sh/hydra/docs/v1.8/sdk/goweekly0.5https://www.ory.sh/hydra/docs/v1.8/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/v1.8/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/v1.8/security-architectureweekly0.5https://www.ory.sh/hydra/docs/v1.9/weekly0.5https://www.ory.sh/hydra/docs/v1.9/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/v1.9/advancedweekly0.5https://www.ory.sh/hydra/docs/v1.9/benchmarkweekly0.5https://www.ory.sh/hydra/docs/v1.9/case-studyweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydraweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-createweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-getweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-importweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-listweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-updateweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keysweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-createweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-getweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-importweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-migrateweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-migrate-sqlweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serveweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve-adminweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve-allweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve-publicweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-tokenweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-clientweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-deleteweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-flushweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-introspectweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-revokeweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-userweekly0.5https://www.ory.sh/hydra/docs/v1.9/cli/hydra-versionweekly0.5https://www.ory.sh/hydra/docs/v1.9/concepts/before-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.9/concepts/consentweekly0.5https://www.ory.sh/hydra/docs/v1.9/concepts/loginweekly0.5https://www.ory.sh/hydra/docs/v1.9/concepts/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.9/concepts/oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.9/concepts/openid-connect-oidcweekly0.5https://www.ory.sh/hydra/docs/v1.9/configure-deployweekly0.5https://www.ory.sh/hydra/docs/v1.9/contributingweekly0.5https://www.ory.sh/hydra/docs/v1.9/debugweekly0.5https://www.ory.sh/hydra/docs/v1.9/debug/configweekly0.5https://www.ory.sh/hydra/docs/v1.9/debug/csrfweekly0.5https://www.ory.sh/hydra/docs/v1.9/debug/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.9/debug/token-endpoint-auth-methodweekly0.5https://www.ory.sh/hydra/docs/v1.9/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/v1.9/faqweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/consentweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/cookiesweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/corsweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/gitlabweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/kubernetes-helm-chartweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/loginweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/logoutweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/migrating-from-mitreidweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/oauth2-clientsweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/oauth2-token-introspectionweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/scaling-hydraweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/secrets-key-rotationweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/ssl-https-tlsweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/token-expirationweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/tracingweekly0.5https://www.ory.sh/hydra/docs/v1.9/guides/using-oauth2weekly0.5https://www.ory.sh/hydra/docs/v1.9/installweekly0.5https://www.ory.sh/hydra/docs/v1.9/jwksweekly0.5https://www.ory.sh/hydra/docs/v1.9/limitationsweekly0.5https://www.ory.sh/hydra/docs/v1.9/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/v1.9/milestonesweekly0.5https://www.ory.sh/hydra/docs/v1.9/productionweekly0.5https://www.ory.sh/hydra/docs/v1.9/reference/apiweekly0.5https://www.ory.sh/hydra/docs/v1.9/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/v1.9/sdkweekly0.5https://www.ory.sh/hydra/docs/v1.9/sdk/goweekly0.5https://www.ory.sh/hydra/docs/v1.9/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/v1.9/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/v1.9/security-architectureweekly0.5https://www.ory.sh/hydra/docs/weekly0.5https://www.ory.sh/hydra/docs/5min-tutorialweekly0.5https://www.ory.sh/hydra/docs/advancedweekly0.5https://www.ory.sh/hydra/docs/benchmarkweekly0.5https://www.ory.sh/hydra/docs/case-studyweekly0.5https://www.ory.sh/hydra/docs/cli/hydraweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clientsweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clients-createweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clients-deleteweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clients-getweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clients-importweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clients-listweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-clients-updateweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-janitorweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-keysweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-keys-createweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-keys-deleteweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-keys-getweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-keys-importweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-migrateweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-migrate-sqlweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-serveweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-serve-adminweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-serve-allweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-serve-publicweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-tokenweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-token-clientweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-token-deleteweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-token-flushweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-token-introspectweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-token-revokeweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-token-userweekly0.5https://www.ory.sh/hydra/docs/cli/hydra-versionweekly0.5https://www.ory.sh/hydra/docs/concepts/before-oauth2weekly0.5https://www.ory.sh/hydra/docs/concepts/consentweekly0.5https://www.ory.sh/hydra/docs/concepts/loginweekly0.5https://www.ory.sh/hydra/docs/concepts/logoutweekly0.5https://www.ory.sh/hydra/docs/concepts/oauth2weekly0.5https://www.ory.sh/hydra/docs/concepts/openid-connect-oidcweekly0.5https://www.ory.sh/hydra/docs/configure-deployweekly0.5https://www.ory.sh/hydra/docs/contributingweekly0.5https://www.ory.sh/hydra/docs/debugweekly0.5https://www.ory.sh/hydra/docs/debug/configweekly0.5https://www.ory.sh/hydra/docs/debug/csrfweekly0.5https://www.ory.sh/hydra/docs/debug/logoutweekly0.5https://www.ory.sh/hydra/docs/debug/token-endpoint-auth-methodweekly0.5https://www.ory.sh/hydra/docs/dependencies-environmentweekly0.5https://www.ory.sh/hydra/docs/faqweekly0.5https://www.ory.sh/hydra/docs/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.sh/hydra/docs/guides/consentweekly0.5https://www.ory.sh/hydra/docs/guides/cookiesweekly0.5https://www.ory.sh/hydra/docs/guides/corsweekly0.5https://www.ory.sh/hydra/docs/guides/gitlabweekly0.5https://www.ory.sh/hydra/docs/guides/kubernetes-helm-chartweekly0.5https://www.ory.sh/hydra/docs/guides/loginweekly0.5https://www.ory.sh/hydra/docs/guides/logoutweekly0.5https://www.ory.sh/hydra/docs/guides/merge-multiple-db-secretsweekly0.5https://www.ory.sh/hydra/docs/guides/migrating-from-mitreidweekly0.5https://www.ory.sh/hydra/docs/guides/oauth2-clientsweekly0.5https://www.ory.sh/hydra/docs/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.sh/hydra/docs/guides/oauth2-token-introspectionweekly0.5https://www.ory.sh/hydra/docs/guides/scaling-hydraweekly0.5https://www.ory.sh/hydra/docs/guides/secrets-key-rotationweekly0.5https://www.ory.sh/hydra/docs/guides/ssl-https-tlsweekly0.5https://www.ory.sh/hydra/docs/guides/token-expirationweekly0.5https://www.ory.sh/hydra/docs/guides/tracingweekly0.5https://www.ory.sh/hydra/docs/guides/using-oauth2weekly0.5https://www.ory.sh/hydra/docs/installweekly0.5https://www.ory.sh/hydra/docs/jwksweekly0.5https://www.ory.sh/hydra/docs/limitationsweekly0.5https://www.ory.sh/hydra/docs/login-consent-flowweekly0.5https://www.ory.sh/hydra/docs/milestonesweekly0.5https://www.ory.sh/hydra/docs/productionweekly0.5https://www.ory.sh/hydra/docs/reference/apiweekly0.5https://www.ory.sh/hydra/docs/reference/configurationweekly0.5https://www.ory.sh/hydra/docs/sdkweekly0.5https://www.ory.sh/hydra/docs/sdk/goweekly0.5https://www.ory.sh/hydra/docs/sdk/jsweekly0.5https://www.ory.sh/hydra/docs/sdk/phpweekly0.5https://www.ory.sh/hydra/docs/security-architectureweekly0.5 \ No newline at end of file +https://www.ory.com/hydra/docs/http-apiweekly0.5https://www.ory.com/hydra/docs/searchweekly0.5https://www.ory.com/hydra/docs/versionsweekly0.5https://www.ory.com/hydra/docs/next/weekly0.5https://www.ory.com/hydra/docs/next/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/next/advancedweekly0.5https://www.ory.com/hydra/docs/next/benchmarkweekly0.5https://www.ory.com/hydra/docs/next/case-studyweekly0.5https://www.ory.com/hydra/docs/next/cli/hydraweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clientsweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clients-createweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clients-deleteweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clients-getweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clients-importweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clients-listweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-clients-updateweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-janitorweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-keysweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-keys-createweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-keys-deleteweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-keys-getweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-keys-importweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-migrateweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-migrate-sqlweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-serveweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-serve-adminweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-serve-allweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-serve-publicweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-tokenweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-token-clientweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-token-deleteweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-token-flushweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-token-introspectweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-token-revokeweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-token-userweekly0.5https://www.ory.com/hydra/docs/next/cli/hydra-versionweekly0.5https://www.ory.com/hydra/docs/next/concepts/before-oauth2weekly0.5https://www.ory.com/hydra/docs/next/concepts/consentweekly0.5https://www.ory.com/hydra/docs/next/concepts/loginweekly0.5https://www.ory.com/hydra/docs/next/concepts/logoutweekly0.5https://www.ory.com/hydra/docs/next/concepts/oauth2weekly0.5https://www.ory.com/hydra/docs/next/concepts/openid-connect-oidcweekly0.5https://www.ory.com/hydra/docs/next/configure-deployweekly0.5https://www.ory.com/hydra/docs/next/contributingweekly0.5https://www.ory.com/hydra/docs/next/debugweekly0.5https://www.ory.com/hydra/docs/next/debug/configweekly0.5https://www.ory.com/hydra/docs/next/debug/csrfweekly0.5https://www.ory.com/hydra/docs/next/debug/logoutweekly0.5https://www.ory.com/hydra/docs/next/debug/token-endpoint-auth-methodweekly0.5https://www.ory.com/hydra/docs/next/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/next/faqweekly0.5https://www.ory.com/hydra/docs/next/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.com/hydra/docs/next/guides/consentweekly0.5https://www.ory.com/hydra/docs/next/guides/cookiesweekly0.5https://www.ory.com/hydra/docs/next/guides/corsweekly0.5https://www.ory.com/hydra/docs/next/guides/gitlabweekly0.5https://www.ory.com/hydra/docs/next/guides/hsm-supportweekly0.5https://www.ory.com/hydra/docs/next/guides/kubernetes-helm-chartweekly0.5https://www.ory.com/hydra/docs/next/guides/loginweekly0.5https://www.ory.com/hydra/docs/next/guides/logoutweekly0.5https://www.ory.com/hydra/docs/next/guides/merge-multiple-db-secretsweekly0.5https://www.ory.com/hydra/docs/next/guides/migrating-from-mitreidweekly0.5https://www.ory.com/hydra/docs/next/guides/oauth2-clientsweekly0.5https://www.ory.com/hydra/docs/next/guides/oauth2-grant-type-jwt-bearerweekly0.5https://www.ory.com/hydra/docs/next/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.com/hydra/docs/next/guides/oauth2-token-introspectionweekly0.5https://www.ory.com/hydra/docs/next/guides/openid-connect-dynamic-client-registrationweekly0.5https://www.ory.com/hydra/docs/next/guides/scaling-hydraweekly0.5https://www.ory.com/hydra/docs/next/guides/secrets-key-rotationweekly0.5https://www.ory.com/hydra/docs/next/guides/ssl-https-tlsweekly0.5https://www.ory.com/hydra/docs/next/guides/token-expirationweekly0.5https://www.ory.com/hydra/docs/next/guides/tracingweekly0.5https://www.ory.com/hydra/docs/next/guides/using-oauth2weekly0.5https://www.ory.com/hydra/docs/next/installweekly0.5https://www.ory.com/hydra/docs/next/jwksweekly0.5https://www.ory.com/hydra/docs/next/limitationsweekly0.5https://www.ory.com/hydra/docs/next/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/next/milestonesweekly0.5https://www.ory.com/hydra/docs/next/productionweekly0.5https://www.ory.com/hydra/docs/next/reference/apiweekly0.5https://www.ory.com/hydra/docs/next/reference/configurationweekly0.5https://www.ory.com/hydra/docs/next/sdkweekly0.5https://www.ory.com/hydra/docs/next/sdk/goweekly0.5https://www.ory.com/hydra/docs/next/sdk/jsweekly0.5https://www.ory.com/hydra/docs/next/sdk/phpweekly0.5https://www.ory.com/hydra/docs/next/security-architectureweekly0.5https://www.ory.com/hydra/docs/v1.4/weekly0.5https://www.ory.com/hydra/docs/v1.4/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/v1.4/advancedweekly0.5https://www.ory.com/hydra/docs/v1.4/benchmarkweekly0.5https://www.ory.com/hydra/docs/v1.4/case-studyweekly0.5https://www.ory.com/hydra/docs/v1.4/configure-deployweekly0.5https://www.ory.com/hydra/docs/v1.4/debuggingweekly0.5https://www.ory.com/hydra/docs/v1.4/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/v1.4/faqweekly0.5https://www.ory.com/hydra/docs/v1.4/implementing-consentweekly0.5https://www.ory.com/hydra/docs/v1.4/installweekly0.5https://www.ory.com/hydra/docs/v1.4/integrationweekly0.5https://www.ory.com/hydra/docs/v1.4/jwksweekly0.5https://www.ory.com/hydra/docs/v1.4/limitationsweekly0.5https://www.ory.com/hydra/docs/v1.4/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/v1.4/oauth2weekly0.5https://www.ory.com/hydra/docs/v1.4/productionweekly0.5https://www.ory.com/hydra/docs/v1.4/reference/apiweekly0.5https://www.ory.com/hydra/docs/v1.4/reference/configurationweekly0.5https://www.ory.com/hydra/docs/v1.4/sdk/goweekly0.5https://www.ory.com/hydra/docs/v1.4/sdk/indexweekly0.5https://www.ory.com/hydra/docs/v1.4/sdk/jsweekly0.5https://www.ory.com/hydra/docs/v1.4/sdk/phpweekly0.5https://www.ory.com/hydra/docs/v1.4/security-architectureweekly0.5https://www.ory.com/hydra/docs/v1.5/weekly0.5https://www.ory.com/hydra/docs/v1.5/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/v1.5/advancedweekly0.5https://www.ory.com/hydra/docs/v1.5/benchmarkweekly0.5https://www.ory.com/hydra/docs/v1.5/case-studyweekly0.5https://www.ory.com/hydra/docs/v1.5/configure-deployweekly0.5https://www.ory.com/hydra/docs/v1.5/debuggingweekly0.5https://www.ory.com/hydra/docs/v1.5/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/v1.5/faqweekly0.5https://www.ory.com/hydra/docs/v1.5/implementing-consentweekly0.5https://www.ory.com/hydra/docs/v1.5/installweekly0.5https://www.ory.com/hydra/docs/v1.5/integrationweekly0.5https://www.ory.com/hydra/docs/v1.5/jwksweekly0.5https://www.ory.com/hydra/docs/v1.5/limitationsweekly0.5https://www.ory.com/hydra/docs/v1.5/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/v1.5/oauth2weekly0.5https://www.ory.com/hydra/docs/v1.5/productionweekly0.5https://www.ory.com/hydra/docs/v1.5/reference/apiweekly0.5https://www.ory.com/hydra/docs/v1.5/reference/configurationweekly0.5https://www.ory.com/hydra/docs/v1.5/sdkweekly0.5https://www.ory.com/hydra/docs/v1.5/sdk/goweekly0.5https://www.ory.com/hydra/docs/v1.5/sdk/jsweekly0.5https://www.ory.com/hydra/docs/v1.5/sdk/phpweekly0.5https://www.ory.com/hydra/docs/v1.5/security-architectureweekly0.5https://www.ory.com/hydra/docs/v1.6/weekly0.5https://www.ory.com/hydra/docs/v1.6/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/v1.6/advancedweekly0.5https://www.ory.com/hydra/docs/v1.6/benchmarkweekly0.5https://www.ory.com/hydra/docs/v1.6/case-studyweekly0.5https://www.ory.com/hydra/docs/v1.6/concepts/consentweekly0.5https://www.ory.com/hydra/docs/v1.6/concepts/loginweekly0.5https://www.ory.com/hydra/docs/v1.6/concepts/logoutweekly0.5https://www.ory.com/hydra/docs/v1.6/concepts/oauth2weekly0.5https://www.ory.com/hydra/docs/v1.6/concepts/openid-connect-oidcweekly0.5https://www.ory.com/hydra/docs/v1.6/configure-deployweekly0.5https://www.ory.com/hydra/docs/v1.6/debugweekly0.5https://www.ory.com/hydra/docs/v1.6/debug/csrfweekly0.5https://www.ory.com/hydra/docs/v1.6/debug/logoutweekly0.5https://www.ory.com/hydra/docs/v1.6/debug/token-endpoint-auth-methodweekly0.5https://www.ory.com/hydra/docs/v1.6/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/v1.6/faqweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/consentweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/cookiesweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/corsweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/kubernetes-helm-chartweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/loginweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/logoutweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/oauth2-clientsweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/oauth2-token-introspectionweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/scaling-hydraweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/secrets-key-rotationweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/ssl-https-tlsweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/tracingweekly0.5https://www.ory.com/hydra/docs/v1.6/guides/using-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.6/installweekly0.5https://www.ory.com/hydra/docs/v1.6/jwksweekly0.5https://www.ory.com/hydra/docs/v1.6/limitationsweekly0.5https://www.ory.com/hydra/docs/v1.6/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/v1.6/productionweekly0.5https://www.ory.com/hydra/docs/v1.6/reference/apiweekly0.5https://www.ory.com/hydra/docs/v1.6/reference/configurationweekly0.5https://www.ory.com/hydra/docs/v1.6/sdkweekly0.5https://www.ory.com/hydra/docs/v1.6/sdk/goweekly0.5https://www.ory.com/hydra/docs/v1.6/sdk/jsweekly0.5https://www.ory.com/hydra/docs/v1.6/sdk/phpweekly0.5https://www.ory.com/hydra/docs/v1.6/security-architectureweekly0.5https://www.ory.com/hydra/docs/v1.7/weekly0.5https://www.ory.com/hydra/docs/v1.7/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/v1.7/advancedweekly0.5https://www.ory.com/hydra/docs/v1.7/benchmarkweekly0.5https://www.ory.com/hydra/docs/v1.7/case-studyweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydraweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-clientsweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-createweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-deleteweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-getweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-importweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-listweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-keysweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-createweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-deleteweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-getweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-importweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-migrateweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-migrate-sqlweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-serveweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve-adminweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve-allweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve-publicweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-tokenweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-clientweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-flushweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-introspectweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-revokeweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-userweekly0.5https://www.ory.com/hydra/docs/v1.7/cli/hydra-versionweekly0.5https://www.ory.com/hydra/docs/v1.7/concepts/before-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.7/concepts/consentweekly0.5https://www.ory.com/hydra/docs/v1.7/concepts/loginweekly0.5https://www.ory.com/hydra/docs/v1.7/concepts/logoutweekly0.5https://www.ory.com/hydra/docs/v1.7/concepts/oauth2weekly0.5https://www.ory.com/hydra/docs/v1.7/concepts/openid-connect-oidcweekly0.5https://www.ory.com/hydra/docs/v1.7/configure-deployweekly0.5https://www.ory.com/hydra/docs/v1.7/contributingweekly0.5https://www.ory.com/hydra/docs/v1.7/debugweekly0.5https://www.ory.com/hydra/docs/v1.7/debug/csrfweekly0.5https://www.ory.com/hydra/docs/v1.7/debug/logoutweekly0.5https://www.ory.com/hydra/docs/v1.7/debug/token-endpoint-auth-methodweekly0.5https://www.ory.com/hydra/docs/v1.7/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/v1.7/faqweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/consentweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/cookiesweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/corsweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/kubernetes-helm-chartweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/loginweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/logoutweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/oauth2-clientsweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/oauth2-token-introspectionweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/scaling-hydraweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/secrets-key-rotationweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/ssl-https-tlsweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/token-expirationweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/tracingweekly0.5https://www.ory.com/hydra/docs/v1.7/guides/using-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.7/installweekly0.5https://www.ory.com/hydra/docs/v1.7/jwksweekly0.5https://www.ory.com/hydra/docs/v1.7/limitationsweekly0.5https://www.ory.com/hydra/docs/v1.7/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/v1.7/milestonesweekly0.5https://www.ory.com/hydra/docs/v1.7/productionweekly0.5https://www.ory.com/hydra/docs/v1.7/reference/apiweekly0.5https://www.ory.com/hydra/docs/v1.7/reference/configurationweekly0.5https://www.ory.com/hydra/docs/v1.7/sdkweekly0.5https://www.ory.com/hydra/docs/v1.7/sdk/goweekly0.5https://www.ory.com/hydra/docs/v1.7/sdk/jsweekly0.5https://www.ory.com/hydra/docs/v1.7/sdk/phpweekly0.5https://www.ory.com/hydra/docs/v1.7/security-architectureweekly0.5https://www.ory.com/hydra/docs/v1.8/weekly0.5https://www.ory.com/hydra/docs/v1.8/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/v1.8/advancedweekly0.5https://www.ory.com/hydra/docs/v1.8/benchmarkweekly0.5https://www.ory.com/hydra/docs/v1.8/case-studyweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydraweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clientsweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-createweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-deleteweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-getweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-importweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-listweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-updateweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-keysweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-createweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-deleteweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-getweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-importweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-migrateweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-migrate-sqlweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-serveweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve-adminweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve-allweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve-publicweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-tokenweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-clientweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-deleteweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-flushweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-introspectweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-revokeweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-userweekly0.5https://www.ory.com/hydra/docs/v1.8/cli/hydra-versionweekly0.5https://www.ory.com/hydra/docs/v1.8/concepts/before-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.8/concepts/consentweekly0.5https://www.ory.com/hydra/docs/v1.8/concepts/loginweekly0.5https://www.ory.com/hydra/docs/v1.8/concepts/logoutweekly0.5https://www.ory.com/hydra/docs/v1.8/concepts/oauth2weekly0.5https://www.ory.com/hydra/docs/v1.8/concepts/openid-connect-oidcweekly0.5https://www.ory.com/hydra/docs/v1.8/configure-deployweekly0.5https://www.ory.com/hydra/docs/v1.8/contributingweekly0.5https://www.ory.com/hydra/docs/v1.8/debugweekly0.5https://www.ory.com/hydra/docs/v1.8/debug/csrfweekly0.5https://www.ory.com/hydra/docs/v1.8/debug/logoutweekly0.5https://www.ory.com/hydra/docs/v1.8/debug/token-endpoint-auth-methodweekly0.5https://www.ory.com/hydra/docs/v1.8/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/v1.8/faqweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/consentweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/cookiesweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/corsweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/gitlabweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/kubernetes-helm-chartweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/loginweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/logoutweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/oauth2-clientsweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/oauth2-token-introspectionweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/scaling-hydraweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/secrets-key-rotationweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/ssl-https-tlsweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/token-expirationweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/tracingweekly0.5https://www.ory.com/hydra/docs/v1.8/guides/using-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.8/installweekly0.5https://www.ory.com/hydra/docs/v1.8/jwksweekly0.5https://www.ory.com/hydra/docs/v1.8/limitationsweekly0.5https://www.ory.com/hydra/docs/v1.8/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/v1.8/milestonesweekly0.5https://www.ory.com/hydra/docs/v1.8/productionweekly0.5https://www.ory.com/hydra/docs/v1.8/reference/apiweekly0.5https://www.ory.com/hydra/docs/v1.8/reference/configurationweekly0.5https://www.ory.com/hydra/docs/v1.8/sdkweekly0.5https://www.ory.com/hydra/docs/v1.8/sdk/goweekly0.5https://www.ory.com/hydra/docs/v1.8/sdk/jsweekly0.5https://www.ory.com/hydra/docs/v1.8/sdk/phpweekly0.5https://www.ory.com/hydra/docs/v1.8/security-architectureweekly0.5https://www.ory.com/hydra/docs/v1.9/weekly0.5https://www.ory.com/hydra/docs/v1.9/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/v1.9/advancedweekly0.5https://www.ory.com/hydra/docs/v1.9/benchmarkweekly0.5https://www.ory.com/hydra/docs/v1.9/case-studyweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydraweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clientsweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-createweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-deleteweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-getweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-importweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-listweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-updateweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-keysweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-createweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-deleteweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-getweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-importweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-migrateweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-migrate-sqlweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-serveweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve-adminweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve-allweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve-publicweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-tokenweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-clientweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-deleteweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-flushweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-introspectweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-revokeweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-userweekly0.5https://www.ory.com/hydra/docs/v1.9/cli/hydra-versionweekly0.5https://www.ory.com/hydra/docs/v1.9/concepts/before-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.9/concepts/consentweekly0.5https://www.ory.com/hydra/docs/v1.9/concepts/loginweekly0.5https://www.ory.com/hydra/docs/v1.9/concepts/logoutweekly0.5https://www.ory.com/hydra/docs/v1.9/concepts/oauth2weekly0.5https://www.ory.com/hydra/docs/v1.9/concepts/openid-connect-oidcweekly0.5https://www.ory.com/hydra/docs/v1.9/configure-deployweekly0.5https://www.ory.com/hydra/docs/v1.9/contributingweekly0.5https://www.ory.com/hydra/docs/v1.9/debugweekly0.5https://www.ory.com/hydra/docs/v1.9/debug/configweekly0.5https://www.ory.com/hydra/docs/v1.9/debug/csrfweekly0.5https://www.ory.com/hydra/docs/v1.9/debug/logoutweekly0.5https://www.ory.com/hydra/docs/v1.9/debug/token-endpoint-auth-methodweekly0.5https://www.ory.com/hydra/docs/v1.9/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/v1.9/faqweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/consentweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/cookiesweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/corsweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/gitlabweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/kubernetes-helm-chartweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/loginweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/logoutweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/migrating-from-mitreidweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/oauth2-clientsweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/oauth2-token-introspectionweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/scaling-hydraweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/secrets-key-rotationweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/ssl-https-tlsweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/token-expirationweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/tracingweekly0.5https://www.ory.com/hydra/docs/v1.9/guides/using-oauth2weekly0.5https://www.ory.com/hydra/docs/v1.9/installweekly0.5https://www.ory.com/hydra/docs/v1.9/jwksweekly0.5https://www.ory.com/hydra/docs/v1.9/limitationsweekly0.5https://www.ory.com/hydra/docs/v1.9/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/v1.9/milestonesweekly0.5https://www.ory.com/hydra/docs/v1.9/productionweekly0.5https://www.ory.com/hydra/docs/v1.9/reference/apiweekly0.5https://www.ory.com/hydra/docs/v1.9/reference/configurationweekly0.5https://www.ory.com/hydra/docs/v1.9/sdkweekly0.5https://www.ory.com/hydra/docs/v1.9/sdk/goweekly0.5https://www.ory.com/hydra/docs/v1.9/sdk/jsweekly0.5https://www.ory.com/hydra/docs/v1.9/sdk/phpweekly0.5https://www.ory.com/hydra/docs/v1.9/security-architectureweekly0.5https://www.ory.com/hydra/docs/weekly0.5https://www.ory.com/hydra/docs/5min-tutorialweekly0.5https://www.ory.com/hydra/docs/advancedweekly0.5https://www.ory.com/hydra/docs/benchmarkweekly0.5https://www.ory.com/hydra/docs/case-studyweekly0.5https://www.ory.com/hydra/docs/cli/hydraweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clientsweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clients-createweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clients-deleteweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clients-getweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clients-importweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clients-listweekly0.5https://www.ory.com/hydra/docs/cli/hydra-clients-updateweekly0.5https://www.ory.com/hydra/docs/cli/hydra-janitorweekly0.5https://www.ory.com/hydra/docs/cli/hydra-keysweekly0.5https://www.ory.com/hydra/docs/cli/hydra-keys-createweekly0.5https://www.ory.com/hydra/docs/cli/hydra-keys-deleteweekly0.5https://www.ory.com/hydra/docs/cli/hydra-keys-getweekly0.5https://www.ory.com/hydra/docs/cli/hydra-keys-importweekly0.5https://www.ory.com/hydra/docs/cli/hydra-migrateweekly0.5https://www.ory.com/hydra/docs/cli/hydra-migrate-sqlweekly0.5https://www.ory.com/hydra/docs/cli/hydra-serveweekly0.5https://www.ory.com/hydra/docs/cli/hydra-serve-adminweekly0.5https://www.ory.com/hydra/docs/cli/hydra-serve-allweekly0.5https://www.ory.com/hydra/docs/cli/hydra-serve-publicweekly0.5https://www.ory.com/hydra/docs/cli/hydra-tokenweekly0.5https://www.ory.com/hydra/docs/cli/hydra-token-clientweekly0.5https://www.ory.com/hydra/docs/cli/hydra-token-deleteweekly0.5https://www.ory.com/hydra/docs/cli/hydra-token-flushweekly0.5https://www.ory.com/hydra/docs/cli/hydra-token-introspectweekly0.5https://www.ory.com/hydra/docs/cli/hydra-token-revokeweekly0.5https://www.ory.com/hydra/docs/cli/hydra-token-userweekly0.5https://www.ory.com/hydra/docs/cli/hydra-versionweekly0.5https://www.ory.com/hydra/docs/concepts/before-oauth2weekly0.5https://www.ory.com/hydra/docs/concepts/consentweekly0.5https://www.ory.com/hydra/docs/concepts/loginweekly0.5https://www.ory.com/hydra/docs/concepts/logoutweekly0.5https://www.ory.com/hydra/docs/concepts/oauth2weekly0.5https://www.ory.com/hydra/docs/concepts/openid-connect-oidcweekly0.5https://www.ory.com/hydra/docs/configure-deployweekly0.5https://www.ory.com/hydra/docs/contributingweekly0.5https://www.ory.com/hydra/docs/debugweekly0.5https://www.ory.com/hydra/docs/debug/configweekly0.5https://www.ory.com/hydra/docs/debug/csrfweekly0.5https://www.ory.com/hydra/docs/debug/logoutweekly0.5https://www.ory.com/hydra/docs/debug/token-endpoint-auth-methodweekly0.5https://www.ory.com/hydra/docs/dependencies-environmentweekly0.5https://www.ory.com/hydra/docs/faqweekly0.5https://www.ory.com/hydra/docs/guides/common-oauth2-openid-connect-flowsweekly0.5https://www.ory.com/hydra/docs/guides/consentweekly0.5https://www.ory.com/hydra/docs/guides/cookiesweekly0.5https://www.ory.com/hydra/docs/guides/corsweekly0.5https://www.ory.com/hydra/docs/guides/gitlabweekly0.5https://www.ory.com/hydra/docs/guides/kubernetes-helm-chartweekly0.5https://www.ory.com/hydra/docs/guides/loginweekly0.5https://www.ory.com/hydra/docs/guides/logoutweekly0.5https://www.ory.com/hydra/docs/guides/merge-multiple-db-secretsweekly0.5https://www.ory.com/hydra/docs/guides/migrating-from-mitreidweekly0.5https://www.ory.com/hydra/docs/guides/oauth2-clientsweekly0.5https://www.ory.com/hydra/docs/guides/oauth2-public-spa-mobileweekly0.5https://www.ory.com/hydra/docs/guides/oauth2-token-introspectionweekly0.5https://www.ory.com/hydra/docs/guides/scaling-hydraweekly0.5https://www.ory.com/hydra/docs/guides/secrets-key-rotationweekly0.5https://www.ory.com/hydra/docs/guides/ssl-https-tlsweekly0.5https://www.ory.com/hydra/docs/guides/token-expirationweekly0.5https://www.ory.com/hydra/docs/guides/tracingweekly0.5https://www.ory.com/hydra/docs/guides/using-oauth2weekly0.5https://www.ory.com/hydra/docs/installweekly0.5https://www.ory.com/hydra/docs/jwksweekly0.5https://www.ory.com/hydra/docs/limitationsweekly0.5https://www.ory.com/hydra/docs/login-consent-flowweekly0.5https://www.ory.com/hydra/docs/milestonesweekly0.5https://www.ory.com/hydra/docs/productionweekly0.5https://www.ory.com/hydra/docs/reference/apiweekly0.5https://www.ory.com/hydra/docs/reference/configurationweekly0.5https://www.ory.com/hydra/docs/sdkweekly0.5https://www.ory.com/hydra/docs/sdk/goweekly0.5https://www.ory.com/hydra/docs/sdk/jsweekly0.5https://www.ory.com/hydra/docs/sdk/phpweekly0.5https://www.ory.com/hydra/docs/security-architectureweekly0.5 \ No newline at end of file diff --git a/src/sitemaps/sitemap_keto.xml b/src/sitemaps/sitemap_keto.xml index 273b9750db..91eb8910bb 100644 --- a/src/sitemaps/sitemap_keto.xml +++ b/src/sitemaps/sitemap_keto.xml @@ -1 +1 @@ -https://www.ory.sh/keto/docs/http-apiweekly0.5https://www.ory.sh/keto/docs/searchweekly0.5https://www.ory.sh/keto/docs/versionsweekly0.5https://www.ory.sh/keto/docs/next/weekly0.5https://www.ory.sh/keto/docs/next/CHANGELOGweekly0.5https://www.ory.sh/keto/docs/next/cli/ketoweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-checkweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-expandweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-migrateweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-migrate-downweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-migrate-statusweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-migrate-upweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespaceweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrateweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-downweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-legacyweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-statusweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-upweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-namespace-validateweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-relation-tupleweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-createweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-deleteweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-delete-allweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-getweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-parseweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-serveweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-statusweekly0.5https://www.ory.sh/keto/docs/next/cli/keto-versionweekly0.5https://www.ory.sh/keto/docs/next/concepts/api-overviewweekly0.5https://www.ory.sh/keto/docs/next/concepts/graph-of-relationsweekly0.5https://www.ory.sh/keto/docs/next/concepts/internal-algorithmsweekly0.5https://www.ory.sh/keto/docs/next/concepts/namespacesweekly0.5https://www.ory.sh/keto/docs/next/concepts/objectsweekly0.5https://www.ory.sh/keto/docs/next/concepts/relation-tuplesweekly0.5https://www.ory.sh/keto/docs/next/concepts/snaptokens-evaluation-consistencyweekly0.5https://www.ory.sh/keto/docs/next/concepts/subjectsweekly0.5https://www.ory.sh/keto/docs/next/contributingweekly0.5https://www.ory.sh/keto/docs/next/examples/olymp-file-sharingweekly0.5https://www.ory.sh/keto/docs/next/guides/access-control-inheritanceweekly0.5https://www.ory.sh/keto/docs/next/guides/access-control-list-design-best-practicesweekly0.5https://www.ory.sh/keto/docs/next/guides/expand-api-display-who-has-accessweekly0.5https://www.ory.sh/keto/docs/next/guides/list-api-display-objectsweekly0.5https://www.ory.sh/keto/docs/next/guides/productionweekly0.5https://www.ory.sh/keto/docs/next/guides/rbacweekly0.5https://www.ory.sh/keto/docs/next/guides/simple-access-check-guideweekly0.5https://www.ory.sh/keto/docs/next/guides/v0.7-migrationweekly0.5https://www.ory.sh/keto/docs/next/implemented-planned-featuresweekly0.5https://www.ory.sh/keto/docs/next/installweekly0.5https://www.ory.sh/keto/docs/next/milestonesweekly0.5https://www.ory.sh/keto/docs/next/performanceweekly0.5https://www.ory.sh/keto/docs/next/quickstartweekly0.5https://www.ory.sh/keto/docs/next/reference/configurationweekly0.5https://www.ory.sh/keto/docs/next/reference/proto-apiweekly0.5https://www.ory.sh/keto/docs/next/reference/rest-apiweekly0.5https://www.ory.sh/keto/docs/next/sdk/indexweekly0.5https://www.ory.sh/keto/docs/next/secureweekly0.5https://www.ory.sh/keto/docs/v0.5/weekly0.5https://www.ory.sh/keto/docs/v0.5/configure-deployweekly0.5https://www.ory.sh/keto/docs/v0.5/engines/aclweekly0.5https://www.ory.sh/keto/docs/v0.5/engines/acp-awsweekly0.5https://www.ory.sh/keto/docs/v0.5/engines/acp-oryweekly0.5https://www.ory.sh/keto/docs/v0.5/engines/indexweekly0.5https://www.ory.sh/keto/docs/v0.5/engines/rbacweekly0.5https://www.ory.sh/keto/docs/v0.5/installweekly0.5https://www.ory.sh/keto/docs/v0.5/reference/apiweekly0.5https://www.ory.sh/keto/docs/v0.5/reference/configurationweekly0.5https://www.ory.sh/keto/docs/v0.5/sdk/indexweekly0.5https://www.ory.sh/keto/docs/v0.5/secureweekly0.5https://www.ory.sh/keto/docs/v0.6/weekly0.5https://www.ory.sh/keto/docs/v0.6/cli/ketoweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-checkweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-expandweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-migrateweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate-downweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate-statusweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate-upweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-namespaceweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrateweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate-downweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate-statusweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate-upweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-validateweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tupleweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-createweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-deleteweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-getweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-parseweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-serveweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-statusweekly0.5https://www.ory.sh/keto/docs/v0.6/cli/keto-versionweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/api-overviewweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/graph-of-relationsweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/internal-algorithmsweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/namespacesweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/objectsweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/relation-tuplesweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/snaptokens-evaluation-consistencyweekly0.5https://www.ory.sh/keto/docs/v0.6/concepts/subjectsweekly0.5https://www.ory.sh/keto/docs/v0.6/contributingweekly0.5https://www.ory.sh/keto/docs/v0.6/examples/olymp-file-sharingweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/access-control-inheritanceweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/access-control-list-design-best-practicesweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/expand-api-display-who-has-accessweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/list-api-display-objectsweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/productionweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/rbacweekly0.5https://www.ory.sh/keto/docs/v0.6/guides/simple-access-check-guideweekly0.5https://www.ory.sh/keto/docs/v0.6/implemented-planned-featuresweekly0.5https://www.ory.sh/keto/docs/v0.6/installweekly0.5https://www.ory.sh/keto/docs/v0.6/milestonesweekly0.5https://www.ory.sh/keto/docs/v0.6/performanceweekly0.5https://www.ory.sh/keto/docs/v0.6/quickstartweekly0.5https://www.ory.sh/keto/docs/v0.6/reference/apiweekly0.5https://www.ory.sh/keto/docs/v0.6/reference/configurationweekly0.5https://www.ory.sh/keto/docs/v0.6/reference/proto-apiweekly0.5https://www.ory.sh/keto/docs/v0.6/reference/rest-apiweekly0.5https://www.ory.sh/keto/docs/v0.6/sdk/indexweekly0.5https://www.ory.sh/keto/docs/v0.6/secureweekly0.5https://www.ory.sh/keto/docs/weekly0.5https://www.ory.sh/keto/docs/CHANGELOGweekly0.5https://www.ory.sh/keto/docs/cli/ketoweekly0.5https://www.ory.sh/keto/docs/cli/keto-checkweekly0.5https://www.ory.sh/keto/docs/cli/keto-expandweekly0.5https://www.ory.sh/keto/docs/cli/keto-migrateweekly0.5https://www.ory.sh/keto/docs/cli/keto-migrate-downweekly0.5https://www.ory.sh/keto/docs/cli/keto-migrate-statusweekly0.5https://www.ory.sh/keto/docs/cli/keto-migrate-upweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespaceweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespace-migrateweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-downweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-legacyweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-statusweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-upweekly0.5https://www.ory.sh/keto/docs/cli/keto-namespace-validateweekly0.5https://www.ory.sh/keto/docs/cli/keto-relation-tupleweekly0.5https://www.ory.sh/keto/docs/cli/keto-relation-tuple-createweekly0.5https://www.ory.sh/keto/docs/cli/keto-relation-tuple-deleteweekly0.5https://www.ory.sh/keto/docs/cli/keto-relation-tuple-getweekly0.5https://www.ory.sh/keto/docs/cli/keto-relation-tuple-parseweekly0.5https://www.ory.sh/keto/docs/cli/keto-serveweekly0.5https://www.ory.sh/keto/docs/cli/keto-statusweekly0.5https://www.ory.sh/keto/docs/cli/keto-versionweekly0.5https://www.ory.sh/keto/docs/concepts/api-overviewweekly0.5https://www.ory.sh/keto/docs/concepts/graph-of-relationsweekly0.5https://www.ory.sh/keto/docs/concepts/internal-algorithmsweekly0.5https://www.ory.sh/keto/docs/concepts/namespacesweekly0.5https://www.ory.sh/keto/docs/concepts/objectsweekly0.5https://www.ory.sh/keto/docs/concepts/relation-tuplesweekly0.5https://www.ory.sh/keto/docs/concepts/snaptokens-evaluation-consistencyweekly0.5https://www.ory.sh/keto/docs/concepts/subjectsweekly0.5https://www.ory.sh/keto/docs/contributingweekly0.5https://www.ory.sh/keto/docs/examples/olymp-file-sharingweekly0.5https://www.ory.sh/keto/docs/guides/access-control-inheritanceweekly0.5https://www.ory.sh/keto/docs/guides/access-control-list-design-best-practicesweekly0.5https://www.ory.sh/keto/docs/guides/expand-api-display-who-has-accessweekly0.5https://www.ory.sh/keto/docs/guides/list-api-display-objectsweekly0.5https://www.ory.sh/keto/docs/guides/productionweekly0.5https://www.ory.sh/keto/docs/guides/rbacweekly0.5https://www.ory.sh/keto/docs/guides/simple-access-check-guideweekly0.5https://www.ory.sh/keto/docs/guides/v0.7-migrationweekly0.5https://www.ory.sh/keto/docs/implemented-planned-featuresweekly0.5https://www.ory.sh/keto/docs/installweekly0.5https://www.ory.sh/keto/docs/milestonesweekly0.5https://www.ory.sh/keto/docs/performanceweekly0.5https://www.ory.sh/keto/docs/quickstartweekly0.5https://www.ory.sh/keto/docs/reference/configurationweekly0.5https://www.ory.sh/keto/docs/reference/proto-apiweekly0.5https://www.ory.sh/keto/docs/reference/rest-apiweekly0.5https://www.ory.sh/keto/docs/sdk/indexweekly0.5https://www.ory.sh/keto/docs/secureweekly0.5 \ No newline at end of file +https://www.ory.com/keto/docs/http-apiweekly0.5https://www.ory.com/keto/docs/searchweekly0.5https://www.ory.com/keto/docs/versionsweekly0.5https://www.ory.com/keto/docs/next/weekly0.5https://www.ory.com/keto/docs/next/CHANGELOGweekly0.5https://www.ory.com/keto/docs/next/cli/ketoweekly0.5https://www.ory.com/keto/docs/next/cli/keto-checkweekly0.5https://www.ory.com/keto/docs/next/cli/keto-expandweekly0.5https://www.ory.com/keto/docs/next/cli/keto-migrateweekly0.5https://www.ory.com/keto/docs/next/cli/keto-migrate-downweekly0.5https://www.ory.com/keto/docs/next/cli/keto-migrate-statusweekly0.5https://www.ory.com/keto/docs/next/cli/keto-migrate-upweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespaceweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespace-migrateweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-downweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-legacyweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-statusweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-upweekly0.5https://www.ory.com/keto/docs/next/cli/keto-namespace-validateweekly0.5https://www.ory.com/keto/docs/next/cli/keto-relation-tupleweekly0.5https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-createweekly0.5https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-deleteweekly0.5https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-delete-allweekly0.5https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-getweekly0.5https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-parseweekly0.5https://www.ory.com/keto/docs/next/cli/keto-serveweekly0.5https://www.ory.com/keto/docs/next/cli/keto-statusweekly0.5https://www.ory.com/keto/docs/next/cli/keto-versionweekly0.5https://www.ory.com/keto/docs/next/concepts/api-overviewweekly0.5https://www.ory.com/keto/docs/next/concepts/graph-of-relationsweekly0.5https://www.ory.com/keto/docs/next/concepts/internal-algorithmsweekly0.5https://www.ory.com/keto/docs/next/concepts/namespacesweekly0.5https://www.ory.com/keto/docs/next/concepts/objectsweekly0.5https://www.ory.com/keto/docs/next/concepts/relation-tuplesweekly0.5https://www.ory.com/keto/docs/next/concepts/snaptokens-evaluation-consistencyweekly0.5https://www.ory.com/keto/docs/next/concepts/subjectsweekly0.5https://www.ory.com/keto/docs/next/contributingweekly0.5https://www.ory.com/keto/docs/next/examples/olymp-file-sharingweekly0.5https://www.ory.com/keto/docs/next/guides/access-control-inheritanceweekly0.5https://www.ory.com/keto/docs/next/guides/access-control-list-design-best-practicesweekly0.5https://www.ory.com/keto/docs/next/guides/expand-api-display-who-has-accessweekly0.5https://www.ory.com/keto/docs/next/guides/list-api-display-objectsweekly0.5https://www.ory.com/keto/docs/next/guides/productionweekly0.5https://www.ory.com/keto/docs/next/guides/rbacweekly0.5https://www.ory.com/keto/docs/next/guides/simple-access-check-guideweekly0.5https://www.ory.com/keto/docs/next/guides/v0.7-migrationweekly0.5https://www.ory.com/keto/docs/next/implemented-planned-featuresweekly0.5https://www.ory.com/keto/docs/next/installweekly0.5https://www.ory.com/keto/docs/next/milestonesweekly0.5https://www.ory.com/keto/docs/next/performanceweekly0.5https://www.ory.com/keto/docs/next/quickstartweekly0.5https://www.ory.com/keto/docs/next/reference/configurationweekly0.5https://www.ory.com/keto/docs/next/reference/proto-apiweekly0.5https://www.ory.com/keto/docs/next/reference/rest-apiweekly0.5https://www.ory.com/keto/docs/next/sdk/indexweekly0.5https://www.ory.com/keto/docs/next/secureweekly0.5https://www.ory.com/keto/docs/v0.5/weekly0.5https://www.ory.com/keto/docs/v0.5/configure-deployweekly0.5https://www.ory.com/keto/docs/v0.5/engines/aclweekly0.5https://www.ory.com/keto/docs/v0.5/engines/acp-awsweekly0.5https://www.ory.com/keto/docs/v0.5/engines/acp-oryweekly0.5https://www.ory.com/keto/docs/v0.5/engines/indexweekly0.5https://www.ory.com/keto/docs/v0.5/engines/rbacweekly0.5https://www.ory.com/keto/docs/v0.5/installweekly0.5https://www.ory.com/keto/docs/v0.5/reference/apiweekly0.5https://www.ory.com/keto/docs/v0.5/reference/configurationweekly0.5https://www.ory.com/keto/docs/v0.5/sdk/indexweekly0.5https://www.ory.com/keto/docs/v0.5/secureweekly0.5https://www.ory.com/keto/docs/v0.6/weekly0.5https://www.ory.com/keto/docs/v0.6/cli/ketoweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-checkweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-expandweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-migrateweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-migrate-downweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-migrate-statusweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-migrate-upweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-namespaceweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrateweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate-downweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate-statusweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate-upweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-validateweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tupleweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-createweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-deleteweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-getweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-parseweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-serveweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-statusweekly0.5https://www.ory.com/keto/docs/v0.6/cli/keto-versionweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/api-overviewweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/graph-of-relationsweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/internal-algorithmsweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/namespacesweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/objectsweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/relation-tuplesweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/snaptokens-evaluation-consistencyweekly0.5https://www.ory.com/keto/docs/v0.6/concepts/subjectsweekly0.5https://www.ory.com/keto/docs/v0.6/contributingweekly0.5https://www.ory.com/keto/docs/v0.6/examples/olymp-file-sharingweekly0.5https://www.ory.com/keto/docs/v0.6/guides/access-control-inheritanceweekly0.5https://www.ory.com/keto/docs/v0.6/guides/access-control-list-design-best-practicesweekly0.5https://www.ory.com/keto/docs/v0.6/guides/expand-api-display-who-has-accessweekly0.5https://www.ory.com/keto/docs/v0.6/guides/list-api-display-objectsweekly0.5https://www.ory.com/keto/docs/v0.6/guides/productionweekly0.5https://www.ory.com/keto/docs/v0.6/guides/rbacweekly0.5https://www.ory.com/keto/docs/v0.6/guides/simple-access-check-guideweekly0.5https://www.ory.com/keto/docs/v0.6/implemented-planned-featuresweekly0.5https://www.ory.com/keto/docs/v0.6/installweekly0.5https://www.ory.com/keto/docs/v0.6/milestonesweekly0.5https://www.ory.com/keto/docs/v0.6/performanceweekly0.5https://www.ory.com/keto/docs/v0.6/quickstartweekly0.5https://www.ory.com/keto/docs/v0.6/reference/apiweekly0.5https://www.ory.com/keto/docs/v0.6/reference/configurationweekly0.5https://www.ory.com/keto/docs/v0.6/reference/proto-apiweekly0.5https://www.ory.com/keto/docs/v0.6/reference/rest-apiweekly0.5https://www.ory.com/keto/docs/v0.6/sdk/indexweekly0.5https://www.ory.com/keto/docs/v0.6/secureweekly0.5https://www.ory.com/keto/docs/weekly0.5https://www.ory.com/keto/docs/CHANGELOGweekly0.5https://www.ory.com/keto/docs/cli/ketoweekly0.5https://www.ory.com/keto/docs/cli/keto-checkweekly0.5https://www.ory.com/keto/docs/cli/keto-expandweekly0.5https://www.ory.com/keto/docs/cli/keto-migrateweekly0.5https://www.ory.com/keto/docs/cli/keto-migrate-downweekly0.5https://www.ory.com/keto/docs/cli/keto-migrate-statusweekly0.5https://www.ory.com/keto/docs/cli/keto-migrate-upweekly0.5https://www.ory.com/keto/docs/cli/keto-namespaceweekly0.5https://www.ory.com/keto/docs/cli/keto-namespace-migrateweekly0.5https://www.ory.com/keto/docs/cli/keto-namespace-migrate-downweekly0.5https://www.ory.com/keto/docs/cli/keto-namespace-migrate-legacyweekly0.5https://www.ory.com/keto/docs/cli/keto-namespace-migrate-statusweekly0.5https://www.ory.com/keto/docs/cli/keto-namespace-migrate-upweekly0.5https://www.ory.com/keto/docs/cli/keto-namespace-validateweekly0.5https://www.ory.com/keto/docs/cli/keto-relation-tupleweekly0.5https://www.ory.com/keto/docs/cli/keto-relation-tuple-createweekly0.5https://www.ory.com/keto/docs/cli/keto-relation-tuple-deleteweekly0.5https://www.ory.com/keto/docs/cli/keto-relation-tuple-getweekly0.5https://www.ory.com/keto/docs/cli/keto-relation-tuple-parseweekly0.5https://www.ory.com/keto/docs/cli/keto-serveweekly0.5https://www.ory.com/keto/docs/cli/keto-statusweekly0.5https://www.ory.com/keto/docs/cli/keto-versionweekly0.5https://www.ory.com/keto/docs/concepts/api-overviewweekly0.5https://www.ory.com/keto/docs/concepts/graph-of-relationsweekly0.5https://www.ory.com/keto/docs/concepts/internal-algorithmsweekly0.5https://www.ory.com/keto/docs/concepts/namespacesweekly0.5https://www.ory.com/keto/docs/concepts/objectsweekly0.5https://www.ory.com/keto/docs/concepts/relation-tuplesweekly0.5https://www.ory.com/keto/docs/concepts/snaptokens-evaluation-consistencyweekly0.5https://www.ory.com/keto/docs/concepts/subjectsweekly0.5https://www.ory.com/keto/docs/contributingweekly0.5https://www.ory.com/keto/docs/examples/olymp-file-sharingweekly0.5https://www.ory.com/keto/docs/guides/access-control-inheritanceweekly0.5https://www.ory.com/keto/docs/guides/access-control-list-design-best-practicesweekly0.5https://www.ory.com/keto/docs/guides/expand-api-display-who-has-accessweekly0.5https://www.ory.com/keto/docs/guides/list-api-display-objectsweekly0.5https://www.ory.com/keto/docs/guides/productionweekly0.5https://www.ory.com/keto/docs/guides/rbacweekly0.5https://www.ory.com/keto/docs/guides/simple-access-check-guideweekly0.5https://www.ory.com/keto/docs/guides/v0.7-migrationweekly0.5https://www.ory.com/keto/docs/implemented-planned-featuresweekly0.5https://www.ory.com/keto/docs/installweekly0.5https://www.ory.com/keto/docs/milestonesweekly0.5https://www.ory.com/keto/docs/performanceweekly0.5https://www.ory.com/keto/docs/quickstartweekly0.5https://www.ory.com/keto/docs/reference/configurationweekly0.5https://www.ory.com/keto/docs/reference/proto-apiweekly0.5https://www.ory.com/keto/docs/reference/rest-apiweekly0.5https://www.ory.com/keto/docs/sdk/indexweekly0.5https://www.ory.com/keto/docs/secureweekly0.5 \ No newline at end of file diff --git a/src/sitemaps/sitemap_kratos.xml b/src/sitemaps/sitemap_kratos.xml index 96811c0351..f3fdee106d 100644 --- a/src/sitemaps/sitemap_kratos.xml +++ b/src/sitemaps/sitemap_kratos.xml @@ -1 +1 @@ -https://www.ory.sh/kratos/docs/http-apiweekly0.5https://www.ory.sh/kratos/docs/searchweekly0.5https://www.ory.sh/kratos/docs/versionsweekly0.5https://www.ory.sh/kratos/docs/next/weekly0.5https://www.ory.sh/kratos/docs/next/admin/managing-users-identitiesweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratosweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-courierweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-courier-watchweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-hashersweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2weekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identitiesweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-deleteweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-getweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-importweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-listweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-patchweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-putweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-identities-validateweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnetweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-formatweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-lintweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-migrateweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-migrate-sqlweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-remoteweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-remote-statusweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-remote-versionweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-serveweekly0.5https://www.ory.sh/kratos/docs/next/cli/kratos-versionweekly0.5https://www.ory.sh/kratos/docs/next/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.sh/kratos/docs/next/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/next/concepts/credentials/lookup-secretsweekly0.5https://www.ory.sh/kratos/docs/next/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/next/concepts/credentials/totpweekly0.5https://www.ory.sh/kratos/docs/next/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/next/concepts/credentials/webauthnweekly0.5https://www.ory.sh/kratos/docs/next/concepts/dockerweekly0.5https://www.ory.sh/kratos/docs/next/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/next/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/next/concepts/identity-schemaweekly0.5https://www.ory.sh/kratos/docs/next/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/next/concepts/management-uiweekly0.5https://www.ory.sh/kratos/docs/next/concepts/rest-apiweekly0.5https://www.ory.sh/kratos/docs/next/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/next/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/next/concepts/sessionweekly0.5https://www.ory.sh/kratos/docs/next/concepts/terminologyweekly0.5https://www.ory.sh/kratos/docs/next/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/next/configuringweekly0.5https://www.ory.sh/kratos/docs/next/contributingweekly0.5https://www.ory.sh/kratos/docs/next/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/next/debug/debug-docker-delve-ory-kratosweekly0.5https://www.ory.sh/kratos/docs/next/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.sh/kratos/docs/next/debug/troubleshootingweekly0.5https://www.ory.sh/kratos/docs/next/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/next/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/next/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/next/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/next/fallback/recoveryweekly0.5https://www.ory.sh/kratos/docs/next/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/next/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/next/fallback/verificationweekly0.5https://www.ory.sh/kratos/docs/next/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/next/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/next/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.sh/kratos/docs/next/guides/account-activation-email-verificationweekly0.5https://www.ory.sh/kratos/docs/next/guides/account-recovery-password-resetweekly0.5https://www.ory.sh/kratos/docs/next/guides/configuring-cookiesweekly0.5https://www.ory.sh/kratos/docs/next/guides/custom-uiweekly0.5https://www.ory.sh/kratos/docs/next/guides/dockerweekly0.5https://www.ory.sh/kratos/docs/next/guides/e2e-integration-testsweekly0.5https://www.ory.sh/kratos/docs/next/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/next/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.sh/kratos/docs/next/guides/https-tlsweekly0.5https://www.ory.sh/kratos/docs/next/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.sh/kratos/docs/next/guides/login-sessionweekly0.5https://www.ory.sh/kratos/docs/next/guides/multi-domain-cookiesweekly0.5https://www.ory.sh/kratos/docs/next/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/next/guides/password-policyweekly0.5https://www.ory.sh/kratos/docs/next/guides/productionweekly0.5https://www.ory.sh/kratos/docs/next/guides/retrieve-social-sign-in-access-refresh-id-tokenweekly0.5https://www.ory.sh/kratos/docs/next/guides/secret-key-rotationweekly0.5https://www.ory.sh/kratos/docs/next/guides/security-questions-best-practiceweekly0.5https://www.ory.sh/kratos/docs/next/guides/setting-up-aes-cipher-parametersweekly0.5https://www.ory.sh/kratos/docs/next/guides/setting-up-corsweekly0.5https://www.ory.sh/kratos/docs/next/guides/setting-up-noop-cipher-parametersweekly0.5https://www.ory.sh/kratos/docs/next/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.sh/kratos/docs/next/guides/setting-up-xchacha-cipher-parametersweekly0.5https://www.ory.sh/kratos/docs/next/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/next/guides/tracingweekly0.5https://www.ory.sh/kratos/docs/next/guides/upgradeweekly0.5https://www.ory.sh/kratos/docs/next/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/next/installweekly0.5https://www.ory.sh/kratos/docs/next/milestonesweekly0.5https://www.ory.sh/kratos/docs/next/quickstartweekly0.5https://www.ory.sh/kratos/docs/next/reference/apiweekly0.5https://www.ory.sh/kratos/docs/next/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/next/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/next/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/next/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/next/sdkweekly0.5https://www.ory.sh/kratos/docs/next/self-serviceweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/account-recoveryweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/user-loginweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/user-registrationweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/next/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/next/self-service/hooksweekly0.5https://www.ory.sh/kratos/docs/next/two-factor-authentication-2fa-mfaweekly0.5https://www.ory.sh/kratos/docs/v0.1/weekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/identity-user-modelweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.1/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.1/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.1/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.1/installweekly0.5https://www.ory.sh/kratos/docs/v0.1/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.1/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.1/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.1/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.1/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.1/sdk/apiweekly0.5https://www.ory.sh/kratos/docs/v0.1/sdk/indexweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/indexweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/password-reset-account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-profile-managementweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/strategies/indexweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/strategies/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/strategies/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/workflows/jobs/afterweekly0.5https://www.ory.sh/kratos/docs/v0.1/self-service/workflows/jobs/beforeweekly0.5https://www.ory.sh/kratos/docs/v0.2/weekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/identity-user-modelweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/selfservice-flow-completionweekly0.5https://www.ory.sh/kratos/docs/v0.2/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.2/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/v0.2/fallback/verifyweekly0.5https://www.ory.sh/kratos/docs/v0.2/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.2/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.2/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/v0.2/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/v0.2/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/v0.2/installweekly0.5https://www.ory.sh/kratos/docs/v0.2/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.2/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.2/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.2/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.2/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.2/sdk/apiweekly0.5https://www.ory.sh/kratos/docs/v0.2/sdk/indexweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/indexweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/password-reset-account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-settings-profile-managementweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/hooks/indexweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/indexweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/strategies/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/strategies/user-settings-profileweekly0.5https://www.ory.sh/kratos/docs/v0.2/self-service/strategies/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.3/weekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/identity-user-modelweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/selfservice-flow-completionweekly0.5https://www.ory.sh/kratos/docs/v0.3/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.3/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/v0.3/fallback/verifyweekly0.5https://www.ory.sh/kratos/docs/v0.3/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.3/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.3/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/v0.3/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/v0.3/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/v0.3/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/v0.3/installweekly0.5https://www.ory.sh/kratos/docs/v0.3/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.3/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.3/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.3/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.3/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.3/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.3/sdkweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-serviceweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/password-reset-account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-login-user-registration/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings/change-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings/link-unlink-openid-connect-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings/user-profile-managementweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.3/self-service/hooks/indexweekly0.5https://www.ory.sh/kratos/docs/v0.4/weekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/identity-user-modelweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.4/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.4/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/v0.4/fallback/verificationweekly0.5https://www.ory.sh/kratos/docs/v0.4/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.4/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/account-activation-email-verificationweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/account-recovery-password-resetweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/kratos-video-tutorialsweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/productionweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/security-questions-best-practiceweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/v0.4/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/v0.4/installweekly0.5https://www.ory.sh/kratos/docs/v0.4/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.4/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.4/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.4/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.4/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.4/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.4/sdkweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-serviceweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/account-recovery/password-reset-recovery-linkweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-login-user-registration/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings/change-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings/link-unlink-openid-connect-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings/user-profile-managementweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.4/self-service/hooks/indexweekly0.5https://www.ory.sh/kratos/docs/v0.5/weekly0.5https://www.ory.sh/kratos/docs/v0.5/admin/managing-users-identitiesweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratosweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-hashersweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-hashers-argon2weekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identitiesweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-deleteweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-getweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-importweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-listweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-patchweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-putweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-validateweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-jsonnet-formatweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-jsonnet-lintweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-migrateweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-migrate-sqlweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-remoteweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-remote-statusweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-remote-versionweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-serveweekly0.5https://www.ory.sh/kratos/docs/v0.5/cli/kratos-versionweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/identity-data-modelweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/rest-apiweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/terminologyweekly0.5https://www.ory.sh/kratos/docs/v0.5/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.5/configuringweekly0.5https://www.ory.sh/kratos/docs/v0.5/contributingweekly0.5https://www.ory.sh/kratos/docs/v0.5/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/v0.5/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/v0.5/fallback/verificationweekly0.5https://www.ory.sh/kratos/docs/v0.5/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.5/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.5/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/account-activation-email-verificationweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/account-recovery-password-resetweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/configuring-cookiesweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/dockerweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/e2e-integration-testsweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/login-sessionweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/multi-domain-cookiesweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/productionweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/secret-key-rotationweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/security-questions-best-practiceweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/setting-up-corsweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/v0.5/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/v0.5/installweekly0.5https://www.ory.sh/kratos/docs/v0.5/milestonesweekly0.5https://www.ory.sh/kratos/docs/v0.5/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.5/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.5/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.5/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.5/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.5/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.5/sdkweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-serviceweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-loginweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.5/self-service/hooksweekly0.5https://www.ory.sh/kratos/docs/v0.6/weekly0.5https://www.ory.sh/kratos/docs/v0.6/admin/managing-users-identitiesweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratosweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-courierweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-courier-watchweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashersweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2weekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identitiesweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-deleteweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-getweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-importweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-listweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-patchweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-putweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-validateweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-jsonnet-formatweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-jsonnet-lintweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-migrateweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-migrate-sqlweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-remoteweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-remote-statusweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-remote-versionweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-serveweekly0.5https://www.ory.sh/kratos/docs/v0.6/cli/kratos-versionweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/authenticators/look-up-secretsweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/dockerweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/identity-data-modelweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/rest-apiweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/terminologyweekly0.5https://www.ory.sh/kratos/docs/v0.6/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.6/configuringweekly0.5https://www.ory.sh/kratos/docs/v0.6/contributingweekly0.5https://www.ory.sh/kratos/docs/v0.6/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/v0.6/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/v0.6/fallback/verificationweekly0.5https://www.ory.sh/kratos/docs/v0.6/faqweekly0.5https://www.ory.sh/kratos/docs/v0.6/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.6/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.6/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/account-activation-email-verificationweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/account-recovery-password-resetweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/configuring-cookiesweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/dockerweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/e2e-integration-testsweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/login-sessionweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/multi-domain-cookiesweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/productionweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/secret-key-rotationweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/security-questions-best-practiceweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/setting-up-corsweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/v0.6/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/v0.6/installweekly0.5https://www.ory.sh/kratos/docs/v0.6/milestonesweekly0.5https://www.ory.sh/kratos/docs/v0.6/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.6/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.6/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.6/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.6/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.6/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.6/sdkweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-serviceweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-loginweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.6/self-service/hooksweekly0.5https://www.ory.sh/kratos/docs/v0.7/weekly0.5https://www.ory.sh/kratos/docs/v0.7/admin/managing-users-identitiesweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratosweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-courierweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-courier-watchweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashersweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2weekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identitiesweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-deleteweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-getweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-importweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-listweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-patchweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-putweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-validateweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-jsonnet-formatweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-jsonnet-lintweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-migrateweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-migrate-sqlweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-remoteweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-remote-statusweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-remote-versionweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-serveweekly0.5https://www.ory.sh/kratos/docs/v0.7/cli/kratos-versionweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/authenticators/look-up-secretsweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/dockerweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/identity-schemaweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/rest-apiweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/terminologyweekly0.5https://www.ory.sh/kratos/docs/v0.7/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/v0.7/configuringweekly0.5https://www.ory.sh/kratos/docs/v0.7/contributingweekly0.5https://www.ory.sh/kratos/docs/v0.7/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/v0.7/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/v0.7/fallback/verificationweekly0.5https://www.ory.sh/kratos/docs/v0.7/faqweekly0.5https://www.ory.sh/kratos/docs/v0.7/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/v0.7/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/v0.7/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/account-activation-email-verificationweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/account-recovery-password-resetweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/configuring-cookiesweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/dockerweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/e2e-integration-testsweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/https-tlsweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/login-sessionweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/multi-domain-cookiesweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/productionweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/secret-key-rotationweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/security-questions-best-practiceweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/setting-up-corsweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/tracingweekly0.5https://www.ory.sh/kratos/docs/v0.7/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/v0.7/installweekly0.5https://www.ory.sh/kratos/docs/v0.7/milestonesweekly0.5https://www.ory.sh/kratos/docs/v0.7/quickstartweekly0.5https://www.ory.sh/kratos/docs/v0.7/reference/apiweekly0.5https://www.ory.sh/kratos/docs/v0.7/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/v0.7/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/v0.7/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/v0.7/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/v0.7/sdkweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-serviceweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/account-recoveryweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-loginweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-registrationweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/v0.7/self-service/hooksweekly0.5https://www.ory.sh/kratos/docs/weekly0.5https://www.ory.sh/kratos/docs/admin/managing-users-identitiesweekly0.5https://www.ory.sh/kratos/docs/cli/kratosweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-courierweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-courier-watchweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-hashersweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2weekly0.5https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identitiesweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-deleteweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-getweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-importweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-listweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-patchweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-putweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-identities-validateweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-jsonnetweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-jsonnet-formatweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-jsonnet-lintweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-migrateweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-migrate-sqlweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-remoteweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-remote-statusweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-remote-versionweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-serveweekly0.5https://www.ory.sh/kratos/docs/cli/kratos-versionweekly0.5https://www.ory.sh/kratos/docs/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.sh/kratos/docs/concepts/credentialsweekly0.5https://www.ory.sh/kratos/docs/concepts/credentials/lookup-secretsweekly0.5https://www.ory.sh/kratos/docs/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.sh/kratos/docs/concepts/credentials/totpweekly0.5https://www.ory.sh/kratos/docs/concepts/credentials/username-email-passwordweekly0.5https://www.ory.sh/kratos/docs/concepts/credentials/webauthnweekly0.5https://www.ory.sh/kratos/docs/concepts/dockerweekly0.5https://www.ory.sh/kratos/docs/concepts/email-smsweekly0.5https://www.ory.sh/kratos/docs/concepts/federationweekly0.5https://www.ory.sh/kratos/docs/concepts/identity-schemaweekly0.5https://www.ory.sh/kratos/docs/concepts/indexweekly0.5https://www.ory.sh/kratos/docs/concepts/management-uiweekly0.5https://www.ory.sh/kratos/docs/concepts/rest-apiweekly0.5https://www.ory.sh/kratos/docs/concepts/securing-applicationsweekly0.5https://www.ory.sh/kratos/docs/concepts/securityweekly0.5https://www.ory.sh/kratos/docs/concepts/sessionweekly0.5https://www.ory.sh/kratos/docs/concepts/terminologyweekly0.5https://www.ory.sh/kratos/docs/concepts/ui-user-interfaceweekly0.5https://www.ory.sh/kratos/docs/configuringweekly0.5https://www.ory.sh/kratos/docs/contributingweekly0.5https://www.ory.sh/kratos/docs/debug/csrfweekly0.5https://www.ory.sh/kratos/docs/debug/debug-docker-delve-ory-kratosweekly0.5https://www.ory.sh/kratos/docs/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.sh/kratos/docs/fallback/default_return_toweekly0.5https://www.ory.sh/kratos/docs/fallback/errorweekly0.5https://www.ory.sh/kratos/docs/fallback/loginweekly0.5https://www.ory.sh/kratos/docs/fallback/mfaweekly0.5https://www.ory.sh/kratos/docs/fallback/recoveryweekly0.5https://www.ory.sh/kratos/docs/fallback/registrationweekly0.5https://www.ory.sh/kratos/docs/fallback/settingsweekly0.5https://www.ory.sh/kratos/docs/fallback/verificationweekly0.5https://www.ory.sh/kratos/docs/faqweekly0.5https://www.ory.sh/kratos/docs/further-reading/comparisonweekly0.5https://www.ory.sh/kratos/docs/further-reading/contribweekly0.5https://www.ory.sh/kratos/docs/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.sh/kratos/docs/guides/account-activation-email-verificationweekly0.5https://www.ory.sh/kratos/docs/guides/account-recovery-password-resetweekly0.5https://www.ory.sh/kratos/docs/guides/configuring-cookiesweekly0.5https://www.ory.sh/kratos/docs/guides/custom-uiweekly0.5https://www.ory.sh/kratos/docs/guides/dockerweekly0.5https://www.ory.sh/kratos/docs/guides/e2e-integration-testsweekly0.5https://www.ory.sh/kratos/docs/guides/high-availability-haweekly0.5https://www.ory.sh/kratos/docs/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.sh/kratos/docs/guides/https-tlsweekly0.5https://www.ory.sh/kratos/docs/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.sh/kratos/docs/guides/login-sessionweekly0.5https://www.ory.sh/kratos/docs/guides/multi-domain-cookiesweekly0.5https://www.ory.sh/kratos/docs/guides/multi-tenancy-multitenantweekly0.5https://www.ory.sh/kratos/docs/guides/productionweekly0.5https://www.ory.sh/kratos/docs/guides/retrieve-social-sign-in-access-refresh-id-tokenweekly0.5https://www.ory.sh/kratos/docs/guides/secret-key-rotationweekly0.5https://www.ory.sh/kratos/docs/guides/security-questions-best-practiceweekly0.5https://www.ory.sh/kratos/docs/guides/setting-up-aes-cipher-parametersweekly0.5https://www.ory.sh/kratos/docs/guides/setting-up-corsweekly0.5https://www.ory.sh/kratos/docs/guides/setting-up-noop-cipher-parametersweekly0.5https://www.ory.sh/kratos/docs/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.sh/kratos/docs/guides/setting-up-xchacha-cipher-parametersweekly0.5https://www.ory.sh/kratos/docs/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.sh/kratos/docs/guides/tracingweekly0.5https://www.ory.sh/kratos/docs/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.sh/kratos/docs/installweekly0.5https://www.ory.sh/kratos/docs/milestonesweekly0.5https://www.ory.sh/kratos/docs/quickstartweekly0.5https://www.ory.sh/kratos/docs/reference/apiweekly0.5https://www.ory.sh/kratos/docs/reference/configurationweekly0.5https://www.ory.sh/kratos/docs/reference/html-formsweekly0.5https://www.ory.sh/kratos/docs/reference/json-schema-json-pathsweekly0.5https://www.ory.sh/kratos/docs/reference/jsonnetweekly0.5https://www.ory.sh/kratos/docs/sdkweekly0.5https://www.ory.sh/kratos/docs/self-serviceweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/account-recoveryweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/user-facing-errorsweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/user-loginweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/user-logoutweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/user-registrationweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/user-settingsweekly0.5https://www.ory.sh/kratos/docs/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.sh/kratos/docs/self-service/hooksweekly0.5https://www.ory.sh/kratos/docs/two-factor-authentication-2fa-mfaweekly0.5 \ No newline at end of file +https://www.ory.com/kratos/docs/http-apiweekly0.5https://www.ory.com/kratos/docs/searchweekly0.5https://www.ory.com/kratos/docs/versionsweekly0.5https://www.ory.com/kratos/docs/next/weekly0.5https://www.ory.com/kratos/docs/next/admin/managing-users-identitiesweekly0.5https://www.ory.com/kratos/docs/next/cli/kratosweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-courierweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-courier-watchweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-hashersweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2weekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identitiesweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-deleteweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-getweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-importweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-listweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-patchweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-putweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-identities-validateweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-jsonnetweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-jsonnet-formatweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-jsonnet-lintweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-migrateweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-migrate-sqlweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-remoteweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-remote-statusweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-remote-versionweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-serveweekly0.5https://www.ory.com/kratos/docs/next/cli/kratos-versionweekly0.5https://www.ory.com/kratos/docs/next/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.com/kratos/docs/next/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/next/concepts/credentials/lookup-secretsweekly0.5https://www.ory.com/kratos/docs/next/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/next/concepts/credentials/totpweekly0.5https://www.ory.com/kratos/docs/next/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/next/concepts/credentials/webauthnweekly0.5https://www.ory.com/kratos/docs/next/concepts/dockerweekly0.5https://www.ory.com/kratos/docs/next/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/next/concepts/federationweekly0.5https://www.ory.com/kratos/docs/next/concepts/identity-schemaweekly0.5https://www.ory.com/kratos/docs/next/concepts/indexweekly0.5https://www.ory.com/kratos/docs/next/concepts/management-uiweekly0.5https://www.ory.com/kratos/docs/next/concepts/rest-apiweekly0.5https://www.ory.com/kratos/docs/next/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/next/concepts/securityweekly0.5https://www.ory.com/kratos/docs/next/concepts/sessionweekly0.5https://www.ory.com/kratos/docs/next/concepts/terminologyweekly0.5https://www.ory.com/kratos/docs/next/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/next/configuringweekly0.5https://www.ory.com/kratos/docs/next/contributingweekly0.5https://www.ory.com/kratos/docs/next/debug/csrfweekly0.5https://www.ory.com/kratos/docs/next/debug/debug-docker-delve-ory-kratosweekly0.5https://www.ory.com/kratos/docs/next/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.com/kratos/docs/next/debug/troubleshootingweekly0.5https://www.ory.com/kratos/docs/next/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/next/fallback/errorweekly0.5https://www.ory.com/kratos/docs/next/fallback/loginweekly0.5https://www.ory.com/kratos/docs/next/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/next/fallback/recoveryweekly0.5https://www.ory.com/kratos/docs/next/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/next/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/next/fallback/verificationweekly0.5https://www.ory.com/kratos/docs/next/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/next/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/next/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.com/kratos/docs/next/guides/account-activation-email-verificationweekly0.5https://www.ory.com/kratos/docs/next/guides/account-recovery-password-resetweekly0.5https://www.ory.com/kratos/docs/next/guides/configuring-cookiesweekly0.5https://www.ory.com/kratos/docs/next/guides/custom-uiweekly0.5https://www.ory.com/kratos/docs/next/guides/dockerweekly0.5https://www.ory.com/kratos/docs/next/guides/e2e-integration-testsweekly0.5https://www.ory.com/kratos/docs/next/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/next/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.com/kratos/docs/next/guides/https-tlsweekly0.5https://www.ory.com/kratos/docs/next/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.com/kratos/docs/next/guides/login-sessionweekly0.5https://www.ory.com/kratos/docs/next/guides/multi-domain-cookiesweekly0.5https://www.ory.com/kratos/docs/next/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/next/guides/password-policyweekly0.5https://www.ory.com/kratos/docs/next/guides/productionweekly0.5https://www.ory.com/kratos/docs/next/guides/retrieve-social-sign-in-access-refresh-id-tokenweekly0.5https://www.ory.com/kratos/docs/next/guides/secret-key-rotationweekly0.5https://www.ory.com/kratos/docs/next/guides/security-questions-best-practiceweekly0.5https://www.ory.com/kratos/docs/next/guides/setting-up-aes-cipher-parametersweekly0.5https://www.ory.com/kratos/docs/next/guides/setting-up-corsweekly0.5https://www.ory.com/kratos/docs/next/guides/setting-up-noop-cipher-parametersweekly0.5https://www.ory.com/kratos/docs/next/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.com/kratos/docs/next/guides/setting-up-xchacha-cipher-parametersweekly0.5https://www.ory.com/kratos/docs/next/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/next/guides/tracingweekly0.5https://www.ory.com/kratos/docs/next/guides/upgradeweekly0.5https://www.ory.com/kratos/docs/next/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/next/installweekly0.5https://www.ory.com/kratos/docs/next/milestonesweekly0.5https://www.ory.com/kratos/docs/next/quickstartweekly0.5https://www.ory.com/kratos/docs/next/reference/apiweekly0.5https://www.ory.com/kratos/docs/next/reference/configurationweekly0.5https://www.ory.com/kratos/docs/next/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/next/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/next/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/next/sdkweekly0.5https://www.ory.com/kratos/docs/next/self-serviceweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/account-recoveryweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/user-loginweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/user-registrationweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/next/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/next/self-service/hooksweekly0.5https://www.ory.com/kratos/docs/next/two-factor-authentication-2fa-mfaweekly0.5https://www.ory.com/kratos/docs/v0.1/weekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/identity-user-modelweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.1/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.1/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.1/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.1/installweekly0.5https://www.ory.com/kratos/docs/v0.1/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.1/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.1/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.1/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.1/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.1/sdk/apiweekly0.5https://www.ory.com/kratos/docs/v0.1/sdk/indexweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/indexweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/password-reset-account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-profile-managementweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/strategies/indexweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/strategies/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/strategies/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/workflows/jobs/afterweekly0.5https://www.ory.com/kratos/docs/v0.1/self-service/workflows/jobs/beforeweekly0.5https://www.ory.com/kratos/docs/v0.2/weekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/identity-user-modelweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/selfservice-flow-completionweekly0.5https://www.ory.com/kratos/docs/v0.2/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.2/debug/csrfweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/errorweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/loginweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/v0.2/fallback/verifyweekly0.5https://www.ory.com/kratos/docs/v0.2/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.2/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.2/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/v0.2/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/v0.2/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/v0.2/installweekly0.5https://www.ory.com/kratos/docs/v0.2/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.2/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.2/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.2/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.2/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.2/sdk/apiweekly0.5https://www.ory.com/kratos/docs/v0.2/sdk/indexweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/indexweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/password-reset-account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-settings-profile-managementweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/hooks/indexweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/indexweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/strategies/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/strategies/user-settings-profileweekly0.5https://www.ory.com/kratos/docs/v0.2/self-service/strategies/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.3/weekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/identity-user-modelweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/selfservice-flow-completionweekly0.5https://www.ory.com/kratos/docs/v0.3/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.3/debug/csrfweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/errorweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/loginweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/v0.3/fallback/verifyweekly0.5https://www.ory.com/kratos/docs/v0.3/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.3/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.3/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/v0.3/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/v0.3/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/v0.3/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/v0.3/installweekly0.5https://www.ory.com/kratos/docs/v0.3/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.3/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.3/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.3/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.3/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.3/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.3/sdkweekly0.5https://www.ory.com/kratos/docs/v0.3/self-serviceweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/password-reset-account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-login-user-registration/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings/change-passwordweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings/link-unlink-openid-connect-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings/user-profile-managementweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.3/self-service/hooks/indexweekly0.5https://www.ory.com/kratos/docs/v0.4/weekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/identity-user-modelweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.4/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.4/debug/csrfweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/errorweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/loginweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/recoveryweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/v0.4/fallback/verificationweekly0.5https://www.ory.com/kratos/docs/v0.4/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.4/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/account-activation-email-verificationweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/account-recovery-password-resetweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/kratos-video-tutorialsweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/productionweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/security-questions-best-practiceweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/v0.4/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/v0.4/installweekly0.5https://www.ory.com/kratos/docs/v0.4/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.4/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.4/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.4/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.4/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.4/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.4/sdkweekly0.5https://www.ory.com/kratos/docs/v0.4/self-serviceweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/account-recovery/password-reset-recovery-linkweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-login-user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-login-user-registration/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings/change-passwordweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings/link-unlink-openid-connect-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings/user-profile-managementweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.4/self-service/hooks/indexweekly0.5https://www.ory.com/kratos/docs/v0.5/weekly0.5https://www.ory.com/kratos/docs/v0.5/admin/managing-users-identitiesweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratosweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-hashersweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-hashers-argon2weekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identitiesweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-deleteweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-getweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-importweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-listweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-patchweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-putweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-validateweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-jsonnet-formatweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-jsonnet-lintweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-migrateweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-migrate-sqlweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-remoteweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-remote-statusweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-remote-versionweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-serveweekly0.5https://www.ory.com/kratos/docs/v0.5/cli/kratos-versionweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/identity-data-modelweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/rest-apiweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/terminologyweekly0.5https://www.ory.com/kratos/docs/v0.5/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.5/configuringweekly0.5https://www.ory.com/kratos/docs/v0.5/contributingweekly0.5https://www.ory.com/kratos/docs/v0.5/debug/csrfweekly0.5https://www.ory.com/kratos/docs/v0.5/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/errorweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/loginweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/recoveryweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/v0.5/fallback/verificationweekly0.5https://www.ory.com/kratos/docs/v0.5/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.5/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.5/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/account-activation-email-verificationweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/account-recovery-password-resetweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/configuring-cookiesweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/dockerweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/e2e-integration-testsweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/login-sessionweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/multi-domain-cookiesweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/productionweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/secret-key-rotationweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/security-questions-best-practiceweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/setting-up-corsweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/v0.5/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/v0.5/installweekly0.5https://www.ory.com/kratos/docs/v0.5/milestonesweekly0.5https://www.ory.com/kratos/docs/v0.5/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.5/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.5/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.5/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.5/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.5/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.5/sdkweekly0.5https://www.ory.com/kratos/docs/v0.5/self-serviceweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-loginweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.5/self-service/hooksweekly0.5https://www.ory.com/kratos/docs/v0.6/weekly0.5https://www.ory.com/kratos/docs/v0.6/admin/managing-users-identitiesweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratosweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-courierweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-courier-watchweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashersweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2weekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identitiesweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-deleteweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-getweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-importweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-listweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-patchweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-putweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-validateweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-jsonnet-formatweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-jsonnet-lintweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-migrateweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-migrate-sqlweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-remoteweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-remote-statusweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-remote-versionweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-serveweekly0.5https://www.ory.com/kratos/docs/v0.6/cli/kratos-versionweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/authenticators/look-up-secretsweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/dockerweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/identity-data-modelweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/rest-apiweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/terminologyweekly0.5https://www.ory.com/kratos/docs/v0.6/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.6/configuringweekly0.5https://www.ory.com/kratos/docs/v0.6/contributingweekly0.5https://www.ory.com/kratos/docs/v0.6/debug/csrfweekly0.5https://www.ory.com/kratos/docs/v0.6/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/errorweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/loginweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/recoveryweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/v0.6/fallback/verificationweekly0.5https://www.ory.com/kratos/docs/v0.6/faqweekly0.5https://www.ory.com/kratos/docs/v0.6/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.6/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.6/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/account-activation-email-verificationweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/account-recovery-password-resetweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/configuring-cookiesweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/dockerweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/e2e-integration-testsweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/login-sessionweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/multi-domain-cookiesweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/productionweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/secret-key-rotationweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/security-questions-best-practiceweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/setting-up-corsweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/v0.6/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/v0.6/installweekly0.5https://www.ory.com/kratos/docs/v0.6/milestonesweekly0.5https://www.ory.com/kratos/docs/v0.6/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.6/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.6/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.6/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.6/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.6/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.6/sdkweekly0.5https://www.ory.com/kratos/docs/v0.6/self-serviceweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-loginweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.6/self-service/hooksweekly0.5https://www.ory.com/kratos/docs/v0.7/weekly0.5https://www.ory.com/kratos/docs/v0.7/admin/managing-users-identitiesweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratosweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-courierweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-courier-watchweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashersweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2weekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identitiesweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-deleteweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-getweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-importweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-listweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-patchweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-putweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-validateweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-jsonnet-formatweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-jsonnet-lintweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-migrateweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-migrate-sqlweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-remoteweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-remote-statusweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-remote-versionweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-serveweekly0.5https://www.ory.com/kratos/docs/v0.7/cli/kratos-versionweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/authenticators/look-up-secretsweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/dockerweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/federationweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/identity-schemaweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/indexweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/rest-apiweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/securityweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/terminologyweekly0.5https://www.ory.com/kratos/docs/v0.7/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/v0.7/configuringweekly0.5https://www.ory.com/kratos/docs/v0.7/contributingweekly0.5https://www.ory.com/kratos/docs/v0.7/debug/csrfweekly0.5https://www.ory.com/kratos/docs/v0.7/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/errorweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/loginweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/recoveryweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/v0.7/fallback/verificationweekly0.5https://www.ory.com/kratos/docs/v0.7/faqweekly0.5https://www.ory.com/kratos/docs/v0.7/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/v0.7/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/v0.7/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/account-activation-email-verificationweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/account-recovery-password-resetweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/configuring-cookiesweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/dockerweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/e2e-integration-testsweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/https-tlsweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/login-sessionweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/multi-domain-cookiesweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/productionweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/secret-key-rotationweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/security-questions-best-practiceweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/setting-up-corsweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/tracingweekly0.5https://www.ory.com/kratos/docs/v0.7/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/v0.7/installweekly0.5https://www.ory.com/kratos/docs/v0.7/milestonesweekly0.5https://www.ory.com/kratos/docs/v0.7/quickstartweekly0.5https://www.ory.com/kratos/docs/v0.7/reference/apiweekly0.5https://www.ory.com/kratos/docs/v0.7/reference/configurationweekly0.5https://www.ory.com/kratos/docs/v0.7/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/v0.7/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/v0.7/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/v0.7/sdkweekly0.5https://www.ory.com/kratos/docs/v0.7/self-serviceweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/account-recoveryweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-loginweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-registrationweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/v0.7/self-service/hooksweekly0.5https://www.ory.com/kratos/docs/weekly0.5https://www.ory.com/kratos/docs/admin/managing-users-identitiesweekly0.5https://www.ory.com/kratos/docs/cli/kratosweekly0.5https://www.ory.com/kratos/docs/cli/kratos-courierweekly0.5https://www.ory.com/kratos/docs/cli/kratos-courier-watchweekly0.5https://www.ory.com/kratos/docs/cli/kratos-hashersweekly0.5https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2weekly0.5https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2-calibrateweekly0.5https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2-hashweekly0.5https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2-load-testweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identitiesweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-deleteweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-getweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-importweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-listweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-patchweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-putweekly0.5https://www.ory.com/kratos/docs/cli/kratos-identities-validateweekly0.5https://www.ory.com/kratos/docs/cli/kratos-jsonnetweekly0.5https://www.ory.com/kratos/docs/cli/kratos-jsonnet-formatweekly0.5https://www.ory.com/kratos/docs/cli/kratos-jsonnet-lintweekly0.5https://www.ory.com/kratos/docs/cli/kratos-migrateweekly0.5https://www.ory.com/kratos/docs/cli/kratos-migrate-sqlweekly0.5https://www.ory.com/kratos/docs/cli/kratos-remoteweekly0.5https://www.ory.com/kratos/docs/cli/kratos-remote-statusweekly0.5https://www.ory.com/kratos/docs/cli/kratos-remote-versionweekly0.5https://www.ory.com/kratos/docs/cli/kratos-serveweekly0.5https://www.ory.com/kratos/docs/cli/kratos-versionweekly0.5https://www.ory.com/kratos/docs/concepts/browser-redirect-flow-completionweekly0.5https://www.ory.com/kratos/docs/concepts/credentialsweekly0.5https://www.ory.com/kratos/docs/concepts/credentials/lookup-secretsweekly0.5https://www.ory.com/kratos/docs/concepts/credentials/openid-connect-oidc-oauth2weekly0.5https://www.ory.com/kratos/docs/concepts/credentials/totpweekly0.5https://www.ory.com/kratos/docs/concepts/credentials/username-email-passwordweekly0.5https://www.ory.com/kratos/docs/concepts/credentials/webauthnweekly0.5https://www.ory.com/kratos/docs/concepts/dockerweekly0.5https://www.ory.com/kratos/docs/concepts/email-smsweekly0.5https://www.ory.com/kratos/docs/concepts/federationweekly0.5https://www.ory.com/kratos/docs/concepts/identity-schemaweekly0.5https://www.ory.com/kratos/docs/concepts/indexweekly0.5https://www.ory.com/kratos/docs/concepts/management-uiweekly0.5https://www.ory.com/kratos/docs/concepts/rest-apiweekly0.5https://www.ory.com/kratos/docs/concepts/securing-applicationsweekly0.5https://www.ory.com/kratos/docs/concepts/securityweekly0.5https://www.ory.com/kratos/docs/concepts/sessionweekly0.5https://www.ory.com/kratos/docs/concepts/terminologyweekly0.5https://www.ory.com/kratos/docs/concepts/ui-user-interfaceweekly0.5https://www.ory.com/kratos/docs/configuringweekly0.5https://www.ory.com/kratos/docs/contributingweekly0.5https://www.ory.com/kratos/docs/debug/csrfweekly0.5https://www.ory.com/kratos/docs/debug/debug-docker-delve-ory-kratosweekly0.5https://www.ory.com/kratos/docs/debug/performance-out-of-memory-password-hashing-argon2weekly0.5https://www.ory.com/kratos/docs/fallback/default_return_toweekly0.5https://www.ory.com/kratos/docs/fallback/errorweekly0.5https://www.ory.com/kratos/docs/fallback/loginweekly0.5https://www.ory.com/kratos/docs/fallback/mfaweekly0.5https://www.ory.com/kratos/docs/fallback/recoveryweekly0.5https://www.ory.com/kratos/docs/fallback/registrationweekly0.5https://www.ory.com/kratos/docs/fallback/settingsweekly0.5https://www.ory.com/kratos/docs/fallback/verificationweekly0.5https://www.ory.com/kratos/docs/faqweekly0.5https://www.ory.com/kratos/docs/further-reading/comparisonweekly0.5https://www.ory.com/kratos/docs/further-reading/contribweekly0.5https://www.ory.com/kratos/docs/further-reading/kratos-video-tutorialsweekly0.5https://www.ory.com/kratos/docs/guides/account-activation-email-verificationweekly0.5https://www.ory.com/kratos/docs/guides/account-recovery-password-resetweekly0.5https://www.ory.com/kratos/docs/guides/configuring-cookiesweekly0.5https://www.ory.com/kratos/docs/guides/custom-uiweekly0.5https://www.ory.com/kratos/docs/guides/dockerweekly0.5https://www.ory.com/kratos/docs/guides/e2e-integration-testsweekly0.5https://www.ory.com/kratos/docs/guides/high-availability-haweekly0.5https://www.ory.com/kratos/docs/guides/hosting-own-have-i-been-pwned-apiweekly0.5https://www.ory.com/kratos/docs/guides/https-tlsweekly0.5https://www.ory.com/kratos/docs/guides/integration-with-other-systems-using-web-hooksweekly0.5https://www.ory.com/kratos/docs/guides/login-sessionweekly0.5https://www.ory.com/kratos/docs/guides/multi-domain-cookiesweekly0.5https://www.ory.com/kratos/docs/guides/multi-tenancy-multitenantweekly0.5https://www.ory.com/kratos/docs/guides/productionweekly0.5https://www.ory.com/kratos/docs/guides/retrieve-social-sign-in-access-refresh-id-tokenweekly0.5https://www.ory.com/kratos/docs/guides/secret-key-rotationweekly0.5https://www.ory.com/kratos/docs/guides/security-questions-best-practiceweekly0.5https://www.ory.com/kratos/docs/guides/setting-up-aes-cipher-parametersweekly0.5https://www.ory.com/kratos/docs/guides/setting-up-corsweekly0.5https://www.ory.com/kratos/docs/guides/setting-up-noop-cipher-parametersweekly0.5https://www.ory.com/kratos/docs/guides/setting-up-password-hashing-parametersweekly0.5https://www.ory.com/kratos/docs/guides/setting-up-xchacha-cipher-parametersweekly0.5https://www.ory.com/kratos/docs/guides/sign-in-with-github-google-facebook-linkedinweekly0.5https://www.ory.com/kratos/docs/guides/tracingweekly0.5https://www.ory.com/kratos/docs/guides/zero-trust-iap-proxy-identity-access-proxyweekly0.5https://www.ory.com/kratos/docs/installweekly0.5https://www.ory.com/kratos/docs/milestonesweekly0.5https://www.ory.com/kratos/docs/quickstartweekly0.5https://www.ory.com/kratos/docs/reference/apiweekly0.5https://www.ory.com/kratos/docs/reference/configurationweekly0.5https://www.ory.com/kratos/docs/reference/html-formsweekly0.5https://www.ory.com/kratos/docs/reference/json-schema-json-pathsweekly0.5https://www.ory.com/kratos/docs/reference/jsonnetweekly0.5https://www.ory.com/kratos/docs/sdkweekly0.5https://www.ory.com/kratos/docs/self-serviceweekly0.5https://www.ory.com/kratos/docs/self-service/flows/2fa-mfa-multi-factor-authenticationweekly0.5https://www.ory.com/kratos/docs/self-service/flows/account-recoveryweekly0.5https://www.ory.com/kratos/docs/self-service/flows/user-facing-errorsweekly0.5https://www.ory.com/kratos/docs/self-service/flows/user-loginweekly0.5https://www.ory.com/kratos/docs/self-service/flows/user-logoutweekly0.5https://www.ory.com/kratos/docs/self-service/flows/user-registrationweekly0.5https://www.ory.com/kratos/docs/self-service/flows/user-settingsweekly0.5https://www.ory.com/kratos/docs/self-service/flows/verify-email-account-activationweekly0.5https://www.ory.com/kratos/docs/self-service/hooksweekly0.5https://www.ory.com/kratos/docs/two-factor-authentication-2fa-mfaweekly0.5 \ No newline at end of file diff --git a/src/sitemaps/sitemap_oathkeeper.xml b/src/sitemaps/sitemap_oathkeeper.xml index 7d56ba2ea5..f701045aa7 100644 --- a/src/sitemaps/sitemap_oathkeeper.xml +++ b/src/sitemaps/sitemap_oathkeeper.xml @@ -1 +1 @@ -https://www.ory.sh/oathkeeper/docs/http-apiweekly0.5https://www.ory.sh/oathkeeper/docs/searchweekly0.5https://www.ory.sh/oathkeeper/docs/versionsweekly0.5https://www.ory.sh/oathkeeper/docs/next/weekly0.5https://www.ory.sh/oathkeeper/docs/next/api-access-rulesweekly0.5https://www.ory.sh/oathkeeper/docs/next/changelogweekly0.5https://www.ory.sh/oathkeeper/docs/next/configure-deployweekly0.5https://www.ory.sh/oathkeeper/docs/next/contributingweekly0.5https://www.ory.sh/oathkeeper/docs/next/installweekly0.5https://www.ory.sh/oathkeeper/docs/next/milestonesweekly0.5https://www.ory.sh/oathkeeper/docs/next/oauth2-token-introspection-hydraweekly0.5https://www.ory.sh/oathkeeper/docs/next/pipelineweekly0.5https://www.ory.sh/oathkeeper/docs/next/pipeline/authnweekly0.5https://www.ory.sh/oathkeeper/docs/next/pipeline/authzweekly0.5https://www.ory.sh/oathkeeper/docs/next/pipeline/errorweekly0.5https://www.ory.sh/oathkeeper/docs/next/pipeline/mutatorweekly0.5https://www.ory.sh/oathkeeper/docs/next/reference/apiweekly0.5https://www.ory.sh/oathkeeper/docs/next/reference/configurationweekly0.5https://www.ory.sh/oathkeeper/docs/next/sdkweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/weekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/api-access-rulesweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/configure-deployweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/installweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/authnweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/authzweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/errorweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/indexweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/mutatorweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/reference/apiweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/reference/configurationweekly0.5https://www.ory.sh/oathkeeper/docs/v0.37/sdk/indexweekly0.5https://www.ory.sh/oathkeeper/docs/weekly0.5https://www.ory.sh/oathkeeper/docs/api-access-rulesweekly0.5https://www.ory.sh/oathkeeper/docs/changelogweekly0.5https://www.ory.sh/oathkeeper/docs/configure-deployweekly0.5https://www.ory.sh/oathkeeper/docs/contributingweekly0.5https://www.ory.sh/oathkeeper/docs/installweekly0.5https://www.ory.sh/oathkeeper/docs/milestonesweekly0.5https://www.ory.sh/oathkeeper/docs/oauth2-token-introspection-hydraweekly0.5https://www.ory.sh/oathkeeper/docs/pipelineweekly0.5https://www.ory.sh/oathkeeper/docs/pipeline/authnweekly0.5https://www.ory.sh/oathkeeper/docs/pipeline/authzweekly0.5https://www.ory.sh/oathkeeper/docs/pipeline/errorweekly0.5https://www.ory.sh/oathkeeper/docs/pipeline/mutatorweekly0.5https://www.ory.sh/oathkeeper/docs/reference/apiweekly0.5https://www.ory.sh/oathkeeper/docs/reference/configurationweekly0.5https://www.ory.sh/oathkeeper/docs/sdkweekly0.5 \ No newline at end of file +https://www.ory.com/oathkeeper/docs/http-apiweekly0.5https://www.ory.com/oathkeeper/docs/searchweekly0.5https://www.ory.com/oathkeeper/docs/versionsweekly0.5https://www.ory.com/oathkeeper/docs/next/weekly0.5https://www.ory.com/oathkeeper/docs/next/api-access-rulesweekly0.5https://www.ory.com/oathkeeper/docs/next/changelogweekly0.5https://www.ory.com/oathkeeper/docs/next/configure-deployweekly0.5https://www.ory.com/oathkeeper/docs/next/contributingweekly0.5https://www.ory.com/oathkeeper/docs/next/installweekly0.5https://www.ory.com/oathkeeper/docs/next/milestonesweekly0.5https://www.ory.com/oathkeeper/docs/next/oauth2-token-introspection-hydraweekly0.5https://www.ory.com/oathkeeper/docs/next/pipelineweekly0.5https://www.ory.com/oathkeeper/docs/next/pipeline/authnweekly0.5https://www.ory.com/oathkeeper/docs/next/pipeline/authzweekly0.5https://www.ory.com/oathkeeper/docs/next/pipeline/errorweekly0.5https://www.ory.com/oathkeeper/docs/next/pipeline/mutatorweekly0.5https://www.ory.com/oathkeeper/docs/next/reference/apiweekly0.5https://www.ory.com/oathkeeper/docs/next/reference/configurationweekly0.5https://www.ory.com/oathkeeper/docs/next/sdkweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/weekly0.5https://www.ory.com/oathkeeper/docs/v0.37/api-access-rulesweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/configure-deployweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/installweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/pipeline/authnweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/pipeline/authzweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/pipeline/errorweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/pipeline/indexweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/pipeline/mutatorweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/reference/apiweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/reference/configurationweekly0.5https://www.ory.com/oathkeeper/docs/v0.37/sdk/indexweekly0.5https://www.ory.com/oathkeeper/docs/weekly0.5https://www.ory.com/oathkeeper/docs/api-access-rulesweekly0.5https://www.ory.com/oathkeeper/docs/changelogweekly0.5https://www.ory.com/oathkeeper/docs/configure-deployweekly0.5https://www.ory.com/oathkeeper/docs/contributingweekly0.5https://www.ory.com/oathkeeper/docs/installweekly0.5https://www.ory.com/oathkeeper/docs/milestonesweekly0.5https://www.ory.com/oathkeeper/docs/oauth2-token-introspection-hydraweekly0.5https://www.ory.com/oathkeeper/docs/pipelineweekly0.5https://www.ory.com/oathkeeper/docs/pipeline/authnweekly0.5https://www.ory.com/oathkeeper/docs/pipeline/authzweekly0.5https://www.ory.com/oathkeeper/docs/pipeline/errorweekly0.5https://www.ory.com/oathkeeper/docs/pipeline/mutatorweekly0.5https://www.ory.com/oathkeeper/docs/reference/apiweekly0.5https://www.ory.com/oathkeeper/docs/reference/configurationweekly0.5https://www.ory.com/oathkeeper/docs/sdkweekly0.5 \ No newline at end of file diff --git a/src/static/img/logo-elements.svg b/src/static/img/logo-elements.svg new file mode 100644 index 0000000000..e3a3cb7d65 --- /dev/null +++ b/src/static/img/logo-elements.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/static/img/logo-hydra.svg b/src/static/img/logo-hydra.svg index 82bf2d98fc..32fa0df9bb 100644 --- a/src/static/img/logo-hydra.svg +++ b/src/static/img/logo-hydra.svg @@ -1,9 +1,7 @@ - - - - - - - - + + + + + + diff --git a/src/static/img/logo-keto.svg b/src/static/img/logo-keto.svg index c9fba861ff..7bbc67cbc4 100644 --- a/src/static/img/logo-keto.svg +++ b/src/static/img/logo-keto.svg @@ -1,9 +1,8 @@ - - - - - - - - + + + + + + + diff --git a/src/static/img/logo-kratos.svg b/src/static/img/logo-kratos.svg index 4cad5182bb..d169f0b945 100644 --- a/src/static/img/logo-kratos.svg +++ b/src/static/img/logo-kratos.svg @@ -1,9 +1,7 @@ - - - - - - - - + + + + + + diff --git a/src/theme/CodeFromRemote.tsx b/src/theme/CodeFromRemote.tsx index 50594873c5..835e8e60a9 100644 --- a/src/theme/CodeFromRemote.tsx +++ b/src/theme/CodeFromRemote.tsx @@ -6,8 +6,7 @@ import fetch from "node-fetch" import React, { useEffect, useState } from "react" import styles from "./CodeFromRemote.module.css" -const detectLanguage = (src) => { - const ext = src.split(".").pop() +const detectLanguage = (ext) => { switch (ext) { case "jsx": return "jsx" @@ -85,6 +84,7 @@ const CodeFromRemote = (props: { startAt?: string endAt?: string showLink?: boolean + lang: string }) => { const { src, title, contentOverride } = props const [content, setContent] = useState(contentOverride || "") @@ -111,7 +111,7 @@ const CodeFromRemote = (props: { .catch(console.error) }, [contentOverride, src]) - const lang = `language-${detectLanguage(src)}` + const lang = `language-${detectLanguage(props.lang || src.split(".").pop())}` return (
diff --git a/src/theme/Mermaid.js b/src/theme/Mermaid.js index 9cc750fb9b..4ec9157486 100644 --- a/src/theme/Mermaid.js +++ b/src/theme/Mermaid.js @@ -38,6 +38,12 @@ mermaid.initialize({ useMaxWidth: true, }, }) +mermaid.registerIconPacks([ + { + name: "tabler", + loader: () => import("@iconify-json/tabler").then((module) => module.icons), + }, +]) const Mermaid = ({ chart }) => { const [zoomed, setZoomed] = useState(false) diff --git a/tests/jest/redirects/utils.ts b/tests/jest/redirects/utils.ts index 767259c554..b9851ecafc 100644 --- a/tests/jest/redirects/utils.ts +++ b/tests/jest/redirects/utils.ts @@ -18,7 +18,7 @@ if (!process.env.TEST_HOST) { throw new Error("TEST_HOST env variable is not set") } -export const oldAddress = "https://www.ory.sh/" +export const oldAddress = "https://www.ory.com/" export const newAddress = process.env.TEST_HOST.replace(/\/$/, "") + "/" export type Sitemap = { @@ -74,17 +74,17 @@ export const getLoc: GetLoc = async ( } const ignoreUrls = [ - "https://www.ory.sh/docs/search", - "https://www.ory.sh/oathkeeper/docs/search", - "https://www.ory.sh/keto/docs/search", - "https://www.ory.sh/kratos/docs/search", - "https://www.ory.sh/keto/docs/search", - "https://www.ory.sh/kratos/docs/v0.1", - "https://www.ory.sh/kratos/docs/v0.2", - "https://www.ory.sh/kratos/docs/v0.3", - "https://www.ory.sh/kratos/docs/v0.4", - "https://www.ory.sh/kratos/docs/v0.6/concepts/authenticators/look-up-secrets", - "https://www.ory.sh/kratos/docs/v0.7/concepts/authenticators/look-up-secrets", + "https://www.ory.com/docs/search", + "https://www.ory.com/oathkeeper/docs/search", + "https://www.ory.com/keto/docs/search", + "https://www.ory.com/kratos/docs/search", + "https://www.ory.com/keto/docs/search", + "https://www.ory.com/kratos/docs/v0.1", + "https://www.ory.com/kratos/docs/v0.2", + "https://www.ory.com/kratos/docs/v0.3", + "https://www.ory.com/kratos/docs/v0.4", + "https://www.ory.com/kratos/docs/v0.6/concepts/authenticators/look-up-secrets", + "https://www.ory.com/kratos/docs/v0.7/concepts/authenticators/look-up-secrets", ] export const readSitemapXML = (filename: string) => diff --git a/tests/jest/sitemaps/sitemap_docs.xml b/tests/jest/sitemaps/sitemap_docs.xml index 837c1382e3..b52fa56dd9 100644 --- a/tests/jest/sitemaps/sitemap_docs.xml +++ b/tests/jest/sitemaps/sitemap_docs.xml @@ -3,302 +3,302 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> - https://www.ory.sh/docs/http-api + https://www.ory.com/docs/http-api weekly 0.5 - https://www.ory.sh/docs/search + https://www.ory.com/docs/search weekly 0.5 - https://www.ory.sh/docs/versions + https://www.ory.com/docs/versions weekly 0.5 - https://www.ory.sh/docs/ + https://www.ory.com/docs/ weekly 0.5 - https://www.ory.sh/docs/cli + https://www.ory.com/docs/cli weekly 0.5 - https://www.ory.sh/docs/cli/ory + https://www.ory.com/docs/cli/ory weekly 0.5 - https://www.ory.sh/docs/cli/ory-identities + https://www.ory.com/docs/cli/ory-identities weekly 0.5 - https://www.ory.sh/docs/cli/ory-identities-delete + https://www.ory.com/docs/cli/ory-identities-delete weekly 0.5 - https://www.ory.sh/docs/cli/ory-identities-get + https://www.ory.com/docs/cli/ory-identities-get weekly 0.5 - https://www.ory.sh/docs/cli/ory-identities-list + https://www.ory.com/docs/cli/ory-identities-list weekly 0.5 - https://www.ory.sh/docs/cli/ory-proxy + https://www.ory.com/docs/cli/ory-proxy weekly 0.5 - https://www.ory.sh/docs/cli/ory-version + https://www.ory.com/docs/cli/ory-version weekly 0.5 - https://www.ory.sh/docs/cloud/cloud-roadmap + https://www.ory.com/docs/cloud/cloud-roadmap weekly 0.5 - https://www.ory.sh/docs/cloud/developer + https://www.ory.com/docs/cloud/developer weekly 0.5 - https://www.ory.sh/docs/concepts/emails + https://www.ory.com/docs/concepts/emails weekly 0.5 - https://www.ory.sh/docs/concepts/identity + https://www.ory.com/docs/concepts/identity weekly 0.5 - https://www.ory.sh/docs/concepts/managed-ui + https://www.ory.com/docs/concepts/managed-ui weekly 0.5 - https://www.ory.sh/docs/concepts/password-policy + https://www.ory.com/docs/concepts/password-policy weekly 0.5 - https://www.ory.sh/docs/concepts/personal-access-token + https://www.ory.com/docs/concepts/personal-access-token weekly 0.5 - https://www.ory.sh/docs/concepts/project + https://www.ory.com/docs/concepts/project weekly 0.5 - https://www.ory.sh/docs/concepts/project-invite-membership + https://www.ory.com/docs/concepts/project-invite-membership weekly 0.5 - https://www.ory.sh/docs/concepts/redirects + https://www.ory.com/docs/concepts/redirects weekly 0.5 - https://www.ory.sh/docs/concepts/self-service + https://www.ory.com/docs/concepts/self-service weekly 0.5 - https://www.ory.sh/docs/concepts/services-api + https://www.ory.com/docs/concepts/services-api weekly 0.5 - https://www.ory.sh/docs/concepts/session + https://www.ory.com/docs/concepts/session weekly 0.5 - https://www.ory.sh/docs/concepts/social-sign-in + https://www.ory.com/docs/concepts/social-sign-in weekly 0.5 - https://www.ory.sh/docs/concepts/terminology + https://www.ory.com/docs/concepts/terminology weekly 0.5 - https://www.ory.sh/docs/debug/smtp-courier-1 + https://www.ory.com/docs/debug/smtp-courier-1 weekly 0.5 - https://www.ory.sh/docs/ecosystem/api-design + https://www.ory.com/docs/ecosystem/api-design weekly 0.5 - https://www.ory.sh/docs/ecosystem/community + https://www.ory.com/docs/ecosystem/community weekly 0.5 - https://www.ory.sh/docs/ecosystem/configuring + https://www.ory.com/docs/ecosystem/configuring weekly 0.5 - https://www.ory.sh/docs/ecosystem/contributing + https://www.ory.com/docs/ecosystem/contributing weekly 0.5 - https://www.ory.sh/docs/ecosystem/deployment + https://www.ory.com/docs/ecosystem/deployment weekly 0.5 - https://www.ory.sh/docs/ecosystem/logging + https://www.ory.com/docs/ecosystem/logging weekly 0.5 - https://www.ory.sh/docs/ecosystem/persistence + https://www.ory.com/docs/ecosystem/persistence weekly 0.5 - https://www.ory.sh/docs/ecosystem/projects + https://www.ory.com/docs/ecosystem/projects weekly 0.5 - https://www.ory.sh/docs/ecosystem/roadmap + https://www.ory.com/docs/ecosystem/roadmap weekly 0.5 - https://www.ory.sh/docs/ecosystem/security + https://www.ory.com/docs/ecosystem/security weekly 0.5 - https://www.ory.sh/docs/ecosystem/software-architecture-philosophy + https://www.ory.com/docs/ecosystem/software-architecture-philosophy weekly 0.5 - https://www.ory.sh/docs/ecosystem/sqa + https://www.ory.com/docs/ecosystem/sqa weekly 0.5 - https://www.ory.sh/docs/ecosystem/upgrading + https://www.ory.com/docs/ecosystem/upgrading weekly 0.5 - https://www.ory.sh/docs/ecosystem/versioning + https://www.ory.com/docs/ecosystem/versioning weekly 0.5 - https://www.ory.sh/docs/get-started + https://www.ory.com/docs/get-started weekly 0.5 - https://www.ory.sh/docs/guides/bring-your-user-interface + https://www.ory.com/docs/guides/bring-your-user-interface weekly 0.5 - https://www.ory.sh/docs/guides/create-personal-access-token + https://www.ory.com/docs/guides/create-personal-access-token weekly 0.5 - https://www.ory.sh/docs/guides/custom-domains + https://www.ory.com/docs/guides/custom-domains weekly 0.5 - https://www.ory.sh/docs/guides/customize-identity-schema + https://www.ory.com/docs/guides/customize-identity-schema weekly 0.5 - https://www.ory.sh/docs/guides/integrate-golang + https://www.ory.com/docs/guides/integrate-golang weekly 0.5 - https://www.ory.sh/docs/guides/proxy + https://www.ory.com/docs/guides/proxy weekly 0.5 - https://www.ory.sh/docs/open-source + https://www.ory.com/docs/open-source weekly 0.5 - https://www.ory.sh/docs/reference/api + https://www.ory.com/docs/reference/api weekly 0.5 - https://www.ory.sh/docs/sdk + https://www.ory.com/docs/sdk weekly 0.5 - https://www.ory.sh/docs/start-building + https://www.ory.com/docs/start-building weekly 0.5 - https://www.ory.sh/docs/start-building/create-project + https://www.ory.com/docs/start-building/create-project weekly 0.5 - https://www.ory.sh/docs/start-building/deploy-auth-production + https://www.ory.com/docs/start-building/deploy-auth-production weekly 0.5 - https://www.ory.sh/docs/start-building/native-mobile-app + https://www.ory.com/docs/start-building/native-mobile-app weekly 0.5 - https://www.ory.sh/docs/start-building/ory-cli-install-use + https://www.ory.com/docs/start-building/ory-cli-install-use weekly 0.5 - https://www.ory.sh/docs/start-building/other-languages + https://www.ory.com/docs/start-building/other-languages weekly 0.5 - https://www.ory.sh/docs/start-building/server-side-web-app + https://www.ory.com/docs/start-building/server-side-web-app weekly 0.5 - https://www.ory.sh/docs/start-building/single-page-app-spa + https://www.ory.com/docs/start-building/single-page-app-spa weekly 0.5 diff --git a/tests/jest/sitemaps/sitemap_hydra.xml b/tests/jest/sitemaps/sitemap_hydra.xml index 9ba506e8e4..e143a1fdbe 100644 --- a/tests/jest/sitemaps/sitemap_hydra.xml +++ b/tests/jest/sitemaps/sitemap_hydra.xml @@ -3,2427 +3,2427 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> - https://www.ory.sh/hydra/docs/http-api + https://www.ory.com/hydra/docs/http-api weekly 0.5 - https://www.ory.sh/hydra/docs/search + https://www.ory.com/hydra/docs/search weekly 0.5 - https://www.ory.sh/hydra/docs/versions + https://www.ory.com/hydra/docs/versions weekly 0.5 - https://www.ory.sh/hydra/docs/next/ + https://www.ory.com/hydra/docs/next/ weekly 0.5 - https://www.ory.sh/hydra/docs/next/5min-tutorial + https://www.ory.com/hydra/docs/next/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/next/advanced + https://www.ory.com/hydra/docs/next/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/next/benchmark + https://www.ory.com/hydra/docs/next/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/next/case-study + https://www.ory.com/hydra/docs/next/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra + https://www.ory.com/hydra/docs/next/cli/hydra weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients + https://www.ory.com/hydra/docs/next/cli/hydra-clients weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients-create + https://www.ory.com/hydra/docs/next/cli/hydra-clients-create weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients-delete + https://www.ory.com/hydra/docs/next/cli/hydra-clients-delete weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients-get + https://www.ory.com/hydra/docs/next/cli/hydra-clients-get weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients-import + https://www.ory.com/hydra/docs/next/cli/hydra-clients-import weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients-list + https://www.ory.com/hydra/docs/next/cli/hydra-clients-list weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-clients-update + https://www.ory.com/hydra/docs/next/cli/hydra-clients-update weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-janitor + https://www.ory.com/hydra/docs/next/cli/hydra-janitor weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-keys + https://www.ory.com/hydra/docs/next/cli/hydra-keys weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-keys-create + https://www.ory.com/hydra/docs/next/cli/hydra-keys-create weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-keys-delete + https://www.ory.com/hydra/docs/next/cli/hydra-keys-delete weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-keys-get + https://www.ory.com/hydra/docs/next/cli/hydra-keys-get weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-keys-import + https://www.ory.com/hydra/docs/next/cli/hydra-keys-import weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-migrate + https://www.ory.com/hydra/docs/next/cli/hydra-migrate weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-migrate-sql + https://www.ory.com/hydra/docs/next/cli/hydra-migrate-sql weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-serve + https://www.ory.com/hydra/docs/next/cli/hydra-serve weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-serve-admin + https://www.ory.com/hydra/docs/next/cli/hydra-serve-admin weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-serve-all + https://www.ory.com/hydra/docs/next/cli/hydra-serve-all weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-serve-public + https://www.ory.com/hydra/docs/next/cli/hydra-serve-public weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token + https://www.ory.com/hydra/docs/next/cli/hydra-token weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token-client + https://www.ory.com/hydra/docs/next/cli/hydra-token-client weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token-delete + https://www.ory.com/hydra/docs/next/cli/hydra-token-delete weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token-flush + https://www.ory.com/hydra/docs/next/cli/hydra-token-flush weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token-introspect + https://www.ory.com/hydra/docs/next/cli/hydra-token-introspect weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token-revoke + https://www.ory.com/hydra/docs/next/cli/hydra-token-revoke weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-token-user + https://www.ory.com/hydra/docs/next/cli/hydra-token-user weekly 0.5 - https://www.ory.sh/hydra/docs/next/cli/hydra-version + https://www.ory.com/hydra/docs/next/cli/hydra-version weekly 0.5 - https://www.ory.sh/hydra/docs/next/concepts/before-oauth2 + https://www.ory.com/hydra/docs/next/concepts/before-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/next/concepts/consent + https://www.ory.com/hydra/docs/next/concepts/consent weekly 0.5 - https://www.ory.sh/hydra/docs/next/concepts/login + https://www.ory.com/hydra/docs/next/concepts/login weekly 0.5 - https://www.ory.sh/hydra/docs/next/concepts/logout + https://www.ory.com/hydra/docs/next/concepts/logout weekly 0.5 - https://www.ory.sh/hydra/docs/next/concepts/oauth2 + https://www.ory.com/hydra/docs/next/concepts/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/next/concepts/openid-connect-oidc + https://www.ory.com/hydra/docs/next/concepts/openid-connect-oidc weekly 0.5 - https://www.ory.sh/hydra/docs/next/configure-deploy + https://www.ory.com/hydra/docs/next/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/next/contributing + https://www.ory.com/hydra/docs/next/contributing weekly 0.5 - https://www.ory.sh/hydra/docs/next/debug + https://www.ory.com/hydra/docs/next/debug weekly 0.5 - https://www.ory.sh/hydra/docs/next/debug/config + https://www.ory.com/hydra/docs/next/debug/config weekly 0.5 - https://www.ory.sh/hydra/docs/next/debug/csrf + https://www.ory.com/hydra/docs/next/debug/csrf weekly 0.5 - https://www.ory.sh/hydra/docs/next/debug/logout + https://www.ory.com/hydra/docs/next/debug/logout weekly 0.5 - https://www.ory.sh/hydra/docs/next/debug/token-endpoint-auth-method + https://www.ory.com/hydra/docs/next/debug/token-endpoint-auth-method weekly 0.5 - https://www.ory.sh/hydra/docs/next/dependencies-environment + https://www.ory.com/hydra/docs/next/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/next/faq + https://www.ory.com/hydra/docs/next/faq weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/common-oauth2-openid-connect-flows + https://www.ory.com/hydra/docs/next/guides/common-oauth2-openid-connect-flows weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/consent + https://www.ory.com/hydra/docs/next/guides/consent weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/cookies + https://www.ory.com/hydra/docs/next/guides/cookies weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/cors + https://www.ory.com/hydra/docs/next/guides/cors weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/gitlab + https://www.ory.com/hydra/docs/next/guides/gitlab weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/hsm-support + https://www.ory.com/hydra/docs/next/guides/hsm-support weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/kubernetes-helm-chart + https://www.ory.com/hydra/docs/next/guides/kubernetes-helm-chart weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/login + https://www.ory.com/hydra/docs/next/guides/login weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/logout + https://www.ory.com/hydra/docs/next/guides/logout weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/merge-multiple-db-secrets + https://www.ory.com/hydra/docs/next/guides/merge-multiple-db-secrets weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/migrating-from-mitreid + https://www.ory.com/hydra/docs/next/guides/migrating-from-mitreid weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/oauth2-clients + https://www.ory.com/hydra/docs/next/guides/oauth2-clients weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/oauth2-grant-type-jwt-bearer + https://www.ory.com/hydra/docs/next/guides/oauth2-grant-type-jwt-bearer weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/oauth2-public-spa-mobile + https://www.ory.com/hydra/docs/next/guides/oauth2-public-spa-mobile weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/oauth2-token-introspection + https://www.ory.com/hydra/docs/next/guides/oauth2-token-introspection weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/openid-connect-dynamic-client-registration + https://www.ory.com/hydra/docs/next/guides/openid-connect-dynamic-client-registration weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/scaling-hydra + https://www.ory.com/hydra/docs/next/guides/scaling-hydra weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/secrets-key-rotation + https://www.ory.com/hydra/docs/next/guides/secrets-key-rotation weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/ssl-https-tls + https://www.ory.com/hydra/docs/next/guides/ssl-https-tls weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/token-expiration + https://www.ory.com/hydra/docs/next/guides/token-expiration weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/tracing + https://www.ory.com/hydra/docs/next/guides/tracing weekly 0.5 - https://www.ory.sh/hydra/docs/next/guides/using-oauth2 + https://www.ory.com/hydra/docs/next/guides/using-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/next/install + https://www.ory.com/hydra/docs/next/install weekly 0.5 - https://www.ory.sh/hydra/docs/next/jwks + https://www.ory.com/hydra/docs/next/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/next/limitations + https://www.ory.com/hydra/docs/next/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/next/login-consent-flow + https://www.ory.com/hydra/docs/next/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/next/milestones + https://www.ory.com/hydra/docs/next/milestones weekly 0.5 - https://www.ory.sh/hydra/docs/next/production + https://www.ory.com/hydra/docs/next/production weekly 0.5 - https://www.ory.sh/hydra/docs/next/reference/api + https://www.ory.com/hydra/docs/next/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/next/reference/configuration + https://www.ory.com/hydra/docs/next/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/next/sdk + https://www.ory.com/hydra/docs/next/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/next/sdk/go + https://www.ory.com/hydra/docs/next/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/next/sdk/js + https://www.ory.com/hydra/docs/next/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/next/sdk/php + https://www.ory.com/hydra/docs/next/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/next/security-architecture + https://www.ory.com/hydra/docs/next/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/ + https://www.ory.com/hydra/docs/v1.4/ weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/5min-tutorial + https://www.ory.com/hydra/docs/v1.4/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/advanced + https://www.ory.com/hydra/docs/v1.4/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/benchmark + https://www.ory.com/hydra/docs/v1.4/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/case-study + https://www.ory.com/hydra/docs/v1.4/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/configure-deploy + https://www.ory.com/hydra/docs/v1.4/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/debugging + https://www.ory.com/hydra/docs/v1.4/debugging weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/dependencies-environment + https://www.ory.com/hydra/docs/v1.4/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/faq + https://www.ory.com/hydra/docs/v1.4/faq weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/implementing-consent + https://www.ory.com/hydra/docs/v1.4/implementing-consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/install + https://www.ory.com/hydra/docs/v1.4/install weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/integration + https://www.ory.com/hydra/docs/v1.4/integration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/jwks + https://www.ory.com/hydra/docs/v1.4/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/limitations + https://www.ory.com/hydra/docs/v1.4/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/login-consent-flow + https://www.ory.com/hydra/docs/v1.4/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/oauth2 + https://www.ory.com/hydra/docs/v1.4/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/production + https://www.ory.com/hydra/docs/v1.4/production weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/reference/api + https://www.ory.com/hydra/docs/v1.4/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/reference/configuration + https://www.ory.com/hydra/docs/v1.4/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/sdk/go + https://www.ory.com/hydra/docs/v1.4/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/sdk/index + https://www.ory.com/hydra/docs/v1.4/sdk/index weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/sdk/js + https://www.ory.com/hydra/docs/v1.4/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/sdk/php + https://www.ory.com/hydra/docs/v1.4/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/v1.4/security-architecture + https://www.ory.com/hydra/docs/v1.4/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/ + https://www.ory.com/hydra/docs/v1.5/ weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/5min-tutorial + https://www.ory.com/hydra/docs/v1.5/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/advanced + https://www.ory.com/hydra/docs/v1.5/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/benchmark + https://www.ory.com/hydra/docs/v1.5/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/case-study + https://www.ory.com/hydra/docs/v1.5/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/configure-deploy + https://www.ory.com/hydra/docs/v1.5/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/debugging + https://www.ory.com/hydra/docs/v1.5/debugging weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/dependencies-environment + https://www.ory.com/hydra/docs/v1.5/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/faq + https://www.ory.com/hydra/docs/v1.5/faq weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/implementing-consent + https://www.ory.com/hydra/docs/v1.5/implementing-consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/install + https://www.ory.com/hydra/docs/v1.5/install weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/integration + https://www.ory.com/hydra/docs/v1.5/integration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/jwks + https://www.ory.com/hydra/docs/v1.5/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/limitations + https://www.ory.com/hydra/docs/v1.5/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/login-consent-flow + https://www.ory.com/hydra/docs/v1.5/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/oauth2 + https://www.ory.com/hydra/docs/v1.5/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/production + https://www.ory.com/hydra/docs/v1.5/production weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/reference/api + https://www.ory.com/hydra/docs/v1.5/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/reference/configuration + https://www.ory.com/hydra/docs/v1.5/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/sdk + https://www.ory.com/hydra/docs/v1.5/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/sdk/go + https://www.ory.com/hydra/docs/v1.5/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/sdk/js + https://www.ory.com/hydra/docs/v1.5/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/sdk/php + https://www.ory.com/hydra/docs/v1.5/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/v1.5/security-architecture + https://www.ory.com/hydra/docs/v1.5/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/ + https://www.ory.com/hydra/docs/v1.6/ weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/5min-tutorial + https://www.ory.com/hydra/docs/v1.6/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/advanced + https://www.ory.com/hydra/docs/v1.6/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/benchmark + https://www.ory.com/hydra/docs/v1.6/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/case-study + https://www.ory.com/hydra/docs/v1.6/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/concepts/consent + https://www.ory.com/hydra/docs/v1.6/concepts/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/concepts/login + https://www.ory.com/hydra/docs/v1.6/concepts/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/concepts/logout + https://www.ory.com/hydra/docs/v1.6/concepts/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/concepts/oauth2 + https://www.ory.com/hydra/docs/v1.6/concepts/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/concepts/openid-connect-oidc + https://www.ory.com/hydra/docs/v1.6/concepts/openid-connect-oidc weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/configure-deploy + https://www.ory.com/hydra/docs/v1.6/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/debug + https://www.ory.com/hydra/docs/v1.6/debug weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/debug/csrf + https://www.ory.com/hydra/docs/v1.6/debug/csrf weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/debug/logout + https://www.ory.com/hydra/docs/v1.6/debug/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/debug/token-endpoint-auth-method + https://www.ory.com/hydra/docs/v1.6/debug/token-endpoint-auth-method weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/dependencies-environment + https://www.ory.com/hydra/docs/v1.6/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/faq + https://www.ory.com/hydra/docs/v1.6/faq weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/common-oauth2-openid-connect-flows + https://www.ory.com/hydra/docs/v1.6/guides/common-oauth2-openid-connect-flows weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/consent + https://www.ory.com/hydra/docs/v1.6/guides/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/cookies + https://www.ory.com/hydra/docs/v1.6/guides/cookies weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/cors + https://www.ory.com/hydra/docs/v1.6/guides/cors weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/kubernetes-helm-chart + https://www.ory.com/hydra/docs/v1.6/guides/kubernetes-helm-chart weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/login + https://www.ory.com/hydra/docs/v1.6/guides/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/logout + https://www.ory.com/hydra/docs/v1.6/guides/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/oauth2-clients + https://www.ory.com/hydra/docs/v1.6/guides/oauth2-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/oauth2-public-spa-mobile + https://www.ory.com/hydra/docs/v1.6/guides/oauth2-public-spa-mobile weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/oauth2-token-introspection + https://www.ory.com/hydra/docs/v1.6/guides/oauth2-token-introspection weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/scaling-hydra + https://www.ory.com/hydra/docs/v1.6/guides/scaling-hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/secrets-key-rotation + https://www.ory.com/hydra/docs/v1.6/guides/secrets-key-rotation weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/ssl-https-tls + https://www.ory.com/hydra/docs/v1.6/guides/ssl-https-tls weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/tracing + https://www.ory.com/hydra/docs/v1.6/guides/tracing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/guides/using-oauth2 + https://www.ory.com/hydra/docs/v1.6/guides/using-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/install + https://www.ory.com/hydra/docs/v1.6/install weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/jwks + https://www.ory.com/hydra/docs/v1.6/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/limitations + https://www.ory.com/hydra/docs/v1.6/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/login-consent-flow + https://www.ory.com/hydra/docs/v1.6/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/production + https://www.ory.com/hydra/docs/v1.6/production weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/reference/api + https://www.ory.com/hydra/docs/v1.6/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/reference/configuration + https://www.ory.com/hydra/docs/v1.6/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/sdk + https://www.ory.com/hydra/docs/v1.6/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/sdk/go + https://www.ory.com/hydra/docs/v1.6/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/sdk/js + https://www.ory.com/hydra/docs/v1.6/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/sdk/php + https://www.ory.com/hydra/docs/v1.6/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/v1.6/security-architecture + https://www.ory.com/hydra/docs/v1.6/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/ + https://www.ory.com/hydra/docs/v1.7/ weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/5min-tutorial + https://www.ory.com/hydra/docs/v1.7/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/advanced + https://www.ory.com/hydra/docs/v1.7/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/benchmark + https://www.ory.com/hydra/docs/v1.7/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/case-study + https://www.ory.com/hydra/docs/v1.7/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra + https://www.ory.com/hydra/docs/v1.7/cli/hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients + https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-create + https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-create weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-delete + https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-get + https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-get weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-import + https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-import weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-clients-list + https://www.ory.com/hydra/docs/v1.7/cli/hydra-clients-list weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys + https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-create + https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-create weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-delete + https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-get + https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-get weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-keys-import + https://www.ory.com/hydra/docs/v1.7/cli/hydra-keys-import weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-migrate + https://www.ory.com/hydra/docs/v1.7/cli/hydra-migrate weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-migrate-sql + https://www.ory.com/hydra/docs/v1.7/cli/hydra-migrate-sql weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve + https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve-admin + https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve-admin weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve-all + https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve-all weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-serve-public + https://www.ory.com/hydra/docs/v1.7/cli/hydra-serve-public weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token + https://www.ory.com/hydra/docs/v1.7/cli/hydra-token weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-client + https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-client weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-flush + https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-flush weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-introspect + https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-introspect weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-revoke + https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-revoke weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-token-user + https://www.ory.com/hydra/docs/v1.7/cli/hydra-token-user weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/cli/hydra-version + https://www.ory.com/hydra/docs/v1.7/cli/hydra-version weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/concepts/before-oauth2 + https://www.ory.com/hydra/docs/v1.7/concepts/before-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/concepts/consent + https://www.ory.com/hydra/docs/v1.7/concepts/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/concepts/login + https://www.ory.com/hydra/docs/v1.7/concepts/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/concepts/logout + https://www.ory.com/hydra/docs/v1.7/concepts/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/concepts/oauth2 + https://www.ory.com/hydra/docs/v1.7/concepts/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/concepts/openid-connect-oidc + https://www.ory.com/hydra/docs/v1.7/concepts/openid-connect-oidc weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/configure-deploy + https://www.ory.com/hydra/docs/v1.7/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/contributing + https://www.ory.com/hydra/docs/v1.7/contributing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/debug + https://www.ory.com/hydra/docs/v1.7/debug weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/debug/csrf + https://www.ory.com/hydra/docs/v1.7/debug/csrf weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/debug/logout + https://www.ory.com/hydra/docs/v1.7/debug/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/debug/token-endpoint-auth-method + https://www.ory.com/hydra/docs/v1.7/debug/token-endpoint-auth-method weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/dependencies-environment + https://www.ory.com/hydra/docs/v1.7/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/faq + https://www.ory.com/hydra/docs/v1.7/faq weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/common-oauth2-openid-connect-flows + https://www.ory.com/hydra/docs/v1.7/guides/common-oauth2-openid-connect-flows weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/consent + https://www.ory.com/hydra/docs/v1.7/guides/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/cookies + https://www.ory.com/hydra/docs/v1.7/guides/cookies weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/cors + https://www.ory.com/hydra/docs/v1.7/guides/cors weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/kubernetes-helm-chart + https://www.ory.com/hydra/docs/v1.7/guides/kubernetes-helm-chart weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/login + https://www.ory.com/hydra/docs/v1.7/guides/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/logout + https://www.ory.com/hydra/docs/v1.7/guides/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/oauth2-clients + https://www.ory.com/hydra/docs/v1.7/guides/oauth2-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/oauth2-public-spa-mobile + https://www.ory.com/hydra/docs/v1.7/guides/oauth2-public-spa-mobile weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/oauth2-token-introspection + https://www.ory.com/hydra/docs/v1.7/guides/oauth2-token-introspection weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/scaling-hydra + https://www.ory.com/hydra/docs/v1.7/guides/scaling-hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/secrets-key-rotation + https://www.ory.com/hydra/docs/v1.7/guides/secrets-key-rotation weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/ssl-https-tls + https://www.ory.com/hydra/docs/v1.7/guides/ssl-https-tls weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/token-expiration + https://www.ory.com/hydra/docs/v1.7/guides/token-expiration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/tracing + https://www.ory.com/hydra/docs/v1.7/guides/tracing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/guides/using-oauth2 + https://www.ory.com/hydra/docs/v1.7/guides/using-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/install + https://www.ory.com/hydra/docs/v1.7/install weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/jwks + https://www.ory.com/hydra/docs/v1.7/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/limitations + https://www.ory.com/hydra/docs/v1.7/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/login-consent-flow + https://www.ory.com/hydra/docs/v1.7/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/milestones + https://www.ory.com/hydra/docs/v1.7/milestones weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/production + https://www.ory.com/hydra/docs/v1.7/production weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/reference/api + https://www.ory.com/hydra/docs/v1.7/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/reference/configuration + https://www.ory.com/hydra/docs/v1.7/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/sdk + https://www.ory.com/hydra/docs/v1.7/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/sdk/go + https://www.ory.com/hydra/docs/v1.7/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/sdk/js + https://www.ory.com/hydra/docs/v1.7/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/sdk/php + https://www.ory.com/hydra/docs/v1.7/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/v1.7/security-architecture + https://www.ory.com/hydra/docs/v1.7/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/ + https://www.ory.com/hydra/docs/v1.8/ weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/5min-tutorial + https://www.ory.com/hydra/docs/v1.8/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/advanced + https://www.ory.com/hydra/docs/v1.8/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/benchmark + https://www.ory.com/hydra/docs/v1.8/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/case-study + https://www.ory.com/hydra/docs/v1.8/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra + https://www.ory.com/hydra/docs/v1.8/cli/hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-create + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-create weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-delete + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-get + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-get weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-import + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-import weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-list + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-list weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-clients-update + https://www.ory.com/hydra/docs/v1.8/cli/hydra-clients-update weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys + https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-create + https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-create weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-delete + https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-get + https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-get weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-keys-import + https://www.ory.com/hydra/docs/v1.8/cli/hydra-keys-import weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-migrate + https://www.ory.com/hydra/docs/v1.8/cli/hydra-migrate weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-migrate-sql + https://www.ory.com/hydra/docs/v1.8/cli/hydra-migrate-sql weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve + https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve-admin + https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve-admin weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve-all + https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve-all weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-serve-public + https://www.ory.com/hydra/docs/v1.8/cli/hydra-serve-public weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-client + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-client weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-delete + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-flush + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-flush weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-introspect + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-introspect weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-revoke + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-revoke weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-token-user + https://www.ory.com/hydra/docs/v1.8/cli/hydra-token-user weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/cli/hydra-version + https://www.ory.com/hydra/docs/v1.8/cli/hydra-version weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/concepts/before-oauth2 + https://www.ory.com/hydra/docs/v1.8/concepts/before-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/concepts/consent + https://www.ory.com/hydra/docs/v1.8/concepts/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/concepts/login + https://www.ory.com/hydra/docs/v1.8/concepts/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/concepts/logout + https://www.ory.com/hydra/docs/v1.8/concepts/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/concepts/oauth2 + https://www.ory.com/hydra/docs/v1.8/concepts/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/concepts/openid-connect-oidc + https://www.ory.com/hydra/docs/v1.8/concepts/openid-connect-oidc weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/configure-deploy + https://www.ory.com/hydra/docs/v1.8/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/contributing + https://www.ory.com/hydra/docs/v1.8/contributing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/debug + https://www.ory.com/hydra/docs/v1.8/debug weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/debug/csrf + https://www.ory.com/hydra/docs/v1.8/debug/csrf weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/debug/logout + https://www.ory.com/hydra/docs/v1.8/debug/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/debug/token-endpoint-auth-method + https://www.ory.com/hydra/docs/v1.8/debug/token-endpoint-auth-method weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/dependencies-environment + https://www.ory.com/hydra/docs/v1.8/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/faq + https://www.ory.com/hydra/docs/v1.8/faq weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/common-oauth2-openid-connect-flows + https://www.ory.com/hydra/docs/v1.8/guides/common-oauth2-openid-connect-flows weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/consent + https://www.ory.com/hydra/docs/v1.8/guides/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/cookies + https://www.ory.com/hydra/docs/v1.8/guides/cookies weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/cors + https://www.ory.com/hydra/docs/v1.8/guides/cors weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/gitlab + https://www.ory.com/hydra/docs/v1.8/guides/gitlab weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/kubernetes-helm-chart + https://www.ory.com/hydra/docs/v1.8/guides/kubernetes-helm-chart weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/login + https://www.ory.com/hydra/docs/v1.8/guides/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/logout + https://www.ory.com/hydra/docs/v1.8/guides/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/oauth2-clients + https://www.ory.com/hydra/docs/v1.8/guides/oauth2-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/oauth2-public-spa-mobile + https://www.ory.com/hydra/docs/v1.8/guides/oauth2-public-spa-mobile weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/oauth2-token-introspection + https://www.ory.com/hydra/docs/v1.8/guides/oauth2-token-introspection weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/scaling-hydra + https://www.ory.com/hydra/docs/v1.8/guides/scaling-hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/secrets-key-rotation + https://www.ory.com/hydra/docs/v1.8/guides/secrets-key-rotation weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/ssl-https-tls + https://www.ory.com/hydra/docs/v1.8/guides/ssl-https-tls weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/token-expiration + https://www.ory.com/hydra/docs/v1.8/guides/token-expiration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/tracing + https://www.ory.com/hydra/docs/v1.8/guides/tracing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/guides/using-oauth2 + https://www.ory.com/hydra/docs/v1.8/guides/using-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/install + https://www.ory.com/hydra/docs/v1.8/install weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/jwks + https://www.ory.com/hydra/docs/v1.8/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/limitations + https://www.ory.com/hydra/docs/v1.8/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/login-consent-flow + https://www.ory.com/hydra/docs/v1.8/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/milestones + https://www.ory.com/hydra/docs/v1.8/milestones weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/production + https://www.ory.com/hydra/docs/v1.8/production weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/reference/api + https://www.ory.com/hydra/docs/v1.8/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/reference/configuration + https://www.ory.com/hydra/docs/v1.8/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/sdk + https://www.ory.com/hydra/docs/v1.8/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/sdk/go + https://www.ory.com/hydra/docs/v1.8/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/sdk/js + https://www.ory.com/hydra/docs/v1.8/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/sdk/php + https://www.ory.com/hydra/docs/v1.8/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/v1.8/security-architecture + https://www.ory.com/hydra/docs/v1.8/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/ + https://www.ory.com/hydra/docs/v1.9/ weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/5min-tutorial + https://www.ory.com/hydra/docs/v1.9/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/advanced + https://www.ory.com/hydra/docs/v1.9/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/benchmark + https://www.ory.com/hydra/docs/v1.9/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/case-study + https://www.ory.com/hydra/docs/v1.9/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra + https://www.ory.com/hydra/docs/v1.9/cli/hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-create + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-create weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-delete + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-get + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-get weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-import + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-import weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-list + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-list weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-clients-update + https://www.ory.com/hydra/docs/v1.9/cli/hydra-clients-update weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys + https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-create + https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-create weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-delete + https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-get + https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-get weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-keys-import + https://www.ory.com/hydra/docs/v1.9/cli/hydra-keys-import weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-migrate + https://www.ory.com/hydra/docs/v1.9/cli/hydra-migrate weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-migrate-sql + https://www.ory.com/hydra/docs/v1.9/cli/hydra-migrate-sql weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve + https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve-admin + https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve-admin weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve-all + https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve-all weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-serve-public + https://www.ory.com/hydra/docs/v1.9/cli/hydra-serve-public weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-client + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-client weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-delete + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-delete weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-flush + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-flush weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-introspect + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-introspect weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-revoke + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-revoke weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-token-user + https://www.ory.com/hydra/docs/v1.9/cli/hydra-token-user weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/cli/hydra-version + https://www.ory.com/hydra/docs/v1.9/cli/hydra-version weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/concepts/before-oauth2 + https://www.ory.com/hydra/docs/v1.9/concepts/before-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/concepts/consent + https://www.ory.com/hydra/docs/v1.9/concepts/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/concepts/login + https://www.ory.com/hydra/docs/v1.9/concepts/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/concepts/logout + https://www.ory.com/hydra/docs/v1.9/concepts/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/concepts/oauth2 + https://www.ory.com/hydra/docs/v1.9/concepts/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/concepts/openid-connect-oidc + https://www.ory.com/hydra/docs/v1.9/concepts/openid-connect-oidc weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/configure-deploy + https://www.ory.com/hydra/docs/v1.9/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/contributing + https://www.ory.com/hydra/docs/v1.9/contributing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/debug + https://www.ory.com/hydra/docs/v1.9/debug weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/debug/config + https://www.ory.com/hydra/docs/v1.9/debug/config weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/debug/csrf + https://www.ory.com/hydra/docs/v1.9/debug/csrf weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/debug/logout + https://www.ory.com/hydra/docs/v1.9/debug/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/debug/token-endpoint-auth-method + https://www.ory.com/hydra/docs/v1.9/debug/token-endpoint-auth-method weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/dependencies-environment + https://www.ory.com/hydra/docs/v1.9/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/faq + https://www.ory.com/hydra/docs/v1.9/faq weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/common-oauth2-openid-connect-flows + https://www.ory.com/hydra/docs/v1.9/guides/common-oauth2-openid-connect-flows weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/consent + https://www.ory.com/hydra/docs/v1.9/guides/consent weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/cookies + https://www.ory.com/hydra/docs/v1.9/guides/cookies weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/cors + https://www.ory.com/hydra/docs/v1.9/guides/cors weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/gitlab + https://www.ory.com/hydra/docs/v1.9/guides/gitlab weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/kubernetes-helm-chart + https://www.ory.com/hydra/docs/v1.9/guides/kubernetes-helm-chart weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/login + https://www.ory.com/hydra/docs/v1.9/guides/login weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/logout + https://www.ory.com/hydra/docs/v1.9/guides/logout weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/migrating-from-mitreid + https://www.ory.com/hydra/docs/v1.9/guides/migrating-from-mitreid weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/oauth2-clients + https://www.ory.com/hydra/docs/v1.9/guides/oauth2-clients weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/oauth2-public-spa-mobile + https://www.ory.com/hydra/docs/v1.9/guides/oauth2-public-spa-mobile weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/oauth2-token-introspection + https://www.ory.com/hydra/docs/v1.9/guides/oauth2-token-introspection weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/scaling-hydra + https://www.ory.com/hydra/docs/v1.9/guides/scaling-hydra weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/secrets-key-rotation + https://www.ory.com/hydra/docs/v1.9/guides/secrets-key-rotation weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/ssl-https-tls + https://www.ory.com/hydra/docs/v1.9/guides/ssl-https-tls weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/token-expiration + https://www.ory.com/hydra/docs/v1.9/guides/token-expiration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/tracing + https://www.ory.com/hydra/docs/v1.9/guides/tracing weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/guides/using-oauth2 + https://www.ory.com/hydra/docs/v1.9/guides/using-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/install + https://www.ory.com/hydra/docs/v1.9/install weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/jwks + https://www.ory.com/hydra/docs/v1.9/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/limitations + https://www.ory.com/hydra/docs/v1.9/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/login-consent-flow + https://www.ory.com/hydra/docs/v1.9/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/milestones + https://www.ory.com/hydra/docs/v1.9/milestones weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/production + https://www.ory.com/hydra/docs/v1.9/production weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/reference/api + https://www.ory.com/hydra/docs/v1.9/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/reference/configuration + https://www.ory.com/hydra/docs/v1.9/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/sdk + https://www.ory.com/hydra/docs/v1.9/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/sdk/go + https://www.ory.com/hydra/docs/v1.9/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/sdk/js + https://www.ory.com/hydra/docs/v1.9/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/sdk/php + https://www.ory.com/hydra/docs/v1.9/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/v1.9/security-architecture + https://www.ory.com/hydra/docs/v1.9/security-architecture weekly 0.5 - https://www.ory.sh/hydra/docs/ + https://www.ory.com/hydra/docs/ weekly 0.5 - https://www.ory.sh/hydra/docs/5min-tutorial + https://www.ory.com/hydra/docs/5min-tutorial weekly 0.5 - https://www.ory.sh/hydra/docs/advanced + https://www.ory.com/hydra/docs/advanced weekly 0.5 - https://www.ory.sh/hydra/docs/benchmark + https://www.ory.com/hydra/docs/benchmark weekly 0.5 - https://www.ory.sh/hydra/docs/case-study + https://www.ory.com/hydra/docs/case-study weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra + https://www.ory.com/hydra/docs/cli/hydra weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients + https://www.ory.com/hydra/docs/cli/hydra-clients weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients-create + https://www.ory.com/hydra/docs/cli/hydra-clients-create weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients-delete + https://www.ory.com/hydra/docs/cli/hydra-clients-delete weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients-get + https://www.ory.com/hydra/docs/cli/hydra-clients-get weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients-import + https://www.ory.com/hydra/docs/cli/hydra-clients-import weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients-list + https://www.ory.com/hydra/docs/cli/hydra-clients-list weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-clients-update + https://www.ory.com/hydra/docs/cli/hydra-clients-update weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-janitor + https://www.ory.com/hydra/docs/cli/hydra-janitor weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-keys + https://www.ory.com/hydra/docs/cli/hydra-keys weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-keys-create + https://www.ory.com/hydra/docs/cli/hydra-keys-create weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-keys-delete + https://www.ory.com/hydra/docs/cli/hydra-keys-delete weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-keys-get + https://www.ory.com/hydra/docs/cli/hydra-keys-get weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-keys-import + https://www.ory.com/hydra/docs/cli/hydra-keys-import weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-migrate + https://www.ory.com/hydra/docs/cli/hydra-migrate weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-migrate-sql + https://www.ory.com/hydra/docs/cli/hydra-migrate-sql weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-serve + https://www.ory.com/hydra/docs/cli/hydra-serve weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-serve-admin + https://www.ory.com/hydra/docs/cli/hydra-serve-admin weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-serve-all + https://www.ory.com/hydra/docs/cli/hydra-serve-all weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-serve-public + https://www.ory.com/hydra/docs/cli/hydra-serve-public weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token + https://www.ory.com/hydra/docs/cli/hydra-token weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token-client + https://www.ory.com/hydra/docs/cli/hydra-token-client weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token-delete + https://www.ory.com/hydra/docs/cli/hydra-token-delete weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token-flush + https://www.ory.com/hydra/docs/cli/hydra-token-flush weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token-introspect + https://www.ory.com/hydra/docs/cli/hydra-token-introspect weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token-revoke + https://www.ory.com/hydra/docs/cli/hydra-token-revoke weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-token-user + https://www.ory.com/hydra/docs/cli/hydra-token-user weekly 0.5 - https://www.ory.sh/hydra/docs/cli/hydra-version + https://www.ory.com/hydra/docs/cli/hydra-version weekly 0.5 - https://www.ory.sh/hydra/docs/concepts/before-oauth2 + https://www.ory.com/hydra/docs/concepts/before-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/concepts/consent + https://www.ory.com/hydra/docs/concepts/consent weekly 0.5 - https://www.ory.sh/hydra/docs/concepts/login + https://www.ory.com/hydra/docs/concepts/login weekly 0.5 - https://www.ory.sh/hydra/docs/concepts/logout + https://www.ory.com/hydra/docs/concepts/logout weekly 0.5 - https://www.ory.sh/hydra/docs/concepts/oauth2 + https://www.ory.com/hydra/docs/concepts/oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/concepts/openid-connect-oidc + https://www.ory.com/hydra/docs/concepts/openid-connect-oidc weekly 0.5 - https://www.ory.sh/hydra/docs/configure-deploy + https://www.ory.com/hydra/docs/configure-deploy weekly 0.5 - https://www.ory.sh/hydra/docs/contributing + https://www.ory.com/hydra/docs/contributing weekly 0.5 - https://www.ory.sh/hydra/docs/debug + https://www.ory.com/hydra/docs/debug weekly 0.5 - https://www.ory.sh/hydra/docs/debug/config + https://www.ory.com/hydra/docs/debug/config weekly 0.5 - https://www.ory.sh/hydra/docs/debug/csrf + https://www.ory.com/hydra/docs/debug/csrf weekly 0.5 - https://www.ory.sh/hydra/docs/debug/logout + https://www.ory.com/hydra/docs/debug/logout weekly 0.5 - https://www.ory.sh/hydra/docs/debug/token-endpoint-auth-method + https://www.ory.com/hydra/docs/debug/token-endpoint-auth-method weekly 0.5 - https://www.ory.sh/hydra/docs/dependencies-environment + https://www.ory.com/hydra/docs/dependencies-environment weekly 0.5 - https://www.ory.sh/hydra/docs/faq + https://www.ory.com/hydra/docs/faq weekly 0.5 - https://www.ory.sh/hydra/docs/guides/common-oauth2-openid-connect-flows + https://www.ory.com/hydra/docs/guides/common-oauth2-openid-connect-flows weekly 0.5 - https://www.ory.sh/hydra/docs/guides/consent + https://www.ory.com/hydra/docs/guides/consent weekly 0.5 - https://www.ory.sh/hydra/docs/guides/cookies + https://www.ory.com/hydra/docs/guides/cookies weekly 0.5 - https://www.ory.sh/hydra/docs/guides/cors + https://www.ory.com/hydra/docs/guides/cors weekly 0.5 - https://www.ory.sh/hydra/docs/guides/gitlab + https://www.ory.com/hydra/docs/guides/gitlab weekly 0.5 - https://www.ory.sh/hydra/docs/guides/kubernetes-helm-chart + https://www.ory.com/hydra/docs/guides/kubernetes-helm-chart weekly 0.5 - https://www.ory.sh/hydra/docs/guides/login + https://www.ory.com/hydra/docs/guides/login weekly 0.5 - https://www.ory.sh/hydra/docs/guides/logout + https://www.ory.com/hydra/docs/guides/logout weekly 0.5 - https://www.ory.sh/hydra/docs/guides/merge-multiple-db-secrets + https://www.ory.com/hydra/docs/guides/merge-multiple-db-secrets weekly 0.5 - https://www.ory.sh/hydra/docs/guides/migrating-from-mitreid + https://www.ory.com/hydra/docs/guides/migrating-from-mitreid weekly 0.5 - https://www.ory.sh/hydra/docs/guides/oauth2-clients + https://www.ory.com/hydra/docs/guides/oauth2-clients weekly 0.5 - https://www.ory.sh/hydra/docs/guides/oauth2-public-spa-mobile + https://www.ory.com/hydra/docs/guides/oauth2-public-spa-mobile weekly 0.5 - https://www.ory.sh/hydra/docs/guides/oauth2-token-introspection + https://www.ory.com/hydra/docs/guides/oauth2-token-introspection weekly 0.5 - https://www.ory.sh/hydra/docs/guides/scaling-hydra + https://www.ory.com/hydra/docs/guides/scaling-hydra weekly 0.5 - https://www.ory.sh/hydra/docs/guides/secrets-key-rotation + https://www.ory.com/hydra/docs/guides/secrets-key-rotation weekly 0.5 - https://www.ory.sh/hydra/docs/guides/ssl-https-tls + https://www.ory.com/hydra/docs/guides/ssl-https-tls weekly 0.5 - https://www.ory.sh/hydra/docs/guides/token-expiration + https://www.ory.com/hydra/docs/guides/token-expiration weekly 0.5 - https://www.ory.sh/hydra/docs/guides/tracing + https://www.ory.com/hydra/docs/guides/tracing weekly 0.5 - https://www.ory.sh/hydra/docs/guides/using-oauth2 + https://www.ory.com/hydra/docs/guides/using-oauth2 weekly 0.5 - https://www.ory.sh/hydra/docs/install + https://www.ory.com/hydra/docs/install weekly 0.5 - https://www.ory.sh/hydra/docs/jwks + https://www.ory.com/hydra/docs/jwks weekly 0.5 - https://www.ory.sh/hydra/docs/limitations + https://www.ory.com/hydra/docs/limitations weekly 0.5 - https://www.ory.sh/hydra/docs/login-consent-flow + https://www.ory.com/hydra/docs/login-consent-flow weekly 0.5 - https://www.ory.sh/hydra/docs/milestones + https://www.ory.com/hydra/docs/milestones weekly 0.5 - https://www.ory.sh/hydra/docs/production + https://www.ory.com/hydra/docs/production weekly 0.5 - https://www.ory.sh/hydra/docs/reference/api + https://www.ory.com/hydra/docs/reference/api weekly 0.5 - https://www.ory.sh/hydra/docs/reference/configuration + https://www.ory.com/hydra/docs/reference/configuration weekly 0.5 - https://www.ory.sh/hydra/docs/sdk + https://www.ory.com/hydra/docs/sdk weekly 0.5 - https://www.ory.sh/hydra/docs/sdk/go + https://www.ory.com/hydra/docs/sdk/go weekly 0.5 - https://www.ory.sh/hydra/docs/sdk/js + https://www.ory.com/hydra/docs/sdk/js weekly 0.5 - https://www.ory.sh/hydra/docs/sdk/php + https://www.ory.com/hydra/docs/sdk/php weekly 0.5 - https://www.ory.sh/hydra/docs/security-architecture + https://www.ory.com/hydra/docs/security-architecture weekly 0.5 diff --git a/tests/jest/sitemaps/sitemap_keto.xml b/tests/jest/sitemaps/sitemap_keto.xml index 9908b881e7..bdd8fe1328 100644 --- a/tests/jest/sitemaps/sitemap_keto.xml +++ b/tests/jest/sitemaps/sitemap_keto.xml @@ -3,852 +3,852 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> - https://www.ory.sh/keto/docs/http-api + https://www.ory.com/keto/docs/http-api weekly 0.5 - https://www.ory.sh/keto/docs/search + https://www.ory.com/keto/docs/search weekly 0.5 - https://www.ory.sh/keto/docs/versions + https://www.ory.com/keto/docs/versions weekly 0.5 - https://www.ory.sh/keto/docs/next/ + https://www.ory.com/keto/docs/next/ weekly 0.5 - https://www.ory.sh/keto/docs/next/CHANGELOG + https://www.ory.com/keto/docs/next/CHANGELOG weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto + https://www.ory.com/keto/docs/next/cli/keto weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-check + https://www.ory.com/keto/docs/next/cli/keto-check weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-expand + https://www.ory.com/keto/docs/next/cli/keto-expand weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-migrate + https://www.ory.com/keto/docs/next/cli/keto-migrate weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-migrate-down + https://www.ory.com/keto/docs/next/cli/keto-migrate-down weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-migrate-status + https://www.ory.com/keto/docs/next/cli/keto-migrate-status weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-migrate-up + https://www.ory.com/keto/docs/next/cli/keto-migrate-up weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace + https://www.ory.com/keto/docs/next/cli/keto-namespace weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate + https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-down + https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-down weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-legacy + https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-legacy weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-status + https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-status weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace-migrate-up + https://www.ory.com/keto/docs/next/cli/keto-namespace-migrate-up weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-namespace-validate + https://www.ory.com/keto/docs/next/cli/keto-namespace-validate weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple + https://www.ory.com/keto/docs/next/cli/keto-relation-tuple weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-create + https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-create weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-delete + https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-delete weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-delete-all + https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-delete-all weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-get + https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-get weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-relation-tuple-parse + https://www.ory.com/keto/docs/next/cli/keto-relation-tuple-parse weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-serve + https://www.ory.com/keto/docs/next/cli/keto-serve weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-status + https://www.ory.com/keto/docs/next/cli/keto-status weekly 0.5 - https://www.ory.sh/keto/docs/next/cli/keto-version + https://www.ory.com/keto/docs/next/cli/keto-version weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/api-overview + https://www.ory.com/keto/docs/next/concepts/api-overview weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/graph-of-relations + https://www.ory.com/keto/docs/next/concepts/graph-of-relations weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/internal-algorithms + https://www.ory.com/keto/docs/next/concepts/internal-algorithms weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/namespaces + https://www.ory.com/keto/docs/next/concepts/namespaces weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/objects + https://www.ory.com/keto/docs/next/concepts/objects weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/relation-tuples + https://www.ory.com/keto/docs/next/concepts/relation-tuples weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/snaptokens-evaluation-consistency + https://www.ory.com/keto/docs/next/concepts/snaptokens-evaluation-consistency weekly 0.5 - https://www.ory.sh/keto/docs/next/concepts/subjects + https://www.ory.com/keto/docs/next/concepts/subjects weekly 0.5 - https://www.ory.sh/keto/docs/next/contributing + https://www.ory.com/keto/docs/next/contributing weekly 0.5 - https://www.ory.sh/keto/docs/next/examples/olymp-file-sharing + https://www.ory.com/keto/docs/next/examples/olymp-file-sharing weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/access-control-inheritance + https://www.ory.com/keto/docs/next/guides/access-control-inheritance weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/access-control-list-design-best-practices + https://www.ory.com/keto/docs/next/guides/access-control-list-design-best-practices weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/expand-api-display-who-has-access + https://www.ory.com/keto/docs/next/guides/expand-api-display-who-has-access weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/list-api-display-objects + https://www.ory.com/keto/docs/next/guides/list-api-display-objects weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/production + https://www.ory.com/keto/docs/next/guides/production weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/rbac + https://www.ory.com/keto/docs/next/guides/rbac weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/simple-access-check-guide + https://www.ory.com/keto/docs/next/guides/simple-access-check-guide weekly 0.5 - https://www.ory.sh/keto/docs/next/guides/v0.7-migration + https://www.ory.com/keto/docs/next/guides/v0.7-migration weekly 0.5 - https://www.ory.sh/keto/docs/next/implemented-planned-features + https://www.ory.com/keto/docs/next/implemented-planned-features weekly 0.5 - https://www.ory.sh/keto/docs/next/install + https://www.ory.com/keto/docs/next/install weekly 0.5 - https://www.ory.sh/keto/docs/next/milestones + https://www.ory.com/keto/docs/next/milestones weekly 0.5 - https://www.ory.sh/keto/docs/next/performance + https://www.ory.com/keto/docs/next/performance weekly 0.5 - https://www.ory.sh/keto/docs/next/quickstart + https://www.ory.com/keto/docs/next/quickstart weekly 0.5 - https://www.ory.sh/keto/docs/next/reference/configuration + https://www.ory.com/keto/docs/next/reference/configuration weekly 0.5 - https://www.ory.sh/keto/docs/next/reference/proto-api + https://www.ory.com/keto/docs/next/reference/proto-api weekly 0.5 - https://www.ory.sh/keto/docs/next/reference/rest-api + https://www.ory.com/keto/docs/next/reference/rest-api weekly 0.5 - https://www.ory.sh/keto/docs/next/sdk/index + https://www.ory.com/keto/docs/next/sdk/index weekly 0.5 - https://www.ory.sh/keto/docs/next/secure + https://www.ory.com/keto/docs/next/secure weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/ + https://www.ory.com/keto/docs/v0.5/ weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/configure-deploy + https://www.ory.com/keto/docs/v0.5/configure-deploy weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/engines/acl + https://www.ory.com/keto/docs/v0.5/engines/acl weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/engines/acp-aws + https://www.ory.com/keto/docs/v0.5/engines/acp-aws weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/engines/acp-ory + https://www.ory.com/keto/docs/v0.5/engines/acp-ory weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/engines/index + https://www.ory.com/keto/docs/v0.5/engines/index weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/engines/rbac + https://www.ory.com/keto/docs/v0.5/engines/rbac weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/install + https://www.ory.com/keto/docs/v0.5/install weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/reference/api + https://www.ory.com/keto/docs/v0.5/reference/api weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/reference/configuration + https://www.ory.com/keto/docs/v0.5/reference/configuration weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/sdk/index + https://www.ory.com/keto/docs/v0.5/sdk/index weekly 0.5 - https://www.ory.sh/keto/docs/v0.5/secure + https://www.ory.com/keto/docs/v0.5/secure weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/ + https://www.ory.com/keto/docs/v0.6/ weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto + https://www.ory.com/keto/docs/v0.6/cli/keto weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-check + https://www.ory.com/keto/docs/v0.6/cli/keto-check weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-expand + https://www.ory.com/keto/docs/v0.6/cli/keto-expand weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate + https://www.ory.com/keto/docs/v0.6/cli/keto-migrate weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate-down + https://www.ory.com/keto/docs/v0.6/cli/keto-migrate-down weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate-status + https://www.ory.com/keto/docs/v0.6/cli/keto-migrate-status weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-migrate-up + https://www.ory.com/keto/docs/v0.6/cli/keto-migrate-up weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace + https://www.ory.com/keto/docs/v0.6/cli/keto-namespace weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate + https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate-down + https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate-down weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate-status + https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate-status weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-migrate-up + https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-migrate-up weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-namespace-validate + https://www.ory.com/keto/docs/v0.6/cli/keto-namespace-validate weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple + https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-create + https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-create weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-delete + https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-delete weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-get + https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-get weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-relation-tuple-parse + https://www.ory.com/keto/docs/v0.6/cli/keto-relation-tuple-parse weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-serve + https://www.ory.com/keto/docs/v0.6/cli/keto-serve weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-status + https://www.ory.com/keto/docs/v0.6/cli/keto-status weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/cli/keto-version + https://www.ory.com/keto/docs/v0.6/cli/keto-version weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/api-overview + https://www.ory.com/keto/docs/v0.6/concepts/api-overview weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/graph-of-relations + https://www.ory.com/keto/docs/v0.6/concepts/graph-of-relations weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/internal-algorithms + https://www.ory.com/keto/docs/v0.6/concepts/internal-algorithms weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/namespaces + https://www.ory.com/keto/docs/v0.6/concepts/namespaces weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/objects + https://www.ory.com/keto/docs/v0.6/concepts/objects weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/relation-tuples + https://www.ory.com/keto/docs/v0.6/concepts/relation-tuples weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/snaptokens-evaluation-consistency + https://www.ory.com/keto/docs/v0.6/concepts/snaptokens-evaluation-consistency weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/concepts/subjects + https://www.ory.com/keto/docs/v0.6/concepts/subjects weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/contributing + https://www.ory.com/keto/docs/v0.6/contributing weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/examples/olymp-file-sharing + https://www.ory.com/keto/docs/v0.6/examples/olymp-file-sharing weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/access-control-inheritance + https://www.ory.com/keto/docs/v0.6/guides/access-control-inheritance weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/access-control-list-design-best-practices + https://www.ory.com/keto/docs/v0.6/guides/access-control-list-design-best-practices weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/expand-api-display-who-has-access + https://www.ory.com/keto/docs/v0.6/guides/expand-api-display-who-has-access weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/list-api-display-objects + https://www.ory.com/keto/docs/v0.6/guides/list-api-display-objects weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/production + https://www.ory.com/keto/docs/v0.6/guides/production weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/rbac + https://www.ory.com/keto/docs/v0.6/guides/rbac weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/guides/simple-access-check-guide + https://www.ory.com/keto/docs/v0.6/guides/simple-access-check-guide weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/implemented-planned-features + https://www.ory.com/keto/docs/v0.6/implemented-planned-features weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/install + https://www.ory.com/keto/docs/v0.6/install weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/milestones + https://www.ory.com/keto/docs/v0.6/milestones weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/performance + https://www.ory.com/keto/docs/v0.6/performance weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/quickstart + https://www.ory.com/keto/docs/v0.6/quickstart weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/reference/api + https://www.ory.com/keto/docs/v0.6/reference/api weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/reference/configuration + https://www.ory.com/keto/docs/v0.6/reference/configuration weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/reference/proto-api + https://www.ory.com/keto/docs/v0.6/reference/proto-api weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/reference/rest-api + https://www.ory.com/keto/docs/v0.6/reference/rest-api weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/sdk/index + https://www.ory.com/keto/docs/v0.6/sdk/index weekly 0.5 - https://www.ory.sh/keto/docs/v0.6/secure + https://www.ory.com/keto/docs/v0.6/secure weekly 0.5 - https://www.ory.sh/keto/docs/ + https://www.ory.com/keto/docs/ weekly 0.5 - https://www.ory.sh/keto/docs/CHANGELOG + https://www.ory.com/keto/docs/CHANGELOG weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto + https://www.ory.com/keto/docs/cli/keto weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-check + https://www.ory.com/keto/docs/cli/keto-check weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-expand + https://www.ory.com/keto/docs/cli/keto-expand weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-migrate + https://www.ory.com/keto/docs/cli/keto-migrate weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-migrate-down + https://www.ory.com/keto/docs/cli/keto-migrate-down weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-migrate-status + https://www.ory.com/keto/docs/cli/keto-migrate-status weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-migrate-up + https://www.ory.com/keto/docs/cli/keto-migrate-up weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace + https://www.ory.com/keto/docs/cli/keto-namespace weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace-migrate + https://www.ory.com/keto/docs/cli/keto-namespace-migrate weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-down + https://www.ory.com/keto/docs/cli/keto-namespace-migrate-down weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-legacy + https://www.ory.com/keto/docs/cli/keto-namespace-migrate-legacy weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-status + https://www.ory.com/keto/docs/cli/keto-namespace-migrate-status weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace-migrate-up + https://www.ory.com/keto/docs/cli/keto-namespace-migrate-up weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-namespace-validate + https://www.ory.com/keto/docs/cli/keto-namespace-validate weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-relation-tuple + https://www.ory.com/keto/docs/cli/keto-relation-tuple weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-relation-tuple-create + https://www.ory.com/keto/docs/cli/keto-relation-tuple-create weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-relation-tuple-delete + https://www.ory.com/keto/docs/cli/keto-relation-tuple-delete weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-relation-tuple-get + https://www.ory.com/keto/docs/cli/keto-relation-tuple-get weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-relation-tuple-parse + https://www.ory.com/keto/docs/cli/keto-relation-tuple-parse weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-serve + https://www.ory.com/keto/docs/cli/keto-serve weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-status + https://www.ory.com/keto/docs/cli/keto-status weekly 0.5 - https://www.ory.sh/keto/docs/cli/keto-version + https://www.ory.com/keto/docs/cli/keto-version weekly 0.5 - https://www.ory.sh/keto/docs/concepts/api-overview + https://www.ory.com/keto/docs/concepts/api-overview weekly 0.5 - https://www.ory.sh/keto/docs/concepts/graph-of-relations + https://www.ory.com/keto/docs/concepts/graph-of-relations weekly 0.5 - https://www.ory.sh/keto/docs/concepts/internal-algorithms + https://www.ory.com/keto/docs/concepts/internal-algorithms weekly 0.5 - https://www.ory.sh/keto/docs/concepts/namespaces + https://www.ory.com/keto/docs/concepts/namespaces weekly 0.5 - https://www.ory.sh/keto/docs/concepts/objects + https://www.ory.com/keto/docs/concepts/objects weekly 0.5 - https://www.ory.sh/keto/docs/concepts/relation-tuples + https://www.ory.com/keto/docs/concepts/relation-tuples weekly 0.5 - https://www.ory.sh/keto/docs/concepts/snaptokens-evaluation-consistency + https://www.ory.com/keto/docs/concepts/snaptokens-evaluation-consistency weekly 0.5 - https://www.ory.sh/keto/docs/concepts/subjects + https://www.ory.com/keto/docs/concepts/subjects weekly 0.5 - https://www.ory.sh/keto/docs/contributing + https://www.ory.com/keto/docs/contributing weekly 0.5 - https://www.ory.sh/keto/docs/examples/olymp-file-sharing + https://www.ory.com/keto/docs/examples/olymp-file-sharing weekly 0.5 - https://www.ory.sh/keto/docs/guides/access-control-inheritance + https://www.ory.com/keto/docs/guides/access-control-inheritance weekly 0.5 - https://www.ory.sh/keto/docs/guides/access-control-list-design-best-practices + https://www.ory.com/keto/docs/guides/access-control-list-design-best-practices weekly 0.5 - https://www.ory.sh/keto/docs/guides/expand-api-display-who-has-access + https://www.ory.com/keto/docs/guides/expand-api-display-who-has-access weekly 0.5 - https://www.ory.sh/keto/docs/guides/list-api-display-objects + https://www.ory.com/keto/docs/guides/list-api-display-objects weekly 0.5 - https://www.ory.sh/keto/docs/guides/production + https://www.ory.com/keto/docs/guides/production weekly 0.5 - https://www.ory.sh/keto/docs/guides/rbac + https://www.ory.com/keto/docs/guides/rbac weekly 0.5 - https://www.ory.sh/keto/docs/guides/simple-access-check-guide + https://www.ory.com/keto/docs/guides/simple-access-check-guide weekly 0.5 - https://www.ory.sh/keto/docs/guides/v0.7-migration + https://www.ory.com/keto/docs/guides/v0.7-migration weekly 0.5 - https://www.ory.sh/keto/docs/implemented-planned-features + https://www.ory.com/keto/docs/implemented-planned-features weekly 0.5 - https://www.ory.sh/keto/docs/install + https://www.ory.com/keto/docs/install weekly 0.5 - https://www.ory.sh/keto/docs/milestones + https://www.ory.com/keto/docs/milestones weekly 0.5 - https://www.ory.sh/keto/docs/performance + https://www.ory.com/keto/docs/performance weekly 0.5 - https://www.ory.sh/keto/docs/quickstart + https://www.ory.com/keto/docs/quickstart weekly 0.5 - https://www.ory.sh/keto/docs/reference/configuration + https://www.ory.com/keto/docs/reference/configuration weekly 0.5 - https://www.ory.sh/keto/docs/reference/proto-api + https://www.ory.com/keto/docs/reference/proto-api weekly 0.5 - https://www.ory.sh/keto/docs/reference/rest-api + https://www.ory.com/keto/docs/reference/rest-api weekly 0.5 - https://www.ory.sh/keto/docs/sdk/index + https://www.ory.com/keto/docs/sdk/index weekly 0.5 - https://www.ory.sh/keto/docs/secure + https://www.ory.com/keto/docs/secure weekly 0.5 diff --git a/tests/jest/sitemaps/sitemap_kratos.xml b/tests/jest/sitemaps/sitemap_kratos.xml index 5fb4fee92c..7819d56f9a 100644 --- a/tests/jest/sitemaps/sitemap_kratos.xml +++ b/tests/jest/sitemaps/sitemap_kratos.xml @@ -3,3428 +3,3428 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> - https://www.ory.sh/kratos/docs/http-api + https://www.ory.com/kratos/docs/http-api weekly 0.5 - https://www.ory.sh/kratos/docs/search + https://www.ory.com/kratos/docs/search weekly 0.5 - https://www.ory.sh/kratos/docs/versions + https://www.ory.com/kratos/docs/versions weekly 0.5 - https://www.ory.sh/kratos/docs/next/ + https://www.ory.com/kratos/docs/next/ weekly 0.5 - https://www.ory.sh/kratos/docs/next/admin/managing-users-identities + https://www.ory.com/kratos/docs/next/admin/managing-users-identities weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos + https://www.ory.com/kratos/docs/next/cli/kratos weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-courier + https://www.ory.com/kratos/docs/next/cli/kratos-courier weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-courier-watch + https://www.ory.com/kratos/docs/next/cli/kratos-courier-watch weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-hashers + https://www.ory.com/kratos/docs/next/cli/kratos-hashers weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2 + https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-calibrate + https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2-calibrate weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-hash + https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2-hash weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-hashers-argon2-load-test + https://www.ory.com/kratos/docs/next/cli/kratos-hashers-argon2-load-test weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities + https://www.ory.com/kratos/docs/next/cli/kratos-identities weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-delete + https://www.ory.com/kratos/docs/next/cli/kratos-identities-delete weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-get + https://www.ory.com/kratos/docs/next/cli/kratos-identities-get weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-import + https://www.ory.com/kratos/docs/next/cli/kratos-identities-import weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-list + https://www.ory.com/kratos/docs/next/cli/kratos-identities-list weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-patch + https://www.ory.com/kratos/docs/next/cli/kratos-identities-patch weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-put + https://www.ory.com/kratos/docs/next/cli/kratos-identities-put weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-identities-validate + https://www.ory.com/kratos/docs/next/cli/kratos-identities-validate weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet + https://www.ory.com/kratos/docs/next/cli/kratos-jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-format + https://www.ory.com/kratos/docs/next/cli/kratos-jsonnet-format weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-jsonnet-lint + https://www.ory.com/kratos/docs/next/cli/kratos-jsonnet-lint weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-migrate + https://www.ory.com/kratos/docs/next/cli/kratos-migrate weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-migrate-sql + https://www.ory.com/kratos/docs/next/cli/kratos-migrate-sql weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-remote + https://www.ory.com/kratos/docs/next/cli/kratos-remote weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-remote-status + https://www.ory.com/kratos/docs/next/cli/kratos-remote-status weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-remote-version + https://www.ory.com/kratos/docs/next/cli/kratos-remote-version weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-serve + https://www.ory.com/kratos/docs/next/cli/kratos-serve weekly 0.5 - https://www.ory.sh/kratos/docs/next/cli/kratos-version + https://www.ory.com/kratos/docs/next/cli/kratos-version weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/browser-redirect-flow-completion + https://www.ory.com/kratos/docs/next/concepts/browser-redirect-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/credentials + https://www.ory.com/kratos/docs/next/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/credentials/lookup-secrets + https://www.ory.com/kratos/docs/next/concepts/credentials/lookup-secrets weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/next/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/credentials/totp + https://www.ory.com/kratos/docs/next/concepts/credentials/totp weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/next/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/credentials/webauthn + https://www.ory.com/kratos/docs/next/concepts/credentials/webauthn weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/docker + https://www.ory.com/kratos/docs/next/concepts/docker weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/email-sms + https://www.ory.com/kratos/docs/next/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/federation + https://www.ory.com/kratos/docs/next/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/identity-schema + https://www.ory.com/kratos/docs/next/concepts/identity-schema weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/index + https://www.ory.com/kratos/docs/next/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/management-ui + https://www.ory.com/kratos/docs/next/concepts/management-ui weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/rest-api + https://www.ory.com/kratos/docs/next/concepts/rest-api weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/securing-applications + https://www.ory.com/kratos/docs/next/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/security + https://www.ory.com/kratos/docs/next/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/session + https://www.ory.com/kratos/docs/next/concepts/session weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/terminology + https://www.ory.com/kratos/docs/next/concepts/terminology weekly 0.5 - https://www.ory.sh/kratos/docs/next/concepts/ui-user-interface + https://www.ory.com/kratos/docs/next/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/next/configuring + https://www.ory.com/kratos/docs/next/configuring weekly 0.5 - https://www.ory.sh/kratos/docs/next/contributing + https://www.ory.com/kratos/docs/next/contributing weekly 0.5 - https://www.ory.sh/kratos/docs/next/debug/csrf + https://www.ory.com/kratos/docs/next/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/next/debug/debug-docker-delve-ory-kratos + https://www.ory.com/kratos/docs/next/debug/debug-docker-delve-ory-kratos weekly 0.5 - https://www.ory.sh/kratos/docs/next/debug/performance-out-of-memory-password-hashing-argon2 + https://www.ory.com/kratos/docs/next/debug/performance-out-of-memory-password-hashing-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/next/debug/troubleshooting + https://www.ory.com/kratos/docs/next/debug/troubleshooting weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/default_return_to + https://www.ory.com/kratos/docs/next/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/error + https://www.ory.com/kratos/docs/next/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/login + https://www.ory.com/kratos/docs/next/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/mfa + https://www.ory.com/kratos/docs/next/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/recovery + https://www.ory.com/kratos/docs/next/fallback/recovery weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/registration + https://www.ory.com/kratos/docs/next/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/settings + https://www.ory.com/kratos/docs/next/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/next/fallback/verification + https://www.ory.com/kratos/docs/next/fallback/verification weekly 0.5 - https://www.ory.sh/kratos/docs/next/further-reading/comparison + https://www.ory.com/kratos/docs/next/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/next/further-reading/contrib + https://www.ory.com/kratos/docs/next/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/next/further-reading/kratos-video-tutorials + https://www.ory.com/kratos/docs/next/further-reading/kratos-video-tutorials weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/account-activation-email-verification + https://www.ory.com/kratos/docs/next/guides/account-activation-email-verification weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/account-recovery-password-reset + https://www.ory.com/kratos/docs/next/guides/account-recovery-password-reset weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/configuring-cookies + https://www.ory.com/kratos/docs/next/guides/configuring-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/custom-ui + https://www.ory.com/kratos/docs/next/guides/custom-ui weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/docker + https://www.ory.com/kratos/docs/next/guides/docker weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/e2e-integration-tests + https://www.ory.com/kratos/docs/next/guides/e2e-integration-tests weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/high-availability-ha + https://www.ory.com/kratos/docs/next/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/hosting-own-have-i-been-pwned-api + https://www.ory.com/kratos/docs/next/guides/hosting-own-have-i-been-pwned-api weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/https-tls + https://www.ory.com/kratos/docs/next/guides/https-tls weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/integration-with-other-systems-using-web-hooks + https://www.ory.com/kratos/docs/next/guides/integration-with-other-systems-using-web-hooks weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/login-session + https://www.ory.com/kratos/docs/next/guides/login-session weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/multi-domain-cookies + https://www.ory.com/kratos/docs/next/guides/multi-domain-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/next/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/password-policy + https://www.ory.com/kratos/docs/next/guides/password-policy weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/production + https://www.ory.com/kratos/docs/next/guides/production weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/retrieve-social-sign-in-access-refresh-id-token + https://www.ory.com/kratos/docs/next/guides/retrieve-social-sign-in-access-refresh-id-token weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/secret-key-rotation + https://www.ory.com/kratos/docs/next/guides/secret-key-rotation weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/security-questions-best-practice + https://www.ory.com/kratos/docs/next/guides/security-questions-best-practice weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/setting-up-aes-cipher-parameters + https://www.ory.com/kratos/docs/next/guides/setting-up-aes-cipher-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/setting-up-cors + https://www.ory.com/kratos/docs/next/guides/setting-up-cors weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/setting-up-noop-cipher-parameters + https://www.ory.com/kratos/docs/next/guides/setting-up-noop-cipher-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/setting-up-password-hashing-parameters + https://www.ory.com/kratos/docs/next/guides/setting-up-password-hashing-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/setting-up-xchacha-cipher-parameters + https://www.ory.com/kratos/docs/next/guides/setting-up-xchacha-cipher-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/next/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/tracing + https://www.ory.com/kratos/docs/next/guides/tracing weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/upgrade + https://www.ory.com/kratos/docs/next/guides/upgrade weekly 0.5 - https://www.ory.sh/kratos/docs/next/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/next/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/next/install + https://www.ory.com/kratos/docs/next/install weekly 0.5 - https://www.ory.sh/kratos/docs/next/milestones + https://www.ory.com/kratos/docs/next/milestones weekly 0.5 - https://www.ory.sh/kratos/docs/next/quickstart + https://www.ory.com/kratos/docs/next/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/next/reference/api + https://www.ory.com/kratos/docs/next/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/next/reference/configuration + https://www.ory.com/kratos/docs/next/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/next/reference/html-forms + https://www.ory.com/kratos/docs/next/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/next/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/next/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/next/reference/jsonnet + https://www.ory.com/kratos/docs/next/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/next/sdk + https://www.ory.com/kratos/docs/next/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service + https://www.ory.com/kratos/docs/next/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/next/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/account-recovery + https://www.ory.com/kratos/docs/next/self-service/flows/account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/next/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/user-login + https://www.ory.com/kratos/docs/next/self-service/flows/user-login weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/user-logout + https://www.ory.com/kratos/docs/next/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/user-registration + https://www.ory.com/kratos/docs/next/self-service/flows/user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/user-settings + https://www.ory.com/kratos/docs/next/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/next/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/next/self-service/hooks + https://www.ory.com/kratos/docs/next/self-service/hooks weekly 0.5 - https://www.ory.sh/kratos/docs/next/two-factor-authentication-2fa-mfa + https://www.ory.com/kratos/docs/next/two-factor-authentication-2fa-mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/ + https://www.ory.com/kratos/docs/v0.1/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/credentials + https://www.ory.com/kratos/docs/v0.1/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/email-sms + https://www.ory.com/kratos/docs/v0.1/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/federation + https://www.ory.com/kratos/docs/v0.1/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/identity-user-model + https://www.ory.com/kratos/docs/v0.1/concepts/identity-user-model weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/index + https://www.ory.com/kratos/docs/v0.1/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.1/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/security + https://www.ory.com/kratos/docs/v0.1/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.1/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/further-reading/comparison + https://www.ory.com/kratos/docs/v0.1/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/further-reading/contrib + https://www.ory.com/kratos/docs/v0.1/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/install + https://www.ory.com/kratos/docs/v0.1/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/quickstart + https://www.ory.com/kratos/docs/v0.1/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/reference/api + https://www.ory.com/kratos/docs/v0.1/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/reference/configuration + https://www.ory.com/kratos/docs/v0.1/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/reference/html-forms + https://www.ory.com/kratos/docs/v0.1/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.1/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/sdk/api + https://www.ory.com/kratos/docs/v0.1/sdk/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/sdk/index + https://www.ory.com/kratos/docs/v0.1/sdk/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/index + https://www.ory.com/kratos/docs/v0.1/self-service/flows/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/password-reset-account-recovery + https://www.ory.com/kratos/docs/v0.1/self-service/flows/password-reset-account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-login-user-registration + https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-login-user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/user-profile-management + https://www.ory.com/kratos/docs/v0.1/self-service/flows/user-profile-management weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.1/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/strategies/index + https://www.ory.com/kratos/docs/v0.1/self-service/strategies/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/strategies/openid-connect-social-sign-in-oauth2 + https://www.ory.com/kratos/docs/v0.1/self-service/strategies/openid-connect-social-sign-in-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/strategies/username-email-password + https://www.ory.com/kratos/docs/v0.1/self-service/strategies/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/workflows/jobs/after + https://www.ory.com/kratos/docs/v0.1/self-service/workflows/jobs/after weekly 0.5 - https://www.ory.sh/kratos/docs/v0.1/self-service/workflows/jobs/before + https://www.ory.com/kratos/docs/v0.1/self-service/workflows/jobs/before weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/ + https://www.ory.com/kratos/docs/v0.2/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/credentials + https://www.ory.com/kratos/docs/v0.2/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/v0.2/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/v0.2/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/email-sms + https://www.ory.com/kratos/docs/v0.2/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/federation + https://www.ory.com/kratos/docs/v0.2/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/identity-user-model + https://www.ory.com/kratos/docs/v0.2/concepts/identity-user-model weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/index + https://www.ory.com/kratos/docs/v0.2/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.2/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/security + https://www.ory.com/kratos/docs/v0.2/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/selfservice-flow-completion + https://www.ory.com/kratos/docs/v0.2/concepts/selfservice-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.2/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/debug/csrf + https://www.ory.com/kratos/docs/v0.2/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/default_return_to + https://www.ory.com/kratos/docs/v0.2/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/error + https://www.ory.com/kratos/docs/v0.2/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/login + https://www.ory.com/kratos/docs/v0.2/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/mfa + https://www.ory.com/kratos/docs/v0.2/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/registration + https://www.ory.com/kratos/docs/v0.2/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/settings + https://www.ory.com/kratos/docs/v0.2/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/fallback/verify + https://www.ory.com/kratos/docs/v0.2/fallback/verify weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/further-reading/comparison + https://www.ory.com/kratos/docs/v0.2/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/further-reading/contrib + https://www.ory.com/kratos/docs/v0.2/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/guides/high-availability-ha + https://www.ory.com/kratos/docs/v0.2/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/v0.2/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/v0.2/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/install + https://www.ory.com/kratos/docs/v0.2/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/quickstart + https://www.ory.com/kratos/docs/v0.2/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/reference/api + https://www.ory.com/kratos/docs/v0.2/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/reference/configuration + https://www.ory.com/kratos/docs/v0.2/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/reference/html-forms + https://www.ory.com/kratos/docs/v0.2/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.2/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/sdk/api + https://www.ory.com/kratos/docs/v0.2/sdk/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/sdk/index + https://www.ory.com/kratos/docs/v0.2/sdk/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/v0.2/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/index + https://www.ory.com/kratos/docs/v0.2/self-service/flows/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/password-reset-account-recovery + https://www.ory.com/kratos/docs/v0.2/self-service/flows/password-reset-account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-login-user-registration + https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-login-user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/user-settings-profile-management + https://www.ory.com/kratos/docs/v0.2/self-service/flows/user-settings-profile-management weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.2/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/hooks/index + https://www.ory.com/kratos/docs/v0.2/self-service/hooks/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/index + https://www.ory.com/kratos/docs/v0.2/self-service/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/strategies/openid-connect-social-sign-in-oauth2 + https://www.ory.com/kratos/docs/v0.2/self-service/strategies/openid-connect-social-sign-in-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/strategies/user-settings-profile + https://www.ory.com/kratos/docs/v0.2/self-service/strategies/user-settings-profile weekly 0.5 - https://www.ory.sh/kratos/docs/v0.2/self-service/strategies/username-email-password + https://www.ory.com/kratos/docs/v0.2/self-service/strategies/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/ + https://www.ory.com/kratos/docs/v0.3/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/credentials + https://www.ory.com/kratos/docs/v0.3/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/v0.3/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/v0.3/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/email-sms + https://www.ory.com/kratos/docs/v0.3/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/federation + https://www.ory.com/kratos/docs/v0.3/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/identity-user-model + https://www.ory.com/kratos/docs/v0.3/concepts/identity-user-model weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/index + https://www.ory.com/kratos/docs/v0.3/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.3/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/security + https://www.ory.com/kratos/docs/v0.3/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/selfservice-flow-completion + https://www.ory.com/kratos/docs/v0.3/concepts/selfservice-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.3/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/debug/csrf + https://www.ory.com/kratos/docs/v0.3/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/default_return_to + https://www.ory.com/kratos/docs/v0.3/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/error + https://www.ory.com/kratos/docs/v0.3/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/login + https://www.ory.com/kratos/docs/v0.3/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/mfa + https://www.ory.com/kratos/docs/v0.3/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/registration + https://www.ory.com/kratos/docs/v0.3/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/settings + https://www.ory.com/kratos/docs/v0.3/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/fallback/verify + https://www.ory.com/kratos/docs/v0.3/fallback/verify weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/further-reading/comparison + https://www.ory.com/kratos/docs/v0.3/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/further-reading/contrib + https://www.ory.com/kratos/docs/v0.3/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/guides/high-availability-ha + https://www.ory.com/kratos/docs/v0.3/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/v0.3/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/v0.3/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/v0.3/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/install + https://www.ory.com/kratos/docs/v0.3/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/quickstart + https://www.ory.com/kratos/docs/v0.3/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/reference/api + https://www.ory.com/kratos/docs/v0.3/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/reference/configuration + https://www.ory.com/kratos/docs/v0.3/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/reference/html-forms + https://www.ory.com/kratos/docs/v0.3/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.3/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/reference/jsonnet + https://www.ory.com/kratos/docs/v0.3/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/sdk + https://www.ory.com/kratos/docs/v0.3/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service + https://www.ory.com/kratos/docs/v0.3/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/v0.3/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/password-reset-account-recovery + https://www.ory.com/kratos/docs/v0.3/self-service/flows/password-reset-account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-login-user-registration + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-login-user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2 + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-login-user-registration/username-email-password + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-login-user-registration/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings/change-password + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings/change-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings/link-unlink-openid-connect-oauth2 + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings/link-unlink-openid-connect-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/user-settings/user-profile-management + https://www.ory.com/kratos/docs/v0.3/self-service/flows/user-settings/user-profile-management weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.3/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.3/self-service/hooks/index + https://www.ory.com/kratos/docs/v0.3/self-service/hooks/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/ + https://www.ory.com/kratos/docs/v0.4/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/browser-redirect-flow-completion + https://www.ory.com/kratos/docs/v0.4/concepts/browser-redirect-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/credentials + https://www.ory.com/kratos/docs/v0.4/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/v0.4/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/v0.4/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/email-sms + https://www.ory.com/kratos/docs/v0.4/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/federation + https://www.ory.com/kratos/docs/v0.4/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/identity-user-model + https://www.ory.com/kratos/docs/v0.4/concepts/identity-user-model weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/index + https://www.ory.com/kratos/docs/v0.4/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.4/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/security + https://www.ory.com/kratos/docs/v0.4/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.4/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/debug/csrf + https://www.ory.com/kratos/docs/v0.4/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/default_return_to + https://www.ory.com/kratos/docs/v0.4/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/error + https://www.ory.com/kratos/docs/v0.4/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/login + https://www.ory.com/kratos/docs/v0.4/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/mfa + https://www.ory.com/kratos/docs/v0.4/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/recovery + https://www.ory.com/kratos/docs/v0.4/fallback/recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/registration + https://www.ory.com/kratos/docs/v0.4/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/settings + https://www.ory.com/kratos/docs/v0.4/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/fallback/verification + https://www.ory.com/kratos/docs/v0.4/fallback/verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/further-reading/comparison + https://www.ory.com/kratos/docs/v0.4/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/further-reading/contrib + https://www.ory.com/kratos/docs/v0.4/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/account-activation-email-verification + https://www.ory.com/kratos/docs/v0.4/guides/account-activation-email-verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/account-recovery-password-reset + https://www.ory.com/kratos/docs/v0.4/guides/account-recovery-password-reset weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/high-availability-ha + https://www.ory.com/kratos/docs/v0.4/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/kratos-video-tutorials + https://www.ory.com/kratos/docs/v0.4/guides/kratos-video-tutorials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/v0.4/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/production + https://www.ory.com/kratos/docs/v0.4/guides/production weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/security-questions-best-practice + https://www.ory.com/kratos/docs/v0.4/guides/security-questions-best-practice weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/v0.4/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/v0.4/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/install + https://www.ory.com/kratos/docs/v0.4/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/quickstart + https://www.ory.com/kratos/docs/v0.4/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/reference/api + https://www.ory.com/kratos/docs/v0.4/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/reference/configuration + https://www.ory.com/kratos/docs/v0.4/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/reference/html-forms + https://www.ory.com/kratos/docs/v0.4/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.4/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/reference/jsonnet + https://www.ory.com/kratos/docs/v0.4/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/sdk + https://www.ory.com/kratos/docs/v0.4/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service + https://www.ory.com/kratos/docs/v0.4/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/v0.4/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/account-recovery + https://www.ory.com/kratos/docs/v0.4/self-service/flows/account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/account-recovery/password-reset-recovery-link + https://www.ory.com/kratos/docs/v0.4/self-service/flows/account-recovery/password-reset-recovery-link weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-login-user-registration + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-login-user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2 + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-login-user-registration/openid-connect-social-sign-in-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-login-user-registration/username-email-password + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-login-user-registration/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings/change-password + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings/change-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings/link-unlink-openid-connect-oauth2 + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings/link-unlink-openid-connect-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/user-settings/user-profile-management + https://www.ory.com/kratos/docs/v0.4/self-service/flows/user-settings/user-profile-management weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.4/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.4/self-service/hooks/index + https://www.ory.com/kratos/docs/v0.4/self-service/hooks/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/ + https://www.ory.com/kratos/docs/v0.5/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/admin/managing-users-identities + https://www.ory.com/kratos/docs/v0.5/admin/managing-users-identities weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos + https://www.ory.com/kratos/docs/v0.5/cli/kratos weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-hashers + https://www.ory.com/kratos/docs/v0.5/cli/kratos-hashers weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-hashers-argon2 + https://www.ory.com/kratos/docs/v0.5/cli/kratos-hashers-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-hashers-argon2-calibrate + https://www.ory.com/kratos/docs/v0.5/cli/kratos-hashers-argon2-calibrate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-delete + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-delete weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-get + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-get weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-import + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-import weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-list + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-list weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-patch + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-patch weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-put + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-put weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-identities-validate + https://www.ory.com/kratos/docs/v0.5/cli/kratos-identities-validate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-jsonnet + https://www.ory.com/kratos/docs/v0.5/cli/kratos-jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-jsonnet-format + https://www.ory.com/kratos/docs/v0.5/cli/kratos-jsonnet-format weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-jsonnet-lint + https://www.ory.com/kratos/docs/v0.5/cli/kratos-jsonnet-lint weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-migrate + https://www.ory.com/kratos/docs/v0.5/cli/kratos-migrate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-migrate-sql + https://www.ory.com/kratos/docs/v0.5/cli/kratos-migrate-sql weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-remote + https://www.ory.com/kratos/docs/v0.5/cli/kratos-remote weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-remote-status + https://www.ory.com/kratos/docs/v0.5/cli/kratos-remote-status weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-remote-version + https://www.ory.com/kratos/docs/v0.5/cli/kratos-remote-version weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-serve + https://www.ory.com/kratos/docs/v0.5/cli/kratos-serve weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/cli/kratos-version + https://www.ory.com/kratos/docs/v0.5/cli/kratos-version weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/browser-redirect-flow-completion + https://www.ory.com/kratos/docs/v0.5/concepts/browser-redirect-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/credentials + https://www.ory.com/kratos/docs/v0.5/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/v0.5/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/v0.5/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/email-sms + https://www.ory.com/kratos/docs/v0.5/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/federation + https://www.ory.com/kratos/docs/v0.5/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/identity-data-model + https://www.ory.com/kratos/docs/v0.5/concepts/identity-data-model weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/index + https://www.ory.com/kratos/docs/v0.5/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/rest-api + https://www.ory.com/kratos/docs/v0.5/concepts/rest-api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.5/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/security + https://www.ory.com/kratos/docs/v0.5/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/terminology + https://www.ory.com/kratos/docs/v0.5/concepts/terminology weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.5/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/configuring + https://www.ory.com/kratos/docs/v0.5/configuring weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/contributing + https://www.ory.com/kratos/docs/v0.5/contributing weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/debug/csrf + https://www.ory.com/kratos/docs/v0.5/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/debug/performance-out-of-memory-password-hashing-argon2 + https://www.ory.com/kratos/docs/v0.5/debug/performance-out-of-memory-password-hashing-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/default_return_to + https://www.ory.com/kratos/docs/v0.5/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/error + https://www.ory.com/kratos/docs/v0.5/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/login + https://www.ory.com/kratos/docs/v0.5/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/mfa + https://www.ory.com/kratos/docs/v0.5/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/recovery + https://www.ory.com/kratos/docs/v0.5/fallback/recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/registration + https://www.ory.com/kratos/docs/v0.5/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/settings + https://www.ory.com/kratos/docs/v0.5/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/fallback/verification + https://www.ory.com/kratos/docs/v0.5/fallback/verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/further-reading/comparison + https://www.ory.com/kratos/docs/v0.5/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/further-reading/contrib + https://www.ory.com/kratos/docs/v0.5/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/further-reading/kratos-video-tutorials + https://www.ory.com/kratos/docs/v0.5/further-reading/kratos-video-tutorials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/account-activation-email-verification + https://www.ory.com/kratos/docs/v0.5/guides/account-activation-email-verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/account-recovery-password-reset + https://www.ory.com/kratos/docs/v0.5/guides/account-recovery-password-reset weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/configuring-cookies + https://www.ory.com/kratos/docs/v0.5/guides/configuring-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/docker + https://www.ory.com/kratos/docs/v0.5/guides/docker weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/e2e-integration-tests + https://www.ory.com/kratos/docs/v0.5/guides/e2e-integration-tests weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/high-availability-ha + https://www.ory.com/kratos/docs/v0.5/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/login-session + https://www.ory.com/kratos/docs/v0.5/guides/login-session weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/multi-domain-cookies + https://www.ory.com/kratos/docs/v0.5/guides/multi-domain-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/v0.5/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/production + https://www.ory.com/kratos/docs/v0.5/guides/production weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/secret-key-rotation + https://www.ory.com/kratos/docs/v0.5/guides/secret-key-rotation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/security-questions-best-practice + https://www.ory.com/kratos/docs/v0.5/guides/security-questions-best-practice weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/setting-up-cors + https://www.ory.com/kratos/docs/v0.5/guides/setting-up-cors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/setting-up-password-hashing-parameters + https://www.ory.com/kratos/docs/v0.5/guides/setting-up-password-hashing-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/v0.5/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/v0.5/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/install + https://www.ory.com/kratos/docs/v0.5/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/milestones + https://www.ory.com/kratos/docs/v0.5/milestones weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/quickstart + https://www.ory.com/kratos/docs/v0.5/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/reference/api + https://www.ory.com/kratos/docs/v0.5/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/reference/configuration + https://www.ory.com/kratos/docs/v0.5/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/reference/html-forms + https://www.ory.com/kratos/docs/v0.5/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.5/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/reference/jsonnet + https://www.ory.com/kratos/docs/v0.5/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/sdk + https://www.ory.com/kratos/docs/v0.5/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service + https://www.ory.com/kratos/docs/v0.5/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/v0.5/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/account-recovery + https://www.ory.com/kratos/docs/v0.5/self-service/flows/account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-login + https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-registration + https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/user-settings + https://www.ory.com/kratos/docs/v0.5/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.5/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.5/self-service/hooks + https://www.ory.com/kratos/docs/v0.5/self-service/hooks weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/ + https://www.ory.com/kratos/docs/v0.6/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/admin/managing-users-identities + https://www.ory.com/kratos/docs/v0.6/admin/managing-users-identities weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos + https://www.ory.com/kratos/docs/v0.6/cli/kratos weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-courier + https://www.ory.com/kratos/docs/v0.6/cli/kratos-courier weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-courier-watch + https://www.ory.com/kratos/docs/v0.6/cli/kratos-courier-watch weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers + https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2 + https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2-calibrate + https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2-calibrate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2-hash + https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2-hash weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-hashers-argon2-load-test + https://www.ory.com/kratos/docs/v0.6/cli/kratos-hashers-argon2-load-test weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-delete + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-delete weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-get + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-get weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-import + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-import weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-list + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-list weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-patch + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-patch weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-put + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-put weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-identities-validate + https://www.ory.com/kratos/docs/v0.6/cli/kratos-identities-validate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-jsonnet + https://www.ory.com/kratos/docs/v0.6/cli/kratos-jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-jsonnet-format + https://www.ory.com/kratos/docs/v0.6/cli/kratos-jsonnet-format weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-jsonnet-lint + https://www.ory.com/kratos/docs/v0.6/cli/kratos-jsonnet-lint weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-migrate + https://www.ory.com/kratos/docs/v0.6/cli/kratos-migrate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-migrate-sql + https://www.ory.com/kratos/docs/v0.6/cli/kratos-migrate-sql weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-remote + https://www.ory.com/kratos/docs/v0.6/cli/kratos-remote weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-remote-status + https://www.ory.com/kratos/docs/v0.6/cli/kratos-remote-status weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-remote-version + https://www.ory.com/kratos/docs/v0.6/cli/kratos-remote-version weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-serve + https://www.ory.com/kratos/docs/v0.6/cli/kratos-serve weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/cli/kratos-version + https://www.ory.com/kratos/docs/v0.6/cli/kratos-version weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/authenticators/look-up-secrets + https://www.ory.com/kratos/docs/v0.6/concepts/authenticators/look-up-secrets weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/browser-redirect-flow-completion + https://www.ory.com/kratos/docs/v0.6/concepts/browser-redirect-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/credentials + https://www.ory.com/kratos/docs/v0.6/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/v0.6/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/v0.6/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/docker + https://www.ory.com/kratos/docs/v0.6/concepts/docker weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/email-sms + https://www.ory.com/kratos/docs/v0.6/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/federation + https://www.ory.com/kratos/docs/v0.6/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/identity-data-model + https://www.ory.com/kratos/docs/v0.6/concepts/identity-data-model weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/index + https://www.ory.com/kratos/docs/v0.6/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/rest-api + https://www.ory.com/kratos/docs/v0.6/concepts/rest-api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.6/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/security + https://www.ory.com/kratos/docs/v0.6/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/terminology + https://www.ory.com/kratos/docs/v0.6/concepts/terminology weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.6/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/configuring + https://www.ory.com/kratos/docs/v0.6/configuring weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/contributing + https://www.ory.com/kratos/docs/v0.6/contributing weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/debug/csrf + https://www.ory.com/kratos/docs/v0.6/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/debug/performance-out-of-memory-password-hashing-argon2 + https://www.ory.com/kratos/docs/v0.6/debug/performance-out-of-memory-password-hashing-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/default_return_to + https://www.ory.com/kratos/docs/v0.6/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/error + https://www.ory.com/kratos/docs/v0.6/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/login + https://www.ory.com/kratos/docs/v0.6/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/mfa + https://www.ory.com/kratos/docs/v0.6/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/recovery + https://www.ory.com/kratos/docs/v0.6/fallback/recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/registration + https://www.ory.com/kratos/docs/v0.6/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/settings + https://www.ory.com/kratos/docs/v0.6/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/fallback/verification + https://www.ory.com/kratos/docs/v0.6/fallback/verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/faq + https://www.ory.com/kratos/docs/v0.6/faq weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/further-reading/comparison + https://www.ory.com/kratos/docs/v0.6/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/further-reading/contrib + https://www.ory.com/kratos/docs/v0.6/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/further-reading/kratos-video-tutorials + https://www.ory.com/kratos/docs/v0.6/further-reading/kratos-video-tutorials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/account-activation-email-verification + https://www.ory.com/kratos/docs/v0.6/guides/account-activation-email-verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/account-recovery-password-reset + https://www.ory.com/kratos/docs/v0.6/guides/account-recovery-password-reset weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/configuring-cookies + https://www.ory.com/kratos/docs/v0.6/guides/configuring-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/docker + https://www.ory.com/kratos/docs/v0.6/guides/docker weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/e2e-integration-tests + https://www.ory.com/kratos/docs/v0.6/guides/e2e-integration-tests weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/high-availability-ha + https://www.ory.com/kratos/docs/v0.6/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/hosting-own-have-i-been-pwned-api + https://www.ory.com/kratos/docs/v0.6/guides/hosting-own-have-i-been-pwned-api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/integration-with-other-systems-using-web-hooks + https://www.ory.com/kratos/docs/v0.6/guides/integration-with-other-systems-using-web-hooks weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/login-session + https://www.ory.com/kratos/docs/v0.6/guides/login-session weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/multi-domain-cookies + https://www.ory.com/kratos/docs/v0.6/guides/multi-domain-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/v0.6/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/production + https://www.ory.com/kratos/docs/v0.6/guides/production weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/secret-key-rotation + https://www.ory.com/kratos/docs/v0.6/guides/secret-key-rotation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/security-questions-best-practice + https://www.ory.com/kratos/docs/v0.6/guides/security-questions-best-practice weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/setting-up-cors + https://www.ory.com/kratos/docs/v0.6/guides/setting-up-cors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/setting-up-password-hashing-parameters + https://www.ory.com/kratos/docs/v0.6/guides/setting-up-password-hashing-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/v0.6/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/v0.6/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/install + https://www.ory.com/kratos/docs/v0.6/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/milestones + https://www.ory.com/kratos/docs/v0.6/milestones weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/quickstart + https://www.ory.com/kratos/docs/v0.6/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/reference/api + https://www.ory.com/kratos/docs/v0.6/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/reference/configuration + https://www.ory.com/kratos/docs/v0.6/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/reference/html-forms + https://www.ory.com/kratos/docs/v0.6/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.6/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/reference/jsonnet + https://www.ory.com/kratos/docs/v0.6/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/sdk + https://www.ory.com/kratos/docs/v0.6/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service + https://www.ory.com/kratos/docs/v0.6/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/v0.6/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/account-recovery + https://www.ory.com/kratos/docs/v0.6/self-service/flows/account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-login + https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-registration + https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/user-settings + https://www.ory.com/kratos/docs/v0.6/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.6/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.6/self-service/hooks + https://www.ory.com/kratos/docs/v0.6/self-service/hooks weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/ + https://www.ory.com/kratos/docs/v0.7/ weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/admin/managing-users-identities + https://www.ory.com/kratos/docs/v0.7/admin/managing-users-identities weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos + https://www.ory.com/kratos/docs/v0.7/cli/kratos weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-courier + https://www.ory.com/kratos/docs/v0.7/cli/kratos-courier weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-courier-watch + https://www.ory.com/kratos/docs/v0.7/cli/kratos-courier-watch weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers + https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2 + https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2-calibrate + https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2-calibrate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2-hash + https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2-hash weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-hashers-argon2-load-test + https://www.ory.com/kratos/docs/v0.7/cli/kratos-hashers-argon2-load-test weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-delete + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-delete weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-get + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-get weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-import + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-import weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-list + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-list weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-patch + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-patch weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-put + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-put weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-identities-validate + https://www.ory.com/kratos/docs/v0.7/cli/kratos-identities-validate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-jsonnet + https://www.ory.com/kratos/docs/v0.7/cli/kratos-jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-jsonnet-format + https://www.ory.com/kratos/docs/v0.7/cli/kratos-jsonnet-format weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-jsonnet-lint + https://www.ory.com/kratos/docs/v0.7/cli/kratos-jsonnet-lint weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-migrate + https://www.ory.com/kratos/docs/v0.7/cli/kratos-migrate weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-migrate-sql + https://www.ory.com/kratos/docs/v0.7/cli/kratos-migrate-sql weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-remote + https://www.ory.com/kratos/docs/v0.7/cli/kratos-remote weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-remote-status + https://www.ory.com/kratos/docs/v0.7/cli/kratos-remote-status weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-remote-version + https://www.ory.com/kratos/docs/v0.7/cli/kratos-remote-version weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-serve + https://www.ory.com/kratos/docs/v0.7/cli/kratos-serve weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/cli/kratos-version + https://www.ory.com/kratos/docs/v0.7/cli/kratos-version weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/authenticators/look-up-secrets + https://www.ory.com/kratos/docs/v0.7/concepts/authenticators/look-up-secrets weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/browser-redirect-flow-completion + https://www.ory.com/kratos/docs/v0.7/concepts/browser-redirect-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/credentials + https://www.ory.com/kratos/docs/v0.7/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/v0.7/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/v0.7/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/docker + https://www.ory.com/kratos/docs/v0.7/concepts/docker weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/email-sms + https://www.ory.com/kratos/docs/v0.7/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/federation + https://www.ory.com/kratos/docs/v0.7/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/identity-schema + https://www.ory.com/kratos/docs/v0.7/concepts/identity-schema weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/index + https://www.ory.com/kratos/docs/v0.7/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/rest-api + https://www.ory.com/kratos/docs/v0.7/concepts/rest-api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/securing-applications + https://www.ory.com/kratos/docs/v0.7/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/security + https://www.ory.com/kratos/docs/v0.7/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/terminology + https://www.ory.com/kratos/docs/v0.7/concepts/terminology weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/concepts/ui-user-interface + https://www.ory.com/kratos/docs/v0.7/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/configuring + https://www.ory.com/kratos/docs/v0.7/configuring weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/contributing + https://www.ory.com/kratos/docs/v0.7/contributing weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/debug/csrf + https://www.ory.com/kratos/docs/v0.7/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/debug/performance-out-of-memory-password-hashing-argon2 + https://www.ory.com/kratos/docs/v0.7/debug/performance-out-of-memory-password-hashing-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/default_return_to + https://www.ory.com/kratos/docs/v0.7/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/error + https://www.ory.com/kratos/docs/v0.7/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/login + https://www.ory.com/kratos/docs/v0.7/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/mfa + https://www.ory.com/kratos/docs/v0.7/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/recovery + https://www.ory.com/kratos/docs/v0.7/fallback/recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/registration + https://www.ory.com/kratos/docs/v0.7/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/settings + https://www.ory.com/kratos/docs/v0.7/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/fallback/verification + https://www.ory.com/kratos/docs/v0.7/fallback/verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/faq + https://www.ory.com/kratos/docs/v0.7/faq weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/further-reading/comparison + https://www.ory.com/kratos/docs/v0.7/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/further-reading/contrib + https://www.ory.com/kratos/docs/v0.7/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/further-reading/kratos-video-tutorials + https://www.ory.com/kratos/docs/v0.7/further-reading/kratos-video-tutorials weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/account-activation-email-verification + https://www.ory.com/kratos/docs/v0.7/guides/account-activation-email-verification weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/account-recovery-password-reset + https://www.ory.com/kratos/docs/v0.7/guides/account-recovery-password-reset weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/configuring-cookies + https://www.ory.com/kratos/docs/v0.7/guides/configuring-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/docker + https://www.ory.com/kratos/docs/v0.7/guides/docker weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/e2e-integration-tests + https://www.ory.com/kratos/docs/v0.7/guides/e2e-integration-tests weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/high-availability-ha + https://www.ory.com/kratos/docs/v0.7/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/hosting-own-have-i-been-pwned-api + https://www.ory.com/kratos/docs/v0.7/guides/hosting-own-have-i-been-pwned-api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/https-tls + https://www.ory.com/kratos/docs/v0.7/guides/https-tls weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/integration-with-other-systems-using-web-hooks + https://www.ory.com/kratos/docs/v0.7/guides/integration-with-other-systems-using-web-hooks weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/login-session + https://www.ory.com/kratos/docs/v0.7/guides/login-session weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/multi-domain-cookies + https://www.ory.com/kratos/docs/v0.7/guides/multi-domain-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/v0.7/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/production + https://www.ory.com/kratos/docs/v0.7/guides/production weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/secret-key-rotation + https://www.ory.com/kratos/docs/v0.7/guides/secret-key-rotation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/security-questions-best-practice + https://www.ory.com/kratos/docs/v0.7/guides/security-questions-best-practice weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/setting-up-cors + https://www.ory.com/kratos/docs/v0.7/guides/setting-up-cors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/setting-up-password-hashing-parameters + https://www.ory.com/kratos/docs/v0.7/guides/setting-up-password-hashing-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/v0.7/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/tracing + https://www.ory.com/kratos/docs/v0.7/guides/tracing weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/v0.7/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/install + https://www.ory.com/kratos/docs/v0.7/install weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/milestones + https://www.ory.com/kratos/docs/v0.7/milestones weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/quickstart + https://www.ory.com/kratos/docs/v0.7/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/reference/api + https://www.ory.com/kratos/docs/v0.7/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/reference/configuration + https://www.ory.com/kratos/docs/v0.7/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/reference/html-forms + https://www.ory.com/kratos/docs/v0.7/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/v0.7/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/reference/jsonnet + https://www.ory.com/kratos/docs/v0.7/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/sdk + https://www.ory.com/kratos/docs/v0.7/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service + https://www.ory.com/kratos/docs/v0.7/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/v0.7/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/account-recovery + https://www.ory.com/kratos/docs/v0.7/self-service/flows/account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-login + https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-login weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-logout + https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-registration + https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/user-settings + https://www.ory.com/kratos/docs/v0.7/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/v0.7/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/v0.7/self-service/hooks + https://www.ory.com/kratos/docs/v0.7/self-service/hooks weekly 0.5 - https://www.ory.sh/kratos/docs/ + https://www.ory.com/kratos/docs/ weekly 0.5 - https://www.ory.sh/kratos/docs/admin/managing-users-identities + https://www.ory.com/kratos/docs/admin/managing-users-identities weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos + https://www.ory.com/kratos/docs/cli/kratos weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-courier + https://www.ory.com/kratos/docs/cli/kratos-courier weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-courier-watch + https://www.ory.com/kratos/docs/cli/kratos-courier-watch weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-hashers + https://www.ory.com/kratos/docs/cli/kratos-hashers weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2 + https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2-calibrate + https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2-calibrate weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2-hash + https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2-hash weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-hashers-argon2-load-test + https://www.ory.com/kratos/docs/cli/kratos-hashers-argon2-load-test weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities + https://www.ory.com/kratos/docs/cli/kratos-identities weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-delete + https://www.ory.com/kratos/docs/cli/kratos-identities-delete weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-get + https://www.ory.com/kratos/docs/cli/kratos-identities-get weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-import + https://www.ory.com/kratos/docs/cli/kratos-identities-import weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-list + https://www.ory.com/kratos/docs/cli/kratos-identities-list weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-patch + https://www.ory.com/kratos/docs/cli/kratos-identities-patch weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-put + https://www.ory.com/kratos/docs/cli/kratos-identities-put weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-identities-validate + https://www.ory.com/kratos/docs/cli/kratos-identities-validate weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-jsonnet + https://www.ory.com/kratos/docs/cli/kratos-jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-jsonnet-format + https://www.ory.com/kratos/docs/cli/kratos-jsonnet-format weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-jsonnet-lint + https://www.ory.com/kratos/docs/cli/kratos-jsonnet-lint weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-migrate + https://www.ory.com/kratos/docs/cli/kratos-migrate weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-migrate-sql + https://www.ory.com/kratos/docs/cli/kratos-migrate-sql weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-remote + https://www.ory.com/kratos/docs/cli/kratos-remote weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-remote-status + https://www.ory.com/kratos/docs/cli/kratos-remote-status weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-remote-version + https://www.ory.com/kratos/docs/cli/kratos-remote-version weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-serve + https://www.ory.com/kratos/docs/cli/kratos-serve weekly 0.5 - https://www.ory.sh/kratos/docs/cli/kratos-version + https://www.ory.com/kratos/docs/cli/kratos-version weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/browser-redirect-flow-completion + https://www.ory.com/kratos/docs/concepts/browser-redirect-flow-completion weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/credentials + https://www.ory.com/kratos/docs/concepts/credentials weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/credentials/lookup-secrets + https://www.ory.com/kratos/docs/concepts/credentials/lookup-secrets weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/credentials/openid-connect-oidc-oauth2 + https://www.ory.com/kratos/docs/concepts/credentials/openid-connect-oidc-oauth2 weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/credentials/totp + https://www.ory.com/kratos/docs/concepts/credentials/totp weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/credentials/username-email-password + https://www.ory.com/kratos/docs/concepts/credentials/username-email-password weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/credentials/webauthn + https://www.ory.com/kratos/docs/concepts/credentials/webauthn weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/docker + https://www.ory.com/kratos/docs/concepts/docker weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/email-sms + https://www.ory.com/kratos/docs/concepts/email-sms weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/federation + https://www.ory.com/kratos/docs/concepts/federation weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/identity-schema + https://www.ory.com/kratos/docs/concepts/identity-schema weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/index + https://www.ory.com/kratos/docs/concepts/index weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/management-ui + https://www.ory.com/kratos/docs/concepts/management-ui weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/rest-api + https://www.ory.com/kratos/docs/concepts/rest-api weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/securing-applications + https://www.ory.com/kratos/docs/concepts/securing-applications weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/security + https://www.ory.com/kratos/docs/concepts/security weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/session + https://www.ory.com/kratos/docs/concepts/session weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/terminology + https://www.ory.com/kratos/docs/concepts/terminology weekly 0.5 - https://www.ory.sh/kratos/docs/concepts/ui-user-interface + https://www.ory.com/kratos/docs/concepts/ui-user-interface weekly 0.5 - https://www.ory.sh/kratos/docs/configuring + https://www.ory.com/kratos/docs/configuring weekly 0.5 - https://www.ory.sh/kratos/docs/contributing + https://www.ory.com/kratos/docs/contributing weekly 0.5 - https://www.ory.sh/kratos/docs/debug/csrf + https://www.ory.com/kratos/docs/debug/csrf weekly 0.5 - https://www.ory.sh/kratos/docs/debug/debug-docker-delve-ory-kratos + https://www.ory.com/kratos/docs/debug/debug-docker-delve-ory-kratos weekly 0.5 - https://www.ory.sh/kratos/docs/debug/performance-out-of-memory-password-hashing-argon2 + https://www.ory.com/kratos/docs/debug/performance-out-of-memory-password-hashing-argon2 weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/default_return_to + https://www.ory.com/kratos/docs/fallback/default_return_to weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/error + https://www.ory.com/kratos/docs/fallback/error weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/login + https://www.ory.com/kratos/docs/fallback/login weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/mfa + https://www.ory.com/kratos/docs/fallback/mfa weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/recovery + https://www.ory.com/kratos/docs/fallback/recovery weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/registration + https://www.ory.com/kratos/docs/fallback/registration weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/settings + https://www.ory.com/kratos/docs/fallback/settings weekly 0.5 - https://www.ory.sh/kratos/docs/fallback/verification + https://www.ory.com/kratos/docs/fallback/verification weekly 0.5 - https://www.ory.sh/kratos/docs/faq + https://www.ory.com/kratos/docs/faq weekly 0.5 - https://www.ory.sh/kratos/docs/further-reading/comparison + https://www.ory.com/kratos/docs/further-reading/comparison weekly 0.5 - https://www.ory.sh/kratos/docs/further-reading/contrib + https://www.ory.com/kratos/docs/further-reading/contrib weekly 0.5 - https://www.ory.sh/kratos/docs/further-reading/kratos-video-tutorials + https://www.ory.com/kratos/docs/further-reading/kratos-video-tutorials weekly 0.5 - https://www.ory.sh/kratos/docs/guides/account-activation-email-verification + https://www.ory.com/kratos/docs/guides/account-activation-email-verification weekly 0.5 - https://www.ory.sh/kratos/docs/guides/account-recovery-password-reset + https://www.ory.com/kratos/docs/guides/account-recovery-password-reset weekly 0.5 - https://www.ory.sh/kratos/docs/guides/configuring-cookies + https://www.ory.com/kratos/docs/guides/configuring-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/guides/custom-ui + https://www.ory.com/kratos/docs/guides/custom-ui weekly 0.5 - https://www.ory.sh/kratos/docs/guides/docker + https://www.ory.com/kratos/docs/guides/docker weekly 0.5 - https://www.ory.sh/kratos/docs/guides/e2e-integration-tests + https://www.ory.com/kratos/docs/guides/e2e-integration-tests weekly 0.5 - https://www.ory.sh/kratos/docs/guides/high-availability-ha + https://www.ory.com/kratos/docs/guides/high-availability-ha weekly 0.5 - https://www.ory.sh/kratos/docs/guides/hosting-own-have-i-been-pwned-api + https://www.ory.com/kratos/docs/guides/hosting-own-have-i-been-pwned-api weekly 0.5 - https://www.ory.sh/kratos/docs/guides/https-tls + https://www.ory.com/kratos/docs/guides/https-tls weekly 0.5 - https://www.ory.sh/kratos/docs/guides/integration-with-other-systems-using-web-hooks + https://www.ory.com/kratos/docs/guides/integration-with-other-systems-using-web-hooks weekly 0.5 - https://www.ory.sh/kratos/docs/guides/login-session + https://www.ory.com/kratos/docs/guides/login-session weekly 0.5 - https://www.ory.sh/kratos/docs/guides/multi-domain-cookies + https://www.ory.com/kratos/docs/guides/multi-domain-cookies weekly 0.5 - https://www.ory.sh/kratos/docs/guides/multi-tenancy-multitenant + https://www.ory.com/kratos/docs/guides/multi-tenancy-multitenant weekly 0.5 - https://www.ory.sh/kratos/docs/guides/production + https://www.ory.com/kratos/docs/guides/production weekly 0.5 - https://www.ory.sh/kratos/docs/guides/retrieve-social-sign-in-access-refresh-id-token + https://www.ory.com/kratos/docs/guides/retrieve-social-sign-in-access-refresh-id-token weekly 0.5 - https://www.ory.sh/kratos/docs/guides/secret-key-rotation + https://www.ory.com/kratos/docs/guides/secret-key-rotation weekly 0.5 - https://www.ory.sh/kratos/docs/guides/security-questions-best-practice + https://www.ory.com/kratos/docs/guides/security-questions-best-practice weekly 0.5 - https://www.ory.sh/kratos/docs/guides/setting-up-aes-cipher-parameters + https://www.ory.com/kratos/docs/guides/setting-up-aes-cipher-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/guides/setting-up-cors + https://www.ory.com/kratos/docs/guides/setting-up-cors weekly 0.5 - https://www.ory.sh/kratos/docs/guides/setting-up-noop-cipher-parameters + https://www.ory.com/kratos/docs/guides/setting-up-noop-cipher-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/guides/setting-up-password-hashing-parameters + https://www.ory.com/kratos/docs/guides/setting-up-password-hashing-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/guides/setting-up-xchacha-cipher-parameters + https://www.ory.com/kratos/docs/guides/setting-up-xchacha-cipher-parameters weekly 0.5 - https://www.ory.sh/kratos/docs/guides/sign-in-with-github-google-facebook-linkedin + https://www.ory.com/kratos/docs/guides/sign-in-with-github-google-facebook-linkedin weekly 0.5 - https://www.ory.sh/kratos/docs/guides/tracing + https://www.ory.com/kratos/docs/guides/tracing weekly 0.5 - https://www.ory.sh/kratos/docs/guides/zero-trust-iap-proxy-identity-access-proxy + https://www.ory.com/kratos/docs/guides/zero-trust-iap-proxy-identity-access-proxy weekly 0.5 - https://www.ory.sh/kratos/docs/install + https://www.ory.com/kratos/docs/install weekly 0.5 - https://www.ory.sh/kratos/docs/milestones + https://www.ory.com/kratos/docs/milestones weekly 0.5 - https://www.ory.sh/kratos/docs/quickstart + https://www.ory.com/kratos/docs/quickstart weekly 0.5 - https://www.ory.sh/kratos/docs/reference/api + https://www.ory.com/kratos/docs/reference/api weekly 0.5 - https://www.ory.sh/kratos/docs/reference/configuration + https://www.ory.com/kratos/docs/reference/configuration weekly 0.5 - https://www.ory.sh/kratos/docs/reference/html-forms + https://www.ory.com/kratos/docs/reference/html-forms weekly 0.5 - https://www.ory.sh/kratos/docs/reference/json-schema-json-paths + https://www.ory.com/kratos/docs/reference/json-schema-json-paths weekly 0.5 - https://www.ory.sh/kratos/docs/reference/jsonnet + https://www.ory.com/kratos/docs/reference/jsonnet weekly 0.5 - https://www.ory.sh/kratos/docs/sdk + https://www.ory.com/kratos/docs/sdk weekly 0.5 - https://www.ory.sh/kratos/docs/self-service + https://www.ory.com/kratos/docs/self-service weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/2fa-mfa-multi-factor-authentication + https://www.ory.com/kratos/docs/self-service/flows/2fa-mfa-multi-factor-authentication weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/account-recovery + https://www.ory.com/kratos/docs/self-service/flows/account-recovery weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/user-facing-errors + https://www.ory.com/kratos/docs/self-service/flows/user-facing-errors weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/user-login + https://www.ory.com/kratos/docs/self-service/flows/user-login weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/user-logout + https://www.ory.com/kratos/docs/self-service/flows/user-logout weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/user-registration + https://www.ory.com/kratos/docs/self-service/flows/user-registration weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/user-settings + https://www.ory.com/kratos/docs/self-service/flows/user-settings weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/flows/verify-email-account-activation + https://www.ory.com/kratos/docs/self-service/flows/verify-email-account-activation weekly 0.5 - https://www.ory.sh/kratos/docs/self-service/hooks + https://www.ory.com/kratos/docs/self-service/hooks weekly 0.5 - https://www.ory.sh/kratos/docs/two-factor-authentication-2fa-mfa + https://www.ory.com/kratos/docs/two-factor-authentication-2fa-mfa weekly 0.5 diff --git a/tests/jest/sitemaps/sitemap_oathkeeper.xml b/tests/jest/sitemaps/sitemap_oathkeeper.xml index f40dd0c1d8..a48b6ed41d 100644 --- a/tests/jest/sitemaps/sitemap_oathkeeper.xml +++ b/tests/jest/sitemaps/sitemap_oathkeeper.xml @@ -3,237 +3,237 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> - https://www.ory.sh/oathkeeper/docs/http-api + https://www.ory.com/oathkeeper/docs/http-api weekly 0.5 - https://www.ory.sh/oathkeeper/docs/search + https://www.ory.com/oathkeeper/docs/search weekly 0.5 - https://www.ory.sh/oathkeeper/docs/versions + https://www.ory.com/oathkeeper/docs/versions weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/ + https://www.ory.com/oathkeeper/docs/next/ weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/api-access-rules + https://www.ory.com/oathkeeper/docs/next/api-access-rules weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/changelog + https://www.ory.com/oathkeeper/docs/next/changelog weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/configure-deploy + https://www.ory.com/oathkeeper/docs/next/configure-deploy weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/contributing + https://www.ory.com/oathkeeper/docs/next/contributing weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/install + https://www.ory.com/oathkeeper/docs/next/install weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/milestones + https://www.ory.com/oathkeeper/docs/next/milestones weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/oauth2-token-introspection-hydra + https://www.ory.com/oathkeeper/docs/next/oauth2-token-introspection-hydra weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/pipeline + https://www.ory.com/oathkeeper/docs/next/pipeline weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/pipeline/authn + https://www.ory.com/oathkeeper/docs/next/pipeline/authn weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/pipeline/authz + https://www.ory.com/oathkeeper/docs/next/pipeline/authz weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/pipeline/error + https://www.ory.com/oathkeeper/docs/next/pipeline/error weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/pipeline/mutator + https://www.ory.com/oathkeeper/docs/next/pipeline/mutator weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/reference/api + https://www.ory.com/oathkeeper/docs/next/reference/api weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/reference/configuration + https://www.ory.com/oathkeeper/docs/next/reference/configuration weekly 0.5 - https://www.ory.sh/oathkeeper/docs/next/sdk + https://www.ory.com/oathkeeper/docs/next/sdk weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/ + https://www.ory.com/oathkeeper/docs/v0.37/ weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/api-access-rules + https://www.ory.com/oathkeeper/docs/v0.37/api-access-rules weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/configure-deploy + https://www.ory.com/oathkeeper/docs/v0.37/configure-deploy weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/install + https://www.ory.com/oathkeeper/docs/v0.37/install weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/authn + https://www.ory.com/oathkeeper/docs/v0.37/pipeline/authn weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/authz + https://www.ory.com/oathkeeper/docs/v0.37/pipeline/authz weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/error + https://www.ory.com/oathkeeper/docs/v0.37/pipeline/error weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/index + https://www.ory.com/oathkeeper/docs/v0.37/pipeline/index weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/pipeline/mutator + https://www.ory.com/oathkeeper/docs/v0.37/pipeline/mutator weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/reference/api + https://www.ory.com/oathkeeper/docs/v0.37/reference/api weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/reference/configuration + https://www.ory.com/oathkeeper/docs/v0.37/reference/configuration weekly 0.5 - https://www.ory.sh/oathkeeper/docs/v0.37/sdk/index + https://www.ory.com/oathkeeper/docs/v0.37/sdk/index weekly 0.5 - https://www.ory.sh/oathkeeper/docs/ + https://www.ory.com/oathkeeper/docs/ weekly 0.5 - https://www.ory.sh/oathkeeper/docs/api-access-rules + https://www.ory.com/oathkeeper/docs/api-access-rules weekly 0.5 - https://www.ory.sh/oathkeeper/docs/changelog + https://www.ory.com/oathkeeper/docs/changelog weekly 0.5 - https://www.ory.sh/oathkeeper/docs/configure-deploy + https://www.ory.com/oathkeeper/docs/configure-deploy weekly 0.5 - https://www.ory.sh/oathkeeper/docs/contributing + https://www.ory.com/oathkeeper/docs/contributing weekly 0.5 - https://www.ory.sh/oathkeeper/docs/install + https://www.ory.com/oathkeeper/docs/install weekly 0.5 - https://www.ory.sh/oathkeeper/docs/milestones + https://www.ory.com/oathkeeper/docs/milestones weekly 0.5 - https://www.ory.sh/oathkeeper/docs/oauth2-token-introspection-hydra + https://www.ory.com/oathkeeper/docs/oauth2-token-introspection-hydra weekly 0.5 - https://www.ory.sh/oathkeeper/docs/pipeline + https://www.ory.com/oathkeeper/docs/pipeline weekly 0.5 - https://www.ory.sh/oathkeeper/docs/pipeline/authn + https://www.ory.com/oathkeeper/docs/pipeline/authn weekly 0.5 - https://www.ory.sh/oathkeeper/docs/pipeline/authz + https://www.ory.com/oathkeeper/docs/pipeline/authz weekly 0.5 - https://www.ory.sh/oathkeeper/docs/pipeline/error + https://www.ory.com/oathkeeper/docs/pipeline/error weekly 0.5 - https://www.ory.sh/oathkeeper/docs/pipeline/mutator + https://www.ory.com/oathkeeper/docs/pipeline/mutator weekly 0.5 - https://www.ory.sh/oathkeeper/docs/reference/api + https://www.ory.com/oathkeeper/docs/reference/api weekly 0.5 - https://www.ory.sh/oathkeeper/docs/reference/configuration + https://www.ory.com/oathkeeper/docs/reference/configuration weekly 0.5 - https://www.ory.sh/oathkeeper/docs/sdk + https://www.ory.com/oathkeeper/docs/sdk weekly 0.5 diff --git a/vercel.json b/vercel.json index 5a74da2e6d..f22c5cdece 100644 --- a/vercel.json +++ b/vercel.json @@ -7,7 +7,7 @@ "redirects": [ { "source": "/", - "destination": "https://www.ory.sh/docs", + "destination": "https://www.ory.com/docs", "has": [ { "type": "header", @@ -19,7 +19,7 @@ }, { "source": "/docs(/|)", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "has": [ { "type": "header", @@ -56,152 +56,152 @@ }, { "source": "/oathkeeper/docs/:path*", - "destination": "https://www.ory.sh/docs/oathkeeper/:path", + "destination": "https://www.ory.com/docs/oathkeeper/:path", "permanent": false }, { "source": "/oathkeeper/docs", - "destination": "https://www.ory.sh/docs/oathkeeper", + "destination": "https://www.ory.com/docs/oathkeeper", "permanent": false }, { "source": "/docs/oathkeeper/:version(v[0-9.]+|next)/:path*", - "destination": "https://www.ory.sh/docs/oathkeeper/:path", + "destination": "https://www.ory.com/docs/oathkeeper/:path", "permanent": false }, { "source": "/docs/oathkeeper/:version(v[0-9.]+|v[0-9.]+/|next|next/)", - "destination": "https://www.ory.sh/docs/oathkeeper", + "destination": "https://www.ory.com/docs/oathkeeper", "permanent": false }, { "source": "/hydra/docs/:path*", - "destination": "https://www.ory.sh/docs/hydra/:path", + "destination": "https://www.ory.com/docs/hydra/:path", "permanent": false }, { "source": "/hydra/docs", - "destination": "https://www.ory.sh/docs/hydra", + "destination": "https://www.ory.com/docs/hydra", "permanent": false }, { "source": "/docs/hydra/:version(v[0-9.]+|next)/:path*", - "destination": "https://www.ory.sh/docs/hydra/:path", + "destination": "https://www.ory.com/docs/hydra/:path", "permanent": false }, { "source": "/docs/hydra/:version(v[0-9.]+|v[0-9.]+/|next|next/)", - "destination": "https://www.ory.sh/docs/hydra", + "destination": "https://www.ory.com/docs/hydra", "permanent": false }, { "source": "/keto/docs/:path*", - "destination": "https://www.ory.sh/docs/keto/:path", + "destination": "https://www.ory.com/docs/keto/:path", "permanent": false }, { "source": "/keto/docs", - "destination": "https://www.ory.sh/docs/keto", + "destination": "https://www.ory.com/docs/keto", "permanent": false }, { "source": "/docs/keto/:version(v[0-9.]+|next)/:path*", - "destination": "https://www.ory.sh/docs/keto/:path", + "destination": "https://www.ory.com/docs/keto/:path", "permanent": false }, { "source": "/docs/keto/:version(v[0-9.]+|v[0-9.]+/|next|next/)", - "destination": "https://www.ory.sh/docs/keto", + "destination": "https://www.ory.com/docs/keto", "permanent": false }, { "source": "/kratos/docs/:path*", - "destination": "https://www.ory.sh/docs/kratos/:path", + "destination": "https://www.ory.com/docs/kratos/:path", "permanent": false }, { "source": "/kratos/docs", - "destination": "https://www.ory.sh/docs/kratos", + "destination": "https://www.ory.com/docs/kratos", "permanent": false }, { "source": "/docs/kratos/:version(v[0-9.]+|next)/:path*", - "destination": "https://www.ory.sh/docs/kratos/:path", + "destination": "https://www.ory.com/docs/kratos/:path", "permanent": false }, { "source": "/docs/kratos/:version(v[0-9.]+|v[0-9.]+/|next|next/)", - "destination": "https://www.ory.sh/docs/kratos", + "destination": "https://www.ory.com/docs/kratos", "permanent": false }, { "source": "/docs/start-building/create-project", - "destination": "https://www.ory.sh/docs/guides/console/create-project", + "destination": "https://www.ory.com/docs/guides/console/create-project", "permanent": false }, { "source": "/docs/start-building", - "destination": "https://www.ory.sh/docs", + "destination": "https://www.ory.com/docs", "permanent": false }, { "source": "/docs/start-building/ory-cli-install-use", - "destination": "https://www.ory.sh/docs/guides/ory-cli-install-use", + "destination": "https://www.ory.com/docs/guides/ory-cli-install-use", "permanent": false }, { "source": "/docs/start-building/server-side-web-app", - "destination": "https://www.ory.sh/docs/guides/protect-page-login/go", + "destination": "https://www.ory.com/docs/guides/protect-page-login/go", "permanent": false }, { "source": "/docs/http-api", - "destination": "https://www.ory.sh/docs/reference/api", + "destination": "https://www.ory.com/docs/reference/api", "permanent": false }, { "source": "/docs/oathkeeper/http-api", - "destination": "https://www.ory.sh/docs/oathkeeper/reference/api", + "destination": "https://www.ory.com/docs/oathkeeper/reference/api", "permanent": false }, { "source": "/docs/hydra/http-api", - "destination": "https://www.ory.sh/docs/hydra/reference/api", + "destination": "https://www.ory.com/docs/hydra/reference/api", "permanent": false }, { "source": "/docs/kratos/http-api", - "destination": "https://www.ory.sh/docs/kratos/reference/api", + "destination": "https://www.ory.com/docs/kratos/reference/api", "permanent": false }, { "source": "/docs/guides/integrate-golang", - "destination": "https://www.ory.sh/docs/guides/protect-page-login/go", + "destination": "https://www.ory.com/docs/guides/protect-page-login/go", "permanent": false }, { "source": "/docs/hydra/debugging", - "destination": "https://www.ory.sh/docs/hydra/debug", + "destination": "https://www.ory.com/docs/hydra/debug", "permanent": false }, { "source": "/docs/hydra/implementing-consent", - "destination": "https://www.ory.sh/docs/hydra/guides/consent", + "destination": "https://www.ory.com/docs/hydra/guides/consent", "permanent": false }, { "source": "/docs/hydra/oauth2", - "destination": "https://www.ory.sh/docs/hydra/concepts/oauth2", + "destination": "https://www.ory.com/docs/hydra/concepts/oauth2", "permanent": false }, { "source": "/docs/hydra/integration", - "destination": "https://www.ory.sh/docs/hydra/guides/using-oauth2", + "destination": "https://www.ory.com/docs/hydra/guides/using-oauth2", "permanent": false }, { "source": "/docs/keto/http-api", - "destination": "https://www.ory.sh/docs/keto/reference/api", + "destination": "https://www.ory.com/docs/keto/reference/api", "permanent": false }, { @@ -246,137 +246,137 @@ }, { "source": "/docs/versions", - "destination": "https://www.ory.sh/docs", + "destination": "https://www.ory.com/docs", "permanent": false }, { "source": "/docs/hydra/versions", - "destination": "https://www.ory.sh/docs/hydra", + "destination": "https://www.ory.com/docs/hydra", "permanent": false }, { "source": "/docs/hydra/versions", - "destination": "https://www.ory.sh/docs/hydra", + "destination": "https://www.ory.com/docs/hydra", "permanent": false }, { "source": "/docs/keto/versions", - "destination": "https://www.ory.sh/docs/keto", + "destination": "https://www.ory.com/docs/keto", "permanent": false }, { "source": "/docs/kratos/versions", - "destination": "https://www.ory.sh/docs/kratos", + "destination": "https://www.ory.com/docs/kratos", "permanent": false }, { "source": "/docs/oathkeeper/versions", - "destination": "https://www.ory.sh/docs/oathkeeper", + "destination": "https://www.ory.com/docs/oathkeeper", "permanent": false }, { "source": "/docs/keto/reference/api", - "destination": "https://www.ory.sh/docs/keto/reference/rest-api", + "destination": "https://www.ory.com/docs/keto/reference/rest-api", "permanent": false }, { "source": "/docs/kratos/sdk/api", - "destination": "https://www.ory.sh/docs/kratos/reference/api", + "destination": "https://www.ory.com/docs/kratos/reference/api", "permanent": false }, { "source": "/docs/kratos/faq", - "destination": "https://www.ory.sh/docs/kratos", + "destination": "https://www.ory.com/docs/kratos", "permanent": false }, { "source": "/:path*/index", - "destination": "https://www.ory.sh/:path", + "destination": "https://www.ory.com/:path", "permanent": false }, { "source": "/docs/kratos/concepts/identity-(data|user)-model", - "destination": "https://www.ory.sh/docs/kratos/concepts/identity-schema", + "destination": "https://www.ory.com/docs/kratos/concepts/identity-schema", "permanent": false }, { "source": "/docs/kratos/self-service/flows/(user-settings|user-profile-management)/:path", - "destination": "https://www.ory.sh/docs/kratos/self-service/flows/user-settings", + "destination": "https://www.ory.com/docs/kratos/self-service/flows/user-settings", "permanent": false }, { "source": "/docs/kratos/self-service/flows/user-login-(user-|)registration/:path", - "destination": "https://www.ory.sh/docs/kratos/self-service/flows/user-login", + "destination": "https://www.ory.com/docs/kratos/self-service/flows/user-login", "permanent": false }, { "source": "/docs/kratos/self-service/flows/(password-reset-|)account-recovery/:path", - "destination": "https://www.ory.sh/docs/kratos/self-service/flows/account-recovery", + "destination": "https://www.ory.com/docs/kratos/self-service/flows/account-recovery", "permanent": false }, { "source": "/docs/kratos/self-service/(flows|strategies)", - "destination": "https://www.ory.sh/docs/kratos/self-service", + "destination": "https://www.ory.com/docs/kratos/self-service", "permanent": false }, { "source": "/docs/:project/search", - "destination": "https://www.ory.sh/docs", + "destination": "https://www.ory.com/docs", "permanent": false }, { "source": "/docs/kratos/concepts/authenticators/look-up-secrets", - "destination": "https://www.ory.sh/docs/kratos/guides/two-factor-authentication-2fa-mfa", + "destination": "https://www.ory.com/docs/kratos/guides/two-factor-authentication-2fa-mfa", "permanent": false }, { "source": "/docs/kratos/two-factor-authentication-2fa-mfa", - "destination": "https://www.ory.sh/docs/kratos/guides/two-factor-authentication-2fa-mfa", + "destination": "https://www.ory.com/docs/kratos/guides/two-factor-authentication-2fa-mfa", "permanent": false }, { "source": "/docs/start-building/server-side-web-app", - "destination": "https://www.ory.sh/docs/guides/protect-page-login/expressjs", + "destination": "https://www.ory.com/docs/guides/protect-page-login/expressjs", "permanent": false }, { "source": "/docs/start-building/ssingle-page-app-spa", - "destination": "https://www.ory.sh/docs/guides/protect-page-login/next.js", + "destination": "https://www.ory.com/docs/guides/protect-page-login/next.js", "permanent": false }, { "source": "/docs/kratos/guides/kratos-video-tutorials", - "destination": "https://www.ory.sh/docs/kratos/further-reading/kratos-video-tutorials", + "destination": "https://www.ory.com/docs/kratos/further-reading/kratos-video-tutorials", "permanent": false }, { "source": "/docs/kratos/concepts/selfservice-flow-completion", - "destination": "https://www.ory.sh/docs/kratos/concepts/browser-redirect-flow-completion", + "destination": "https://www.ory.com/docs/kratos/concepts/browser-redirect-flow-completion", "permanent": false }, { "source": "/docs/kratos/guides/login-session", - "destination": "https://www.ory.sh/docs/kratos/session-management/overview", + "destination": "https://www.ory.com/docs/kratos/session-management/overview", "permanent": false }, { "source": "/docs/kratos/concepts/session", - "destination": "https://www.ory.sh/docs/guides/session-management/overview", + "destination": "https://www.ory.com/docs/guides/session-management/overview", "permanent": false }, { "source": "/:path*/index", - "destination": "https://www.ory.sh/:path", + "destination": "https://www.ory.com/:path", "permanent": false }, { "source": "/docs/guides/config-with-cli", - "destination": "https://www.ory.sh/docs/guides/cli/config-with-cli", + "destination": "https://www.ory.com/docs/guides/cli/config-with-cli", "permanent": false }, { "source": "/docs/guides/ory-cli-install-use", - "destination": "https://www.ory.sh/docs/guides/cli/installation", + "destination": "https://www.ory.com/docs/guides/cli/installation", "permanent": false }, { @@ -386,82 +386,82 @@ }, { "source": "/docs/guides/proxy", - "destination": "https://www.ory.sh/docs/guides/cli/proxy-and-tunnel", + "destination": "https://www.ory.com/docs/guides/cli/proxy-and-tunnel", "permanent": false }, { "source": "/docs/keto/engines", - "destination": "https://www.ory.sh/docs/keto/guides/upgrade", + "destination": "https://www.ory.com/docs/keto/guides/upgrade", "permanent": false }, { "source": "/docs/kratos/admin/managing-users-identities", - "destination": "https://www.ory.sh/docs/guides/manage-identities/managing-users-identities", + "destination": "https://www.ory.com/docs/guides/manage-identities/managing-users-identities", "permanent": false }, { "source": "/docs/kratos/guides/sign-in-with-github-google-facebook-linkedin", - "destination": "https://www.ory.sh/docs/guides/social-signin/overview", + "destination": "https://www.ory.com/docs/guides/social-signin/overview", "permanent": false }, { "source": "/docs/cloud/developer", - "destination": "https://www.ory.sh/pricing", + "destination": "https://www.ory.com/pricing", "permanent": false }, { "source": "/docs/cloud/cloud-roadmap", - "destination": "https://www.ory.sh/cloud", + "destination": "https://www.ory.com/cloud", "permanent": false }, { "source": "/docs/kratos/guides/two-factor-authentication-2fa-mfa", - "destination": "https://www.ory.sh/docs/guides/mfa/overview", + "destination": "https://www.ory.com/docs/guides/mfa/overview", "permanent": false }, { "source": "/docs/guides/passwordless/social-sign-in", - "destination": "https://www.ory.sh/docs/guides/social-signin/overview", + "destination": "https://www.ory.com/docs/guides/social-signin/overview", "permanent": false }, { "source": "/docs/concepts/self-service", - "destination": "https://www.ory.sh/docs/kratos/self-service", + "destination": "https://www.ory.com/docs/kratos/self-service", "permanent": false }, { "source": "/docs/concepts/identity", - "destination": "https://www.ory.sh/docs/guides/manage-identities/identity", + "destination": "https://www.ory.com/docs/guides/manage-identities/identity", "permanent": false }, { "source": "/docs/concepts/managed-ui", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/concepts/project-invite-membership", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/concepts/project", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/concepts/terminology", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/guides/console/create-project", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/guides/create-personal-access-token", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { @@ -471,552 +471,552 @@ }, { "source": "/docs/kratos/concepts/credentials/lookup-secrets", - "destination": "https://www.ory.sh/docs/guides/mfa/lookup-secrets", + "destination": "https://www.ory.com/docs/guides/mfa/lookup-secrets", "permanent": false }, { "source": "/docs/guides/mfa/lookup_secrets", - "destination": "https://www.ory.sh/docs/guides/mfa/lookup-secrets", + "destination": "https://www.ory.com/docs/guides/mfa/lookup-secrets", "permanent": false }, { "source": "/docs/kratos/concepts/credentials/openid-connect-oidc-oauth2", - "destination": "https://www.ory.sh/docs/guides/social-signin/overview", + "destination": "https://www.ory.com/docs/guides/social-signin/overview", "permanent": false }, { "source": "/docs/kratos/concepts/credentials/totp", - "destination": "https://www.ory.sh/docs/guides/mfa/totp", + "destination": "https://www.ory.com/docs/guides/mfa/totp", "permanent": false }, { "source": "/docs/kratos/concepts/credentials/webauthn", - "destination": "https://www.ory.sh/docs/guides/mfa/webauthn-fido-yubikey", + "destination": "https://www.ory.com/docs/guides/mfa/webauthn-fido-yubikey", "permanent": false }, { "source": "/docs/kratos/concepts/federation", - "destination": "https://www.ory.sh/docs/kratos/", + "destination": "https://www.ory.com/docs/kratos/", "permanent": false }, { "source": "/docs/kratos/concepts/management-ui", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/kratos/concepts/rest-api", - "destination": "https://www.ory.sh/docs/ecosystem/api-design", + "destination": "https://www.ory.com/docs/ecosystem/api-design", "permanent": false }, { "source": "/docs/kratos/concepts/securing-applications", - "destination": "https://www.ory.sh/docs/kratos/", + "destination": "https://www.ory.com/docs/kratos/", "permanent": false }, { "source": "/docs/kratos/concepts/terminology", - "destination": "https://www.ory.sh/docs/concepts/terminology", + "destination": "https://www.ory.com/docs/concepts/terminology", "permanent": false }, { "source": "/docs/kratos/further-reading/comparison", - "destination": "https://www.ory.sh/docs/kratos/", + "destination": "https://www.ory.com/docs/kratos/", "permanent": false }, { "source": "/docs/kratos/further-reading/kratos-video-tutorials", - "destination": "https://www.ory.sh/docs/kratos/quickstart", + "destination": "https://www.ory.com/docs/kratos/quickstart", "permanent": false }, { "source": "/docs/kratos/guides/retrieve-social-sign-in-access-refresh-id-token", - "destination": "https://www.ory.sh/docs/guides/social-signin/get-tokens", + "destination": "https://www.ory.com/docs/guides/social-signin/get-tokens", "permanent": false }, { "source": "/docs/kratos/guides/setting-up-aes-cipher-parameters", - "destination": "https://www.ory.sh/docs/kratos/guides/select-cipher-algorithm", + "destination": "https://www.ory.com/docs/kratos/guides/select-cipher-algorithm", "permanent": false }, { "source": "/docs/kratos/guides/setting-up-noop-cipher-parameters", - "destination": "https://www.ory.sh/docs/kratos/guides/select-cipher-algorithm", + "destination": "https://www.ory.com/docs/kratos/guides/select-cipher-algorithm", "permanent": false }, { "source": "/docs/kratos/guides/setting-up-xchacha-cipher-parameters", - "destination": "https://www.ory.sh/docs/kratos/guides/select-cipher-algorithm", + "destination": "https://www.ory.com/docs/kratos/guides/select-cipher-algorithm", "permanent": false }, { "source": "/docs/kratos/self-service/flows/2fa-mfa-multi-factor-authentication", - "destination": "https://www.ory.sh/docs/guides/mfa/overview", + "destination": "https://www.ory.com/docs/guides/mfa/overview", "permanent": false }, { "source": "/docs/start-building/deploy-auth-production", - "destination": "https://www.ory.sh/docs/guides/custom-domains", + "destination": "https://www.ory.com/docs/guides/custom-domains", "permanent": false }, { "source": "/docs/start-building/other-languages", - "destination": "https://www.ory.sh/docs/examples", + "destination": "https://www.ory.com/docs/examples", "permanent": false }, { "source": "/docs/start-building/single-page-app-spa", - "destination": "https://www.ory.sh/login-spa-react-nextjs-authentication-example-api-open-source/", + "destination": "https://www.ory.com/login-spa-react-nextjs-authentication-example-api-open-source/", "permanent": false }, { "source": "/docs/guides/protect-page-login/index", - "destination": "https://www.ory.sh/docs/examples", + "destination": "https://www.ory.com/docs/examples", "permanent": false }, { "source": "/docs/concepts/services-api", - "destination": "https://www.ory.sh/docs/welcome", + "destination": "https://www.ory.com/docs/welcome", "permanent": false }, { "source": "/docs/keto/implemented-planned-features", - "destination": "https://www.ory.sh/docs/guides/cli/configure-permission-service", + "destination": "https://www.ory.com/docs/guides/cli/configure-permission-service", "permanent": false }, { "source": "/docs/guides/protect-page-login", - "destination": "https://www.ory.sh/docs/examples", + "destination": "https://www.ory.com/docs/examples", "permanent": false }, { "source": "/docs/concepts/session", - "destination": "https://www.ory.sh/docs/guides/session-management/overview", + "destination": "https://www.ory.com/docs/guides/session-management/overview", "permanent": false }, { "source": "/docs/guides/protect-page-login/expressjs", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/expressjs", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/expressjs", "permanent": false }, { "source": "/docs/guides/protect-page-login/flutter-web-redirect", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/flutter-web-redirect", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/flutter-web-redirect", "permanent": false }, { "source": "/docs/guides/protect-page-login/go", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/go", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/go", "permanent": false }, { "source": "/docs/guides/protect-page-login/next.js", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/nextjs", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/nextjs", "permanent": false }, { "source": "/docs/guides/protect-page-login/php", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/php", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/php", "permanent": false }, { "source": "/docs/guides/protect-page-login/react", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/react", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/react", "permanent": false }, { "source": "/docs/guides/protect-page-login/vue", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/vue", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/vue", "permanent": false }, { "source": "/docs/guides/local-development", - "destination": "https://www.ory.sh/docs/getting-started/local-development", + "destination": "https://www.ory.com/docs/getting-started/local-development", "permanent": false }, { "source": "/docs/concepts/emails", - "destination": "https://www.ory.sh/docs/guides/emails", + "destination": "https://www.ory.com/docs/guides/emails", "permanent": false }, { "source": "/docs/start-building/native-mobile-app", - "destination": "https://www.ory.sh/docs/getting-started/integrate-auth/react-native", + "destination": "https://www.ory.com/docs/getting-started/integrate-auth/react-native", "permanent": false }, { "source": "/docs/kratos/concepts/identity-schema", - "destination": "https://www.ory.sh/docs/guides/manage-identities/overview", + "destination": "https://www.ory.com/docs/guides/manage-identities/overview", "permanent": false }, { "source": "/docs/guides/manage-identities/managing-users-identities", - "destination": "https://www.ory.sh/docs/guides/manage-identities/create-users-identities", + "destination": "https://www.ory.com/docs/guides/manage-identities/create-users-identities", "permanent": false }, { "source": "/docs/guides/manage-identities/identity", - "destination": "https://www.ory.sh/docs/guides/manage-identities/identity-schema", + "destination": "https://www.ory.com/docs/guides/manage-identities/identity-schema", "permanent": false }, { "source": "/docs/guides/manage-identities/import-identity", - "destination": "https://www.ory.sh/docs/guides/manage-identities/import-user-accounts-identities", + "destination": "https://www.ory.com/docs/guides/manage-identities/import-user-accounts-identities", "permanent": false }, { "source": "/docs/guides/customize-identity-schema", - "destination": "https://www.ory.sh/docs/guides/manage-identities/customize-identity-schema", + "destination": "https://www.ory.com/docs/guides/manage-identities/customize-identity-schema", "permanent": false }, { "source": "/docs/cli/ory-identities", - "destination": "https://www.ory.sh/docs/cli/ory-list-identities", + "destination": "https://www.ory.com/docs/cli/ory-list-identities", "permanent": false }, { "source": "/docs/cli/ory-identities-get", - "destination": "https://www.ory.sh/docs/cli/ory-get-identity", + "destination": "https://www.ory.com/docs/cli/ory-get-identity", "permanent": false }, { "source": "/docs/hydra/guides/token-expiration", - "destination": "https://www.ory.sh/docs/hydra/guides/client-token-expiration", + "destination": "https://www.ory.com/docs/hydra/guides/client-token-expiration", "permanent": false }, { "source": "/docs/guides/passwordless/:path*", - "destination": "https://www.ory.sh/docs/kratos/passwordless/:path", + "destination": "https://www.ory.com/docs/kratos/passwordless/:path", "permanent": false }, { "source": "/docs/guides/session-management/:path*", - "destination": "https://www.ory.sh/docs/kratos/session-management/:path", + "destination": "https://www.ory.com/docs/kratos/session-management/:path", "permanent": false }, { "source": "/docs/guides/manage-identities/:path*", - "destination": "https://www.ory.sh/docs/kratos/manage-identities/:path", + "destination": "https://www.ory.com/docs/kratos/manage-identities/:path", "permanent": false }, { "source": "/docs/guides/social-signin/:path*", - "destination": "https://www.ory.sh/docs/kratos/social-signin/:path", + "destination": "https://www.ory.com/docs/kratos/social-signin/:path", "permanent": false }, { "source": "/docs/guides/mfa/:path*", - "destination": "https://www.ory.sh/docs/kratos/mfa/:path", + "destination": "https://www.ory.com/docs/kratos/mfa/:path", "permanent": false }, { "source": "/docs/guides/emails", - "destination": "https://www.ory.sh/docs/kratos/emails-sms/sending-emails-smtp", + "destination": "https://www.ory.com/docs/kratos/emails-sms/sending-emails-smtp", "permanent": false }, { "source": "/docs/kratos/concepts/email-sms", - "destination": "https://www.ory.sh/docs/kratos/emails-sms/custom-email-templates", + "destination": "https://www.ory.com/docs/kratos/emails-sms/custom-email-templates", "permanent": false }, { "source": "/docs/kratos/concepts/index", - "destination": "https://www.ory.sh/docs/kratos/ory-kratos-intro", + "destination": "https://www.ory.com/docs/kratos/ory-kratos-intro", "permanent": false }, { "source": "/docs/kratos/index", - "destination": "https://www.ory.sh/docs/kratos/ory-kratos-intro", + "destination": "https://www.ory.com/docs/kratos/ory-kratos-intro", "permanent": false }, { "source": "/docs/kratos/milestones", - "destination": "https://www.ory.sh/docs/ecosystem/changelog", + "destination": "https://www.ory.com/docs/ecosystem/changelog", "permanent": false }, { "source": "/docs/kratos/guides/account-activation-email-verification", - "destination": "https://www.ory.sh/docs/kratos/self-hosted/account-activation-email-verification", + "destination": "https://www.ory.com/docs/kratos/self-hosted/account-activation-email-verification", "permanent": false }, { "source": "/docs/kratos/guides/account-recovery-password-reset", - "destination": "https://www.ory.sh/docs/kratos/self-service/flows/account-recovery-password-reset", + "destination": "https://www.ory.com/docs/kratos/self-service/flows/account-recovery-password-reset", "permanent": false }, { "source": "/docs/kratos/self-service/hooks", - "destination": "https://www.ory.sh/docs/kratos/hooks/configure-hooks", + "destination": "https://www.ory.com/docs/kratos/hooks/configure-hooks", "permanent": false }, { "source": "/docs/kratos/guides/integration-with-other-systems-using-web-hooks", - "destination": "https://www.ory.sh/docs/kratos/hooks/webhooks-integrations", + "destination": "https://www.ory.com/docs/kratos/hooks/webhooks-integrations", "permanent": false }, { "source": "/docs/kratos/sdk/01_overview.md", - "destination": "https://www.ory.sh/docs/kratos/sdk/overview", + "destination": "https://www.ory.com/docs/kratos/sdk/overview", "permanent": false }, { "source": "/docs/guides/configure-ory-to-use-your-ui", - "destination": "https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-overview", + "destination": "https://www.ory.com/docs/kratos/bring-your-own-ui/custom-ui-overview", "permanent": false }, { "source": "/docs/kratos", - "destination": "https://www.ory.sh/docs/kratos/ory-kratos-intro", + "destination": "https://www.ory.com/docs/kratos/ory-kratos-intro", "permanent": false }, { "source": "/docs/technical-advisories/oidc-redirect-url-cname-OTA-092022-01", - "destination": "https://www.ory.sh/docs/troubleshooting/oidc-redirect-url-cname-OTA-092022-01", + "destination": "https://www.ory.com/docs/troubleshooting/oidc-redirect-url-cname-OTA-092022-01", "permanent": false }, { "source": "/docs/hydra/configure-deploy", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/configure-deploy", + "destination": "https://www.ory.com/docs/hydra/self-hosted/configure-deploy", "permanent": false }, { "source": "/docs/hydra/dependencies-environment", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/dependencies-environment", + "destination": "https://www.ory.com/docs/hydra/self-hosted/dependencies-environment", "permanent": false }, { "source": "/docs/hydra/guides/deploy-hydra-example", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/deploy-hydra-example", + "destination": "https://www.ory.com/docs/hydra/self-hosted/deploy-hydra-example", "permanent": false }, { "source": "/docs/hydra/guides/gitlab", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/gitlab", + "destination": "https://www.ory.com/docs/hydra/self-hosted/gitlab", "permanent": false }, { "source": "/docs/hydra/install", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/install", + "destination": "https://www.ory.com/docs/hydra/self-hosted/install", "permanent": false }, { "source": "/docs/hydra/guides/kubernetes-helm-chart", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/kubernetes-helm-chart", + "destination": "https://www.ory.com/docs/hydra/self-hosted/kubernetes-helm-chart", "permanent": false }, { "source": "/docs/hydra/guides/merge-multiple-db-secrets", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/merge-multiple-db-secrets", + "destination": "https://www.ory.com/docs/hydra/self-hosted/merge-multiple-db-secrets", "permanent": false }, { "source": "/docs/hydra/guides/migrating-from-mitreid", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/migrating-from-mitreid", + "destination": "https://www.ory.com/docs/hydra/self-hosted/migrating-from-mitreid", "permanent": false }, { "source": "/docs/hydra/production", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/production", + "destination": "https://www.ory.com/docs/hydra/self-hosted/production", "permanent": false }, { "source": "/docs/hydra/guides/scaling-hydra", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/scaling-hydra", + "destination": "https://www.ory.com/docs/hydra/self-hosted/scaling-hydra", "permanent": false }, { "source": "/docs/hydra/guides/secrets-key-rotation", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/secrets-key-rotation", + "destination": "https://www.ory.com/docs/hydra/self-hosted/secrets-key-rotation", "permanent": false }, { "source": "/docs/hydra/guides/upgrade", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/upgrade", + "destination": "https://www.ory.com/docs/hydra/self-hosted/upgrade", "permanent": false }, { "source": "/docs/hydra/guides/hsm-support", - "destination": "https://www.ory.sh/docs/hydra/self-hosted/hsm-support", + "destination": "https://www.ory.com/docs/hydra/self-hosted/hsm-support", "permanent": false }, { "source": "/docs/hydra/advanced", - "destination": "https://www.ory.sh/docs/hydra/guides/openid", + "destination": "https://www.ory.com/docs/hydra/guides/openid", "permanent": false }, { "source": "/docs/hydra/guides/oauth2-grant-type-jwt-bearer", - "destination": "https://www.ory.sh/docs/hydra/guides/jwt", + "destination": "https://www.ory.com/docs/hydra/guides/jwt", "permanent": false }, { "source": "/docs/getting-started/custom-ui-preact-ory-elements", - "destination": "https://www.ory.sh/docs/getting-started/custom-ui-ory-elements", + "destination": "https://www.ory.com/docs/getting-started/custom-ui-ory-elements", "permanent": false }, { "source": "/docs/kratos/self-service/flows/account-recovery", - "destination": "https://www.ory.sh/docs/kratos/self-service/flows/account-recovery-password-reset", + "destination": "https://www.ory.com/docs/kratos/self-service/flows/account-recovery-password-reset", "permanent": false }, { "source": "/docs/concepts/social-sign-in", - "destination": "https://www.ory.sh/docs/kratos/social-signin/overview", + "destination": "https://www.ory.com/docs/kratos/social-signin/overview", "permanent": false }, { "source": "/docs/hydra/sdk/index", - "destination": "https://www.ory.sh/docs/hydra/sdk/overview", + "destination": "https://www.ory.com/docs/hydra/sdk/overview", "permanent": false }, { "source": "/docs/hydra/sdk", - "destination": "https://www.ory.sh/docs/hydra/sdk/overview", + "destination": "https://www.ory.com/docs/hydra/sdk/overview", "permanent": false }, { "source": "/docs/kratos/sdk/index", - "destination": "https://www.ory.sh/docs/kratos/sdk/overview", + "destination": "https://www.ory.com/docs/kratos/sdk/overview", "permanent": false }, { "source": "/docs/kratos/sdk", - "destination": "https://www.ory.sh/docs/kratos/sdk/overview", + "destination": "https://www.ory.com/docs/kratos/sdk/overview", "permanent": false }, { "source": "/docs/keto/sdk/index", - "destination": "https://www.ory.sh/docs/keto/sdk/overview", + "destination": "https://www.ory.com/docs/keto/sdk/overview", "permanent": false }, { "source": "/docs/keto/sdk", - "destination": "https://www.ory.sh/docs/keto/sdk/overview", + "destination": "https://www.ory.com/docs/keto/sdk/overview", "permanent": false }, { "source": "/docs/getting-started/ory-cloud-oauth2", - "destination": "https://www.ory.sh/docs/getting-started/ory-network-oauth2", + "destination": "https://www.ory.com/docs/getting-started/ory-network-oauth2", "permanent": false }, { "source": "/docs/examples", - "destination": "https://www.ory.sh/docs/getting-started/overview", + "destination": "https://www.ory.com/docs/getting-started/overview", "permanent": false }, { "source": "/docs/kratos/guides/password-policy", - "destination": "https://www.ory.sh/docs/concepts/password-policy", + "destination": "https://www.ory.com/docs/concepts/password-policy", "permanent": false }, { "source": "/docs/self-service/flows/account-recovery", - "destination": "https://www.ory.sh/docs/kratos/self-service/flows/account-recovery-password-reset", + "destination": "https://www.ory.com/docs/kratos/self-service/flows/account-recovery-password-reset", "permanent": false }, { "source": "/docs/kratos/emails-sms/sms-messages", - "destination": "https://www.ory.sh/docs/kratos/", + "destination": "https://www.ory.com/docs/kratos/", "permanent": false }, { "source": "/docs/kratos/self-hosted/sms-messages", - "destination": "https://www.ory.sh/docs/kratos/", + "destination": "https://www.ory.com/docs/kratos/", "permanent": false }, { "source": "/docs/kratos/mfa/enforce-mfa", - "destination": "https://www.ory.sh/docs/kratos/mfa/step-up-authentication", + "destination": "https://www.ory.com/docs/kratos/mfa/step-up-authentication", "permanent": false }, { "source": "/docs/kratos/mfa/requesting-2fa", - "destination": "https://www.ory.sh/docs/kratos/mfa/step-up-authentication", + "destination": "https://www.ory.com/docs/kratos/mfa/step-up-authentication", "permanent": false }, { "source": "/docs/kratos/concepts/docker", - "destination": "https://www.ory.sh/docs/kratos/guides/docker", + "destination": "https://www.ory.com/docs/kratos/guides/docker", "permanent": false }, { "source": "/docs/kratos/hooks/webhooks-integrations", - "destination": "https://www.ory.sh/docs/guides/integrate-with-ory-cloud-through-webhooks", + "destination": "https://www.ory.com/docs/guides/integrate-with-ory-cloud-through-webhooks", "permanent": false }, { "source": "/docs/keto/guides/userset-rewrites", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/keto/concepts/internal-algorithms", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/keto/concepts/snaptokens-evaluation-consistency", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/keto/guides/access-control-inheritance", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/keto/guides/access-control-list-design-best-practices", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/keto/performance", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/keto/secure", - "destination": "https://www.ory.sh/docs/guides/permissions/overview", + "destination": "https://www.ory.com/docs/guides/permissions/overview", "permanent": false }, { "source": "/docs/guides/bring-your-user-interface", - "destination": "https://www.ory.sh/docs/kratos/bring-your-own-ui/configure-ory-to-use-your-ui", + "destination": "https://www.ory.com/docs/kratos/bring-your-own-ui/configure-ory-to-use-your-ui", "permanent": false }, { "source": "/docs/getting-started/custom-ui-ory-elements", - "destination": "https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-ory-elements", + "destination": "https://www.ory.com/docs/kratos/bring-your-own-ui/custom-ui-ory-elements", "permanent": false }, { "source": "/docs/kratos/guides/custom-ui", - "destination": "https://www.ory.sh/docs/kratos/bring-your-own-ui/overview", + "destination": "https://www.ory.com/docs/kratos/bring-your-own-ui/overview", "permanent": false }, { "source": "/docs/hydra/limitations", - "destination": "https://www.ory.sh/docs/oauth2-oidc/overview/oauth2-concepts", + "destination": "https://www.ory.com/docs/oauth2-oidc/overview/oauth2-concepts", "permanent": false }, { "source": "/docs/hydra/concepts/oauth2", - "destination": "https://www.ory.sh/docs/oauth2-oidc/overview/oauth2-concepts", + "destination": "https://www.ory.com/docs/oauth2-oidc/overview/oauth2-concepts", "permanent": false }, { "source": "/docs/hydra/guides/oauth2-public-spa-mobile", - "destination": "https://www.ory.sh/docs/oauth2-oidc/authorization-code-flow", + "destination": "https://www.ory.com/docs/oauth2-oidc/authorization-code-flow", "permanent": false }, { "source": "/docs/hydra/guides/common-oauth2-openid-connect-flows", - "destination": "https://www.ory.sh/docs/oauth2-oidc/authorization-code-flow", + "destination": "https://www.ory.com/docs/oauth2-oidc/authorization-code-flow", "permanent": false }, { "source": "/docs/hydra/concepts/openid-connect-oidc", - "destination": "https://www.ory.sh/docs/oauth2-oidc/overview/oidc-concepts", + "destination": "https://www.ory.com/docs/oauth2-oidc/overview/oidc-concepts", "permanent": false }, { @@ -1061,42 +1061,42 @@ }, { "source": "/docs/kratos/self-hosted/examples", - "destination": "https://www.ory.sh/docs/ecosystem/community", + "destination": "https://www.ory.com/docs/ecosystem/community", "permanent": false }, { "source": "/docs/ecosystem/deployment", - "destination": "https://www.ory.sh/docs/self-hosted/deployment", + "destination": "https://www.ory.com/docs/self-hosted/deployment", "permanent": false }, { "source": "/docs/kratos/guides/high-availability-ha", - "destination": "https://www.ory.sh/docs/self-hosted/operations/scalability", + "destination": "https://www.ory.com/docs/self-hosted/operations/scalability", "permanent": false }, { "source": "/docs/hydra/self-hosted/scaling-hydra", - "destination": "https://www.ory.sh/docs/self-hosted/operations/scalability", + "destination": "https://www.ory.com/docs/self-hosted/operations/scalability", "permanent": false }, { "source": "/docs/ecosystem/logging", - "destination": "https://www.ory.sh/docs/self-hosted/operations/logging", + "destination": "https://www.ory.com/docs/self-hosted/operations/logging", "permanent": false }, { "source": "/docs/ecosystem/versioning", - "destination": "https://www.ory.sh/docs/ecosystem/upgrading", + "destination": "https://www.ory.com/docs/ecosystem/upgrading", "permanent": false }, { "source": "/docs/ecosystem/roadmap", - "destination": "https://www.ory.sh/docs/ecosystem/changelog", + "destination": "https://www.ory.com/docs/ecosystem/changelog", "permanent": false }, { "source": "/docs/hydra/benchmark", - "destination": "https://www.ory.sh/docs/ecosystem/benchmark", + "destination": "https://www.ory.com/docs/ecosystem/benchmark", "permanent": false }, { @@ -1223,6 +1223,16 @@ "source": "/docs/self-hosted/oel/kratos/upgrade-kratos", "destination": "/docs/self-hosted/oel/kratos/upgrade", "permanent": false + }, + { + "source": "/docs/getting-started/integrate-auth/nextjs", + "destination": "/docs/getting-started/integrate-auth/nextjs-app-router-quickstart", + "permanent": true + }, + { + "source": "/docs/kratos/bring-your-own-ui/custom-ui-ory-elements", + "destination": "/docs/getting-started/integrate-auth/nextjs-app-router-quickstart", + "permanent": true } ] }