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,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Source Control & Deployments
|
|
3
|
+
sidebar_label: Overview
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Zuplo integrates with your Git repository for both development and deployments.
|
|
7
|
+
Understanding how these work together helps you choose the right setup for your
|
|
8
|
+
team.
|
|
9
|
+
|
|
10
|
+
## Two Capabilities, One Integration
|
|
11
|
+
|
|
12
|
+
**Source control integration** gives you push/pull access between the Zuplo
|
|
13
|
+
portal and your repository. Edit in the portal, commit to Git. Pull changes from
|
|
14
|
+
teammates. This works with GitHub, GitLab, Bitbucket, and Azure DevOps.
|
|
15
|
+
|
|
16
|
+
**Automatic deployments** trigger a deploy every time you push to your
|
|
17
|
+
repository. Push to `main` and your production environment updates. Push to a
|
|
18
|
+
feature branch and get an isolated preview environment. This is currently
|
|
19
|
+
GitHub-only.
|
|
20
|
+
|
|
21
|
+
## Choosing Your Setup
|
|
22
|
+
|
|
23
|
+
### GitHub (Recommended)
|
|
24
|
+
|
|
25
|
+
GitHub provides the most complete experience:
|
|
26
|
+
|
|
27
|
+
- **Source control** — Push and pull between portal and repository
|
|
28
|
+
- **Automatic deployments** — Every push deploys automatically
|
|
29
|
+
- **Branch environments** — Each branch gets its own environment
|
|
30
|
+
- **Deployment status** — See deploy results directly in GitHub
|
|
31
|
+
|
|
32
|
+
For most teams, the default GitHub integration handles everything. You can add
|
|
33
|
+
[deployment testing](./github-deployment-testing.mdx) to run your test suite
|
|
34
|
+
after each deploy without any custom CI/CD.
|
|
35
|
+
|
|
36
|
+
If you need approval gates, complex test pipelines, or tag-based releases, see
|
|
37
|
+
[Custom GitHub Actions](./custom-ci-cd-github.mdx).
|
|
38
|
+
|
|
39
|
+
**[Set up GitHub →](./source-control-setup-github.mdx)**
|
|
40
|
+
|
|
41
|
+
### GitLab, Bitbucket, Azure DevOps (Enterprise)
|
|
42
|
+
|
|
43
|
+
These providers offer source control integration on
|
|
44
|
+
[enterprise plans](https://zuplo.com/pricing):
|
|
45
|
+
|
|
46
|
+
- **Source control** — Push and pull between portal and repository
|
|
47
|
+
- **No automatic deployments** — Use CI/CD pipelines to deploy
|
|
48
|
+
|
|
49
|
+
Since these providers don't have automatic deployments, you'll use their native
|
|
50
|
+
CI/CD systems to deploy via the Zuplo CLI.
|
|
51
|
+
|
|
52
|
+
- **[GitLab setup](./source-control-setup-gitlab.mdx)** and
|
|
53
|
+
[CI/CD pipelines](./custom-ci-cd-gitlab.mdx)
|
|
54
|
+
- **[Bitbucket setup](./source-control-setup-bitbucket.mdx)** and
|
|
55
|
+
[CI/CD pipelines](./custom-ci-cd-bitbucket.mdx)
|
|
56
|
+
- **[Azure DevOps setup](./source-control-setup-azure.mdx)** and
|
|
57
|
+
[CI/CD pipelines](./custom-ci-cd-azure.mdx)
|
|
58
|
+
|
|
59
|
+
### Other CI/CD Providers
|
|
60
|
+
|
|
61
|
+
If your code lives elsewhere but you want to use a specific CI/CD system:
|
|
62
|
+
|
|
63
|
+
- **[CircleCI](./custom-ci-cd-circleci.mdx)** — Flexible workflows with approval
|
|
64
|
+
jobs
|
|
65
|
+
|
|
66
|
+
## How Branch-Based Deployments Work
|
|
67
|
+
|
|
68
|
+
Every Git branch maps to a Zuplo environment. Push to `main` and deploy to your
|
|
69
|
+
main environment. Push to `feature-auth` and get a `feature-auth` environment
|
|
70
|
+
automatically.
|
|
71
|
+
|
|
72
|
+
This enables powerful workflows like PR preview environments where reviewers can
|
|
73
|
+
test changes against a live API before merging.
|
|
74
|
+
|
|
75
|
+
Learn more: [Branch-Based Deployments](./branch-based-deployments.mdx)
|
|
76
|
+
|
|
77
|
+
## Managing Your Project
|
|
78
|
+
|
|
79
|
+
- [Rename or Move Project](./rename-or-move-project.mdx) — How to handle
|
|
80
|
+
repository changes
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 1 - Setup a Basic Gateway
|
|
3
|
+
sidebar_label: "1 - Setup Your Gateway"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<QuickstartPicker
|
|
7
|
+
mode="local"
|
|
8
|
+
alternateLink="/articles/step-1-setup-basic-gateway"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
In this tutorial we'll set up a simple gateway using Zuplo's local development.
|
|
12
|
+
We'll use a simple origin API at [echo.zuplo.io](https://echo.zuplo.io). In
|
|
13
|
+
later steps, we'll set up a Zuplo project and deploy it to the cloud.
|
|
14
|
+
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
- [Node.js](https://nodejs.org/en/download) 20.0.0 or higher
|
|
18
|
+
|
|
19
|
+
## Getting Started
|
|
20
|
+
|
|
21
|
+
### Create a new project from scratch
|
|
22
|
+
|
|
23
|
+
<Stepper>
|
|
24
|
+
|
|
25
|
+
1. Create a new project using
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx create-zuplo-api@latest --empty
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The [create-zuplo-api](../cli/create-zuplo-api.mdx) tool supports creating
|
|
32
|
+
projects from templates. This tutorial creates an empty project, but you can
|
|
33
|
+
use other [templates](https://zuplo.com/examples) by specifying the
|
|
34
|
+
`--example` flag.
|
|
35
|
+
|
|
36
|
+
1. Start your local gateway
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd <your-new-project-directory>
|
|
40
|
+
npm run dev
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
1. Use the [local Route Designer](./local-development-routes-designer.mdx) to
|
|
44
|
+
create your first route. You can open the Route Designer by clicking the link
|
|
45
|
+
in the terminal after you run `npm run dev`.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
Started local development setup
|
|
49
|
+
Ctrl+C to exit
|
|
50
|
+
|
|
51
|
+
🚀 Zuplo Gateway: http://localhost:9000
|
|
52
|
+
📘 Route Designer: http://localhost:9100 # <-- Your local route designer
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
1. Add your first **Route**
|
|
56
|
+
|
|
57
|
+
Inside of the Route Designer, click the **Add Route** button.
|
|
58
|
+
|
|
59
|
+

|
|
60
|
+
|
|
61
|
+
Your API's first route will appear, with many options. First we'll configure
|
|
62
|
+
the route to match specific incoming requests to the gateway:
|
|
63
|
+
- **Summary**: Enter a summary, for example `Example Endpoint`.
|
|
64
|
+
- **Method**: Leave as `GET`.
|
|
65
|
+
- **Path**: The path will be pre-configured as `path-1`.
|
|
66
|
+
- **Operation ID**: Pre-configured based on the path summary.
|
|
67
|
+
|
|
68
|
+
Then we'll specify how the route will invoke the backend origin API, using a
|
|
69
|
+
forward handler:
|
|
70
|
+
- **Request Handler**: We'll use the
|
|
71
|
+
[URL Forward Handler](../handlers/url-forward.mdx) which proxies requests
|
|
72
|
+
by "Forwarding to" the same path on specified URL. In this case, enter
|
|
73
|
+
`https://echo.zuplo.io`
|
|
74
|
+
|
|
75
|
+

|
|
76
|
+
|
|
77
|
+
**Save your changes** - click **Save** in the bottom left, or press **CMD+S**
|
|
78
|
+
|
|
79
|
+
1. **Test** your route
|
|
80
|
+
|
|
81
|
+
You can test this route by clicking the **Test Route** button in the route
|
|
82
|
+
designer.
|
|
83
|
+
|
|
84
|
+

|
|
85
|
+
|
|
86
|
+
Alternatively, you can test the route in your favorite HTTP Client (for
|
|
87
|
+
example Postman, HTTPie, curl, etc).
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
curl http://localhost:9000/0
|
|
91
|
+
|
|
92
|
+
{
|
|
93
|
+
"url": "https://echo.zuplo.io/path-1",
|
|
94
|
+
"method": "GET",
|
|
95
|
+
"query": {},
|
|
96
|
+
"headers": {
|
|
97
|
+
"accept-encoding": "gzip, br",
|
|
98
|
+
"connection": "Keep-Alive",
|
|
99
|
+
"host": "echo.zuplo.io",
|
|
100
|
+
"true-client-ip": "2a06:98c0:3600::103",
|
|
101
|
+
"x-forwarded-proto": "https",
|
|
102
|
+
"x-real-ip": "2a06:98c0:3600::103",
|
|
103
|
+
"zp-rid": "b9822e0f-af32-4002-a6ba-3a899c7f2669",
|
|
104
|
+
"zuplo-request-id": "b9822e0f-af32-4002-a6ba-3a899c7f2669"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
1. Now that you have a simple gateway running, we can deploy it to the cloud
|
|
110
|
+
using the [Zuplo CLI](../cli/overview.mdx). When you run this command, you
|
|
111
|
+
will be prompted to login if you haven't already.
|
|
112
|
+
|
|
113
|
+
If you haven't already created a Zuplo project, you will be prompted to do
|
|
114
|
+
so. If you do have a project, you can choose to deploy to it or you can
|
|
115
|
+
specify the `--project` flag to specify the project you want to deploy to.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx zuplo deploy
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
You should see output similar to this:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
? You don't have any projects configured for this account.
|
|
125
|
+
Enter the name of the new project: my-tutorial
|
|
126
|
+
✔ Project my-tutorial created successfully.
|
|
127
|
+
✔ Deployed to https://my-tutorial-main-11686c3.zuplo.app (93/150)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Your project is now deployed to the cloud and you can access it at the URL
|
|
131
|
+
provided in the output.
|
|
132
|
+
|
|
133
|
+
</Stepper>
|
|
134
|
+
|
|
135
|
+
**NEXT** Try
|
|
136
|
+
[Step 2 - Add Rate Limiting to your API](./step-2-add-rate-limiting-local.mdx).
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 1 - Setup a Basic Gateway
|
|
3
|
+
sidebar_label: "1 - Setup Your Gateway"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<QuickstartPicker
|
|
7
|
+
mode="portal"
|
|
8
|
+
alternateLink="/articles/step-1-setup-basic-gateway-local"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
In this tutorial we'll set up a simple gateway. We'll use a simple origin API at
|
|
12
|
+
[getting-started.zuplo.io](https://getting-started.zuplo.io).
|
|
13
|
+
|
|
14
|
+
Note - Zuplo also supports building and running your API locally. To learn more
|
|
15
|
+
[see the documentation](./local-development.mdx).
|
|
16
|
+
|
|
17
|
+
<Stepper>
|
|
18
|
+
|
|
19
|
+
1. **Sign-in**
|
|
20
|
+
|
|
21
|
+
Sign in to [portal.zuplo.com](https://portal.zuplo.com) and create a free
|
|
22
|
+
account. Create a new **empty** project (don't import an existing project,
|
|
23
|
+
we'll set up git later). Then...
|
|
24
|
+
|
|
25
|
+
1. Add your first **Route**
|
|
26
|
+
|
|
27
|
+
Inside your new project, select the **Code** tab (1), choose the
|
|
28
|
+
`routes.oas.json` file (2) and click **Add Route** (3)
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
Your API's first route will appear, with many options. First we'll configure
|
|
33
|
+
the route to match specific incoming requests to the gateway:
|
|
34
|
+
- **Summary**: Enter a summary, for example `Example Endpoint`.
|
|
35
|
+
- **Method**: Leave as `GET`.
|
|
36
|
+
- **Path**: Enter `path-0`.
|
|
37
|
+
|
|
38
|
+
Then we'll specify how the route will invoke the backend origin API, using a
|
|
39
|
+
forward handler:
|
|
40
|
+
- **Request Handler**: We'll use the
|
|
41
|
+
[URL Forward Handler](../handlers/url-forward.mdx) which proxies requests
|
|
42
|
+
by "Forwarding to" the same path on specified URL. In this case, enter
|
|
43
|
+
`https://echo.zuplo.io`
|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
**Save your changes** - click **Save** at the bottom left, or press **CMD+S**
|
|
48
|
+
|
|
49
|
+
1. **Test** your route.
|
|
50
|
+
|
|
51
|
+
You can quickly test this route by clicking the **Test** button next to the
|
|
52
|
+
**Path** field. You can use the built in test tool or click the URL to open
|
|
53
|
+
in a new tab.
|
|
54
|
+
|
|
55
|
+
<ModalScreenshot>
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
</ModalScreenshot>
|
|
60
|
+
|
|
61
|
+
You should receive a 200 OK that says something similar to
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"url": "https://echo.zuplo.io/path-0",
|
|
66
|
+
"method": "GET",
|
|
67
|
+
"query": {},
|
|
68
|
+
"headers": {
|
|
69
|
+
"accept-encoding": "gzip, br",
|
|
70
|
+
"connection": "Keep-Alive",
|
|
71
|
+
"host": "echo.zuplo.io",
|
|
72
|
+
"true-client-ip": "2a06:98c0:3600::103",
|
|
73
|
+
"x-forwarded-proto": "https",
|
|
74
|
+
"x-real-ip": "2a06:98c0:3600::103",
|
|
75
|
+
"zp-rid": "b9822e0f-af32-4002-a6ba-3a899c7f2669",
|
|
76
|
+
"zuplo-request-id": "b9822e0f-af32-4002-a6ba-3a899c7f2669"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
A secret? Let's try and find out what this API is hiding!
|
|
82
|
+
|
|
83
|
+
1. Put the base URL in an **Environment Variable**
|
|
84
|
+
|
|
85
|
+
When working with Zuplo, you'll eventually want each
|
|
86
|
+
[environment](/docs/articles/environments) to use a different backend (for
|
|
87
|
+
example QA, staging, preview, production etc).
|
|
88
|
+
|
|
89
|
+
Change the **URL Forward** value to read the base URL from the
|
|
90
|
+
[Environment Variables](/docs/articles/environment-variables) system by
|
|
91
|
+
setting the value to `${env.BASE_URL}`. We will set the value for `BASE_URL`
|
|
92
|
+
next.
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
Navigate to your project's **Settings** (1) via the navigation bar. Next,
|
|
97
|
+
click **Environment Variables** (2) under Project Settings.
|
|
98
|
+
|
|
99
|
+

|
|
100
|
+
|
|
101
|
+
Add an Environment Variable (3) called `BASE_URL`. Leave the "Secret"
|
|
102
|
+
checkbox unchecked. This is typically not a secret, so there's no need to
|
|
103
|
+
hide this from your colleagues.
|
|
104
|
+
|
|
105
|
+
<ModalScreenshot>
|
|
106
|
+
|
|
107
|
+

|
|
108
|
+
|
|
109
|
+
</ModalScreenshot>
|
|
110
|
+
|
|
111
|
+
Save the environment variable, head back to the **Code** tab, click
|
|
112
|
+
`routes.oas.json`, and test your route again. You should get back the same
|
|
113
|
+
response from Step 2.
|
|
114
|
+
|
|
115
|
+
</Stepper>
|
|
116
|
+
|
|
117
|
+
**NEXT** Try
|
|
118
|
+
[Step 2 - Add Rate Limiting to your API](./step-2-add-rate-limiting.mdx).
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 2 - Add Rate Limiting
|
|
3
|
+
sidebar_label: "2 - Rate Limiting"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<QuickstartPicker
|
|
7
|
+
mode="local"
|
|
8
|
+
alternateLink="/articles/step-2-add-rate-limiting"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
In this guide we'll add simple Rate Limiting to a route. If you don't have one
|
|
12
|
+
ready, complete [Step 1](./step-1-setup-basic-gateway-local.mdx) first.
|
|
13
|
+
|
|
14
|
+
Rate Limiting is one of our most popular **policies** - you should never ship an
|
|
15
|
+
API without rate limiting because your customers or internal developers **will**
|
|
16
|
+
accidentally DoS your API; usually with a rogue `useEffect` call in React code.
|
|
17
|
+
|
|
18
|
+
:::info{title="What's a Policy?"}
|
|
19
|
+
|
|
20
|
+
[Policies](./policies.mdx) are modules that can intercept and transform an
|
|
21
|
+
incoming request or outgoing response. Zuplo offers a wide range of policies
|
|
22
|
+
built-in (including rate limiting) to save you time. You can check out
|
|
23
|
+
[the full list](./policies.mdx).
|
|
24
|
+
|
|
25
|
+
:::
|
|
26
|
+
|
|
27
|
+
Zuplo offers a programmable approach to rate limiting that allows you to vary
|
|
28
|
+
how rate limiting is applied for each customer, or request.s
|
|
29
|
+
|
|
30
|
+
In this example, we'll add a simple IP based rate limiter, but you should look
|
|
31
|
+
into dynamic rate limiting to see the full power of the world's best rate
|
|
32
|
+
limiter.
|
|
33
|
+
|
|
34
|
+
<Stepper>
|
|
35
|
+
|
|
36
|
+
1. Link your Local Project
|
|
37
|
+
|
|
38
|
+
When developing locally with Zuplo, you can "link" your local project to
|
|
39
|
+
your Zuplo project using the `zuplo link` command. This allows you to test
|
|
40
|
+
your changes in a real environment.
|
|
41
|
+
|
|
42
|
+
When you run the command you will be prompted to select your Zuplo account,
|
|
43
|
+
project, and environment. You can pick any environment.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx zuplo link
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
After your project is linked, environment variables and other configuration
|
|
50
|
+
from your Zuplo project will be available in your local development
|
|
51
|
+
environment.
|
|
52
|
+
|
|
53
|
+
1. Start your Project
|
|
54
|
+
|
|
55
|
+
You can start your project using the following command:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx zuplo dev
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After your project is started, you can open the local route designer at
|
|
62
|
+
http://localhost:9100.
|
|
63
|
+
|
|
64
|
+
1. Add the rate-limiting Policy
|
|
65
|
+
|
|
66
|
+
Open the local **Route Designer** by navigating to http://localhost:9100/.
|
|
67
|
+
Select your route and click **Add Policy** on the incoming Request policies
|
|
68
|
+
section.
|
|
69
|
+
|
|
70
|
+
<BrowserScreenshot url="http://localhost:9100/?path=routes.oas.json">
|
|
71
|
+
|
|
72
|
+

|
|
73
|
+
|
|
74
|
+
</BrowserScreenshot>
|
|
75
|
+
|
|
76
|
+
Search for the Rate Limiting policy (not the "Complex" one) and click it.
|
|
77
|
+
|
|
78
|
+
<ModalScreenshot>
|
|
79
|
+
|
|
80
|
+

|
|
81
|
+
|
|
82
|
+
</ModalScreenshot>
|
|
83
|
+
|
|
84
|
+
By default, the policy will rate limit based on the caller's IP address (as
|
|
85
|
+
indicated by the `rateLimitBy` field). It will allow 2 requests
|
|
86
|
+
(`requestsAllowed`) every 1 minute (`timeWindowMinutes`). You can explore
|
|
87
|
+
the rest of the policy's documentation and configuration in the right panel.
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+
To apply the policy, click **Create Policy**. Then, save your changes to
|
|
92
|
+
redeploy.
|
|
93
|
+
|
|
94
|
+
1. Testing your Policy
|
|
95
|
+
|
|
96
|
+
Now try firing some requests against your API. You should receive a **429
|
|
97
|
+
Too many requests** on your 3rd request. You can use any API test tool you
|
|
98
|
+
prefer, such as Postman, HTTPie, or curl.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
curl http://localhost:9000/path-1
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
After you make the request 3 times you will see a response similar to:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"type": "https://httpproblems.com/http-status/429",
|
|
109
|
+
"title": "Too Many Requests",
|
|
110
|
+
"status": 429,
|
|
111
|
+
"instance": "/path-1",
|
|
112
|
+
"trace": {
|
|
113
|
+
"timestamp": "2025-08-26T21:50:40.220Z",
|
|
114
|
+
"requestId": "4c62d425-2cb0-4a6c-9ac0-8d04a5f10c57",
|
|
115
|
+
"buildId": "f49c4070-7c0a-441b-a5fd-4e35b5fe41b7"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Your rate limiting policy is now intercepting excess requests, protecting
|
|
121
|
+
your API.
|
|
122
|
+
|
|
123
|
+
</Stepper>
|
|
124
|
+
|
|
125
|
+
**NEXT** Try
|
|
126
|
+
[Step 3 - Add API Key Authentication](./step-3-add-api-key-auth-local.mdx).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 2 - Add Rate Limiting
|
|
3
|
+
sidebar_label: "2 - Rate Limiting"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<QuickstartPicker
|
|
7
|
+
mode="portal"
|
|
8
|
+
alternateLink="/articles/step-2-add-rate-limiting-local"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
In this guide we'll add simple Rate Limiting to a route. If you don't have one
|
|
12
|
+
ready, complete [Step 1](./step-1-setup-basic-gateway.mdx) first.
|
|
13
|
+
|
|
14
|
+
Rate Limiting is one of our most popular **policies** - you should never ship an
|
|
15
|
+
API without rate limiting because your customers or internal developers **will**
|
|
16
|
+
accidentally DoS your API; usually with a rogue `useEffect` call in React code.
|
|
17
|
+
|
|
18
|
+
:::info{title="What's a Policy?"}
|
|
19
|
+
|
|
20
|
+
[Policies](./policies.mdx) are modules that can intercept and transform an
|
|
21
|
+
incoming request or outgoing response. Zuplo offers a wide range of policies
|
|
22
|
+
built-in (including rate limiting) to save you time. You can check out
|
|
23
|
+
[the full list](../policies/overview.mdx).
|
|
24
|
+
|
|
25
|
+
:::
|
|
26
|
+
|
|
27
|
+
Zuplo offers a programmable approach to rate limiting that allows you to vary
|
|
28
|
+
how rate limiting is applied for each customer, or requests.
|
|
29
|
+
|
|
30
|
+
In this example, we'll add a simple IP based rate limiter, but you should look
|
|
31
|
+
into dynamic rate limiting to see the full power of the world's best rate
|
|
32
|
+
limiter.
|
|
33
|
+
|
|
34
|
+
<Stepper>
|
|
35
|
+
|
|
36
|
+
1. Add the rate-limiting Policy
|
|
37
|
+
|
|
38
|
+
Navigate to your route in the **Route Designer** (**Code** >
|
|
39
|
+
`routes.oas.json`), click the **Policies** dropdown, then click **Add
|
|
40
|
+
Policy** on the request pipeline.
|
|
41
|
+
|
|
42
|
+
<ModalScreenshot>
|
|
43
|
+
|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
</ModalScreenshot>
|
|
47
|
+
|
|
48
|
+
Search for the rate limiting policy (not the "Complex" one) and click it.
|
|
49
|
+
|
|
50
|
+
<ModalScreenshot>
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+
</ModalScreenshot>
|
|
55
|
+
|
|
56
|
+
By default, the policy will rate limit based on the caller's IP address (as
|
|
57
|
+
indicated by the `rateLimitBy` field). It will allow 2 requests
|
|
58
|
+
(`requestsAllowed`) every 1 minute (`timeWindowMinutes`). You can explore the
|
|
59
|
+
rest of the policy's documentation and configuration in the right panel.
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
To apply the policy, click **OK**. Then, save your changes to redeploy.
|
|
64
|
+
|
|
65
|
+
1. Testing your Policy
|
|
66
|
+
|
|
67
|
+
Now try firing some requests against your API. You should receive a **429 Too
|
|
68
|
+
many requests** on your 3rd request.
|
|
69
|
+
|
|
70
|
+
<ModalScreenshot>
|
|
71
|
+
|
|
72
|
+

|
|
73
|
+
|
|
74
|
+
</ModalScreenshot>
|
|
75
|
+
|
|
76
|
+
Your rate limiting policy is now intercepting excess requests, protecting the
|
|
77
|
+
`getting-started` API.
|
|
78
|
+
|
|
79
|
+
</Stepper>
|
|
80
|
+
|
|
81
|
+
**NEXT** Try
|
|
82
|
+
[Step 3 - Add API Key Authentication](./step-3-add-api-key-auth.mdx).
|