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,272 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Troubleshooting & FAQ
|
|
3
|
+
sidebar_label: Troubleshooting
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
:::note{title="Beta"}
|
|
7
|
+
|
|
8
|
+
API Monetization is in beta and free to try. The APIs are stable but should be
|
|
9
|
+
evaluated in non-production environments first. To go to production, contact
|
|
10
|
+
[sales@zuplo.com](mailto:sales@zuplo.com). Production pricing has not yet been
|
|
11
|
+
announced.
|
|
12
|
+
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
## Common issues
|
|
16
|
+
|
|
17
|
+
### Customer gets 403 Forbidden instead of expected access
|
|
18
|
+
|
|
19
|
+
**Symptom:** Authenticated customer with an active subscription receives
|
|
20
|
+
`403 Forbidden` instead of a successful response.
|
|
21
|
+
|
|
22
|
+
**Causes and fixes:**
|
|
23
|
+
|
|
24
|
+
1. **Payment is overdue.** Check the subscription's payment status via the API.
|
|
25
|
+
If payment has failed and the grace period (default 3 days) has passed,
|
|
26
|
+
access is blocked.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
curl https://dev.zuplo.com/v3/metering/{bucketId}/customers/{CUSTOMER_ID}/subscriptions \
|
|
30
|
+
-H "Authorization: Bearer {API_KEY}"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Fix: Either resolve the payment issue in Stripe, or adjust the grace period
|
|
34
|
+
via `zuplo_max_payment_overdue_days` metadata on the plan or customer.
|
|
35
|
+
|
|
36
|
+
2. **Customer is using the wrong API key.** Each subscription generates its own
|
|
37
|
+
key. If the customer has multiple subscriptions or regenerated their key,
|
|
38
|
+
they may be using an old or unrelated key.
|
|
39
|
+
|
|
40
|
+
Fix: Have the customer check their active key in the Developer Portal →
|
|
41
|
+
Subscriptions page.
|
|
42
|
+
|
|
43
|
+
3. **Customer has no subscription.** If the customer authenticated but never
|
|
44
|
+
subscribed to a plan, they get 403 on monetized routes.
|
|
45
|
+
|
|
46
|
+
Fix: Direct the customer to subscribe to a plan (even a free tier).
|
|
47
|
+
|
|
48
|
+
### Customer gets 403 Forbidden for quota exceeded
|
|
49
|
+
|
|
50
|
+
**Symptom:** Customer's requests are being blocked and the error detail mentions
|
|
51
|
+
exceeding a meter limit.
|
|
52
|
+
|
|
53
|
+
**Causes and fixes:**
|
|
54
|
+
|
|
55
|
+
1. **Separate rate-limiting policy is blocking them.** If you have both a
|
|
56
|
+
`MonetizationInboundPolicy` (monthly quota) and a standalone rate-limiting
|
|
57
|
+
policy (per-second/per-minute), the rate limiter may be triggering before the
|
|
58
|
+
monetization quota is reached.
|
|
59
|
+
|
|
60
|
+
Fix: Check if a per-second/per-minute rate limit is configured. The response
|
|
61
|
+
body detail message will indicate which limit was hit.
|
|
62
|
+
|
|
63
|
+
2. **Meter counting both successes and failures.** The default
|
|
64
|
+
`meterOnStatusCodes` is `"200-299"`, so only successful responses are
|
|
65
|
+
metered. If you changed this to a broader range, failed requests (4xx, 5xx
|
|
66
|
+
from your backend) count against the quota.
|
|
67
|
+
|
|
68
|
+
Fix: Set `meterOnStatusCodes` to `"200-299"` to only count successful
|
|
69
|
+
responses.
|
|
70
|
+
|
|
71
|
+
3. **Multiple meters consuming the same quota.** If a single request increments
|
|
72
|
+
a meter by more than 1 (e.g., `"api_credits": 10`), the quota depletes faster
|
|
73
|
+
than the customer expects.
|
|
74
|
+
|
|
75
|
+
Fix: Verify the meter increment values in your policy configuration match
|
|
76
|
+
what your pricing page communicates.
|
|
77
|
+
|
|
78
|
+
### Stripe Checkout redirects but subscription isn't created in Zuplo
|
|
79
|
+
|
|
80
|
+
**Symptom:** Customer completes Stripe Checkout successfully, but the Developer
|
|
81
|
+
Portal shows no active subscription.
|
|
82
|
+
|
|
83
|
+
**Causes and fixes:**
|
|
84
|
+
|
|
85
|
+
1. **Preview environment mismatch.** If you tested in a preview deployment but
|
|
86
|
+
the checkout was configured for a different environment, the subscription may
|
|
87
|
+
have been created in the wrong bucket.
|
|
88
|
+
|
|
89
|
+
Fix: Ensure you are testing against the correct environment (working copy,
|
|
90
|
+
preview, or production).
|
|
91
|
+
|
|
92
|
+
2. **Stripe test mode / live mode mismatch.** Products and subscriptions in
|
|
93
|
+
Stripe test mode are invisible to live mode and vice versa.
|
|
94
|
+
|
|
95
|
+
Fix: Verify you're looking at the correct mode in both Stripe and Zuplo.
|
|
96
|
+
|
|
97
|
+
### Usage dashboard shows zero despite active API traffic
|
|
98
|
+
|
|
99
|
+
**Symptom:** Customer is making successful API requests, but the usage dashboard
|
|
100
|
+
in the Developer Portal shows 0 usage.
|
|
101
|
+
|
|
102
|
+
**Causes and fixes:**
|
|
103
|
+
|
|
104
|
+
1. **Monetization policy is not applied to the route.** The
|
|
105
|
+
`MonetizationInboundPolicy` must be in the inbound policy pipeline for
|
|
106
|
+
metering to occur. If the route only has a different authentication policy
|
|
107
|
+
(no monetization policy), requests go through but aren't metered.
|
|
108
|
+
|
|
109
|
+
Fix: Verify the `monetization-inbound` policy is listed in the route's
|
|
110
|
+
inbound policies.
|
|
111
|
+
|
|
112
|
+
2. **`meterOnStatusCodes` excludes the response status.** If set to `"200"` but
|
|
113
|
+
your API returns `201 Created`, those requests won't be metered.
|
|
114
|
+
|
|
115
|
+
Fix: Widen the status code range (e.g., `"200-299"`).
|
|
116
|
+
|
|
117
|
+
### Plan changes don't take effect
|
|
118
|
+
|
|
119
|
+
**Symptom:** Customer upgrades their plan in the Developer Portal, but their
|
|
120
|
+
entitlements don't change.
|
|
121
|
+
|
|
122
|
+
**Causes and fixes:**
|
|
123
|
+
|
|
124
|
+
1. **Plan was updated but not published.** Plans in `draft` status aren't
|
|
125
|
+
visible to customers, and updates to active plans need to be re-published.
|
|
126
|
+
|
|
127
|
+
Fix: Check the plan status. Publish if it's still in draft.
|
|
128
|
+
|
|
129
|
+
2. **Caching lag.** Entitlement changes propagate in near-real-time, but there
|
|
130
|
+
can be a brief propagation window (typically under 60 seconds based on
|
|
131
|
+
`cacheTtlSeconds`).
|
|
132
|
+
|
|
133
|
+
Fix: Wait a minute and retry. If the issue persists, check the subscription
|
|
134
|
+
via the API to verify the plan change was recorded.
|
|
135
|
+
|
|
136
|
+
## Debugging tools
|
|
137
|
+
|
|
138
|
+
### Check subscription state via the API
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# List subscriptions for a customer
|
|
142
|
+
curl https://dev.zuplo.com/v3/metering/{bucketId}/customers/{CUSTOMER_ID}/subscriptions \
|
|
143
|
+
-H "Authorization: Bearer {API_KEY}"
|
|
144
|
+
|
|
145
|
+
# Check subscription access and entitlements
|
|
146
|
+
curl https://dev.zuplo.com/v3/metering/{bucketId}/subscriptions/{subscriptionId}/access \
|
|
147
|
+
-H "Authorization: Bearer {API_KEY}"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Check meter usage
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Query meter usage for the current month
|
|
154
|
+
curl -X POST https://dev.zuplo.com/v3/metering/{bucketId}/meters/{meterIdOrSlug}/query \
|
|
155
|
+
-H "Authorization: Bearer {API_KEY}" \
|
|
156
|
+
-H "Content-Type: application/json" \
|
|
157
|
+
-d '{
|
|
158
|
+
"subject": "{SUBSCRIPTION_ID}",
|
|
159
|
+
"from": "2026-03-01T00:00:00Z",
|
|
160
|
+
"to": "2026-03-31T23:59:59Z",
|
|
161
|
+
"windowSize": "DAY"
|
|
162
|
+
}'
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Test with cURL
|
|
166
|
+
|
|
167
|
+
Verify the full flow manually:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Make a request to a monetized endpoint
|
|
171
|
+
curl -v -H "Authorization: Bearer {CUSTOMER_API_KEY}" \
|
|
172
|
+
https://your-api.zuplo.dev/api/v1/resource
|
|
173
|
+
|
|
174
|
+
# Check the response status and body for error details
|
|
175
|
+
# 403 with detail message indicates auth, payment, or quota issues
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## FAQ
|
|
179
|
+
|
|
180
|
+
### Can I have both free and paid plans?
|
|
181
|
+
|
|
182
|
+
Yes. Create a free plan with `price: null` and `isSoftLimit: false` on the
|
|
183
|
+
entitlement. Free plans that don't require a credit card skip Stripe Checkout
|
|
184
|
+
entirely — the customer gets access immediately after clicking "Start Free."
|
|
185
|
+
|
|
186
|
+
### Can a customer have multiple subscriptions?
|
|
187
|
+
|
|
188
|
+
Yes. Each subscription generates its own API key. The customer uses the
|
|
189
|
+
appropriate key for each subscription. This supports scenarios like a primary
|
|
190
|
+
subscription plus a credit pack, or separate subscriptions for different API
|
|
191
|
+
products.
|
|
192
|
+
|
|
193
|
+
### What happens if Stripe is down?
|
|
194
|
+
|
|
195
|
+
Zuplo caches subscription and quota state locally. If Stripe is temporarily
|
|
196
|
+
unavailable, existing customers continue to have access based on their cached
|
|
197
|
+
subscription state. New subscriptions and plan changes require Stripe to be
|
|
198
|
+
available.
|
|
199
|
+
|
|
200
|
+
### Can I use currencies other than USD?
|
|
201
|
+
|
|
202
|
+
Yes. Plans support any ISO 4217 currency code. Set the `currency` field when
|
|
203
|
+
creating a plan. You can offer the same plan in multiple currencies by creating
|
|
204
|
+
separate plan objects (e.g., `pro-usd` and `pro-eur`).
|
|
205
|
+
|
|
206
|
+
### How are overages calculated?
|
|
207
|
+
|
|
208
|
+
Overages are modeled using graduated tiered pricing. The first tier covers the
|
|
209
|
+
included allowance at a flat price, and subsequent tiers charge per-unit for
|
|
210
|
+
usage beyond the allowance. See [Pricing Models](./pricing-models.mdx) for
|
|
211
|
+
details.
|
|
212
|
+
|
|
213
|
+
### Can I set spending limits for pay-as-you-go customers?
|
|
214
|
+
|
|
215
|
+
You can set a hard entitlement limit that acts as a spending cap (e.g., max
|
|
216
|
+
100,000 requests regardless of willingness to pay). Alternatively, use a custom
|
|
217
|
+
policy to check current usage against a configurable limit, or set up Stripe
|
|
218
|
+
billing alerts to notify customers approaching a threshold.
|
|
219
|
+
|
|
220
|
+
### Do meters count retried requests?
|
|
221
|
+
|
|
222
|
+
Yes. Each request that hits the gateway is independently metered. If a client
|
|
223
|
+
retries a failed request, both the original and retry are metered (subject to
|
|
224
|
+
`meterOnStatusCodes` filtering). This is by design — your infrastructure handled
|
|
225
|
+
both requests.
|
|
226
|
+
|
|
227
|
+
### Can I migrate from Amberflo/Moesif/OpenMeter?
|
|
228
|
+
|
|
229
|
+
Yes. The third-party metering integrations (Amberflo, Moesif, OpenMeter
|
|
230
|
+
policies) are separate from the native Zuplo Monetization. You can run them in
|
|
231
|
+
parallel during migration:
|
|
232
|
+
|
|
233
|
+
1. Add the `MonetizationInboundPolicy` alongside your existing third-party
|
|
234
|
+
policy
|
|
235
|
+
2. Let both meter simultaneously for a comparison period
|
|
236
|
+
3. Once you've verified parity, remove the third-party policy
|
|
237
|
+
4. Decommission the third-party metering service
|
|
238
|
+
|
|
239
|
+
### Is there an SLA on metering accuracy?
|
|
240
|
+
|
|
241
|
+
Zuplo meters in the request path — every request that gets a response is metered
|
|
242
|
+
synchronously. There's no batch processing, no eventual consistency window, and
|
|
243
|
+
no sampling. If the customer's API call succeeded (based on
|
|
244
|
+
`meterOnStatusCodes`), it's counted.
|
|
245
|
+
|
|
246
|
+
### Can I customize the 403 response body?
|
|
247
|
+
|
|
248
|
+
Yes. Use a custom outbound policy to transform the `403` response when it's a
|
|
249
|
+
quota error:
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
export default async function customQuotaResponse(response, request, context) {
|
|
253
|
+
if (response.status === 403) {
|
|
254
|
+
const body = await response.json();
|
|
255
|
+
if (body.detail?.includes("exceeded the allowed limit")) {
|
|
256
|
+
return new Response(
|
|
257
|
+
JSON.stringify({
|
|
258
|
+
error: "quota_exceeded",
|
|
259
|
+
message:
|
|
260
|
+
"You've exceeded your API quota. Upgrade your plan for more requests.",
|
|
261
|
+
upgrade_url: "https://developers.your-company.com/pricing",
|
|
262
|
+
}),
|
|
263
|
+
{
|
|
264
|
+
status: 429,
|
|
265
|
+
headers: response.headers,
|
|
266
|
+
},
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return response;
|
|
271
|
+
}
|
|
272
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Custom API Monetization
|
|
3
|
+
sidebar_label: Custom Monetization
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Zuplo's [Monetization](./monetization/index.mdx) supports advanced requirements
|
|
7
|
+
out of the box. For organizations with needs beyond the standard offering, Zuplo
|
|
8
|
+
provides additional capabilities and dedicated support.
|
|
9
|
+
|
|
10
|
+
## Custom monetization capabilities
|
|
11
|
+
|
|
12
|
+
### Advanced billing models
|
|
13
|
+
|
|
14
|
+
Plans can combine multiple billing strategies in a single subscription:
|
|
15
|
+
|
|
16
|
+
- **Multi-dimensional metering** — Track and bill on several metrics
|
|
17
|
+
simultaneously (requests, tokens, data volume)
|
|
18
|
+
- **Negotiated contracts** — Create
|
|
19
|
+
[private plans](./monetization/private-plans.md) with custom pricing for
|
|
20
|
+
individual customers
|
|
21
|
+
- **Multiple currencies** — Price plans in different currencies for regional
|
|
22
|
+
markets
|
|
23
|
+
- **Complex phase structures** — Model free trials, commitment terms, and
|
|
24
|
+
automatic conversions using [plan phases](./monetization/plans.mdx)
|
|
25
|
+
|
|
26
|
+
### Global quota enforcement
|
|
27
|
+
|
|
28
|
+
Zuplo's globally distributed infrastructure ensures consistent monetization
|
|
29
|
+
behavior everywhere:
|
|
30
|
+
|
|
31
|
+
- **Edge-native metering** — Usage is tracked at the edge, close to where
|
|
32
|
+
requests are served
|
|
33
|
+
- **Low-latency enforcement** — Quota checks add minimal overhead to request
|
|
34
|
+
processing
|
|
35
|
+
- **Real-time synchronization** — Usage data is synchronized globally in near
|
|
36
|
+
real-time
|
|
37
|
+
- **Resilient design** — Quota enforcement continues to operate during network
|
|
38
|
+
partitions
|
|
39
|
+
|
|
40
|
+
### Custom integrations
|
|
41
|
+
|
|
42
|
+
For organizations with existing billing infrastructure:
|
|
43
|
+
|
|
44
|
+
- **Custom billing systems** — Connect Zuplo Monetization to proprietary ERP,
|
|
45
|
+
CRM, or billing platforms using the
|
|
46
|
+
[Developer API](./monetization/api-access.mdx)
|
|
47
|
+
- **Revenue sharing** — Implement partner or marketplace billing models with
|
|
48
|
+
custom policies
|
|
49
|
+
- **Audit trails** — Full visibility into metering and billing events for
|
|
50
|
+
compliance
|
|
51
|
+
|
|
52
|
+
### Developer Portal
|
|
53
|
+
|
|
54
|
+
Customers get the full self-serve experience through the
|
|
55
|
+
[Developer Portal](./monetization/developer-portal.md):
|
|
56
|
+
|
|
57
|
+
- **White-label portals** — Fully branded experience for your customers
|
|
58
|
+
- **Self-service subscription management** — Customers manage upgrades,
|
|
59
|
+
downgrades, and cancellations
|
|
60
|
+
- **Usage dashboards** — Real-time visibility into consumption and remaining
|
|
61
|
+
quota
|
|
62
|
+
- **API key management** — Customers create and manage their own API keys
|
|
63
|
+
|
|
64
|
+
## Getting started
|
|
65
|
+
|
|
66
|
+
Zuplo Monetization is available on all plans. Follow the
|
|
67
|
+
[Quickstart](./monetization/quickstart.md) to set up metering, plans, and Stripe
|
|
68
|
+
billing in under 30 minutes.
|
|
69
|
+
|
|
70
|
+
For enterprise-specific requirements — custom contracts, dedicated support, or
|
|
71
|
+
integration assistance — [contact the Zuplo team](mailto:sales@zuplo.com).
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Third-Party Monetization Integrations
|
|
3
|
+
sidebar_label: Third-Party Integrations
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Zuplo's [built-in Monetization](./monetization/index.mdx) handles metering,
|
|
7
|
+
billing, and quota enforcement natively at the gateway. For teams with existing
|
|
8
|
+
billing infrastructure or specialized requirements, Zuplo also integrates with
|
|
9
|
+
third-party metering and billing platforms through policies and the programmable
|
|
10
|
+
gateway.
|
|
11
|
+
|
|
12
|
+
## When to use third-party integrations
|
|
13
|
+
|
|
14
|
+
Third-party integrations make sense when you:
|
|
15
|
+
|
|
16
|
+
- Already have an established billing pipeline you want to keep
|
|
17
|
+
- Need a platform-specific feature that Zuplo Monetization does not yet cover
|
|
18
|
+
- Want to combine Zuplo's gateway with a dedicated analytics or metering vendor
|
|
19
|
+
|
|
20
|
+
For most teams starting fresh, the
|
|
21
|
+
[built-in Monetization](./monetization/index.mdx) is the fastest path — it
|
|
22
|
+
removes the need to synchronize state between separate metering, billing, and
|
|
23
|
+
gateway systems.
|
|
24
|
+
|
|
25
|
+
## Available integrations
|
|
26
|
+
|
|
27
|
+
### Amberflo
|
|
28
|
+
|
|
29
|
+
The [Amberflo Metering Policy](../policies/amberflo-metering-inbound.mdx)
|
|
30
|
+
enables real-time usage metering and billing through
|
|
31
|
+
[Amberflo](https://www.amberflo.io/), a usage-based billing platform:
|
|
32
|
+
|
|
33
|
+
- **Real-time event ingestion** — Track usage events with sub-second latency
|
|
34
|
+
- **Flexible metering** — Define custom meters for any billable metric
|
|
35
|
+
- **Usage-based pricing** — Support complex pricing models and tiers
|
|
36
|
+
- **Customer dashboards** — Provide usage visibility to your customers
|
|
37
|
+
|
|
38
|
+
### Moesif
|
|
39
|
+
|
|
40
|
+
The [Moesif Analytics Policy](../policies/moesif-inbound.mdx) integrates with
|
|
41
|
+
[Moesif](https://www.moesif.com/) for API analytics and monetization:
|
|
42
|
+
|
|
43
|
+
- **API analytics** — Deep insights into API usage patterns and customer
|
|
44
|
+
behavior
|
|
45
|
+
- **Usage tracking** — Monitor API calls, latency, and error rates
|
|
46
|
+
- **Customer segmentation** — Analyze usage by customer cohorts
|
|
47
|
+
- **Billing alerts** — Set up notifications for usage thresholds
|
|
48
|
+
|
|
49
|
+
Learn how Zuplo and Moesif work together:
|
|
50
|
+
[API Observability and Monetization at the Edge](https://www.moesif.com/blog/api-monetization/Moesif-Zuplo-API-Observability-and-Monetization-At-The-Edge/)
|
|
51
|
+
|
|
52
|
+
### Stripe (direct)
|
|
53
|
+
|
|
54
|
+
[Stripe](https://stripe.com) can be used directly with Zuplo's programmable
|
|
55
|
+
gateway for custom billing flows:
|
|
56
|
+
|
|
57
|
+
- **Custom integrations** — Use Stripe's APIs with Zuplo's programmable gateway
|
|
58
|
+
- **Webhooks** — Process subscription events and update access in real-time with
|
|
59
|
+
the
|
|
60
|
+
[Stripe Webhook Verification Policy](../policies/stripe-webhook-verification-inbound.mdx)
|
|
61
|
+
- **Tiered access** — Different rate limits and features per subscription level
|
|
62
|
+
|
|
63
|
+
:::tip
|
|
64
|
+
|
|
65
|
+
Zuplo's built-in Monetization already includes a
|
|
66
|
+
[native Stripe integration](./monetization/stripe-integration.md) that handles
|
|
67
|
+
subscription management, invoicing, and payment collection automatically. Use
|
|
68
|
+
the direct Stripe integration only if you need full control over the billing
|
|
69
|
+
flow.
|
|
70
|
+
|
|
71
|
+
:::
|
|
72
|
+
|
|
73
|
+
## Building custom integrations
|
|
74
|
+
|
|
75
|
+
Zuplo's programmable gateway lets you integrate with any billing or metering
|
|
76
|
+
provider.
|
|
77
|
+
|
|
78
|
+
### Custom policies
|
|
79
|
+
|
|
80
|
+
Create [custom inbound](../policies/custom-code-inbound.mdx) and
|
|
81
|
+
[outbound policies](../policies/custom-code-outbound.mdx) to:
|
|
82
|
+
|
|
83
|
+
- Send usage events to an external metering service
|
|
84
|
+
- Look up entitlements from an external billing system
|
|
85
|
+
- Calculate dynamic pricing based on request or response characteristics
|
|
86
|
+
|
|
87
|
+
### Hooks
|
|
88
|
+
|
|
89
|
+
Use Zuplo's [hooks system](../programmable-api/hooks.mdx) to:
|
|
90
|
+
|
|
91
|
+
- Forward usage data to your billing pipeline
|
|
92
|
+
- Update customer limits in real-time
|
|
93
|
+
- Stream metrics to external systems using plugins like the
|
|
94
|
+
[Azure Event Hubs Plugin](./plugin-azure-event-hubs.mdx)
|
|
95
|
+
|
|
96
|
+
### Developer Portal
|
|
97
|
+
|
|
98
|
+
The [Zuplo Developer Portal](../dev-portal/introduction.mdx) supports custom
|
|
99
|
+
pages and plugins for billing UI:
|
|
100
|
+
|
|
101
|
+
- [Custom pages](../dev-portal/zudoku/guides/custom-pages.md) for pricing,
|
|
102
|
+
billing, and account management
|
|
103
|
+
- [Custom plugins](../dev-portal/zudoku/custom-plugins.md) to embed billing
|
|
104
|
+
widgets and dashboards
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Ensuring the integrity of your gateway with proactive monitoring
|
|
3
|
+
sidebar_label: Proactive monitoring
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Reliability and performance of your gateway are paramount. Zuplo's commitment to
|
|
7
|
+
operational excellence aims to provide seamless, uninterrupted service.
|
|
8
|
+
Nevertheless, the complex and customizable nature of gateways necessitates a
|
|
9
|
+
vigilant approach to monitoring by users. Proactive, end-to-end monitoring
|
|
10
|
+
becomes not just a recommendation but a requisite for maintaining the integrity
|
|
11
|
+
of your mission-critical gateway.
|
|
12
|
+
|
|
13
|
+
Zuplo makes every effort to actively monitor our core services and deliver 100%
|
|
14
|
+
up-time for your gateway. However, there are many ways in which you can cause
|
|
15
|
+
issues with your gateway, for example:
|
|
16
|
+
|
|
17
|
+
### Common Sources of Disruptions
|
|
18
|
+
|
|
19
|
+
Several factors can compromise the functionality of your gateway, including but
|
|
20
|
+
not limited to:
|
|
21
|
+
|
|
22
|
+
- Misconfigured environment variables: Simple errors like a misspelled URL or
|
|
23
|
+
incorrect shared secret can take your gateway down.
|
|
24
|
+
- Coding Errors: The flexibility of Zuplo allows for extensive customization
|
|
25
|
+
and, like any software, has the potential to cause disruption if bad code is
|
|
26
|
+
deployed.
|
|
27
|
+
|
|
28
|
+
This means we strongly recommend that you have active end-to-end monitoring of
|
|
29
|
+
each network configuration of your gateway. In fact, for some Enterprise
|
|
30
|
+
Agreements we mandate this to offer a higher SLA.
|
|
31
|
+
|
|
32
|
+
## Pro-active monitoring
|
|
33
|
+
|
|
34
|
+
We recommend doing this by having a health check endpoint for each network
|
|
35
|
+
configuration. For example, if you have 3 backends and 2 tunnels we would
|
|
36
|
+
recommend having 3 health-check endpoints on Zuplo with each going through the
|
|
37
|
+
same combination of network hops that your gateway routes will need to leverage.
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
Some customers choose to go further, and have their backend health-check only
|
|
42
|
+
return 'OK' if it also verifies other critical dependencies, like a database
|
|
43
|
+
connection or dependent service, are also operational.
|
|
44
|
+
|
|
45
|
+
Most customers use a monitoring service, here are a few examples:
|
|
46
|
+
|
|
47
|
+
- [Checkly](https://checklyhq.com)
|
|
48
|
+
- [API Context](https://apicontext.com)
|
|
49
|
+
- [Datadog](https://www.datadoghq.com/dg/apm/synthetics/api-test)
|
|
50
|
+
|
|
51
|
+
In addition, we recommend using our [Enterprise Log Plugins](./logging.mdx) to
|
|
52
|
+
send log events to partners like Datadog and set up volume based alerts from any
|
|
53
|
+
unusually increased error rates from your custom code or dependent services.
|