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,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Compatibility Dates
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Zuplo is constantly shipping updates to the underlying runtime of projects.
|
|
6
|
+
Occasionally, these updates aren't backwards compatible. In order to ensure that
|
|
7
|
+
your project continues to build, deploy, and operate as you expect, you can set
|
|
8
|
+
a compatibility date to lock in the behavior and APIs of the runtime.
|
|
9
|
+
|
|
10
|
+
The compatibility date is set in the `zuplo.jsonc` file at the root of your
|
|
11
|
+
project. The `zuplo.jsonc` file is created by default for new projects and
|
|
12
|
+
contains the default configuration. For more information on the `zuplo.jsonc`
|
|
13
|
+
file, see the [Zuplo Project Configuration](./zuplo-json.mdx) documentation.
|
|
14
|
+
|
|
15
|
+
## 2026-03-01
|
|
16
|
+
|
|
17
|
+
:::note
|
|
18
|
+
|
|
19
|
+
This compatibility date is the default for projects created after March
|
|
20
|
+
1st, 2026. Existing projects should update their `zuplo.jsonc` to take advantage
|
|
21
|
+
of this change.
|
|
22
|
+
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
### Chain Response Sending Hooks
|
|
26
|
+
|
|
27
|
+
This compatibility date changes how response sending hooks behave when multiple
|
|
28
|
+
hooks are registered. With this flag enabled, response sending hooks
|
|
29
|
+
(`context.addResponseSendingHook` and `runtime.addResponseSendingHook`) chain
|
|
30
|
+
properly, where each hook receives the response from the previous hook instead
|
|
31
|
+
of the original response.
|
|
32
|
+
|
|
33
|
+
**Before this flag:** All hooks received the **_original_** response, so only
|
|
34
|
+
the last hook's output was used.
|
|
35
|
+
|
|
36
|
+
**After this flag:** Hooks are chained properly, each receiving the **_previous
|
|
37
|
+
hook's response_**. For example, if you register three hooks A, B, and C in a
|
|
38
|
+
policy in that order, hook A's response passes to hook B, then hook B's response
|
|
39
|
+
passes to hook C.
|
|
40
|
+
|
|
41
|
+
This change enables more predictable behavior when composing multiple response
|
|
42
|
+
transformations.
|
|
43
|
+
|
|
44
|
+
### 501 for Unsupported HTTP Methods
|
|
45
|
+
|
|
46
|
+
This compatibility date changes how unsupported HTTP methods are handled.
|
|
47
|
+
Requests using non-standard HTTP methods such as WebDAV methods (`PROPFIND`,
|
|
48
|
+
`MKCOL`, `COPY`, etc.) now return a proper `501 Not Implemented` response
|
|
49
|
+
instead of a `500 Internal Server Error`.
|
|
50
|
+
|
|
51
|
+
**Before this flag:** Unsupported HTTP methods returned a
|
|
52
|
+
`500 Internal Server Error`.
|
|
53
|
+
|
|
54
|
+
**After this flag:** Unsupported HTTP methods return a `501 Not Implemented`
|
|
55
|
+
response with an [RFC 7807](https://www.rfc-editor.org/rfc/rfc7807)
|
|
56
|
+
`application/problem+json` body.
|
|
57
|
+
|
|
58
|
+
## 2025-02-06
|
|
59
|
+
|
|
60
|
+
This compatibility date introduces a number of breaking changes to improve the
|
|
61
|
+
overall behavior of Zuplo APIs. This compatibility date is the default for any
|
|
62
|
+
projects created after 2025-03-27.
|
|
63
|
+
|
|
64
|
+
### Special Characters in OpenAPI Format URLs
|
|
65
|
+
|
|
66
|
+
Previously, special characters that were included in URLs that used the
|
|
67
|
+
`open-api` formatted URLs weren't escaped. This allowed an unintended behavior
|
|
68
|
+
where the URL could include Regex patterns even though the OpenAPI format URLs
|
|
69
|
+
doesn't allow regex. This has been fixed and now all special characters are
|
|
70
|
+
escaped. This allows URLs with formats like:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
/accounts/open({id})
|
|
74
|
+
/accounts/:action
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Removed legacy Log Initialization
|
|
78
|
+
|
|
79
|
+
Previously, several of the Zuplo log plugins could be enabled by setting
|
|
80
|
+
undocumented environment variables. This was a legacy feature that was added
|
|
81
|
+
before the current plugin system existed. This feature has been removed. Log
|
|
82
|
+
plugins should be enabled using the
|
|
83
|
+
[documented plugin system](../articles/logging.mdx).
|
|
84
|
+
|
|
85
|
+
If you are setting any of the following environment variables, you should
|
|
86
|
+
migrate to the log plugin initialization.
|
|
87
|
+
|
|
88
|
+
```txt
|
|
89
|
+
GCP_USER_LOG_NAME
|
|
90
|
+
GCP_USER_LOG_SVC_ACCT_JSON
|
|
91
|
+
ZUPLO_USER_LOGGER_DATA_DOG_URL
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Removed legacy Log Context
|
|
95
|
+
|
|
96
|
+
Previously, several log plugins used special properties on `context.custom` to
|
|
97
|
+
set global attributes on logs. This was a legacy feature that was added before
|
|
98
|
+
the current plugin system existed. This feature has been removed. Log plugins
|
|
99
|
+
should be enabled using the [documented plugin system](../articles/logging.mdx).
|
|
100
|
+
|
|
101
|
+
If you are setting any of the following in your code, you should migrate to the
|
|
102
|
+
plugin configuration instead.
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
context.custom["__ddtags"]; // Sets tags
|
|
106
|
+
context.custom["__ddattr"]; // Sets fields
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Migrate to the following:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
export function runtimeInit(runtime: RuntimeExtensions) {
|
|
113
|
+
runtime.addPlugin(
|
|
114
|
+
new DataDogLoggingPlugin({
|
|
115
|
+
url: "https://http-intake.logs.datadoghq.com/api/v2/logs",
|
|
116
|
+
apiKey: environment.DATADOG_API_KEY,
|
|
117
|
+
source: "MyAPI", // Optional, defaults to "Zuplo"
|
|
118
|
+
tags: {
|
|
119
|
+
tag: "hello",
|
|
120
|
+
},
|
|
121
|
+
fields: {
|
|
122
|
+
field1: "value1",
|
|
123
|
+
field2: "value2",
|
|
124
|
+
},
|
|
125
|
+
}),
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Improved Node.js Compatibility
|
|
131
|
+
|
|
132
|
+
The Zuplo runtime doesn't run Node.js, but is compatible with a number of
|
|
133
|
+
Node.js APIs. This compatibility date adds some additional support for Node.js
|
|
134
|
+
specific APIs.
|
|
135
|
+
|
|
136
|
+
### URL Forward Handler Redirects
|
|
137
|
+
|
|
138
|
+
The `UrlForwardHandler` now supports the `followRedirects` option. Previously,
|
|
139
|
+
this option wasn't supported on the forward handler. However, it was erroneously
|
|
140
|
+
documented as supported. This property is behind a compatibility date in order
|
|
141
|
+
to ensure that if existing projects were using the option that didn't work as
|
|
142
|
+
expected, they wouldn't be broken by this change.
|
|
143
|
+
|
|
144
|
+
## 2024-09-02
|
|
145
|
+
|
|
146
|
+
The compatibility date allows the ability to call `fetch` to hosts with custom
|
|
147
|
+
ports. Previously only the standard ports (80, 443) were allowed.
|
|
148
|
+
|
|
149
|
+
## 2024-03-14
|
|
150
|
+
|
|
151
|
+
This compatibility date doesn't include any breaking changes. However, Zuplo
|
|
152
|
+
made a number of changes to the runtime build process. These changes will allow
|
|
153
|
+
a number of future improvements. Out of an abundance of caution, these changes
|
|
154
|
+
are only enabled for projects that have set their compatibility date to
|
|
155
|
+
`2024-03-14`. This compatibility date is the default for any projects created
|
|
156
|
+
after March 14th, 2024.
|
|
157
|
+
|
|
158
|
+
Over time, the build changes will be enabled by default on all future
|
|
159
|
+
deployments regardless of compatibility date. Existing customers are encouraged
|
|
160
|
+
to update their compatibility date to `2024-03-14` and test their projects to
|
|
161
|
+
ensure that they continue to operate as expected.
|
|
162
|
+
|
|
163
|
+
This new build process has rolled out to all customers regardless of
|
|
164
|
+
compatibility date.
|
|
165
|
+
|
|
166
|
+
## 2024-01-15
|
|
167
|
+
|
|
168
|
+
This compatibility date includes several breaking changes to improve the overall
|
|
169
|
+
behavior of Zuplo APIs. This compatibility date is the default for any projects
|
|
170
|
+
created after Jan. 15th, 2024.
|
|
171
|
+
|
|
172
|
+
### Run Outbound Policies on All Responses
|
|
173
|
+
|
|
174
|
+
Previously, outbound policies would only run on response status ranging from
|
|
175
|
+
200-299. Now outbound policies will always run, regardless of the response code.
|
|
176
|
+
|
|
177
|
+
### No Hooks on System Routes
|
|
178
|
+
|
|
179
|
+
Previously runtime hooks such as `OnRequest` or `OnResponseSending` would run on
|
|
180
|
+
system routes. For example, if you are using our Developer Portal and have it
|
|
181
|
+
running on `/docs`, before this change you could write a hook that modified the
|
|
182
|
+
output of the Developer Portal. This could result in unexpected behavior and is
|
|
183
|
+
now disallowed.
|
|
184
|
+
|
|
185
|
+
### Remove Cloudflare Location Headers
|
|
186
|
+
|
|
187
|
+
On SaaS deployments, Zuplo routes all requests through Cloudflare. Cloudflare
|
|
188
|
+
adds a number of headers to requests. Previously, some Cloudflare location
|
|
189
|
+
headers (for example `cf-ipregion`) could be passed through your Zuplo gateway.
|
|
190
|
+
Now these headers are always removed from the outbound request if they have been
|
|
191
|
+
set. If you need access to geo-location data use
|
|
192
|
+
[`context.incomingRequestProperties`](./zuplo-context.mdx) instead.
|
|
193
|
+
|
|
194
|
+
### Remove Internal Zuplo Headers
|
|
195
|
+
|
|
196
|
+
Zuplo uses several internal headers to send data between different layers of our
|
|
197
|
+
systems. Previously, some of these headers where exposed in a way that they
|
|
198
|
+
could be accessed directly. Examples were `zp-ipcity` and `zp-ipcountry`. These
|
|
199
|
+
headers are now always removed from the outbound request if they have been set.
|
|
200
|
+
If you need access this data use
|
|
201
|
+
[`context.incomingRequestProperties`](./zuplo-context.mdx) instead.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Console Logging
|
|
3
|
+
sidebar_label: Console Logging
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Zuplo supports standard JavaScript console logging methods as a convenience for
|
|
7
|
+
developers. These console methods map directly to the Zuplo context logger
|
|
8
|
+
methods.
|
|
9
|
+
|
|
10
|
+
## Supported Methods
|
|
11
|
+
|
|
12
|
+
The following console methods are supported:
|
|
13
|
+
|
|
14
|
+
- `console.log()` - Maps to `context.log.info()`
|
|
15
|
+
- `console.info()` - Maps to `context.log.info()`
|
|
16
|
+
- `console.warn()` - Maps to `context.log.warn()`
|
|
17
|
+
- `console.error()` - Maps to `context.log.error()`
|
|
18
|
+
- `console.debug()` - Maps to `context.log.debug()`
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
You can use console methods anywhere in your Zuplo code:
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
export default async function (request: ZuploRequest, context: ZuploContext) {
|
|
26
|
+
console.log("Processing request", request.url);
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
const result = await processRequest(request);
|
|
30
|
+
console.info("Request processed successfully");
|
|
31
|
+
return result;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.error("Error processing request:", error);
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Limitations
|
|
40
|
+
|
|
41
|
+
- Only the standard logging methods listed above are supported
|
|
42
|
+
- Other console methods (like `console.table()`, `console.time()`, etc.) are
|
|
43
|
+
no-ops and won't produce any output
|
|
44
|
+
|
|
45
|
+
## See Also
|
|
46
|
+
|
|
47
|
+
- [Logger](./logger.mdx) - Using the context logger
|
|
48
|
+
- [Logging Guide](../articles/logging.mdx) - Detailed logging documentation
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ContextData - Sharing Request Data
|
|
3
|
+
sidebar_label: ContextData
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
It's often useful to store data throughout the life of a single request. This
|
|
7
|
+
data could be used on multiple policies, handlers, or for logging. However,
|
|
8
|
+
because the Zuplo runtime is asynchronous, you can't simply create global
|
|
9
|
+
variables and reference them in other modules if the value is unique across
|
|
10
|
+
requests. Additionally, using a traditional data structure like a `Map` is also
|
|
11
|
+
not recommended as it can build up memory over time.
|
|
12
|
+
|
|
13
|
+
## ContextData
|
|
14
|
+
|
|
15
|
+
The `ContextData` utility stores data that's tied to a specific request.
|
|
16
|
+
Additionally, this utility ensures that data stored is garbage collected
|
|
17
|
+
(removed from memory) when the request is complete.
|
|
18
|
+
|
|
19
|
+
**`ContextData.set`**
|
|
20
|
+
|
|
21
|
+
Static method to store data in the context.
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
ContextData.set(context, "my-data", { prop1: "hello world" });
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**`ContextData.get`**
|
|
28
|
+
|
|
29
|
+
Static method to retrieve data from the context.
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
const data = ContextData.get(context, "my-data");
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**`set` (instance method)**
|
|
36
|
+
|
|
37
|
+
Stores data in the context using an instance.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
const myData = new ContextData("my-data");
|
|
41
|
+
myData.set(context, { prop1: "hello world" });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**`get` (instance method)**
|
|
45
|
+
|
|
46
|
+
Retrieves data from the context using an instance.
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
const myData = new ContextData("my-data");
|
|
50
|
+
const data = myData.get(context);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Typing
|
|
54
|
+
|
|
55
|
+
The methods of `ContextData` support generics in order to support typing.
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
const myData = new ContextData<{ key: string }>("my-data");
|
|
59
|
+
ContextData.get<{ key: string }>(context, "my-data");
|
|
60
|
+
ContextData.set<{ key: string }>(context, "my-data", { key: "hello" });
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## How NOT to Share Data
|
|
64
|
+
|
|
65
|
+
Below are a few examples of how **NOT** to share data in your API.
|
|
66
|
+
|
|
67
|
+
:::danger
|
|
68
|
+
|
|
69
|
+
Don't write code like this in your API. It won't work reliably. These are
|
|
70
|
+
examples of what NOT to do. See the next section for best practices.
|
|
71
|
+
|
|
72
|
+
:::
|
|
73
|
+
|
|
74
|
+
The first example uses a simple shared global variable called `currentRequestId`
|
|
75
|
+
to store the current `requestId`. On the surface this looks straightforward.
|
|
76
|
+
However, because the gateway is being shared among many requests who are all
|
|
77
|
+
running at the same time, the value of `currentRequestId` is completely
|
|
78
|
+
unpredictable when your API is under load.
|
|
79
|
+
|
|
80
|
+
```ts title="/modules/policies.ts"
|
|
81
|
+
let currentRequestId: string | undefined;
|
|
82
|
+
|
|
83
|
+
export function myFirstPolicy(request: ZuploRequest, context: ZuploContext) {
|
|
84
|
+
currentRequestId = context.requestId;
|
|
85
|
+
context.log.info(`The current requestId is: ${currentRequestId}`);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function mySecondPolicy(request: ZuploRequest, context: ZuploContext) {
|
|
89
|
+
currentRequestId = context.requestId;
|
|
90
|
+
context.log.info(`The current requestId is: ${currentRequestId}`);
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Using ContextData
|
|
95
|
+
|
|
96
|
+
Below you will find examples of how to use `ContextData` to safely share data
|
|
97
|
+
throughout the lifecycle of a request.
|
|
98
|
+
|
|
99
|
+
### Using static methods
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
import { ContextData, ZuploContext, ZuploRequest } from "@zuplo/runtime";
|
|
103
|
+
|
|
104
|
+
export function myFirstPolicy(request: ZuploRequest, context: ZuploContext) {
|
|
105
|
+
ContextData.set(context, "currentRequestId", context.requestId);
|
|
106
|
+
|
|
107
|
+
const currentRequestId = ContextData.get(context, "currentRequestId");
|
|
108
|
+
context.log.info(`The current requestId is: ${currentRequestId}`);
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Using Shared Variable
|
|
113
|
+
|
|
114
|
+
Reusable class shared across modules The shared module allows other modules to
|
|
115
|
+
access the same storage without passing the string name or type around.
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
export const myData = new ContextData<{ prop1: string }>("my-data");
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Then use the class in another module.
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
import { myData } from "./my-module";
|
|
125
|
+
const data = myData.get(context);
|
|
126
|
+
myData.set(context, data);
|
|
127
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: CORS Policy Configuration
|
|
3
|
+
sidebar_label: CORS Policy Configuration
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
For a complete guide on configuring CORS including built-in policies, wildcard
|
|
7
|
+
origin matching, environment variables, and troubleshooting, see the
|
|
8
|
+
[Configuring CORS](../articles/cors.mdx) article.
|
|
9
|
+
|
|
10
|
+
## CorsPolicyConfiguration
|
|
11
|
+
|
|
12
|
+
Custom CORS policies are defined in the `corsPolicies` array in the
|
|
13
|
+
`policies.json` file. Each policy has the following properties:
|
|
14
|
+
|
|
15
|
+
| Property | Type | Required | Description |
|
|
16
|
+
| ------------------ | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
17
|
+
| `name` | `string` | Yes | A unique name used to reference this policy on routes. |
|
|
18
|
+
| `allowedOrigins` | `string[]` or `string` | Yes | Origins permitted to make cross-origin requests. Supports wildcards (see [Origin Matching](../articles/cors.mdx#origin-matching)). |
|
|
19
|
+
| `allowedMethods` | `string[]` or `string` | No | HTTP methods allowed for cross-origin requests (e.g., `GET`, `POST`). |
|
|
20
|
+
| `allowedHeaders` | `string[]` or `string` | No | Request headers the client can send. Use `*` to allow any header. |
|
|
21
|
+
| `exposeHeaders` | `string[]` or `string` | No | Response headers the browser can access from JavaScript. |
|
|
22
|
+
| `maxAge` | `number` | No | Time in seconds the browser caches preflight results. |
|
|
23
|
+
| `allowCredentials` | `boolean` | No | Whether to include credentials (cookies, authorization headers) in cross-origin requests. |
|
|
24
|
+
|
|
25
|
+
## Built-in Policies
|
|
26
|
+
|
|
27
|
+
Every route has a `corsPolicy` property in `x-zuplo-route` that can be set to
|
|
28
|
+
one of the built-in values or the name of a custom policy:
|
|
29
|
+
|
|
30
|
+
- **`none`** - Disables CORS. All CORS headers are stripped from responses. This
|
|
31
|
+
is the default.
|
|
32
|
+
- **`anything-goes`** - Allows any origin, method, and header. Not recommended
|
|
33
|
+
for production.
|
|
34
|
+
|
|
35
|
+
## Example
|
|
36
|
+
|
|
37
|
+
```json title="config/policies.json"
|
|
38
|
+
{
|
|
39
|
+
"corsPolicies": [
|
|
40
|
+
{
|
|
41
|
+
"name": "my-cors-policy",
|
|
42
|
+
"allowedOrigins": [
|
|
43
|
+
"https://app.example.com",
|
|
44
|
+
"https://admin.example.com"
|
|
45
|
+
],
|
|
46
|
+
"allowedMethods": ["GET", "POST", "PUT", "DELETE"],
|
|
47
|
+
"allowedHeaders": ["Authorization", "Content-Type"],
|
|
48
|
+
"exposeHeaders": ["X-Request-Id"],
|
|
49
|
+
"maxAge": 3600,
|
|
50
|
+
"allowCredentials": true
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```json title="config/routes.oas.json"
|
|
57
|
+
"x-zuplo-route": {
|
|
58
|
+
"corsPolicy": "my-cors-policy",
|
|
59
|
+
"handler": {
|
|
60
|
+
"export": "urlForwardHandler",
|
|
61
|
+
"module": "$import(@zuplo/runtime)"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|