zuplo 6.67.32 → 6.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/docs/_index.md +44 -0
- package/docs/ai-gateway/apps.mdx +28 -0
- package/docs/ai-gateway/custom-providers.mdx +54 -0
- package/docs/ai-gateway/getting-started.mdx +224 -0
- package/docs/ai-gateway/guardrails.mdx +65 -0
- package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
- package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
- package/docs/ai-gateway/integrations/codex.mdx +78 -0
- package/docs/ai-gateway/integrations/goose.mdx +104 -0
- package/docs/ai-gateway/integrations/langchain.mdx +66 -0
- package/docs/ai-gateway/integrations/openai.mdx +99 -0
- package/docs/ai-gateway/introduction.mdx +85 -0
- package/docs/ai-gateway/managing-apps.mdx +46 -0
- package/docs/ai-gateway/managing-providers.mdx +66 -0
- package/docs/ai-gateway/managing-teams.mdx +63 -0
- package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
- package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
- package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
- package/docs/ai-gateway/providers.mdx +32 -0
- package/docs/ai-gateway/teams.mdx +38 -0
- package/docs/ai-gateway/universal-api.mdx +43 -0
- package/docs/ai-gateway/usage-limits.mdx +89 -0
- package/docs/api-management/introduction.md +127 -0
- package/docs/articles/accounts/audit-logs.mdx +227 -0
- package/docs/articles/accounts/billing.mdx +25 -0
- package/docs/articles/accounts/default-api-key.mdx +30 -0
- package/docs/articles/accounts/delete-account.mdx +36 -0
- package/docs/articles/accounts/enterprise-sso.mdx +116 -0
- package/docs/articles/accounts/managing-account-members.mdx +45 -0
- package/docs/articles/accounts/managing-project-members.mdx +37 -0
- package/docs/articles/accounts/members-and-roles.mdx +21 -0
- package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
- package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
- package/docs/articles/add-api-to-backstage.mdx +216 -0
- package/docs/articles/advanced-path-matching.mdx +139 -0
- package/docs/articles/api-key-administration.mdx +47 -0
- package/docs/articles/api-key-api.mdx +220 -0
- package/docs/articles/api-key-authentication.mdx +195 -0
- package/docs/articles/api-key-buckets.mdx +61 -0
- package/docs/articles/api-key-end-users.mdx +52 -0
- package/docs/articles/api-key-leak-detection.mdx +75 -0
- package/docs/articles/api-key-management.mdx +100 -0
- package/docs/articles/api-key-react-component.mdx +90 -0
- package/docs/articles/api-key-service-limits.mdx +14 -0
- package/docs/articles/archiving-requests-to-storage.mdx +119 -0
- package/docs/articles/branch-based-deployments.mdx +184 -0
- package/docs/articles/bypass-policy-for-testing.mdx +117 -0
- package/docs/articles/check-ip-address.mdx +17 -0
- package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
- package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
- package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
- package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
- package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
- package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
- package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
- package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
- package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
- package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
- package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
- package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
- package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
- package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
- package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
- package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
- package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
- package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
- package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
- package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
- package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
- package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
- package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
- package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
- package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
- package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
- package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
- package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
- package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
- package/docs/articles/composite-policy-reference.mdx +284 -0
- package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
- package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
- package/docs/articles/convert-urls-to-openapi.mdx +62 -0
- package/docs/articles/cors.mdx +447 -0
- package/docs/articles/custom-audit-log-policy.mdx +95 -0
- package/docs/articles/custom-ci-cd-azure.mdx +81 -0
- package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
- package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
- package/docs/articles/custom-ci-cd-github.mdx +99 -0
- package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
- package/docs/articles/custom-ci-cd.mdx +82 -0
- package/docs/articles/custom-code-patterns.md +418 -0
- package/docs/articles/custom-domains.mdx +258 -0
- package/docs/articles/custom-logging-example.mdx +139 -0
- package/docs/articles/ddos-protection.mdx +138 -0
- package/docs/articles/development-options.mdx +49 -0
- package/docs/articles/environment-variables.mdx +134 -0
- package/docs/articles/environments.mdx +143 -0
- package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
- package/docs/articles/github-deployment-testing.mdx +101 -0
- package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
- package/docs/articles/graphql-security.mdx +180 -0
- package/docs/articles/handling-form-data.mdx +61 -0
- package/docs/articles/health-checks.mdx +109 -0
- package/docs/articles/hosting-options.mdx +70 -0
- package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
- package/docs/articles/limits.mdx +98 -0
- package/docs/articles/local-development-debugging.mdx +44 -0
- package/docs/articles/local-development-env-variables.mdx +23 -0
- package/docs/articles/local-development-installing-packages.mdx +23 -0
- package/docs/articles/local-development-routes-designer.mdx +27 -0
- package/docs/articles/local-development-services.mdx +40 -0
- package/docs/articles/local-development-troubleshooting.mdx +56 -0
- package/docs/articles/local-development.mdx +81 -0
- package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
- package/docs/articles/log-plugin-datadog.mdx +84 -0
- package/docs/articles/log-plugin-dynatrace.mdx +75 -0
- package/docs/articles/log-plugin-gcp.mdx +75 -0
- package/docs/articles/log-plugin-loki.mdx +136 -0
- package/docs/articles/log-plugin-new-relic.mdx +84 -0
- package/docs/articles/log-plugin-splunk.mdx +104 -0
- package/docs/articles/log-plugin-sumo.mdx +73 -0
- package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
- package/docs/articles/log-request-response-data.mdx +398 -0
- package/docs/articles/logging.mdx +115 -0
- package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
- package/docs/articles/mcp-quickstart.mdx +135 -0
- package/docs/articles/metrics-plugins.mdx +371 -0
- package/docs/articles/migrate-from-apigee.md +408 -0
- package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
- package/docs/articles/migrate-from-azure-apim.md +292 -0
- package/docs/articles/migrate-from-kong.md +300 -0
- package/docs/articles/migration-overview.md +81 -0
- package/docs/articles/monetization/api-access.mdx +69 -0
- package/docs/articles/monetization/billing-models.md +520 -0
- package/docs/articles/monetization/developer-portal.md +167 -0
- package/docs/articles/monetization/features.mdx +98 -0
- package/docs/articles/monetization/index.mdx +113 -0
- package/docs/articles/monetization/meters.mdx +135 -0
- package/docs/articles/monetization/monetization-policy.md +314 -0
- package/docs/articles/monetization/plan-examples.mdx +366 -0
- package/docs/articles/monetization/plans.mdx +266 -0
- package/docs/articles/monetization/pricing-models.mdx +225 -0
- package/docs/articles/monetization/private-plans.md +154 -0
- package/docs/articles/monetization/quickstart.md +355 -0
- package/docs/articles/monetization/rate-cards.mdx +171 -0
- package/docs/articles/monetization/stripe-integration.md +195 -0
- package/docs/articles/monetization/subscription-lifecycle.md +298 -0
- package/docs/articles/monetization/tax-collection.md +166 -0
- package/docs/articles/monetization/troubleshooting.md +272 -0
- package/docs/articles/monetization-custom.mdx +71 -0
- package/docs/articles/monetization-integrations.mdx +104 -0
- package/docs/articles/monitoring-your-gateway.mdx +53 -0
- package/docs/articles/monorepo-deployment.mdx +350 -0
- package/docs/articles/multiple-auth-policies.mdx +81 -0
- package/docs/articles/non-standard-ports.mdx +30 -0
- package/docs/articles/oauth-authentication.mdx +54 -0
- package/docs/articles/openapi-server-urls.mdx +60 -0
- package/docs/articles/openapi.mdx +130 -0
- package/docs/articles/opentelemetry.mdx +250 -0
- package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
- package/docs/articles/performance-testing.mdx +304 -0
- package/docs/articles/plugin-akamai-api-security.mdx +76 -0
- package/docs/articles/plugin-azure-blob.mdx +73 -0
- package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
- package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
- package/docs/articles/policies.mdx +33 -0
- package/docs/articles/rename-or-move-project.mdx +39 -0
- package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
- package/docs/articles/routing.mdx +193 -0
- package/docs/articles/s3-signed-url-uploads.mdx +521 -0
- package/docs/articles/secure-tunnel.mdx +84 -0
- package/docs/articles/securing-backend-mtls.mdx +268 -0
- package/docs/articles/securing-your-backend.mdx +148 -0
- package/docs/articles/security.mdx +105 -0
- package/docs/articles/sharing-code-across-projects.mdx +412 -0
- package/docs/articles/source-control-setup-azure.mdx +13 -0
- package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
- package/docs/articles/source-control-setup-github.mdx +172 -0
- package/docs/articles/source-control-setup-gitlab.mdx +12 -0
- package/docs/articles/source-control.mdx +80 -0
- package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
- package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
- package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
- package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
- package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
- package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
- package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
- package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
- package/docs/articles/support.mdx +144 -0
- package/docs/articles/terraform.mdx +114 -0
- package/docs/articles/testing-graphql.mdx +34 -0
- package/docs/articles/testing.mdx +522 -0
- package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
- package/docs/articles/troubleshooting.md +302 -0
- package/docs/articles/tsconfig.mdx +105 -0
- package/docs/articles/tunnel-setup.mdx +195 -0
- package/docs/articles/tunnel-troubleshooting.mdx +50 -0
- package/docs/articles/update-zup-in-github-action.mdx +110 -0
- package/docs/articles/use-openapi-extension-data.mdx +79 -0
- package/docs/articles/users/multifactor-authentication.mdx +64 -0
- package/docs/articles/users/profile.mdx +13 -0
- package/docs/articles/versioning-on-zuplo.mdx +89 -0
- package/docs/articles/waf-ddos-akamai.md +133 -0
- package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
- package/docs/articles/waf-ddos-fastly.mdx +251 -0
- package/docs/articles/waf-ddos.mdx +140 -0
- package/docs/articles/zuplo-waf.mdx +156 -0
- package/docs/ask.mdx +3 -0
- package/docs/cli/authentication.mdx +56 -0
- package/docs/cli/connectivity.mdx +38 -0
- package/docs/cli/create-zuplo-api.mdx +80 -0
- package/docs/cli/delete.mdx +79 -0
- package/docs/cli/deploy.mdx +156 -0
- package/docs/cli/deploy.partial.mdx +46 -0
- package/docs/cli/dev.mdx +115 -0
- package/docs/cli/docs.mdx +66 -0
- package/docs/cli/editor.mdx +50 -0
- package/docs/cli/global-options.mdx +19 -0
- package/docs/cli/init.mdx +74 -0
- package/docs/cli/link.mdx +74 -0
- package/docs/cli/list.mdx +55 -0
- package/docs/cli/mtls-certificate-create.mdx +94 -0
- package/docs/cli/mtls-certificate-delete.mdx +55 -0
- package/docs/cli/mtls-certificate-describe.mdx +55 -0
- package/docs/cli/mtls-certificate-disable.mdx +55 -0
- package/docs/cli/mtls-certificate-list.mdx +47 -0
- package/docs/cli/mtls-certificate-update.mdx +72 -0
- package/docs/cli/openapi-convert.mdx +111 -0
- package/docs/cli/openapi-merge.mdx +138 -0
- package/docs/cli/openapi-merge.partial.mdx +29 -0
- package/docs/cli/openapi-overlay.mdx +123 -0
- package/docs/cli/overview.mdx +78 -0
- package/docs/cli/project-create.mdx +43 -0
- package/docs/cli/source-migrate.mdx +18 -0
- package/docs/cli/source-upgrade.mdx +41 -0
- package/docs/cli/test.mdx +70 -0
- package/docs/cli/test.partial.mdx +7 -0
- package/docs/cli/tunnel-create.mdx +53 -0
- package/docs/cli/tunnel-create.partial.mdx +9 -0
- package/docs/cli/tunnel-delete.mdx +35 -0
- package/docs/cli/tunnel-delete.partial.mdx +9 -0
- package/docs/cli/tunnel-describe.mdx +45 -0
- package/docs/cli/tunnel-describe.partial.mdx +5 -0
- package/docs/cli/tunnel-list.mdx +35 -0
- package/docs/cli/tunnel-list.partial.mdx +9 -0
- package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
- package/docs/cli/tunnel-rotate-token.mdx +39 -0
- package/docs/cli/tunnel-services-describe.mdx +45 -0
- package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
- package/docs/cli/tunnel-services-update.mdx +48 -0
- package/docs/cli/variable-create.mdx +91 -0
- package/docs/cli/variable-create.partial.mdx +5 -0
- package/docs/cli/variable-update.mdx +75 -0
- package/docs/cli/variable-update.partial.mdx +5 -0
- package/docs/concepts/api-keys.md +146 -0
- package/docs/concepts/authentication.mdx +109 -0
- package/docs/concepts/how-zuplo-works.mdx +120 -0
- package/docs/concepts/project-structure.mdx +174 -0
- package/docs/concepts/rate-limiting.md +246 -0
- package/docs/concepts/request-lifecycle.mdx +56 -0
- package/docs/concepts/source-control-and-deployment.mdx +229 -0
- package/docs/conferences/conference-prize-terms.mdx +80 -0
- package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
- package/docs/dedicated/akamai/architecture.mdx +280 -0
- package/docs/dedicated/akamai/caching.mdx +212 -0
- package/docs/dedicated/akamai/cdn.mdx +156 -0
- package/docs/dedicated/architecture.mdx +208 -0
- package/docs/dedicated/custom-domains.mdx +31 -0
- package/docs/dedicated/federated-gateways.mdx +80 -0
- package/docs/dedicated/networking.mdx +69 -0
- package/docs/dedicated/overview.mdx +80 -0
- package/docs/dedicated/source-control.mdx +63 -0
- package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
- package/docs/dev-portal/introduction.mdx +65 -0
- package/docs/dev-portal/local-development.mdx +72 -0
- package/docs/dev-portal/migration.mdx +526 -0
- package/docs/dev-portal/node-modules.mdx +45 -0
- package/docs/dev-portal/updating.mdx +28 -0
- package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
- package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
- package/docs/dev-portal/zudoku/components/button.mdx +132 -0
- package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
- package/docs/dev-portal/zudoku/components/card.mdx +104 -0
- package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
- package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
- package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
- package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
- package/docs/dev-portal/zudoku/components/head.mdx +199 -0
- package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
- package/docs/dev-portal/zudoku/components/input.mdx +96 -0
- package/docs/dev-portal/zudoku/components/label.mdx +86 -0
- package/docs/dev-portal/zudoku/components/link.mdx +242 -0
- package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
- package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
- package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
- package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
- package/docs/dev-portal/zudoku/components/select.mdx +176 -0
- package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
- package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
- package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
- package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
- package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
- package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
- package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
- package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
- package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
- package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
- package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
- package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
- package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
- package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
- package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
- package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
- package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
- package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
- package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
- package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
- package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
- package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
- package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
- package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
- package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
- package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
- package/docs/dev-portal/zudoku/configuration/search.md +169 -0
- package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
- package/docs/dev-portal/zudoku/configuration/site.md +124 -0
- package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
- package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
- package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
- package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
- package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
- package/docs/dev-portal/zudoku/extending/events.md +124 -0
- package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
- package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
- package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
- package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
- package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
- package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
- package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
- package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
- package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
- package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
- package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
- package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
- package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
- package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
- package/docs/dev-portal/zudoku/plugins.md +5 -0
- package/docs/dev-portal/zudoku/writing.mdx +72 -0
- package/docs/errors/bad-request.mdx +39 -0
- package/docs/errors/build-error.mdx +45 -0
- package/docs/errors/fatal-project-error.mdx +39 -0
- package/docs/errors/gateway-timeout.mdx +33 -0
- package/docs/errors/get-head-body-error.mdx +41 -0
- package/docs/errors/main-mod-error.mdx +40 -0
- package/docs/errors/no-project-set.mdx +41 -0
- package/docs/errors/not-found.mdx +43 -0
- package/docs/errors/rate-limit-exceeded.mdx +31 -0
- package/docs/errors/schema-validation-failed.mdx +51 -0
- package/docs/errors/system-configuration-error.mdx +44 -0
- package/docs/errors/unauthorized.mdx +50 -0
- package/docs/errors/unknown-error.mdx +42 -0
- package/docs/errors.mdx +14 -0
- package/docs/guides/canary-routing-for-employees.mdx +385 -0
- package/docs/guides/geolocation-backend-routing.mdx +404 -0
- package/docs/guides/modify-openapi-paths.mdx +371 -0
- package/docs/guides/openapi-overlays.mdx +492 -0
- package/docs/guides/overview.mdx +12 -0
- package/docs/guides/user-based-backend-routing.mdx +437 -0
- package/docs/handlers/aws-lambda.mdx +201 -0
- package/docs/handlers/custom-handler.mdx +112 -0
- package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
- package/docs/handlers/mcp-server.mdx +730 -0
- package/docs/handlers/openapi.mdx +78 -0
- package/docs/handlers/redirect.mdx +115 -0
- package/docs/handlers/system-handlers.mdx +41 -0
- package/docs/handlers/url-forward.mdx +204 -0
- package/docs/handlers/url-rewrite.mdx +224 -0
- package/docs/handlers/websocket-handler.mdx +154 -0
- package/docs/home.mdx +6 -0
- package/docs/managed-edge/overview.md +78 -0
- package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
- package/docs/mcp-server/custom-tools.mdx +487 -0
- package/docs/mcp-server/graphql.mdx +241 -0
- package/docs/mcp-server/introduction.mdx +122 -0
- package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
- package/docs/mcp-server/prompts.mdx +283 -0
- package/docs/mcp-server/resources.mdx +288 -0
- package/docs/mcp-server/testing.mdx +53 -0
- package/docs/mcp-server/tools.mdx +306 -0
- package/docs/policies/_index.md +92 -0
- package/docs/policies/ab-test-inbound/intro.md +8 -0
- package/docs/policies/ab-test-inbound/policy.ts +14 -0
- package/docs/policies/ab-test-inbound/schema.json +27 -0
- package/docs/policies/ab-test-outbound/intro.md +8 -0
- package/docs/policies/ab-test-outbound/policy.ts +26 -0
- package/docs/policies/ab-test-outbound/schema.json +27 -0
- package/docs/policies/acl-policy-inbound/intro.md +5 -0
- package/docs/policies/acl-policy-inbound/policy.ts +32 -0
- package/docs/policies/acl-policy-inbound/schema.json +52 -0
- package/docs/policies/akamai-ai-firewall/schema.json +98 -0
- package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
- package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
- package/docs/policies/api-key-inbound/doc.md +77 -0
- package/docs/policies/api-key-inbound/intro.md +30 -0
- package/docs/policies/api-key-inbound/schema.json +84 -0
- package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
- package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
- package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
- package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
- package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
- package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
- package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
- package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
- package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
- package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
- package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
- package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
- package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
- package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
- package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
- package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
- package/docs/policies/audit-log-inbound/doc.md +78 -0
- package/docs/policies/audit-log-inbound/intro.md +10 -0
- package/docs/policies/audit-log-inbound/schema.json +81 -0
- package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
- package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/authzen-inbound/doc.md +24 -0
- package/docs/policies/authzen-inbound/intro.md +31 -0
- package/docs/policies/authzen-inbound/schema.json +126 -0
- package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
- package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
- package/docs/policies/basic-auth-inbound/intro.md +9 -0
- package/docs/policies/basic-auth-inbound/schema.json +99 -0
- package/docs/policies/bot-detection-inbound/intro.md +4 -0
- package/docs/policies/bot-detection-inbound/schema.json +56 -0
- package/docs/policies/brownout-inbound/doc.md +55 -0
- package/docs/policies/brownout-inbound/intro.md +12 -0
- package/docs/policies/brownout-inbound/schema.json +115 -0
- package/docs/policies/caching-inbound/doc.md +209 -0
- package/docs/policies/caching-inbound/intro.md +23 -0
- package/docs/policies/caching-inbound/schema.json +98 -0
- package/docs/policies/change-method-inbound/schema.json +56 -0
- package/docs/policies/clear-headers-inbound/schema.json +59 -0
- package/docs/policies/clear-headers-outbound/schema.json +59 -0
- package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
- package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
- package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
- package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
- package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
- package/docs/policies/composite-inbound/doc.md +69 -0
- package/docs/policies/composite-inbound/intro.md +15 -0
- package/docs/policies/composite-inbound/schema.json +59 -0
- package/docs/policies/composite-outbound/intro.md +6 -0
- package/docs/policies/composite-outbound/schema.json +59 -0
- package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
- package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
- package/docs/policies/custom-code-inbound/doc.md +267 -0
- package/docs/policies/custom-code-inbound/intro.md +2 -0
- package/docs/policies/custom-code-inbound/schema.json +48 -0
- package/docs/policies/custom-code-outbound/doc.md +235 -0
- package/docs/policies/custom-code-outbound/intro.md +2 -0
- package/docs/policies/custom-code-outbound/schema.json +43 -0
- package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
- package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
- package/docs/policies/geo-filter-inbound/doc.md +33 -0
- package/docs/policies/geo-filter-inbound/schema.json +108 -0
- package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
- package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
- package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
- package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
- package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
- package/docs/policies/hmac-auth-inbound/doc.md +30 -0
- package/docs/policies/hmac-auth-inbound/intro.md +10 -0
- package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
- package/docs/policies/hmac-auth-inbound/schema.json +53 -0
- package/docs/policies/http-deprecation-outbound/doc.md +73 -0
- package/docs/policies/http-deprecation-outbound/schema.json +83 -0
- package/docs/policies/ip-restriction-inbound/intro.md +8 -0
- package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
- package/docs/policies/ip-restriction-inbound/schema.json +58 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
- package/docs/policies/ldap-auth-inbound/schema.json +56 -0
- package/docs/policies/mock-api-inbound/schema.json +72 -0
- package/docs/policies/moesif-inbound/doc.md +44 -0
- package/docs/policies/moesif-inbound/intro.md +6 -0
- package/docs/policies/moesif-inbound/schema.json +68 -0
- package/docs/policies/monetization-inbound/doc.md +87 -0
- package/docs/policies/monetization-inbound/intro.md +6 -0
- package/docs/policies/monetization-inbound/schema.json +102 -0
- package/docs/policies/mtls-auth-inbound/intro.md +6 -0
- package/docs/policies/mtls-auth-inbound/schema.json +68 -0
- package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
- package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
- package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
- package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
- package/docs/policies/openfga-authz-inbound/doc.md +207 -0
- package/docs/policies/openfga-authz-inbound/intro.md +17 -0
- package/docs/policies/openfga-authz-inbound/schema.json +191 -0
- package/docs/policies/openmeter-inbound/doc.md +163 -0
- package/docs/policies/openmeter-inbound/intro.md +18 -0
- package/docs/policies/openmeter-inbound/schema.json +183 -0
- package/docs/policies/prompt-injection-outbound/doc.md +106 -0
- package/docs/policies/prompt-injection-outbound/intro.md +4 -0
- package/docs/policies/prompt-injection-outbound/schema.json +74 -0
- package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
- package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
- package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
- package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
- package/docs/policies/quota-inbound/doc.md +235 -0
- package/docs/policies/quota-inbound/intro.md +7 -0
- package/docs/policies/quota-inbound/schema.json +133 -0
- package/docs/policies/rate-limit-inbound/doc.md +78 -0
- package/docs/policies/rate-limit-inbound/intro.md +30 -0
- package/docs/policies/rate-limit-inbound/schema.json +134 -0
- package/docs/policies/rbac-policy-inbound/intro.md +3 -0
- package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
- package/docs/policies/rbac-policy-inbound/schema.json +52 -0
- package/docs/policies/readme-metrics-inbound/doc.md +1 -0
- package/docs/policies/readme-metrics-inbound/intro.md +3 -0
- package/docs/policies/readme-metrics-inbound/schema.json +84 -0
- package/docs/policies/remove-headers-inbound/schema.json +59 -0
- package/docs/policies/remove-headers-outbound/schema.json +59 -0
- package/docs/policies/remove-query-params-inbound/schema.json +59 -0
- package/docs/policies/replace-string-outbound/schema.json +69 -0
- package/docs/policies/request-size-limit-inbound/schema.json +60 -0
- package/docs/policies/request-validation-inbound/doc.md +72 -0
- package/docs/policies/request-validation-inbound/intro.md +24 -0
- package/docs/policies/request-validation-inbound/schema.json +98 -0
- package/docs/policies/require-origin-inbound/intro.md +12 -0
- package/docs/policies/require-origin-inbound/schema.json +65 -0
- package/docs/policies/secret-masking-outbound/doc.md +41 -0
- package/docs/policies/secret-masking-outbound/intro.md +13 -0
- package/docs/policies/secret-masking-outbound/schema.json +65 -0
- package/docs/policies/semantic-cache-inbound/doc.md +63 -0
- package/docs/policies/semantic-cache-inbound/intro.md +4 -0
- package/docs/policies/semantic-cache-inbound/schema.json +179 -0
- package/docs/policies/set-body-inbound/intro.md +7 -0
- package/docs/policies/set-body-inbound/schema.json +56 -0
- package/docs/policies/set-headers-inbound/doc.md +41 -0
- package/docs/policies/set-headers-inbound/intro.md +2 -0
- package/docs/policies/set-headers-inbound/schema.json +83 -0
- package/docs/policies/set-headers-outbound/schema.json +83 -0
- package/docs/policies/set-query-params-inbound/schema.json +83 -0
- package/docs/policies/set-status-outbound/schema.json +62 -0
- package/docs/policies/sleep-inbound/schema.json +56 -0
- package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
- package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
- package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
- package/docs/policies/transform-body-inbound/intro.md +8 -0
- package/docs/policies/transform-body-inbound/policy.ts +16 -0
- package/docs/policies/transform-body-inbound/schema.json +27 -0
- package/docs/policies/transform-body-outbound/intro.md +8 -0
- package/docs/policies/transform-body-outbound/policy.ts +19 -0
- package/docs/policies/transform-body-outbound/schema.json +27 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
- package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
- package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
- package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
- package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
- package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
- package/docs/policies/xml-to-json-outbound/doc.md +71 -0
- package/docs/policies/xml-to-json-outbound/intro.md +4 -0
- package/docs/policies/xml-to-json-outbound/schema.json +117 -0
- package/docs/programmable-api/audit-log.mdx +74 -0
- package/docs/programmable-api/background-dispatcher.mdx +124 -0
- package/docs/programmable-api/background-loader.mdx +104 -0
- package/docs/programmable-api/cache.mdx +186 -0
- package/docs/programmable-api/compatibility-dates.mdx +201 -0
- package/docs/programmable-api/console-logging.mdx +48 -0
- package/docs/programmable-api/context-data.mdx +127 -0
- package/docs/programmable-api/custom-cors-policy.mdx +64 -0
- package/docs/programmable-api/environment.mdx +328 -0
- package/docs/programmable-api/hooks.mdx +569 -0
- package/docs/programmable-api/http-problems.mdx +385 -0
- package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
- package/docs/programmable-api/logger.mdx +223 -0
- package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
- package/docs/programmable-api/node-modules.mdx +67 -0
- package/docs/programmable-api/not-found-handler.mdx +47 -0
- package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
- package/docs/programmable-api/overview.mdx +213 -0
- package/docs/programmable-api/problem-response-formatter.mdx +183 -0
- package/docs/programmable-api/request-user.mdx +289 -0
- package/docs/programmable-api/reusing-code.mdx +26 -0
- package/docs/programmable-api/route-raw.mdx +55 -0
- package/docs/programmable-api/runtime-behaviors.mdx +25 -0
- package/docs/programmable-api/runtime-errors.mdx +246 -0
- package/docs/programmable-api/runtime-extensions.mdx +340 -0
- package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
- package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
- package/docs/programmable-api/web-crypto-apis.mdx +219 -0
- package/docs/programmable-api/web-standard-apis.mdx +109 -0
- package/docs/programmable-api/zone-cache.mdx +131 -0
- package/docs/programmable-api/zp-body-removed.mdx +32 -0
- package/docs/programmable-api/zuplo-context.mdx +414 -0
- package/docs/programmable-api/zuplo-id-token.mdx +90 -0
- package/docs/programmable-api/zuplo-json.mdx +91 -0
- package/docs/programmable-api/zuplo-request.mdx +200 -0
- package/docs/sample-apis.mdx +78 -0
- package/docs/self-hosted/overview.md +60 -0
- package/package.json +6 -5
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 5 - Dynamic Rate Limiting
|
|
3
|
+
sidebar_label: "5 - Dynamic Rate Limiting"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Fortune favors the bold. In this bonus getting started guide - we'll show you
|
|
7
|
+
how to add dynamic rate limiting to your API.
|
|
8
|
+
|
|
9
|
+
To follow this tutorial you'll need to have completed
|
|
10
|
+
[Step 1](./step-1-setup-basic-gateway.mdx) for a Zuplo project,
|
|
11
|
+
[Step 2](./step-2-add-rate-limiting.mdx) to add rate limiting to that route, and
|
|
12
|
+
[Step 3](./step-3-add-api-key-auth.mdx) to add API key authentication to that
|
|
13
|
+
same route.
|
|
14
|
+
|
|
15
|
+
:::info{title="What's Dynamic Rate Limiting?"}
|
|
16
|
+
|
|
17
|
+
Traditionally, rate limits are static and the same for everyone. This approach
|
|
18
|
+
doesn't let you tailor your rate limiting to your API user - you might want to
|
|
19
|
+
offer higher rate limits for customers that pay more. Dynamic rate limiting
|
|
20
|
+
allows you to determine an appropriate rate limit at request time.
|
|
21
|
+
|
|
22
|
+
:::
|
|
23
|
+
|
|
24
|
+
Let's get started.
|
|
25
|
+
|
|
26
|
+
<Stepper>
|
|
27
|
+
|
|
28
|
+
1. Add Consumer Metadata
|
|
29
|
+
|
|
30
|
+
Let's make our rate-limiting policy more dynamic, based on properties of the
|
|
31
|
+
customer. [Create a new consumer](./step-3-add-api-key-auth.mdx) (Services ->
|
|
32
|
+
API Key Service -> Configure -> Create Consumer), and in the Metadata field,
|
|
33
|
+
set the following:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"customerType": "free"
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Update the metadata of your other API Key consumer (3-dot menu -> Edit) from
|
|
42
|
+
Step 3 to
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"customerType": "premium"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+

