maxEndpoints
- ? endpoints.length - maxEndpoints
- : 0
return (
|
{endpointDisplay}
- {overflow > 0 && (
-
- +{overflow} more
-
- )}
|
{t.bucket}
diff --git a/src/static/rate-limits.json b/src/static/rate-limits.json
index 677d116bb6..c250711808 100644
--- a/src/static/rate-limits.json
+++ b/src/static/rate-limits.json
@@ -1,2359 +1 @@
-{
- "endpoints": [
- {
- "method": "GET",
- "path": "/.well-known/jwks.json",
- "bucket": "hydra-public-high"
- },
- {
- "method": "GET",
- "path": "/.well-known/openid-configuration",
- "bucket": "hydra-public-high"
- },
- {
- "method": "GET",
- "path": "/.well-known/ory/webauthn.js",
- "bucket": "hydra-public-high"
- },
- {
- "method": "GET",
- "path": "/admin/clients",
- "bucket": "hydra-admin-medium"
- },
- {
- "method": "POST",
- "path": "/admin/clients",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/clients/{id}",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "DELETE",
- "path": "/admin/clients/{id}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/admin/clients/{id}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "PUT",
- "path": "/admin/clients/{id}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "HEAD",
- "path": "/.well-known/openid-configuration",
- "bucket": "hydra-public-high"
- },
- {
- "method": "PUT",
- "path": "/admin/clients/{id}/lifespans",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/keys/{set}",
- "bucket": "hydra-admin-medium"
- },
- {
- "method": "DELETE",
- "path": "/admin/keys/{set}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "POST",
- "path": "/admin/keys/{set}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "PUT",
- "path": "/admin/keys/{set}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/keys/{set}/{kid}",
- "bucket": "hydra-admin-medium"
- },
- {
- "method": "DELETE",
- "path": "/admin/keys/{set}/{kid}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "PUT",
- "path": "/admin/keys/{set}/{kid}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/oauth2/auth/requests/consent",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/consent/accept",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/consent/reject",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/device/accept",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "GET",
- "path": "/admin/oauth2/auth/requests/login",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/login/accept",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/login/reject",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "GET",
- "path": "/admin/oauth2/auth/requests/logout",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/logout/accept",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "PUT",
- "path": "/admin/oauth2/auth/requests/logout/reject",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "GET",
- "path": "/admin/oauth2/auth/sessions/consent",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "DELETE",
- "path": "/admin/oauth2/auth/sessions/consent",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/admin/oauth2/auth/sessions/login",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "POST",
- "path": "/admin/oauth2/introspect",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "DELETE",
- "path": "/admin/oauth2/tokens",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/trust/grants/jwt-bearer/issuers",
- "bucket": "hydra-admin-medium"
- },
- {
- "method": "POST",
- "path": "/admin/trust/grants/jwt-bearer/issuers",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/trust/grants/jwt-bearer/issuers/{id}",
- "bucket": "hydra-admin-medium"
- },
- {
- "method": "DELETE",
- "path": "/admin/trust/grants/jwt-bearer/issuers/{id}",
- "bucket": "hydra-admin-low"
- },
- {
- "method": "OPTIONS",
- "path": "/admin/clients",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "OPTIONS",
- "path": "/admin/clients/{id}",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "POST",
- "path": "/credentials",
- "bucket": "hydra-admin-medium"
- },
- {
- "method": "GET",
- "path": "/oauth2/auth",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "HEAD",
- "path": "/oauth2/auth",
- "bucket": "hydra-public-high"
- },
- {
- "method": "POST",
- "path": "/oauth2/device/auth",
- "bucket": "hydra-public-high"
- },
- {
- "method": "GET",
- "path": "/oauth2/device/verify",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "OPTIONS",
- "path": "/oauth2/auth",
- "bucket": "hydra-public-high"
- },
- {
- "method": "POST",
- "path": "/oauth2/register",
- "bucket": "hydra-public-low"
- },
- {
- "method": "GET",
- "path": "/oauth2/register/{id}",
- "bucket": "hydra-admin-high"
- },
- {
- "method": "DELETE",
- "path": "/oauth2/register/{id}",
- "bucket": "hydra-public-low"
- },
- {
- "method": "PUT",
- "path": "/oauth2/register/{id}",
- "bucket": "hydra-public-low"
- },
- {
- "method": "POST",
- "path": "/oauth2/revoke",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "GET",
- "path": "/oauth2/sessions/logout",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "POST",
- "path": "/oauth2/auth",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "POST",
- "path": "/oauth2/token",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "GET",
- "path": "/oauth2/consent",
- "bucket": "hydra-public-high"
- },
- {
- "method": "GET",
- "path": "/oauth2/fallbacks/logout/callback",
- "bucket": "hydra-public-high"
- },
- {
- "method": "POST",
- "path": "/oauth2/sessions/logout",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "OPTIONS",
- "path": "/oauth2/token",
- "bucket": "hydra-public-high"
- },
- {
- "method": "GET",
- "path": "/userinfo",
- "bucket": "hydra-public-medium"
- },
- {
- "method": "DELETE",
- "path": "/admin/relation-tuples",
- "bucket": "keto-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/admin/relation-tuples",
- "bucket": "keto-admin-low"
- },
- {
- "method": "PUT",
- "path": "/admin/relation-tuples",
- "bucket": "keto-admin-low"
- },
- {
- "method": "GET",
- "path": "/namespaces",
- "bucket": "keto-admin-low"
- },
- {
- "method": "POST",
- "path": "/opl/syntax/check",
- "bucket": "keto-admin-medium"
- },
- {
- "method": "POST",
- "path": "/ory.keto.relation_tuples.v1alpha2.CheckService/BatchCheck",
- "bucket": "keto-public-high"
- },
- {
- "method": "POST",
- "path": "/ory.keto.relation_tuples.v1alpha2.CheckService/Check",
- "bucket": "keto-public-high"
- },
- {
- "method": "POST",
- "path": "/ory.keto.relation_tuples.v1alpha2.WriteService/TransactRelationTuples",
- "bucket": "keto-admin-low"
- },
- {
- "method": "GET",
- "path": "/relation-tuples",
- "bucket": "keto-admin-medium"
- },
- {
- "method": "POST",
- "path": "/relation-tuples/batch/check",
- "bucket": "keto-public-high"
- },
- {
- "method": "GET",
- "path": "/relation-tuples/check",
- "bucket": "keto-public-high"
- },
- {
- "method": "POST",
- "path": "/relation-tuples/check",
- "bucket": "keto-public-high"
- },
- {
- "method": "GET",
- "path": "/relation-tuples/check/openapi",
- "bucket": "keto-public-high"
- },
- {
- "method": "POST",
- "path": "/relation-tuples/check/openapi",
- "bucket": "keto-public-high"
- },
- {
- "method": "GET",
- "path": "/relation-tuples/expand",
- "bucket": "keto-admin-medium"
- },
- {
- "method": "GET",
- "path": "/admin/courier/messages",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/admin/identities",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "POST",
- "path": "/admin/identities",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/admin/identities/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/admin/identities/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PUT",
- "path": "/admin/identities/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/admin/identities/{id}/credentials/{type}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/admin/identities/{id}/sessions",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "POST",
- "path": "/admin/recovery/code",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "POST",
- "path": "/admin/recovery/link",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/admin/sessions/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/admin/sessions/{id}/extend",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "POST",
- "path": "/scim/{client}/v2/Groups",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PUT",
- "path": "/scim/{client}/v2/Groups/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/scim/{client}/v2/Groups/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/scim/{client}/v2/Groups/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "POST",
- "path": "/scim/{client}/v2/Users",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PUT",
- "path": "/scim/{client}/v2/Users/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "PATCH",
- "path": "/scim/{client}/v2/Users/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "DELETE",
- "path": "/scim/{client}/v2/Users/{id}",
- "bucket": "kratos-admin-low"
- },
- {
- "method": "GET",
- "path": "/admin/identities/{id}",
- "bucket": "kratos-admin-high"
- },
- {
- "method": "GET",
- "path": "/admin/sessions/{id}",
- "bucket": "kratos-admin-high"
- },
- {
- "method": "OPTIONS",
- "path": "/admin/identities/{id}",
- "bucket": "kratos-admin-high"
- },
- {
- "method": "GET",
- "path": "/admin/courier/messages/{id}",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/admin/identities",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/admin/identities/{id}/sessions",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/admin/identities/by/external/{externalID}",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/admin/sessions",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/schemas",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/schemas/{id}",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/Groups",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/Groups/{id}",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/Schemas",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/Schemas/{id}",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/ServiceProviderConfig",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/Users",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/scim/{client}/v2/Users/{id}",
- "bucket": "kratos-admin-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/errors",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/fed-cm/parameters",
- "bucket": "kratos-public-high"
- },
- {
- "method": "POST",
- "path": "/self-service/fed-cm/token",
- "bucket": "kratos-public-low"
- },
- {
- "method": "POST",
- "path": "/self-service/login",
- "bucket": "kratos-public-low"
- },
- {
- "method": "GET",
- "path": "/self-service/login/api",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/login/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/login/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "HEAD",
- "path": "/self-service/fed-cm/parameters",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/logout",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/fed-cm/token",
- "bucket": "kratos-public-high"
- },
- {
- "method": "DELETE",
- "path": "/self-service/logout/api",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/logout/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/login",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/login",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/methods/oidc/callback/{provider_id}",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/methods/oidc/organizations/{organization_id}",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/methods/saml/callback/{provider_id}",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/methods/saml/organizations/{organization_id}",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "POST",
- "path": "/self-service/recovery",
- "bucket": "kratos-public-low"
- },
- {
- "method": "HEAD",
- "path": "/self-service/login/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/login/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "POST",
- "path": "/self-service/login/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/recovery/api",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/recovery/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/login/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/recovery/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/logout",
- "bucket": "kratos-public-high"
- },
- {
- "method": "POST",
- "path": "/self-service/registration",
- "bucket": "kratos-public-low"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/logout/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/methods/oidc/callback",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/registration/api",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/registration/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/registration/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "POST",
- "path": "/self-service/settings",
- "bucket": "kratos-public-low"
- },
- {
- "method": "HEAD",
- "path": "/self-service/methods/oidc/callback/{provider_id}",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/recovery",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/settings/api",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/settings/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/settings/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "POST",
- "path": "/self-service/verification",
- "bucket": "kratos-public-low"
- },
- {
- "method": "HEAD",
- "path": "/self-service/recovery",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/recovery",
- "bucket": "kratos-public-high"
- },
- {
- "method": "HEAD",
- "path": "/self-service/recovery/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/verification/api",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/verification/browser",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/recovery/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/verification/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/recovery/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/sessions",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "DELETE",
- "path": "/sessions",
- "bucket": "kratos-public-low"
- },
- {
- "method": "DELETE",
- "path": "/sessions/{id}",
- "bucket": "kratos-public-low"
- },
- {
- "method": "GET",
- "path": "/sessions/token-exchange",
- "bucket": "kratos-public-medium"
- },
- {
- "method": "GET",
- "path": "/self-service/registration",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/registration",
- "bucket": "kratos-public-high"
- },
- {
- "method": "HEAD",
- "path": "/self-service/registration/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/sessions/whoami",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/registration/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/settings",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/settings",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/self-service/verification",
- "bucket": "kratos-public-high"
- },
- {
- "method": "HEAD",
- "path": "/self-service/verification",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/verification",
- "bucket": "kratos-public-high"
- },
- {
- "method": "HEAD",
- "path": "/self-service/verification/browser",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/self-service/verification/flows",
- "bucket": "kratos-public-high"
- },
- {
- "method": "OPTIONS",
- "path": "/sessions",
- "bucket": "kratos-public-high"
- },
- {
- "method": "GET",
- "path": "/saml/.well-known/idp-metadata",
- "bucket": "polis-public-high"
- },
- {
- "method": "GET",
- "path": "/saml/.well-known/saml.cer",
- "bucket": "polis-public-high"
- },
- {
- "method": "GET",
- "path": "/saml/.well-known/sp-metadata",
- "bucket": "polis-public-high"
- },
- {
- "method": "GET",
- "path": "/saml/api/error",
- "bucket": "polis-public-high"
- },
- {
- "method": "POST",
- "path": "/saml/api/identity-federation/sso",
- "bucket": "polis-public-medium"
- },
- {
- "method": "GET",
- "path": "/saml/api/identity-federation/sso",
- "bucket": "polis-public-medium"
- },
- {
- "method": "POST",
- "path": "/saml/api/oauth/authorize",
- "bucket": "polis-public-medium"
- },
- {
- "method": "GET",
- "path": "/saml/api/oauth/authorize",
- "bucket": "polis-public-medium"
- },
- {
- "method": "GET",
- "path": "/saml/api/oauth/oidc",
- "bucket": "polis-public-medium"
- },
- {
- "method": "POST",
- "path": "/saml/api/oauth/saml",
- "bucket": "polis-public-medium"
- }
- ],
- "thresholds": [
- {
- "bucket": "hydra-admin-high",
- "tier": "Developer",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Developer",
- "env": "Production",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 4800,
- "rps": 160
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Growth",
- "env": "Development",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Growth",
- "env": "Production",
- "rpm": 2400,
- "rps": 80
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Production",
- "env": "Development",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Production",
- "env": "Production",
- "rpm": 250,
- "rps": 10
- },
- {
- "bucket": "hydra-admin-high",
- "tier": "Production",
- "env": "Staging",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Developer",
- "env": "Development",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Developer",
- "env": "Production",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 320,
- "rps": 10
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Growth",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Growth",
- "env": "Production",
- "rpm": 160,
- "rps": 7
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Production",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Production",
- "env": "Production",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-low",
- "tier": "Production",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Developer",
- "env": "Development",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Developer",
- "env": "Production",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 320,
- "rps": 10
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Growth",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Growth",
- "env": "Production",
- "rpm": 160,
- "rps": 7
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Production",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Production",
- "env": "Production",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-admin-medium",
- "tier": "Production",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Developer",
- "env": "Development",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Developer",
- "env": "Production",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 1500,
- "rps": 55
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Growth",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Growth",
- "env": "Production",
- "rpm": 720,
- "rps": 30
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Production",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Production",
- "env": "Production",
- "rpm": 250,
- "rps": 10
- },
- {
- "bucket": "hydra-public-high",
- "tier": "Production",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Developer",
- "env": "Development",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Developer",
- "env": "Production",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 20,
- "rps": 2
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 320,
- "rps": 10
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Growth",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Growth",
- "env": "Production",
- "rpm": 160,
- "rps": 7
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Production",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Production",
- "env": "Production",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-public-low",
- "tier": "Production",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Developer",
- "env": "Development",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Developer",
- "env": "Production",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 40,
- "rps": 3
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 3000,
- "rps": 100
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Growth",
- "env": "Development",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Growth",
- "env": "Production",
- "rpm": 1000,
- "rps": 35
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Production",
- "env": "Development",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Production",
- "env": "Production",
- "rpm": 320,
- "rps": 10
- },
- {
- "bucket": "hydra-public-medium",
- "tier": "Production",
- "env": "Staging",
- "rpm": 80,
- "rps": 4
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Developer",
- "env": "Development",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Developer",
- "env": "Production",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 1000,
- "rps": 35
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Growth",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Growth",
- "env": "Production",
- "rpm": 250,
- "rps": 10
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Production",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Production",
- "env": "Production",
- "rpm": 250,
- "rps": 10
- },
- {
- "bucket": "keto-admin-low",
- "tier": "Production",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Developer",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Developer",
- "env": "Production",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 2000,
- "rps": 70
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Growth",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Growth",
- "env": "Production",
- "rpm": 1000,
- "rps": 35
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Production",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Production",
- "env": "Production",
- "rpm": 500,
- "rps": 20
- },
- {
- "bucket": "keto-admin-medium",
- "tier": "Production",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "keto-public-high",
- "tier": "Developer",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-public-high",
- "tier": "Developer",
- "env": "Production",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-public-high",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "keto-public-high",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 240,
- "rps": 10
- },
- {
- "bucket": "keto-public-high",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 18000,
- "rps": 600
- },
- {
- "bucket": "keto-public-high",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 240,
- "rps": 10
- },
- {
- "bucket": "keto-public-high",
- "tier": "Growth",
- "env": "Development",
- "rpm": 240,
- "rps": 10
- },
- {
- "bucket": "keto-public-high",
- "tier": "Growth",
- "env": "Production",
- "rpm": 9000,
- "rps": 300
- },
- {
- "bucket": "keto-public-high",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 240,
- "rps": 10
- },
- {
- "bucket": "keto-public-high",
- "tier": "Production",
- "env": "Development",
- "rpm": 240,
- "rps": 10
- },
- {
- "bucket": "keto-public-high",
- "tier": "Production",
- "env": "Production",
- "rpm": 1500,
- "rps": 55
- },
- {
- "bucket": "keto-public-high",
- "tier": "Production",
- "env": "Staging",
- "rpm": 240,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Developer",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Developer",
- "env": "Production",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 2400,
- "rps": 80
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Growth",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Growth",
- "env": "Production",
- "rpm": 1200,
- "rps": 45
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Production",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Production",
- "env": "Production",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-admin-high",
- "tier": "Production",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Developer",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Developer",
- "env": "Production",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 2400,
- "rps": 80
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Growth",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Growth",
- "env": "Production",
- "rpm": 1200,
- "rps": 45
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Production",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Production",
- "env": "Production",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-admin-low",
- "tier": "Production",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Developer",
- "env": "Development",
- "rpm": 50,
- "rps": 3
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Developer",
- "env": "Production",
- "rpm": 50,
- "rps": 3
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 50,
- "rps": 3
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 800,
- "rps": 30
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Growth",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Growth",
- "env": "Production",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Production",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Production",
- "env": "Production",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-admin-medium",
- "tier": "Production",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Developer",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Developer",
- "env": "Production",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 21600,
- "rps": 700
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Growth",
- "env": "Development",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Growth",
- "env": "Production",
- "rpm": 7200,
- "rps": 240
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Production",
- "env": "Development",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Production",
- "env": "Production",
- "rpm": 2400,
- "rps": 80
- },
- {
- "bucket": "kratos-public-high",
- "tier": "Production",
- "env": "Staging",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Developer",
- "env": "Development",
- "rpm": 50,
- "rps": 3
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Developer",
- "env": "Production",
- "rpm": 50,
- "rps": 3
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 50,
- "rps": 3
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 1200,
- "rps": 45
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Growth",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Growth",
- "env": "Production",
- "rpm": 600,
- "rps": 25
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Production",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Production",
- "env": "Production",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-low",
- "tier": "Production",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Developer",
- "env": "Development",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Developer",
- "env": "Production",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 100,
- "rps": 5
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 1600,
- "rps": 55
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Growth",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Growth",
- "env": "Production",
- "rpm": 800,
- "rps": 30
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Production",
- "env": "Development",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Production",
- "env": "Production",
- "rpm": 400,
- "rps": 15
- },
- {
- "bucket": "kratos-public-medium",
- "tier": "Production",
- "env": "Staging",
- "rpm": 200,
- "rps": 10
- },
- {
- "bucket": "polis-public-high",
- "tier": "Developer",
- "env": "Development",
- "rpm": 15,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Developer",
- "env": "Production",
- "rpm": 15,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 15,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 30,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 250,
- "rps": 10
- },
- {
- "bucket": "polis-public-high",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 30,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Growth",
- "env": "Development",
- "rpm": 30,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Growth",
- "env": "Production",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "polis-public-high",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 30,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Production",
- "env": "Development",
- "rpm": 30,
- "rps": 2
- },
- {
- "bucket": "polis-public-high",
- "tier": "Production",
- "env": "Production",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "polis-public-high",
- "tier": "Production",
- "env": "Staging",
- "rpm": 30,
- "rps": 2
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Developer",
- "env": "Development",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Developer",
- "env": "Production",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Developer",
- "env": "Staging",
- "rpm": 60,
- "rps": 3
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Enterprise",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Enterprise",
- "env": "Production",
- "rpm": 1000,
- "rps": 35
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Enterprise",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Growth",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Growth",
- "env": "Production",
- "rpm": 500,
- "rps": 20
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Growth",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Production",
- "env": "Development",
- "rpm": 120,
- "rps": 7
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Production",
- "env": "Production",
- "rpm": 250,
- "rps": 10
- },
- {
- "bucket": "polis-public-medium",
- "tier": "Production",
- "env": "Staging",
- "rpm": 120,
- "rps": 7
- }
- ]
-}
+{"endpoints":[{"method":"GET","path":"/.well-known/jwks.json","bucket":"hydra-public-high"},{"method":"GET","path":"/.well-known/openid-configuration","bucket":"hydra-public-high"},{"method":"GET","path":"/.well-known/ory/webauthn.js","bucket":"hydra-public-high"},{"method":"GET","path":"/admin/clients","bucket":"hydra-admin-medium"},{"method":"POST","path":"/admin/clients","bucket":"hydra-admin-low"},{"method":"GET","path":"/admin/clients/{id}","bucket":"hydra-admin-high"},{"method":"DELETE","path":"/admin/clients/{id}","bucket":"hydra-admin-low"},{"method":"PATCH","path":"/admin/clients/{id}","bucket":"hydra-admin-low"},{"method":"PUT","path":"/admin/clients/{id}","bucket":"hydra-admin-low"},{"method":"HEAD","path":"/.well-known/openid-configuration","bucket":"hydra-public-high"},{"method":"PUT","path":"/admin/clients/{id}/lifespans","bucket":"hydra-admin-low"},{"method":"GET","path":"/admin/keys/{set}","bucket":"hydra-admin-medium"},{"method":"DELETE","path":"/admin/keys/{set}","bucket":"hydra-admin-low"},{"method":"POST","path":"/admin/keys/{set}","bucket":"hydra-admin-low"},{"method":"PUT","path":"/admin/keys/{set}","bucket":"hydra-admin-low"},{"method":"GET","path":"/admin/keys/{set}/{kid}","bucket":"hydra-admin-medium"},{"method":"DELETE","path":"/admin/keys/{set}/{kid}","bucket":"hydra-admin-low"},{"method":"PUT","path":"/admin/keys/{set}/{kid}","bucket":"hydra-admin-low"},{"method":"GET","path":"/admin/oauth2/auth/requests/consent","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/consent/accept","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/consent/reject","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/device/accept","bucket":"hydra-admin-high"},{"method":"GET","path":"/admin/oauth2/auth/requests/login","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/login/accept","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/login/reject","bucket":"hydra-admin-high"},{"method":"GET","path":"/admin/oauth2/auth/requests/logout","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/logout/accept","bucket":"hydra-admin-high"},{"method":"PUT","path":"/admin/oauth2/auth/requests/logout/reject","bucket":"hydra-admin-high"},{"method":"GET","path":"/admin/oauth2/auth/sessions/consent","bucket":"hydra-admin-high"},{"method":"DELETE","path":"/admin/oauth2/auth/sessions/consent","bucket":"hydra-admin-low"},{"method":"DELETE","path":"/admin/oauth2/auth/sessions/login","bucket":"hydra-admin-low"},{"method":"POST","path":"/admin/oauth2/introspect","bucket":"hydra-admin-high"},{"method":"DELETE","path":"/admin/oauth2/tokens","bucket":"hydra-admin-low"},{"method":"GET","path":"/admin/trust/grants/jwt-bearer/issuers","bucket":"hydra-admin-medium"},{"method":"POST","path":"/admin/trust/grants/jwt-bearer/issuers","bucket":"hydra-admin-low"},{"method":"GET","path":"/admin/trust/grants/jwt-bearer/issuers/{id}","bucket":"hydra-admin-medium"},{"method":"DELETE","path":"/admin/trust/grants/jwt-bearer/issuers/{id}","bucket":"hydra-admin-low"},{"method":"OPTIONS","path":"/admin/clients","bucket":"hydra-admin-high"},{"method":"OPTIONS","path":"/admin/clients/{id}","bucket":"hydra-admin-high"},{"method":"POST","path":"/credentials","bucket":"hydra-admin-medium"},{"method":"GET","path":"/oauth2/auth","bucket":"hydra-public-medium"},{"method":"HEAD","path":"/oauth2/auth","bucket":"hydra-public-high"},{"method":"POST","path":"/oauth2/device/auth","bucket":"hydra-public-high"},{"method":"GET","path":"/oauth2/device/verify","bucket":"hydra-admin-high"},{"method":"OPTIONS","path":"/oauth2/auth","bucket":"hydra-public-high"},{"method":"POST","path":"/oauth2/register","bucket":"hydra-public-low"},{"method":"GET","path":"/oauth2/register/{id}","bucket":"hydra-admin-high"},{"method":"DELETE","path":"/oauth2/register/{id}","bucket":"hydra-public-low"},{"method":"PUT","path":"/oauth2/register/{id}","bucket":"hydra-public-low"},{"method":"POST","path":"/oauth2/revoke","bucket":"hydra-public-medium"},{"method":"GET","path":"/oauth2/sessions/logout","bucket":"hydra-public-medium"},{"method":"POST","path":"/oauth2/auth","bucket":"hydra-public-medium"},{"method":"POST","path":"/oauth2/token","bucket":"hydra-public-medium"},{"method":"GET","path":"/oauth2/consent","bucket":"hydra-public-high"},{"method":"GET","path":"/oauth2/fallbacks/logout/callback","bucket":"hydra-public-high"},{"method":"POST","path":"/oauth2/sessions/logout","bucket":"hydra-public-medium"},{"method":"OPTIONS","path":"/oauth2/token","bucket":"hydra-public-high"},{"method":"GET","path":"/userinfo","bucket":"hydra-public-medium"},{"method":"DELETE","path":"/admin/relation-tuples","bucket":"keto-admin-low"},{"method":"PATCH","path":"/admin/relation-tuples","bucket":"keto-admin-low"},{"method":"PUT","path":"/admin/relation-tuples","bucket":"keto-admin-low"},{"method":"GET","path":"/namespaces","bucket":"keto-admin-low"},{"method":"POST","path":"/opl/syntax/check","bucket":"keto-admin-medium"},{"method":"POST","path":"/ory.keto.relation_tuples.v1alpha2.CheckService/BatchCheck","bucket":"keto-public-high"},{"method":"POST","path":"/ory.keto.relation_tuples.v1alpha2.CheckService/Check","bucket":"keto-public-high"},{"method":"POST","path":"/ory.keto.relation_tuples.v1alpha2.WriteService/TransactRelationTuples","bucket":"keto-admin-low"},{"method":"GET","path":"/relation-tuples","bucket":"keto-admin-medium"},{"method":"POST","path":"/relation-tuples/batch/check","bucket":"keto-public-high"},{"method":"GET","path":"/relation-tuples/check","bucket":"keto-public-high"},{"method":"POST","path":"/relation-tuples/check","bucket":"keto-public-high"},{"method":"GET","path":"/relation-tuples/check/openapi","bucket":"keto-public-high"},{"method":"POST","path":"/relation-tuples/check/openapi","bucket":"keto-public-high"},{"method":"GET","path":"/relation-tuples/expand","bucket":"keto-admin-medium"},{"method":"GET","path":"/admin/courier/messages","bucket":"kratos-admin-low"},{"method":"PATCH","path":"/admin/identities","bucket":"kratos-admin-low"},{"method":"POST","path":"/admin/identities","bucket":"kratos-admin-low"},{"method":"DELETE","path":"/admin/identities/{id}","bucket":"kratos-admin-low"},{"method":"PATCH","path":"/admin/identities/{id}","bucket":"kratos-admin-low"},{"method":"PUT","path":"/admin/identities/{id}","bucket":"kratos-admin-low"},{"method":"DELETE","path":"/admin/identities/{id}/credentials/{type}","bucket":"kratos-admin-low"},{"method":"DELETE","path":"/admin/identities/{id}/sessions","bucket":"kratos-admin-low"},{"method":"POST","path":"/admin/recovery/code","bucket":"kratos-admin-low"},{"method":"POST","path":"/admin/recovery/link","bucket":"kratos-admin-low"},{"method":"DELETE","path":"/admin/sessions/{id}","bucket":"kratos-admin-low"},{"method":"PATCH","path":"/admin/sessions/{id}/extend","bucket":"kratos-admin-low"},{"method":"POST","path":"/scim/{client}/v2/Groups","bucket":"kratos-admin-low"},{"method":"PUT","path":"/scim/{client}/v2/Groups/{id}","bucket":"kratos-admin-low"},{"method":"PATCH","path":"/scim/{client}/v2/Groups/{id}","bucket":"kratos-admin-low"},{"method":"DELETE","path":"/scim/{client}/v2/Groups/{id}","bucket":"kratos-admin-low"},{"method":"POST","path":"/scim/{client}/v2/Users","bucket":"kratos-admin-low"},{"method":"PUT","path":"/scim/{client}/v2/Users/{id}","bucket":"kratos-admin-low"},{"method":"PATCH","path":"/scim/{client}/v2/Users/{id}","bucket":"kratos-admin-low"},{"method":"DELETE","path":"/scim/{client}/v2/Users/{id}","bucket":"kratos-admin-low"},{"method":"GET","path":"/admin/identities/{id}","bucket":"kratos-admin-high"},{"method":"GET","path":"/admin/sessions/{id}","bucket":"kratos-admin-high"},{"method":"OPTIONS","path":"/admin/identities/{id}","bucket":"kratos-admin-high"},{"method":"GET","path":"/admin/courier/messages/{id}","bucket":"kratos-admin-medium"},{"method":"GET","path":"/admin/identities","bucket":"kratos-admin-medium"},{"method":"GET","path":"/admin/identities/{id}/sessions","bucket":"kratos-admin-medium"},{"method":"GET","path":"/admin/identities/by/external/{externalID}","bucket":"kratos-admin-medium"},{"method":"GET","path":"/admin/sessions","bucket":"kratos-admin-medium"},{"method":"GET","path":"/schemas","bucket":"kratos-admin-medium"},{"method":"GET","path":"/schemas/{id}","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/Groups","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/Groups/{id}","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/Schemas","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/Schemas/{id}","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/ServiceProviderConfig","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/Users","bucket":"kratos-admin-medium"},{"method":"GET","path":"/scim/{client}/v2/Users/{id}","bucket":"kratos-admin-medium"},{"method":"GET","path":"/self-service/errors","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/fed-cm/parameters","bucket":"kratos-public-high"},{"method":"POST","path":"/self-service/fed-cm/token","bucket":"kratos-public-low"},{"method":"POST","path":"/self-service/login","bucket":"kratos-public-low"},{"method":"GET","path":"/self-service/login/api","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/login/browser","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/login/flows","bucket":"kratos-public-high"},{"method":"HEAD","path":"/self-service/fed-cm/parameters","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/logout","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/fed-cm/token","bucket":"kratos-public-high"},{"method":"DELETE","path":"/self-service/logout/api","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/logout/browser","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/login","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/login","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/methods/oidc/callback/{provider_id}","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/methods/oidc/organizations/{organization_id}","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/methods/saml/callback/{provider_id}","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/methods/saml/organizations/{organization_id}","bucket":"kratos-public-medium"},{"method":"POST","path":"/self-service/recovery","bucket":"kratos-public-low"},{"method":"HEAD","path":"/self-service/login/browser","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/login/browser","bucket":"kratos-public-high"},{"method":"POST","path":"/self-service/login/browser","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/recovery/api","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/recovery/browser","bucket":"kratos-public-medium"},{"method":"OPTIONS","path":"/self-service/login/flows","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/recovery/flows","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/logout","bucket":"kratos-public-high"},{"method":"POST","path":"/self-service/registration","bucket":"kratos-public-low"},{"method":"OPTIONS","path":"/self-service/logout/browser","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/methods/oidc/callback","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/registration/api","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/registration/browser","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/registration/flows","bucket":"kratos-public-high"},{"method":"POST","path":"/self-service/settings","bucket":"kratos-public-low"},{"method":"HEAD","path":"/self-service/methods/oidc/callback/{provider_id}","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/recovery","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/settings/api","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/settings/browser","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/settings/flows","bucket":"kratos-public-high"},{"method":"POST","path":"/self-service/verification","bucket":"kratos-public-low"},{"method":"HEAD","path":"/self-service/recovery","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/recovery","bucket":"kratos-public-high"},{"method":"HEAD","path":"/self-service/recovery/browser","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/verification/api","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/verification/browser","bucket":"kratos-public-medium"},{"method":"OPTIONS","path":"/self-service/recovery/browser","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/verification/flows","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/recovery/flows","bucket":"kratos-public-high"},{"method":"GET","path":"/sessions","bucket":"kratos-public-medium"},{"method":"DELETE","path":"/sessions","bucket":"kratos-public-low"},{"method":"DELETE","path":"/sessions/{id}","bucket":"kratos-public-low"},{"method":"GET","path":"/sessions/token-exchange","bucket":"kratos-public-medium"},{"method":"GET","path":"/self-service/registration","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/registration","bucket":"kratos-public-high"},{"method":"HEAD","path":"/self-service/registration/browser","bucket":"kratos-public-high"},{"method":"GET","path":"/sessions/whoami","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/registration/browser","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/settings","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/settings","bucket":"kratos-public-high"},{"method":"GET","path":"/self-service/verification","bucket":"kratos-public-high"},{"method":"HEAD","path":"/self-service/verification","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/verification","bucket":"kratos-public-high"},{"method":"HEAD","path":"/self-service/verification/browser","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/self-service/verification/flows","bucket":"kratos-public-high"},{"method":"OPTIONS","path":"/sessions","bucket":"kratos-public-high"},{"method":"GET","path":"/saml/.well-known/idp-metadata","bucket":"polis-public-high"},{"method":"GET","path":"/saml/.well-known/saml.cer","bucket":"polis-public-high"},{"method":"GET","path":"/saml/.well-known/sp-metadata","bucket":"polis-public-high"},{"method":"GET","path":"/saml/api/error","bucket":"polis-public-high"},{"method":"POST","path":"/saml/api/identity-federation/sso","bucket":"polis-public-medium"},{"method":"GET","path":"/saml/api/identity-federation/sso","bucket":"polis-public-medium"},{"method":"POST","path":"/saml/api/oauth/authorize","bucket":"polis-public-medium"},{"method":"GET","path":"/saml/api/oauth/authorize","bucket":"polis-public-medium"},{"method":"GET","path":"/saml/api/oauth/oidc","bucket":"polis-public-medium"},{"method":"POST","path":"/saml/api/oauth/saml","bucket":"polis-public-medium"}],"thresholds":[{"bucket":"hydra-admin-high","tier":"Developer","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-high","tier":"Developer","env":"Production","rpm":40,"rps":3},{"bucket":"hydra-admin-high","tier":"Developer","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-admin-high","tier":"Enterprise","env":"Development","rpm":80,"rps":4},{"bucket":"hydra-admin-high","tier":"Enterprise","env":"Production","rpm":4800,"rps":160},{"bucket":"hydra-admin-high","tier":"Enterprise","env":"Staging","rpm":80,"rps":4},{"bucket":"hydra-admin-high","tier":"Growth","env":"Development","rpm":80,"rps":4},{"bucket":"hydra-admin-high","tier":"Growth","env":"Production","rpm":2400,"rps":80},{"bucket":"hydra-admin-high","tier":"Growth","env":"Staging","rpm":80,"rps":4},{"bucket":"hydra-admin-high","tier":"Production","env":"Development","rpm":80,"rps":4},{"bucket":"hydra-admin-high","tier":"Production","env":"Production","rpm":250,"rps":10},{"bucket":"hydra-admin-high","tier":"Production","env":"Staging","rpm":80,"rps":4},{"bucket":"hydra-admin-low","tier":"Developer","env":"Development","rpm":20,"rps":2},{"bucket":"hydra-admin-low","tier":"Developer","env":"Production","rpm":20,"rps":2},{"bucket":"hydra-admin-low","tier":"Developer","env":"Staging","rpm":20,"rps":2},{"bucket":"hydra-admin-low","tier":"Enterprise","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-low","tier":"Enterprise","env":"Production","rpm":320,"rps":10},{"bucket":"hydra-admin-low","tier":"Enterprise","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-admin-low","tier":"Growth","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-low","tier":"Growth","env":"Production","rpm":160,"rps":7},{"bucket":"hydra-admin-low","tier":"Growth","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-admin-low","tier":"Production","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-low","tier":"Production","env":"Production","rpm":80,"rps":4},{"bucket":"hydra-admin-low","tier":"Production","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-admin-medium","tier":"Developer","env":"Development","rpm":20,"rps":2},{"bucket":"hydra-admin-medium","tier":"Developer","env":"Production","rpm":20,"rps":2},{"bucket":"hydra-admin-medium","tier":"Developer","env":"Staging","rpm":20,"rps":2},{"bucket":"hydra-admin-medium","tier":"Enterprise","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-medium","tier":"Enterprise","env":"Production","rpm":320,"rps":10},{"bucket":"hydra-admin-medium","tier":"Enterprise","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-admin-medium","tier":"Growth","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-medium","tier":"Growth","env":"Production","rpm":160,"rps":7},{"bucket":"hydra-admin-medium","tier":"Growth","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-admin-medium","tier":"Production","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-admin-medium","tier":"Production","env":"Production","rpm":80,"rps":4},{"bucket":"hydra-admin-medium","tier":"Production","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-public-high","tier":"Developer","env":"Development","rpm":60,"rps":3},{"bucket":"hydra-public-high","tier":"Developer","env":"Production","rpm":60,"rps":3},{"bucket":"hydra-public-high","tier":"Developer","env":"Staging","rpm":60,"rps":3},{"bucket":"hydra-public-high","tier":"Enterprise","env":"Development","rpm":120,"rps":7},{"bucket":"hydra-public-high","tier":"Enterprise","env":"Production","rpm":1500,"rps":55},{"bucket":"hydra-public-high","tier":"Enterprise","env":"Staging","rpm":120,"rps":7},{"bucket":"hydra-public-high","tier":"Growth","env":"Development","rpm":120,"rps":7},{"bucket":"hydra-public-high","tier":"Growth","env":"Production","rpm":720,"rps":30},{"bucket":"hydra-public-high","tier":"Growth","env":"Staging","rpm":120,"rps":7},{"bucket":"hydra-public-high","tier":"Production","env":"Development","rpm":120,"rps":7},{"bucket":"hydra-public-high","tier":"Production","env":"Production","rpm":250,"rps":10},{"bucket":"hydra-public-high","tier":"Production","env":"Staging","rpm":120,"rps":7},{"bucket":"hydra-public-low","tier":"Developer","env":"Development","rpm":20,"rps":2},{"bucket":"hydra-public-low","tier":"Developer","env":"Production","rpm":20,"rps":2},{"bucket":"hydra-public-low","tier":"Developer","env":"Staging","rpm":20,"rps":2},{"bucket":"hydra-public-low","tier":"Enterprise","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-public-low","tier":"Enterprise","env":"Production","rpm":320,"rps":10},{"bucket":"hydra-public-low","tier":"Enterprise","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-public-low","tier":"Growth","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-public-low","tier":"Growth","env":"Production","rpm":160,"rps":7},{"bucket":"hydra-public-low","tier":"Growth","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-public-low","tier":"Production","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-public-low","tier":"Production","env":"Production","rpm":80,"rps":4},{"bucket":"hydra-public-low","tier":"Production","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-public-medium","tier":"Developer","env":"Development","rpm":40,"rps":3},{"bucket":"hydra-public-medium","tier":"Developer","env":"Production","rpm":40,"rps":3},{"bucket":"hydra-public-medium","tier":"Developer","env":"Staging","rpm":40,"rps":3},{"bucket":"hydra-public-medium","tier":"Enterprise","env":"Development","rpm":80,"rps":4},{"bucket":"hydra-public-medium","tier":"Enterprise","env":"Production","rpm":3000,"rps":100},{"bucket":"hydra-public-medium","tier":"Enterprise","env":"Staging","rpm":80,"rps":4},{"bucket":"hydra-public-medium","tier":"Growth","env":"Development","rpm":80,"rps":4},{"bucket":"hydra-public-medium","tier":"Growth","env":"Production","rpm":1000,"rps":35},{"bucket":"hydra-public-medium","tier":"Growth","env":"Staging","rpm":80,"rps":4},{"bucket":"hydra-public-medium","tier":"Production","env":"Development","rpm":80,"rps":4},{"bucket":"hydra-public-medium","tier":"Production","env":"Production","rpm":320,"rps":10},{"bucket":"hydra-public-medium","tier":"Production","env":"Staging","rpm":80,"rps":4},{"bucket":"keto-admin-low","tier":"Developer","env":"Development","rpm":60,"rps":3},{"bucket":"keto-admin-low","tier":"Developer","env":"Production","rpm":60,"rps":3},{"bucket":"keto-admin-low","tier":"Developer","env":"Staging","rpm":60,"rps":3},{"bucket":"keto-admin-low","tier":"Enterprise","env":"Development","rpm":120,"rps":7},{"bucket":"keto-admin-low","tier":"Enterprise","env":"Production","rpm":1000,"rps":35},{"bucket":"keto-admin-low","tier":"Enterprise","env":"Staging","rpm":120,"rps":7},{"bucket":"keto-admin-low","tier":"Growth","env":"Development","rpm":120,"rps":7},{"bucket":"keto-admin-low","tier":"Growth","env":"Production","rpm":250,"rps":10},{"bucket":"keto-admin-low","tier":"Growth","env":"Staging","rpm":120,"rps":7},{"bucket":"keto-admin-low","tier":"Production","env":"Development","rpm":120,"rps":7},{"bucket":"keto-admin-low","tier":"Production","env":"Production","rpm":250,"rps":10},{"bucket":"keto-admin-low","tier":"Production","env":"Staging","rpm":120,"rps":7},{"bucket":"keto-admin-medium","tier":"Developer","env":"Development","rpm":100,"rps":5},{"bucket":"keto-admin-medium","tier":"Developer","env":"Production","rpm":100,"rps":5},{"bucket":"keto-admin-medium","tier":"Developer","env":"Staging","rpm":100,"rps":5},{"bucket":"keto-admin-medium","tier":"Enterprise","env":"Development","rpm":200,"rps":10},{"bucket":"keto-admin-medium","tier":"Enterprise","env":"Production","rpm":2000,"rps":70},{"bucket":"keto-admin-medium","tier":"Enterprise","env":"Staging","rpm":200,"rps":10},{"bucket":"keto-admin-medium","tier":"Growth","env":"Development","rpm":200,"rps":10},{"bucket":"keto-admin-medium","tier":"Growth","env":"Production","rpm":1000,"rps":35},{"bucket":"keto-admin-medium","tier":"Growth","env":"Staging","rpm":200,"rps":10},{"bucket":"keto-admin-medium","tier":"Production","env":"Development","rpm":200,"rps":10},{"bucket":"keto-admin-medium","tier":"Production","env":"Production","rpm":500,"rps":20},{"bucket":"keto-admin-medium","tier":"Production","env":"Staging","rpm":200,"rps":10},{"bucket":"keto-public-high","tier":"Developer","env":"Development","rpm":120,"rps":7},{"bucket":"keto-public-high","tier":"Developer","env":"Production","rpm":120,"rps":7},{"bucket":"keto-public-high","tier":"Developer","env":"Staging","rpm":120,"rps":7},{"bucket":"keto-public-high","tier":"Enterprise","env":"Development","rpm":240,"rps":10},{"bucket":"keto-public-high","tier":"Enterprise","env":"Production","rpm":18000,"rps":600},{"bucket":"keto-public-high","tier":"Enterprise","env":"Staging","rpm":240,"rps":10},{"bucket":"keto-public-high","tier":"Growth","env":"Development","rpm":240,"rps":10},{"bucket":"keto-public-high","tier":"Growth","env":"Production","rpm":9000,"rps":300},{"bucket":"keto-public-high","tier":"Growth","env":"Staging","rpm":240,"rps":10},{"bucket":"keto-public-high","tier":"Production","env":"Development","rpm":240,"rps":10},{"bucket":"keto-public-high","tier":"Production","env":"Production","rpm":1500,"rps":55},{"bucket":"keto-public-high","tier":"Production","env":"Staging","rpm":240,"rps":10},{"bucket":"kratos-admin-high","tier":"Developer","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-admin-high","tier":"Developer","env":"Production","rpm":100,"rps":5},{"bucket":"kratos-admin-high","tier":"Developer","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-admin-high","tier":"Enterprise","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-admin-high","tier":"Enterprise","env":"Production","rpm":2400,"rps":80},{"bucket":"kratos-admin-high","tier":"Enterprise","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-admin-high","tier":"Growth","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-admin-high","tier":"Growth","env":"Production","rpm":1200,"rps":45},{"bucket":"kratos-admin-high","tier":"Growth","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-admin-high","tier":"Production","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-admin-high","tier":"Production","env":"Production","rpm":400,"rps":15},{"bucket":"kratos-admin-high","tier":"Production","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-admin-low","tier":"Developer","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-admin-low","tier":"Developer","env":"Production","rpm":100,"rps":5},{"bucket":"kratos-admin-low","tier":"Developer","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-admin-low","tier":"Enterprise","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-admin-low","tier":"Enterprise","env":"Production","rpm":2400,"rps":80},{"bucket":"kratos-admin-low","tier":"Enterprise","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-admin-low","tier":"Growth","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-admin-low","tier":"Growth","env":"Production","rpm":1200,"rps":45},{"bucket":"kratos-admin-low","tier":"Growth","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-admin-low","tier":"Production","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-admin-low","tier":"Production","env":"Production","rpm":400,"rps":15},{"bucket":"kratos-admin-low","tier":"Production","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-admin-medium","tier":"Developer","env":"Development","rpm":50,"rps":3},{"bucket":"kratos-admin-medium","tier":"Developer","env":"Production","rpm":50,"rps":3},{"bucket":"kratos-admin-medium","tier":"Developer","env":"Staging","rpm":50,"rps":3},{"bucket":"kratos-admin-medium","tier":"Enterprise","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-admin-medium","tier":"Enterprise","env":"Production","rpm":800,"rps":30},{"bucket":"kratos-admin-medium","tier":"Enterprise","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-admin-medium","tier":"Growth","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-admin-medium","tier":"Growth","env":"Production","rpm":400,"rps":15},{"bucket":"kratos-admin-medium","tier":"Growth","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-admin-medium","tier":"Production","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-admin-medium","tier":"Production","env":"Production","rpm":200,"rps":10},{"bucket":"kratos-admin-medium","tier":"Production","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-public-high","tier":"Developer","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-public-high","tier":"Developer","env":"Production","rpm":200,"rps":10},{"bucket":"kratos-public-high","tier":"Developer","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-public-high","tier":"Enterprise","env":"Development","rpm":400,"rps":15},{"bucket":"kratos-public-high","tier":"Enterprise","env":"Production","rpm":21600,"rps":700},{"bucket":"kratos-public-high","tier":"Enterprise","env":"Staging","rpm":400,"rps":15},{"bucket":"kratos-public-high","tier":"Growth","env":"Development","rpm":400,"rps":15},{"bucket":"kratos-public-high","tier":"Growth","env":"Production","rpm":7200,"rps":240},{"bucket":"kratos-public-high","tier":"Growth","env":"Staging","rpm":400,"rps":15},{"bucket":"kratos-public-high","tier":"Production","env":"Development","rpm":400,"rps":15},{"bucket":"kratos-public-high","tier":"Production","env":"Production","rpm":2400,"rps":80},{"bucket":"kratos-public-high","tier":"Production","env":"Staging","rpm":400,"rps":15},{"bucket":"kratos-public-low","tier":"Developer","env":"Development","rpm":50,"rps":3},{"bucket":"kratos-public-low","tier":"Developer","env":"Production","rpm":50,"rps":3},{"bucket":"kratos-public-low","tier":"Developer","env":"Staging","rpm":50,"rps":3},{"bucket":"kratos-public-low","tier":"Enterprise","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-public-low","tier":"Enterprise","env":"Production","rpm":1200,"rps":45},{"bucket":"kratos-public-low","tier":"Enterprise","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-public-low","tier":"Growth","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-public-low","tier":"Growth","env":"Production","rpm":600,"rps":25},{"bucket":"kratos-public-low","tier":"Growth","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-public-low","tier":"Production","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-public-low","tier":"Production","env":"Production","rpm":200,"rps":10},{"bucket":"kratos-public-low","tier":"Production","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-public-medium","tier":"Developer","env":"Development","rpm":100,"rps":5},{"bucket":"kratos-public-medium","tier":"Developer","env":"Production","rpm":100,"rps":5},{"bucket":"kratos-public-medium","tier":"Developer","env":"Staging","rpm":100,"rps":5},{"bucket":"kratos-public-medium","tier":"Enterprise","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-public-medium","tier":"Enterprise","env":"Production","rpm":1600,"rps":55},{"bucket":"kratos-public-medium","tier":"Enterprise","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-public-medium","tier":"Growth","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-public-medium","tier":"Growth","env":"Production","rpm":800,"rps":30},{"bucket":"kratos-public-medium","tier":"Growth","env":"Staging","rpm":200,"rps":10},{"bucket":"kratos-public-medium","tier":"Production","env":"Development","rpm":200,"rps":10},{"bucket":"kratos-public-medium","tier":"Production","env":"Production","rpm":400,"rps":15},{"bucket":"kratos-public-medium","tier":"Production","env":"Staging","rpm":200,"rps":10},{"bucket":"polis-public-high","tier":"Developer","env":"Development","rpm":15,"rps":2},{"bucket":"polis-public-high","tier":"Developer","env":"Production","rpm":15,"rps":2},{"bucket":"polis-public-high","tier":"Developer","env":"Staging","rpm":15,"rps":2},{"bucket":"polis-public-high","tier":"Enterprise","env":"Development","rpm":30,"rps":2},{"bucket":"polis-public-high","tier":"Enterprise","env":"Production","rpm":250,"rps":10},{"bucket":"polis-public-high","tier":"Enterprise","env":"Staging","rpm":30,"rps":2},{"bucket":"polis-public-high","tier":"Growth","env":"Development","rpm":30,"rps":2},{"bucket":"polis-public-high","tier":"Growth","env":"Production","rpm":120,"rps":7},{"bucket":"polis-public-high","tier":"Growth","env":"Staging","rpm":30,"rps":2},{"bucket":"polis-public-high","tier":"Production","env":"Development","rpm":30,"rps":2},{"bucket":"polis-public-high","tier":"Production","env":"Production","rpm":60,"rps":3},{"bucket":"polis-public-high","tier":"Production","env":"Staging","rpm":30,"rps":2},{"bucket":"polis-public-medium","tier":"Developer","env":"Development","rpm":60,"rps":3},{"bucket":"polis-public-medium","tier":"Developer","env":"Production","rpm":60,"rps":3},{"bucket":"polis-public-medium","tier":"Developer","env":"Staging","rpm":60,"rps":3},{"bucket":"polis-public-medium","tier":"Enterprise","env":"Development","rpm":120,"rps":7},{"bucket":"polis-public-medium","tier":"Enterprise","env":"Production","rpm":1000,"rps":35},{"bucket":"polis-public-medium","tier":"Enterprise","env":"Staging","rpm":120,"rps":7},{"bucket":"polis-public-medium","tier":"Growth","env":"Development","rpm":120,"rps":7},{"bucket":"polis-public-medium","tier":"Growth","env":"Production","rpm":500,"rps":20},{"bucket":"polis-public-medium","tier":"Growth","env":"Staging","rpm":120,"rps":7},{"bucket":"polis-public-medium","tier":"Production","env":"Development","rpm":120,"rps":7},{"bucket":"polis-public-medium","tier":"Production","env":"Production","rpm":250,"rps":10},{"bucket":"polis-public-medium","tier":"Production","env":"Staging","rpm":120,"rps":7}]}
\ No newline at end of file
From e2b30c81383d4b8594dad8dd771a7ab5e805c414 Mon Sep 17 00:00:00 2001
From: unatasha8
Date: Tue, 17 Mar 2026 10:11:28 -0700
Subject: [PATCH 13/15] docs: updated plugins
---
package-lock.json | 55 ++----------------------
package.json | 1 +
src/plugins/docusaurus-polyfill/index.js | 27 ++++++++----
3 files changed, 24 insertions(+), 59 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 3c1ff65f91..90ed4d7b3f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,6 +14,7 @@
"@docusaurus/plugin-content-docs": "3.9.2",
"@docusaurus/plugin-content-pages": "3.9.2",
"@docusaurus/plugin-sitemap": "3.9.2",
+ "@docusaurus/plugin-svgr": "^3.9.2",
"@docusaurus/preset-classic": "3.9.2",
"@docusaurus/theme-classic": "3.9.2",
"@docusaurus/theme-search-algolia": "3.9.2",
@@ -270,7 +271,6 @@
"version": "5.44.0",
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.44.0.tgz",
"integrity": "sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==",
- "peer": true,
"dependencies": {
"@algolia/client-common": "5.44.0",
"@algolia/requester-browser-xhr": "5.44.0",
@@ -447,7 +447,6 @@
"node_modules/@babel/core": {
"version": "7.26.0",
"license": "MIT",
- "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
@@ -2434,7 +2433,6 @@
"url": "https://opencollective.com/csstools"
}
],
- "peer": true,
"engines": {
"node": ">=18"
},
@@ -2456,7 +2454,6 @@
"url": "https://opencollective.com/csstools"
}
],
- "peer": true,
"engines": {
"node": ">=18"
}
@@ -2561,7 +2558,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
- "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -2967,7 +2963,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
- "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -3906,7 +3901,6 @@
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz",
"integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==",
- "peer": true,
"dependencies": {
"@docusaurus/core": "3.9.2",
"@docusaurus/logger": "3.9.2",
@@ -4074,6 +4068,7 @@
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz",
"integrity": "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw==",
+ "license": "MIT",
"dependencies": {
"@docusaurus/core": "3.9.2",
"@docusaurus/types": "3.9.2",
@@ -4191,7 +4186,6 @@
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz",
"integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==",
- "peer": true,
"dependencies": {
"@docusaurus/mdx-loader": "3.9.2",
"@docusaurus/module-type-aliases": "3.9.2",
@@ -4295,7 +4289,6 @@
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz",
"integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==",
- "peer": true,
"dependencies": {
"@docusaurus/logger": "3.9.2",
"@docusaurus/types": "3.9.2",
@@ -5478,7 +5471,6 @@
"node_modules/@mdx-js/react": {
"version": "3.1.0",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/mdx": "^2.0.0"
},
@@ -5538,7 +5530,6 @@
"node_modules/@octokit/core": {
"version": "5.2.0",
"license": "MIT",
- "peer": true,
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
@@ -5887,7 +5878,6 @@
"node_modules/@rjsf/core": {
"version": "5.24.1",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
@@ -5908,7 +5898,6 @@
"resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-5.24.1.tgz",
"integrity": "sha512-A25fFj/TNz5bKikCIs20DiedKAalLuAQ7vUX9VQkD2hps5C9YVr0dJgSlsPa5kzl6lQMaRsNouTx8E1ZdLV2fg==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"json-schema-merge-allof": "^0.8.1",
"jsonpointer": "^5.0.1",
@@ -6198,7 +6187,6 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
- "peer": true,
"dependencies": {
"@babel/core": "^7.21.3",
"@svgr/babel-preset": "8.1.0",
@@ -6298,7 +6286,6 @@
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@swc/counter": "^0.1.2",
"@swc/types": "^0.1.5"
@@ -7275,8 +7262,7 @@
},
"node_modules/@types/json-schema": {
"version": "7.0.15",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@types/keyv": {
"version": "3.1.4",
@@ -7308,7 +7294,6 @@
"node_modules/@types/node": {
"version": "22.8.4",
"license": "MIT",
- "peer": true,
"dependencies": {
"undici-types": "~6.19.8"
}
@@ -7351,7 +7336,6 @@
"node_modules/@types/react": {
"version": "18.3.12",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -7674,7 +7658,6 @@
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -7755,7 +7738,6 @@
"node_modules/ajv": {
"version": "8.17.1",
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -7797,7 +7779,6 @@
"version": "5.44.0",
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.44.0.tgz",
"integrity": "sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==",
- "peer": true,
"dependencies": {
"@algolia/abtesting": "1.10.0",
"@algolia/client-abtesting": "5.44.0",
@@ -8090,7 +8071,6 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
- "peer": true,
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
@@ -8587,7 +8567,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754",
@@ -8949,7 +8928,6 @@
"version": "11.0.3",
"resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz",
"integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==",
- "peer": true,
"dependencies": {
"@chevrotain/cst-dts-gen": "11.0.3",
"@chevrotain/gast": "11.0.3",
@@ -9591,7 +9569,6 @@
"version": "3.38.1",
"hasInstallScript": true,
"license": "MIT",
- "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
@@ -9881,7 +9858,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
- "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -10192,7 +10168,6 @@
"node_modules/cytoscape": {
"version": "3.31.0",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10"
}
@@ -10558,7 +10533,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
- "peer": true,
"engines": {
"node": ">=12"
}
@@ -12095,7 +12069,6 @@
"node_modules/file-loader/node_modules/ajv": {
"version": "6.12.6",
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -14757,7 +14730,6 @@
"node_modules/jsep": {
"version": "1.4.0",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 10.16.0"
}
@@ -17919,7 +17891,6 @@
"resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.7.tgz",
"integrity": "sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g==",
"license": "MIT",
- "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mobx"
@@ -18400,7 +18371,6 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -19381,7 +19351,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.1.1",
@@ -20237,7 +20206,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
- "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -20806,7 +20774,6 @@
"version": "3.2.5",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -21196,7 +21163,6 @@
"version": "6.12.6",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -21263,7 +21229,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.0.1.tgz",
"integrity": "sha512-nVRaZCuEyvu69sWrkdwjP6QY57C+lY+uMNNMyWUFJb9Z/JlaBOQus7mSMfGYsblv7R691u6SSJA/dX9IRnyyLQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -21273,7 +21238,6 @@
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.8.tgz",
"integrity": "sha512-yD6uN78XlFOkETQp6GRuVe0s5509x3XYx8PfPbirwFTYCj5/RfmSs9YZGCwkUrhZNFzj7tZPdpb+3k50mK1E4g==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/runtime": "^7.14.0",
"@restart/context": "^2.1.4",
@@ -21303,7 +21267,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.1.tgz",
"integrity": "sha512-3TJg51HSbJiLVYCS6vWwWsyqoS36aGEOCmtLLHxROlSZZ5Bk10xpxHFbrCu4DdqgR85DDc9Vucxqhai3g2xjtA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"scheduler": "^0.25.0"
},
@@ -21356,7 +21319,6 @@
"name": "@docusaurus/react-loadable",
"version": "6.0.0",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/react": "*"
},
@@ -21401,7 +21363,6 @@
"node_modules/react-router": {
"version": "5.3.4",
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/runtime": "^7.12.13",
"history": "^4.9.0",
@@ -23852,7 +23813,6 @@
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.18.tgz",
"integrity": "sha512-Mvf3gJFzZCkhjY2Y/Fx9z1m3dxbza0uI9H1CbNZm/jSHCojzJhQ0R7bByrlFJINnMzz/gPulpoFFGymNwrsMcw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@emotion/is-prop-valid": "1.2.2",
"@emotion/unitless": "0.8.1",
@@ -24137,7 +24097,6 @@
"node_modules/terser-webpack-plugin/node_modules/ajv": {
"version": "6.12.6",
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -24566,7 +24525,6 @@
"version": "10.9.1",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -24612,8 +24570,7 @@
},
"node_modules/tslib": {
"version": "2.8.0",
- "license": "0BSD",
- "peer": true
+ "license": "0BSD"
},
"node_modules/tty-browserify": {
"version": "0.0.1",
@@ -25094,7 +25051,6 @@
"node_modules/url-loader/node_modules/ajv": {
"version": "6.12.6",
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -25427,7 +25383,6 @@
"node_modules/webpack": {
"version": "5.95.0",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
@@ -25708,7 +25663,6 @@
"node_modules/webpack/node_modules/ajv": {
"version": "6.12.6",
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -26232,7 +26186,6 @@
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
"integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/package.json b/package.json
index 9a8756515a..291bd6dee9 100644
--- a/package.json
+++ b/package.json
@@ -36,6 +36,7 @@
"@docusaurus/plugin-content-docs": "3.9.2",
"@docusaurus/plugin-content-pages": "3.9.2",
"@docusaurus/plugin-sitemap": "3.9.2",
+ "@docusaurus/plugin-svgr": "^3.9.2",
"@docusaurus/preset-classic": "3.9.2",
"@docusaurus/theme-classic": "3.9.2",
"@docusaurus/theme-search-algolia": "3.9.2",
diff --git a/src/plugins/docusaurus-polyfill/index.js b/src/plugins/docusaurus-polyfill/index.js
index 2d11bd28f8..c09422da46 100644
--- a/src/plugins/docusaurus-polyfill/index.js
+++ b/src/plugins/docusaurus-polyfill/index.js
@@ -1,18 +1,29 @@
-const webpack = require("webpack")
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
-// eslint-disable-next-line
module.exports = function (context, options) {
return {
name: "docusaurus-polyfill",
- // eslint-disable-next-line
configureWebpack(config, isServer, utils) {
- const plugins = [
- new NodePolyfillPlugin(),
- ]
-
return {
- plugins,
+ mergeStrategy: { "module.rules": "prepend" },
+ plugins: [
+ new NodePolyfillPlugin(),
+ ],
+ resolve: {
+ fallback: {
+ buffer: require.resolve("buffer/"),
+ },
+ },
+ module: {
+ rules: [
+ {
+ test: /\.m?js$/,
+ resolve: {
+ fullySpecified: false,
+ },
+ },
+ ],
+ },
}
},
}
From b5a52039dad9bd46a1d4b8a8f3723c56cd1e8020 Mon Sep 17 00:00:00 2001
From: unatasha8
Date: Tue, 17 Mar 2026 11:22:48 -0700
Subject: [PATCH 14/15] docs: updated with feedback
---
docs/guides/rate-limits-legacy.mdx | 73 +++++++++++++++++++---
docs/guides/rate-limits-new.mdx | 94 ++++++++++++++++++++++++----
docs/guides/rate-limits-project.mdx | 96 ++++-------------------------
3 files changed, 161 insertions(+), 102 deletions(-)
diff --git a/docs/guides/rate-limits-legacy.mdx b/docs/guides/rate-limits-legacy.mdx
index bfd9631ad6..995b888a9d 100644
--- a/docs/guides/rate-limits-legacy.mdx
+++ b/docs/guides/rate-limits-legacy.mdx
@@ -21,9 +21,9 @@ usage for all our customers.
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
+- 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,
+- 2Endpoint-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
@@ -36,9 +36,9 @@ Network across different usage scenarios.
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
+- 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
+- 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, see our [Workspaces and environments guide](/docs/guides/workspaces).
@@ -47,8 +47,68 @@ For a detailed explanation of workspaces and environments, see our [Workspaces a
Each rate limit policy includes two limits:
-1. Burst limit: Maximum requests per second (rps), allowing for short traffic spikes.
-2. Sustained limit: Maximum requests per minute (rpm), ensuring consistent performance over time.
+- Burst limit: Maximum requests per second (rps), allowing for short traffic spikes.
+- Sustained limit: Maximum requests per minute (rpm), ensuring consistent performance over time.
+
+## Monitor rate limit headers
+
+Ory Network includes rate limit information in API response headers for project rate-limits. Use these headers to avoid exceeding
+the applicable rate limit. Your client must handle these responses to maintain service quality.
+
+| Header | Description |
+| ----------------------- | --------------------------------------------------------------------------------------- |
+| `x-ratelimit-limit` | The rate limit ceiling(s) for the current request, including burst and sustained limits |
+| `x-ratelimit-remaining` | Number of requests remaining in the current window |
+| `x-ratelimit-reset` | Number of seconds until the rate limit window resets |
+
+Example header values:
+
+```shell
+x-ratelimit-limit: 10, 10;w=1, 300;w=60
+x-ratelimit-remaining: 8
+x-ratelimit-reset: 1
+```
+
+The `x-ratelimit-limit` header follows the
+[IETF RateLimit header fields draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/), where `w=1`
+indicates a 1-second window and `w=60` indicates a 60-second window. Use these headers to throttle requests proactively and reduce
+the likelihood of hitting 429 errors.
+
+## How to handle 429 responses
+
+When your client receives a `429 Too Many Requests` response, you've exceeded the applicable rate limit. Your client must handle
+these responses to maintain service quality.
+
+Your implementation must:
+
+- **Detect 429 responses**: Monitor for HTTP 429 status codes on all API calls.
+- **Implement exponential backoff**: When receiving a 429, pause and retry with increasing delays (for example: 1s, 2s, 4s, 8s).
+- **Respect rate limit headers**: Check `x-ratelimit-remaining` and `x-ratelimit-reset`, when available, to throttle requests
+ proactively.
+- **Avoid retry storms**: Don't retry failed requests in a tight loop.
+
+### Exponential backoff strategy
+
+Implement an exponential backoff strategy to proactively avoid hitting rate limits.
+
+```jsx
+async function callApiWithBackoff(request, maxRetries = 5) {
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
+ const response = await fetch(request)
+ if (response.status === 429) {
+ const delay = Math.pow(2, attempt) * 1000 // 1s, 2s, 4s, 8s, 16s
+ await new Promise((resolve) => setTimeout(resolve, delay))
+ continue
+ }
+ return response
+ }
+ throw new Error("Max retries exceeded")
+}
+```
+
+Clients that repeatedly exceed rate limits without proper backoff may have their API access temporarily blocked. For high-volume
+use cases that exceed your plan's limits, open a support ticket via the [Ory Console](https://console.ory.sh/support) or email
+[support@ory.sh](mailto:support@ory.sh).
### Determine your project's rate limits
@@ -231,7 +291,6 @@ The following endpoints are protected by different types of rate limiting:
| 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) |
diff --git a/docs/guides/rate-limits-new.mdx b/docs/guides/rate-limits-new.mdx
index 3981771a02..64657a3d25 100644
--- a/docs/guides/rate-limits-new.mdx
+++ b/docs/guides/rate-limits-new.mdx
@@ -25,23 +25,95 @@ Ory uses two types of rate limits:
- [Endpoint-based rate limits](./rate-limits-endpoint): Control traffic to individual endpoints to protect against volumetric
attacks, brute-force attempts, and concurrent request abuse—regardless of your project rate limits.
-## Identify the rate limits that apply to your project
+Each project has a set of rate limit buckets. A bucket is a named group of API endpoints that share the same rate limit
+thresholds. When a request comes in, Ory resolves which bucket the endpoint belongs to and applies the threshold for that bucket.
-In the **Project rate limit table** below:
+Bucket thresholds are determined by two factors:
-1. Select your subscription tier from the **Tier** dropdown. Options are Developer, Production, Growth, or Enterprise.
-2. Select your project environment from the **Environment** dropdown. Options are Production, Staging, or Development.
-3. To search by API path, enter the API path into the **Search API path** box. The endpoint appears highlighted. Look to see which
- bucket it belongs to for its rate limit.
+- **Subscription tier**: The project's subscription tier (Developer, Production, Growth, or Enterprise).
+- **Project environment**: The project's environment (Production, Staging, or Development).
+
+For a detailed explanation of tiers and environments, see our [Workspaces and environments guide](/docs/guides/workspaces).
+
+## Rate limits per bucket
+
+Buckets follow a `{service}-{access}-{threshold}` naming pattern. For example:
+
+- `kratos-public-high`: for endpoints with a high rate limit allowance
+- `hydra-public-medium`: for endpoints with a moderate rate limit allowance
+- `hydra-admin-low`: for endpoints with a low rate limit allowance
:::info
-Project rate limits use a bucket system to group endpoints and apply thresholds. Understanding how buckets work will help you
-understand the project rate limit table below. See [Project rate limits](./rate-limits-project) to learn how rate limits are
-applied per bucket.
+A bucket counter is shared across all endpoints in the same bucket. For example, `POST /admin/relation-tuples` and
+`DELETE /admin/relation-tuples` both belong to `keto-admin-high`, so every call to either endpoint counts against the same limit.
+Plan your request volumes accordingly.
:::
-### Project rate limit table
+### Rate limit dimensions
+
+You will see two rate limits for each bucket:
+
+- **Burst limit**: Maximum requests per second (rps), allowing for short traffic spikes.
+- **Sustained limit**: Maximum requests per minute (rpm), ensuring consistent performance over time.
+
+## Monitor rate limit headers
+
+Ory Network includes rate limit information in API response headers for project rate-limits. Use these headers to avoid exceeding
+the applicable rate limit. Your client must handle these responses to maintain service quality.
+
+| Header | Description |
+| ----------------------- | --------------------------------------------------------------------------------------- |
+| `x-ratelimit-limit` | The rate limit ceiling(s) for the current request, including burst and sustained limits |
+| `x-ratelimit-remaining` | Number of requests remaining in the current window |
+| `x-ratelimit-reset` | Number of seconds until the rate limit window resets |
+
+Example header values:
+
+```shell
+x-ratelimit-limit: 10, 10;w=1, 300;w=60
+x-ratelimit-remaining: 8
+x-ratelimit-reset: 1
+```
+
+The `x-ratelimit-limit` header follows the
+[IETF RateLimit header fields draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/), where `w=1`
+indicates a 1-second window and `w=60` indicates a 60-second window. Use these headers to throttle requests proactively and reduce
+the likelihood of hitting 429 errors.
+
+## How to handle 429 responses
+
+When your client receives a `429 Too Many Requests` response, you've exceeded the applicable rate limit. Your client must handle
+these responses to maintain service quality.
+
+Your implementation must:
+
+- **Detect 429 responses**: Monitor for HTTP 429 status codes on all API calls.
+- **Implement exponential backoff**: When receiving a 429, pause and retry with increasing delays (for example: 1s, 2s, 4s, 8s).
+- **Respect rate limit headers**: Check `x-ratelimit-remaining` and `x-ratelimit-reset`, when available, to throttle requests
+ proactively.
+- **Avoid retry storms**: Don't retry failed requests in a tight loop.
+
+### Exponential backoff strategy
+
+Implement an exponential backoff strategy to proactively avoid hitting rate limits.
+
+```jsx
+async function callApiWithBackoff(request, maxRetries = 5) {
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
+ const response = await fetch(request)
+ if (response.status === 429) {
+ const delay = Math.pow(2, attempt) * 1000 // 1s, 2s, 4s, 8s, 16s
+ await new Promise((resolve) => setTimeout(resolve, delay))
+ continue
+ }
+ return response
+ }
+ throw new Error("Max retries exceeded")
+}
+```
-
+Clients that repeatedly exceed rate limits without proper backoff may have their API access temporarily blocked. For high-volume
+use cases that exceed your plan's limits, open a support ticket via the [Ory Console](https://console.ory.sh/support) or email
+[support@ory.sh](mailto:support@ory.sh).
diff --git a/docs/guides/rate-limits-project.mdx b/docs/guides/rate-limits-project.mdx
index c79317f476..0860d64238 100644
--- a/docs/guides/rate-limits-project.mdx
+++ b/docs/guides/rate-limits-project.mdx
@@ -1,98 +1,26 @@
---
id: rate-limits-project
-title: Project rate limits for Ory Network
+title: Project rate limits
sidebar_label: Project rate limits
---
-Each project has a set of rate limit buckets. A bucket is a named group of API endpoints that share the same rate limit
-thresholds. When a request comes in, Ory resolves which bucket the endpoint belongs to and applies the threshold for that bucket.
+## Identify the rate limits that apply to your project
-Bucket thresholds are determined by two factors:
+In the **Project rate limit table** below:
-- **Subscription tier**: The project's subscription tier (Developer, Production, Growth, or Enterprise).
-- **Project environment**: The project's environment (Production, Staging, or Development).
-
-For a detailed explanation of tiers and environments, see our [Workspaces and environments guide](/docs/guides/workspaces).
-
-## Rate limits per bucket
-
-Buckets follow a `{service}-{access}-{threshold}` naming pattern. For example:
-
-- `kratos-public-high`: for endpoints with a high rate limit allowance
-- `hydra-public-medium`: for endpoints with a moderate rate limit allowance
-- `hydra-admin-low`: for endpoints with a low rate limit allowance
+1. Select your subscription tier from the **Tier** dropdown. Options are Developer, Production, Growth, or Enterprise.
+2. Select your project environment from the **Environment** dropdown. Options are Production, Staging, or Development.
+3. To search by API path, enter the API path into the **Search API path** box. The endpoint appears highlighted. Look to see which
+ bucket it belongs to for its rate limit.
:::info
-A bucket counter is shared across all endpoints in the same bucket. For example, `POST /admin/relation-tuples` and
-`DELETE /admin/relation-tuples` both belong to `keto-admin-high`, so every call to either endpoint counts against the same limit.
-Plan your request volumes accordingly.
+Project rate limits use a bucket system to group endpoints and apply thresholds. Understanding how buckets work will help you
+understand the project rate limit table below. See [Project rate limits](./rate-limits-project) to learn how rate limits are
+applied per bucket.
:::
-### Rate limit dimensions
-
-You will see two rate limits for each bucket:
-
-- **Burst limit**: Maximum requests per second (rps), allowing for short traffic spikes.
-- **Sustained limit**: Maximum requests per minute (rpm), ensuring consistent performance over time.
-
-## Monitor rate limit headers
-
-Ory Network includes rate limit information in API response headers for project rate-limits. Use these headers to avoid exceeding
-the applicable rate limit. Your client must handle these responses to maintain service quality.
-
-| Header | Description |
-| ----------------------- | --------------------------------------------------------------------------------------- |
-| `x-ratelimit-limit` | The rate limit ceiling(s) for the current request, including burst and sustained limits |
-| `x-ratelimit-remaining` | Number of requests remaining in the current window |
-| `x-ratelimit-reset` | Number of seconds until the rate limit window resets |
-
-Example header values:
-
-```shell
-x-ratelimit-limit: 10, 10;w=1, 300;w=60
-x-ratelimit-remaining: 8
-x-ratelimit-reset: 1
-```
-
-The `x-ratelimit-limit` header follows the
-[IETF RateLimit header fields draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/), where `w=1`
-indicates a 1-second window and `w=60` indicates a 60-second window. Use these headers to throttle requests proactively and reduce
-the likelihood of hitting 429 errors.
-
-## How to handle 429 responses
-
-When your client receives a `429 Too Many Requests` response, you've exceeded the applicable rate limit. Your client must handle
-these responses to maintain service quality.
-
-Your implementation must:
-
-- **Detect 429 responses**: Monitor for HTTP 429 status codes on all API calls.
-- **Implement exponential backoff**: When receiving a 429, pause and retry with increasing delays (for example: 1s, 2s, 4s, 8s).
-- **Respect rate limit headers**: Check `x-ratelimit-remaining` and `x-ratelimit-reset`, when available, to throttle requests
- proactively.
-- **Avoid retry storms**: Don't retry failed requests in a tight loop.
-
-### Exponential backoff strategy
-
-Implement an exponential backoff strategy to proactively avoid hitting rate limits.
-
-```jsx
-async function callApiWithBackoff(request, maxRetries = 5) {
- for (let attempt = 0; attempt < maxRetries; attempt++) {
- const response = await fetch(request)
- if (response.status === 429) {
- const delay = Math.pow(2, attempt) * 1000 // 1s, 2s, 4s, 8s, 16s
- await new Promise((resolve) => setTimeout(resolve, delay))
- continue
- }
- return response
- }
- throw new Error("Max retries exceeded")
-}
-```
+### Project rate limit table
-Clients that repeatedly exceed rate limits without proper backoff may have their API access temporarily blocked. For high-volume
-use cases that exceed your plan's limits, open a support ticket via the [Ory Console](https://console.ory.sh/support) or email
-[support@ory.sh](mailto:support@ory.sh).
+
From 32a7d82e5a8483e323ac77e2c82c3d40c423392a Mon Sep 17 00:00:00 2001
From: unatasha8
Date: Tue, 17 Mar 2026 11:28:33 -0700
Subject: [PATCH 15/15] docs: make format fixes
---
docs/guides/rate-limits-legacy.mdx | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/docs/guides/rate-limits-legacy.mdx b/docs/guides/rate-limits-legacy.mdx
index 995b888a9d..70c8d97409 100644
--- a/docs/guides/rate-limits-legacy.mdx
+++ b/docs/guides/rate-limits-legacy.mdx
@@ -22,9 +22,9 @@ usage for all our customers.
Ory implements two main rate limit types:
- 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.
+ overall request volume your projects can make to Ory's APIs.
- 2Endpoint-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.
+ credential stuffing, and concurrent request abuse, regardless of your project limits.
## Project rate limits in workspaces
@@ -37,9 +37,9 @@ Network across different usage scenarios.
Rate limits for each project are determined by two main factors:
- Workspace subscription: Your subscription plan (Developer, Production, Growth, or Enterprise) sets the baseline for your rate
- limits.
+ limits.
- Project environment: Within each workspace, projects can be assigned to Production, Staging, or Development environments, each
- with specific rate limit configurations.
+ with specific rate limit configurations.
For a detailed explanation of workspaces and environments, see our [Workspaces and environments guide](/docs/guides/workspaces).
@@ -289,15 +289,15 @@ issues.
The following endpoints are protected by different types of rate limiting:
-| Type | Endpoint | HTTP Methods | Ratelimit Key | Action |
-| :--------- | :------------------------------------------ | :----------------------- | :----------------------------------------------- | :------------------------------------- |
-| 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) |
+| Type | Endpoint | HTTP Methods | Ratelimit Key | Action |
+| :------- | :------------------------------------------ | :----------------------- | :----------------------------------------------- | :------------------------------------- |
+| 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) |
:::note
|