|
|
51
|
+
|
|
52
|
+
Now that there are users with different `customerType`, this information can
|
|
53
|
+
be used to rate limit them differently.
|
|
54
|
+
|
|
55
|
+
1. Add a Custom Code Module
|
|
56
|
+
|
|
57
|
+
Navigate back to the Code tab. Now add a new module to the files section by
|
|
58
|
+
clicking the `+` next to the **modules** folder and choose new empty module.
|
|
59
|
+
Name the module `rate-limit.ts`.
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
:::info{title="What's a Module?"}
|
|
64
|
+
|
|
65
|
+
Modules are TypeScript functions that you can execute within Zuplo. They're
|
|
66
|
+
typically used to add custom code within the request/response pipeline (ex.
|
|
67
|
+
custom policies or request handlers). You can even perform network requests
|
|
68
|
+
and use libraries within these modules.
|
|
69
|
+
|
|
70
|
+
:::
|
|
71
|
+
|
|
72
|
+
Add the following code to your module.
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { ZuploContext, ZuploRequest } from "@zuplo/runtime";
|
|
76
|
+
|
|
77
|
+
export function rateLimit(request: ZuploRequest, context: ZuploContext) {
|
|
78
|
+
const user = request.user;
|
|
79
|
+
|
|
80
|
+
// premium customers get 1000 requests per minute
|
|
81
|
+
if (user.data.customerType === "premium") {
|
|
82
|
+
return {
|
|
83
|
+
key: user.sub,
|
|
84
|
+
requestsAllowed: 1000,
|
|
85
|
+
timeWindowMinutes: 1,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// free customers get 5 requests per minute
|
|
90
|
+
if (user.data.customerType === "free") {
|
|
91
|
+
return {
|
|
92
|
+
key: user.sub,
|
|
93
|
+
requestsAllowed: 5,
|
|
94
|
+
timeWindowMinutes: 1,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// everybody else gets 30 requests per minute
|
|
99
|
+
return {
|
|
100
|
+
key: user.sub,
|
|
101
|
+
requestsAllowed: 30,
|
|
102
|
+
timeWindowMinutes: 1,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
1. Update your Policy
|
|
108
|
+
|
|
109
|
+
Now we'll reconfigure the rate-limiting policy to wire up our custom
|
|
110
|
+
function. Find the policy in the **Route Designer** and click **Edit**.
|
|
111
|
+
|
|
112
|
+

|
|
113
|
+
|
|
114
|
+
Update the configuration to
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"export": "RateLimitInboundPolicy",
|
|
119
|
+
"module": "$import(@zuplo/runtime)",
|
|
120
|
+
"options": {
|
|
121
|
+
"rateLimitBy": "function",
|
|
122
|
+
"requestsAllowed": 2,
|
|
123
|
+
"timeWindowMinutes": 1,
|
|
124
|
+
"identifier": {
|
|
125
|
+
"export": "rateLimit",
|
|
126
|
+
"module": "$import(./modules/rate-limit)"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
By changing the `rateLimitBy` to `function` you are indicating the rate limit
|
|
133
|
+
will be determined by a module at runtime. The `identifier` property is used
|
|
134
|
+
to indicate the module and function to run. Make sure to save once you've
|
|
135
|
+
made your changes.
|
|
136
|
+
|
|
137
|
+
1. Test your Policy
|
|
138
|
+
|
|
139
|
+
Using the Test modal, you can try your dynamic rate limiting. You can grab
|
|
140
|
+
the key for each consumer back in the Services tab where you created them.
|
|
141
|
+
Like [Step 3](./step-3-add-api-key-auth.mdx), you can fill in the keys into
|
|
142
|
+
the `Authorization` header and start making calls until you hit your rate
|
|
143
|
+
limit. Try out the other key and observe the difference in rate limits.
|
|
144
|
+
|
|
145
|
+
</Stepper>
|
|
146
|
+
|
|
147
|
+
## Wrapping up
|
|
148
|
+
|
|
149
|
+
Congratulations - you've just successfully built an API that's:
|
|
150
|
+
|
|
151
|
+
- Protected by API key Authentication
|
|
152
|
+
- Dynamically Rate Limited
|
|
153
|
+
- Deployed to the Edge for superior performance
|
|
154
|
+
- and fully documented via your Developer Portal
|
|
155
|
+
|
|
156
|
+
This is an API experience most companies dream of, and you've just built it in
|
|
157
|
+
less than an hour.
|
|
158
|
+
|
|
159
|
+
### Next Steps
|
|
160
|
+
|
|
161
|
+
- Continue exploring our docs to learn about customizing your
|
|
162
|
+
[Developer Portal](../dev-portal/introduction.mdx), or explore our various
|
|
163
|
+
[Integrations](https://zuplo.com/integrations)
|
|
164
|
+
- [Grab time](https://zuplo.com/meeting) with the Zuplo team to have your
|
|
165
|
+
questions answered
|
|
166
|
+
- Start generating revenue from your new API with our
|
|
167
|
+
[Monetization tutorial](./monetization/index.mdx)
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Support
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
This document explains the Zuplo support plans, communication methods,
|
|
6
|
+
severities, and response times provided by Zuplo support. The following features
|
|
7
|
+
are provided with every support plan:
|
|
8
|
+
|
|
9
|
+
- Answer questions concerning usage issues related to Zuplo platform-specific
|
|
10
|
+
features, options, and configurations.
|
|
11
|
+
- Provide initial and high-level suggestions regarding the appropriate usage,
|
|
12
|
+
features, or solution configurations for the particular type of reporting,
|
|
13
|
+
analysis, or functionality.
|
|
14
|
+
- Isolate, document, and find alternative solutions for reported defects.
|
|
15
|
+
- Work with Zuplo Operations, Product, Software Development, and QA staff to
|
|
16
|
+
submit change or enhancement requests, and provide fixes for the Zuplo
|
|
17
|
+
platform as necessary.
|
|
18
|
+
- Address your concerns with online or printed documentation, providing
|
|
19
|
+
additional examples or explanations for concepts requiring clarification.
|
|
20
|
+
- Access to online release notes for updates.
|
|
21
|
+
- Access to Zuplo's online library of support webinars and knowledge base.
|
|
22
|
+
- Access to Zuplo's customer community forums to collaborate with fellow Zuplo
|
|
23
|
+
customers.
|
|
24
|
+
|
|
25
|
+
## Support Plans
|
|
26
|
+
|
|
27
|
+
Zuplo offers the following support plans:
|
|
28
|
+
|
|
29
|
+
| Support Offer | Available to |
|
|
30
|
+
| ----------------- | ------------------------------------------------------------------------------ |
|
|
31
|
+
| Community Support | All customers |
|
|
32
|
+
| Standard Support | Customers with any paid subscription plan or those in the initial trial period |
|
|
33
|
+
| Premium Support | Customers who have purchased support as part of an enterprise plan |
|
|
34
|
+
|
|
35
|
+
### Community support
|
|
36
|
+
|
|
37
|
+
Customers with Zuplo's free subscription plan can seek support through the Zuplo
|
|
38
|
+
Community. Response times may vary and aren't guaranteed.
|
|
39
|
+
|
|
40
|
+
### Standard support
|
|
41
|
+
|
|
42
|
+
Customers with a paid Zuplo subscription plan receive standard support which
|
|
43
|
+
offers access to the following channels:
|
|
44
|
+
|
|
45
|
+
- Zuplo Community
|
|
46
|
+
- Zuplo Email Support (best effort response times)
|
|
47
|
+
|
|
48
|
+
### Premium support
|
|
49
|
+
|
|
50
|
+
Customers on a Zuplo enterprise plan can choose from premium support offerings
|
|
51
|
+
that can optionally include specific SLAs for response time as well as
|
|
52
|
+
additional means of contact such as a private Slack channel.
|
|
53
|
+
|
|
54
|
+
As part of premium support, Zuplo can also offer:
|
|
55
|
+
|
|
56
|
+
- Assistance migrating or onboarding to Zuplo
|
|
57
|
+
- Guidance implementing custom policies
|
|
58
|
+
- Advice on best practices for designing your Zuplo API
|
|
59
|
+
- Troubleshooting
|
|
60
|
+
|
|
61
|
+
Contact sales to explore adding these options to your agreement.
|
|
62
|
+
|
|
63
|
+
## Contact Methods
|
|
64
|
+
|
|
65
|
+
Zuplo offers multiple methods to contact support detailed below.
|
|
66
|
+
|
|
67
|
+
The following table describes the different contact methods available for each
|
|
68
|
+
plan:
|
|
69
|
+
|
|
70
|
+
| Support Feature | Community | Standard | Premium |
|
|
71
|
+
| ----------------------------- | --------- | -------- | --------- |
|
|
72
|
+
| Community Support | Yes | Yes | Yes |
|
|
73
|
+
| Email Support | No | Yes | Yes |
|
|
74
|
+
| Emergency Phone Support | No | No | Available |
|
|
75
|
+
| Private Discord/Slack Channel | No | No | Available |
|
|
76
|
+
|
|
77
|
+
For customers with an enterprise contract, your sales contract will indicate the
|
|
78
|
+
specifics of your premium support offering.
|
|
79
|
+
|
|
80
|
+
### Community Support
|
|
81
|
+
|
|
82
|
+
Every customer may join the Zuplo Discord forum and chat with other customers or
|
|
83
|
+
Zuplo employees.
|
|
84
|
+
|
|
85
|
+
### Email Support
|
|
86
|
+
|
|
87
|
+
For customers with email support, you can contact us at `support@zuplo.com`.
|
|
88
|
+
Tickets will be responded to as quickly as possible and prioritized based on
|
|
89
|
+
your support offering.
|
|
90
|
+
|
|
91
|
+
### Private Discord/Slack Channel
|
|
92
|
+
|
|
93
|
+
Enterprise support contracts can optionally chat directly with the Zuplo team in
|
|
94
|
+
a private Discord or Slack channel. These channels are useful for posting
|
|
95
|
+
feature requests, asking questions, or general troubleshooting. Contact sales
|
|
96
|
+
for more info.
|
|
97
|
+
|
|
98
|
+
:::caution
|
|
99
|
+
|
|
100
|
+
Private channels shouldn't be used for urgent/business critical support requests
|
|
101
|
+
as the team may not be immediately notified. For urgent requests use phone
|
|
102
|
+
support.
|
|
103
|
+
|
|
104
|
+
:::
|
|
105
|
+
|
|
106
|
+
### Emergency Phone Support
|
|
107
|
+
|
|
108
|
+
Customers with emergency phone support can call +1 833-681-6018 to open an
|
|
109
|
+
emergency support ticket. After dialing the number, enter the five-digit
|
|
110
|
+
enterprise support code that has been provided to you.
|
|
111
|
+
|
|
112
|
+
:::warning
|
|
113
|
+
|
|
114
|
+
Calling this number will alert our on-call team at any hour. Please call for
|
|
115
|
+
urgent and business-critical issues only.
|
|
116
|
+
|
|
117
|
+
:::
|
|
118
|
+
|
|
119
|
+
We will open a ticket and our on-call support team will reach out to you within
|
|
120
|
+
a few minutes.
|
|
121
|
+
|
|
122
|
+
We also suggest you sign in to Discord so we can start a real-time chat.
|
|
123
|
+
|
|
124
|
+
## Response Times
|
|
125
|
+
|
|
126
|
+
For premium support plans, Zuplo offers SLAs on response times based on the
|
|
127
|
+
severity of issues and the level of the plan.
|
|
128
|
+
|
|
129
|
+
Zuplo uses four categories to define a technical issue:
|
|
130
|
+
|
|
131
|
+
| Severity | | Premium | Premium Plus | Premium Custom |
|
|
132
|
+
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------ | ---------------- |
|
|
133
|
+
| Level 0 | Zuplo's services are down resulting in a critical and immediate impact on the Customer's production environment with a major business impact. | 2 business hours | 2 hour (24x7x365) | Custom agreement |
|
|
134
|
+
| Level 1 | Zuplo's services are impaired resulting in a severe impact on the Customer's production environment with a partial business impact. | 4 business hours | 4 hours (24x7x365) | Custom agreement |
|
|
135
|
+
| Level 2 | Zuplo's services are operational but have minor functional issues resulting in a partial impact on the Customer's production or staging environment with a low impact business impact. | 8 business hours | 4 business hours | Custom agreement |
|
|
136
|
+
| Level 3 | Issues or questions related to development and testing. | 16 business hours | 8 business hours | Custom agreement |
|
|
137
|
+
|
|
138
|
+
**Business Hours** means 8:00 AM Eastern Time (UTC−05:00) to 8:00 PM Eastern
|
|
139
|
+
Time (UTC−05:00), Monday through Friday, excluding local, state, and federal
|
|
140
|
+
holidays.
|
|
141
|
+
|
|
142
|
+
**Response Time** means the time required for a support engineer to respond
|
|
143
|
+
confirming receipt of the support notification and informing the customer if
|
|
144
|
+
additional information is needed to proceed with the analysis.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Native GitOps: Better Than Terraform"
|
|
3
|
+
sidebar_label: "GitOps vs Terraform"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- vale Vale.Spelling["declaratively"] = NO -->
|
|
7
|
+
|
|
8
|
+
Unlike legacy API management solutions that rely on imperative APIs and require
|
|
9
|
+
tools like Terraform for infrastructure as code, Zuplo takes a fundamentally
|
|
10
|
+
different approach. Zuplo was built from day one with GitOps at its core, making
|
|
11
|
+
Terraform unnecessary and redundant.
|
|
12
|
+
|
|
13
|
+
## Configuration as Code by Design
|
|
14
|
+
|
|
15
|
+
Traditional API management products like Kong, Azure API Management, and others
|
|
16
|
+
were designed with imperative APIs as their primary interface. These systems
|
|
17
|
+
require you to:
|
|
18
|
+
|
|
19
|
+
- Make API calls to create resources
|
|
20
|
+
- Maintain state files to track what exists
|
|
21
|
+
- Use tools like Terraform to bridge the gap between code and infrastructure
|
|
22
|
+
- Handle complex state reconciliation and drift detection
|
|
23
|
+
|
|
24
|
+
Zuplo eliminates this complexity entirely. Every aspect of your API gateway
|
|
25
|
+
configuration is stored as human-readable code and configuration files in your
|
|
26
|
+
repository:
|
|
27
|
+
|
|
28
|
+
- **Routes** are defined in `config/routes.oas.json`
|
|
29
|
+
- **Policies** are configured declaratively
|
|
30
|
+
- **Custom code** lives alongside your configuration
|
|
31
|
+
|
|
32
|
+
## True Atomic Deployments
|
|
33
|
+
|
|
34
|
+
When you deploy with Zuplo—whether through `zuplo deploy` or our source control
|
|
35
|
+
integrations—you get true atomic deployments:
|
|
36
|
+
|
|
37
|
+
:::tip
|
|
38
|
+
|
|
39
|
+
Every deployment either succeeds completely or fails entirely. There are no
|
|
40
|
+
partial states, no drift, and no manual cleanup required.
|
|
41
|
+
|
|
42
|
+
:::
|
|
43
|
+
|
|
44
|
+
This atomic deployment model means:
|
|
45
|
+
|
|
46
|
+
- **No half-deployed states**: Your API gateway is always in a known, consistent
|
|
47
|
+
state
|
|
48
|
+
- **Simple rollbacks**: Just revert your Git commit and redeploy
|
|
49
|
+
- **No state management**: Git is your single source of truth
|
|
50
|
+
- **No reconciliation**: What's in your repository is what's deployed
|
|
51
|
+
|
|
52
|
+
## Version Control Built In
|
|
53
|
+
|
|
54
|
+
Since all configuration is code, you automatically get:
|
|
55
|
+
|
|
56
|
+
- **Full version history** through Git
|
|
57
|
+
- **Code review workflows** through pull requests
|
|
58
|
+
- **Branching strategies** that match your development process
|
|
59
|
+
- **Audit trails** of who changed what and when
|
|
60
|
+
- **Easy rollbacks** by reverting commits
|
|
61
|
+
|
|
62
|
+
## Why Terraform Would Add Complexity
|
|
63
|
+
|
|
64
|
+
If Zuplo offered a Terraform provider, it would simply be a wrapper around our
|
|
65
|
+
existing GitOps functionality. This would:
|
|
66
|
+
|
|
67
|
+
- Add an unnecessary abstraction layer
|
|
68
|
+
- Introduce state management complexity
|
|
69
|
+
- Create potential for drift between Terraform state and actual configuration
|
|
70
|
+
- Require learning and maintaining additional tooling
|
|
71
|
+
- Provide no additional capabilities beyond what Zuplo already offers
|
|
72
|
+
|
|
73
|
+
## The GitOps Advantage
|
|
74
|
+
|
|
75
|
+
Zuplo's native GitOps approach provides significant advantages:
|
|
76
|
+
|
|
77
|
+
1. **Simplicity**: One system to learn, not two
|
|
78
|
+
2. **Reliability**: No state file corruption or drift issues
|
|
79
|
+
3. **Speed**: Direct deployments without intermediate tooling
|
|
80
|
+
4. **Transparency**: Configuration is exactly what you see in your repository
|
|
81
|
+
5. **Integration**: Works seamlessly with your existing Git workflows
|
|
82
|
+
|
|
83
|
+
## Getting Started with Zuplo's GitOps
|
|
84
|
+
|
|
85
|
+
To experience the simplicity of Zuplo's GitOps approach:
|
|
86
|
+
|
|
87
|
+
1. Create a new Zuplo project
|
|
88
|
+
2. Clone the repository
|
|
89
|
+
3. Make changes to your configuration files
|
|
90
|
+
4. Commit and push to deploy
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Clone your Zuplo project
|
|
94
|
+
git clone https://github.com/your-org/your-zuplo-project.git
|
|
95
|
+
|
|
96
|
+
# Make changes to your API configuration
|
|
97
|
+
# Edit config/routes.oas.json, add policies, etc.
|
|
98
|
+
|
|
99
|
+
# Deploy your changes
|
|
100
|
+
git add .
|
|
101
|
+
git commit -m "Add rate limiting policy"
|
|
102
|
+
git push origin main
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Your changes deploy automatically through our GitHub integration, or you can use
|
|
106
|
+
`zuplo deploy` for manual deployments.
|
|
107
|
+
|
|
108
|
+
## Conclusion
|
|
109
|
+
|
|
110
|
+
Zuplo's native GitOps approach represents a fundamental advancement over legacy
|
|
111
|
+
API management solutions. By eliminating the need for imperative APIs and
|
|
112
|
+
external infrastructure-as-code tools, Zuplo provides a simpler, more reliable,
|
|
113
|
+
and more developer-friendly experience. Terraform isn't missing from Zuplo—it's
|
|
114
|
+
simply not needed.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Testing GraphQL Queries
|
|
3
|
+
description:
|
|
4
|
+
Learn how to test GraphQL API routes using the Zuplo Portal and third-party
|
|
5
|
+
tools like Postman.
|
|
6
|
+
tags:
|
|
7
|
+
- testing
|
|
8
|
+
- dev-portal
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
If you write a route that proxies a GraphQL API, you can test your route using
|
|
12
|
+
the following methods:
|
|
13
|
+
|
|
14
|
+
## 1/ Using the Zuplo Portal
|
|
15
|
+
|
|
16
|
+
The fastest way to test your GraphQL endpoint using the Zuplo Portal is via the
|
|
17
|
+
API Test Console.
|
|
18
|
+
|
|
19
|
+
1. Navigate to **Code** and open the API test console, then create a new "Code
|
|
20
|
+
Test"
|
|
21
|
+
2. Fill in the method, path, and headers you need. Leave the `content-type` as
|
|
22
|
+
`application/json`
|
|
23
|
+
3. Convert your GraphQL Query and GraphQL Variables into a JSON body. You can
|
|
24
|
+
use [this tool](https://datafetcher.com/graphql-json-body-converter) to do so
|
|
25
|
+
easily
|
|
26
|
+
4. Paste the JSON Body into the test's Body field and click the **Test** button
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
## 2/ Using a Third-Party Request Tool
|
|
31
|
+
|
|
32
|
+
Various third-party tools have tighter integrations to make GraphQL requests.
|
|
33
|
+
You can check out this
|
|
34
|
+
[article from Postman](https://learning.postman.com/docs/sending-requests/graphql/graphql/#using-json-in-the-request-body).
|