zuplo 6.67.32 → 6.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/docs/_index.md +44 -0
- package/docs/ai-gateway/apps.mdx +28 -0
- package/docs/ai-gateway/custom-providers.mdx +54 -0
- package/docs/ai-gateway/getting-started.mdx +224 -0
- package/docs/ai-gateway/guardrails.mdx +65 -0
- package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
- package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
- package/docs/ai-gateway/integrations/codex.mdx +78 -0
- package/docs/ai-gateway/integrations/goose.mdx +104 -0
- package/docs/ai-gateway/integrations/langchain.mdx +66 -0
- package/docs/ai-gateway/integrations/openai.mdx +99 -0
- package/docs/ai-gateway/introduction.mdx +85 -0
- package/docs/ai-gateway/managing-apps.mdx +46 -0
- package/docs/ai-gateway/managing-providers.mdx +66 -0
- package/docs/ai-gateway/managing-teams.mdx +63 -0
- package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
- package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
- package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
- package/docs/ai-gateway/providers.mdx +32 -0
- package/docs/ai-gateway/teams.mdx +38 -0
- package/docs/ai-gateway/universal-api.mdx +43 -0
- package/docs/ai-gateway/usage-limits.mdx +89 -0
- package/docs/api-management/introduction.md +127 -0
- package/docs/articles/accounts/audit-logs.mdx +227 -0
- package/docs/articles/accounts/billing.mdx +25 -0
- package/docs/articles/accounts/default-api-key.mdx +30 -0
- package/docs/articles/accounts/delete-account.mdx +36 -0
- package/docs/articles/accounts/enterprise-sso.mdx +116 -0
- package/docs/articles/accounts/managing-account-members.mdx +45 -0
- package/docs/articles/accounts/managing-project-members.mdx +37 -0
- package/docs/articles/accounts/members-and-roles.mdx +21 -0
- package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
- package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
- package/docs/articles/add-api-to-backstage.mdx +216 -0
- package/docs/articles/advanced-path-matching.mdx +139 -0
- package/docs/articles/api-key-administration.mdx +47 -0
- package/docs/articles/api-key-api.mdx +220 -0
- package/docs/articles/api-key-authentication.mdx +195 -0
- package/docs/articles/api-key-buckets.mdx +61 -0
- package/docs/articles/api-key-end-users.mdx +52 -0
- package/docs/articles/api-key-leak-detection.mdx +75 -0
- package/docs/articles/api-key-management.mdx +100 -0
- package/docs/articles/api-key-react-component.mdx +90 -0
- package/docs/articles/api-key-service-limits.mdx +14 -0
- package/docs/articles/archiving-requests-to-storage.mdx +119 -0
- package/docs/articles/branch-based-deployments.mdx +184 -0
- package/docs/articles/bypass-policy-for-testing.mdx +117 -0
- package/docs/articles/check-ip-address.mdx +17 -0
- package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
- package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
- package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
- package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
- package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
- package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
- package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
- package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
- package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
- package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
- package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
- package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
- package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
- package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
- package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
- package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
- package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
- package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
- package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
- package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
- package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
- package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
- package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
- package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
- package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
- package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
- package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
- package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
- package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
- package/docs/articles/composite-policy-reference.mdx +284 -0
- package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
- package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
- package/docs/articles/convert-urls-to-openapi.mdx +62 -0
- package/docs/articles/cors.mdx +447 -0
- package/docs/articles/custom-audit-log-policy.mdx +95 -0
- package/docs/articles/custom-ci-cd-azure.mdx +81 -0
- package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
- package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
- package/docs/articles/custom-ci-cd-github.mdx +99 -0
- package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
- package/docs/articles/custom-ci-cd.mdx +82 -0
- package/docs/articles/custom-code-patterns.md +418 -0
- package/docs/articles/custom-domains.mdx +258 -0
- package/docs/articles/custom-logging-example.mdx +139 -0
- package/docs/articles/ddos-protection.mdx +138 -0
- package/docs/articles/development-options.mdx +49 -0
- package/docs/articles/environment-variables.mdx +134 -0
- package/docs/articles/environments.mdx +143 -0
- package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
- package/docs/articles/github-deployment-testing.mdx +101 -0
- package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
- package/docs/articles/graphql-security.mdx +180 -0
- package/docs/articles/handling-form-data.mdx +61 -0
- package/docs/articles/health-checks.mdx +109 -0
- package/docs/articles/hosting-options.mdx +70 -0
- package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
- package/docs/articles/limits.mdx +98 -0
- package/docs/articles/local-development-debugging.mdx +44 -0
- package/docs/articles/local-development-env-variables.mdx +23 -0
- package/docs/articles/local-development-installing-packages.mdx +23 -0
- package/docs/articles/local-development-routes-designer.mdx +27 -0
- package/docs/articles/local-development-services.mdx +40 -0
- package/docs/articles/local-development-troubleshooting.mdx +56 -0
- package/docs/articles/local-development.mdx +81 -0
- package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
- package/docs/articles/log-plugin-datadog.mdx +84 -0
- package/docs/articles/log-plugin-dynatrace.mdx +75 -0
- package/docs/articles/log-plugin-gcp.mdx +75 -0
- package/docs/articles/log-plugin-loki.mdx +136 -0
- package/docs/articles/log-plugin-new-relic.mdx +84 -0
- package/docs/articles/log-plugin-splunk.mdx +104 -0
- package/docs/articles/log-plugin-sumo.mdx +73 -0
- package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
- package/docs/articles/log-request-response-data.mdx +398 -0
- package/docs/articles/logging.mdx +115 -0
- package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
- package/docs/articles/mcp-quickstart.mdx +135 -0
- package/docs/articles/metrics-plugins.mdx +371 -0
- package/docs/articles/migrate-from-apigee.md +408 -0
- package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
- package/docs/articles/migrate-from-azure-apim.md +292 -0
- package/docs/articles/migrate-from-kong.md +300 -0
- package/docs/articles/migration-overview.md +81 -0
- package/docs/articles/monetization/api-access.mdx +69 -0
- package/docs/articles/monetization/billing-models.md +520 -0
- package/docs/articles/monetization/developer-portal.md +167 -0
- package/docs/articles/monetization/features.mdx +98 -0
- package/docs/articles/monetization/index.mdx +113 -0
- package/docs/articles/monetization/meters.mdx +135 -0
- package/docs/articles/monetization/monetization-policy.md +314 -0
- package/docs/articles/monetization/plan-examples.mdx +366 -0
- package/docs/articles/monetization/plans.mdx +266 -0
- package/docs/articles/monetization/pricing-models.mdx +225 -0
- package/docs/articles/monetization/private-plans.md +154 -0
- package/docs/articles/monetization/quickstart.md +355 -0
- package/docs/articles/monetization/rate-cards.mdx +171 -0
- package/docs/articles/monetization/stripe-integration.md +195 -0
- package/docs/articles/monetization/subscription-lifecycle.md +298 -0
- package/docs/articles/monetization/tax-collection.md +166 -0
- package/docs/articles/monetization/troubleshooting.md +272 -0
- package/docs/articles/monetization-custom.mdx +71 -0
- package/docs/articles/monetization-integrations.mdx +104 -0
- package/docs/articles/monitoring-your-gateway.mdx +53 -0
- package/docs/articles/monorepo-deployment.mdx +350 -0
- package/docs/articles/multiple-auth-policies.mdx +81 -0
- package/docs/articles/non-standard-ports.mdx +30 -0
- package/docs/articles/oauth-authentication.mdx +54 -0
- package/docs/articles/openapi-server-urls.mdx +60 -0
- package/docs/articles/openapi.mdx +130 -0
- package/docs/articles/opentelemetry.mdx +250 -0
- package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
- package/docs/articles/performance-testing.mdx +304 -0
- package/docs/articles/plugin-akamai-api-security.mdx +76 -0
- package/docs/articles/plugin-azure-blob.mdx +73 -0
- package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
- package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
- package/docs/articles/policies.mdx +33 -0
- package/docs/articles/rename-or-move-project.mdx +39 -0
- package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
- package/docs/articles/routing.mdx +193 -0
- package/docs/articles/s3-signed-url-uploads.mdx +521 -0
- package/docs/articles/secure-tunnel.mdx +84 -0
- package/docs/articles/securing-backend-mtls.mdx +268 -0
- package/docs/articles/securing-your-backend.mdx +148 -0
- package/docs/articles/security.mdx +105 -0
- package/docs/articles/sharing-code-across-projects.mdx +412 -0
- package/docs/articles/source-control-setup-azure.mdx +13 -0
- package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
- package/docs/articles/source-control-setup-github.mdx +172 -0
- package/docs/articles/source-control-setup-gitlab.mdx +12 -0
- package/docs/articles/source-control.mdx +80 -0
- package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
- package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
- package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
- package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
- package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
- package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
- package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
- package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
- package/docs/articles/support.mdx +144 -0
- package/docs/articles/terraform.mdx +114 -0
- package/docs/articles/testing-graphql.mdx +34 -0
- package/docs/articles/testing.mdx +522 -0
- package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
- package/docs/articles/troubleshooting.md +302 -0
- package/docs/articles/tsconfig.mdx +105 -0
- package/docs/articles/tunnel-setup.mdx +195 -0
- package/docs/articles/tunnel-troubleshooting.mdx +50 -0
- package/docs/articles/update-zup-in-github-action.mdx +110 -0
- package/docs/articles/use-openapi-extension-data.mdx +79 -0
- package/docs/articles/users/multifactor-authentication.mdx +64 -0
- package/docs/articles/users/profile.mdx +13 -0
- package/docs/articles/versioning-on-zuplo.mdx +89 -0
- package/docs/articles/waf-ddos-akamai.md +133 -0
- package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
- package/docs/articles/waf-ddos-fastly.mdx +251 -0
- package/docs/articles/waf-ddos.mdx +140 -0
- package/docs/articles/zuplo-waf.mdx +156 -0
- package/docs/ask.mdx +3 -0
- package/docs/cli/authentication.mdx +56 -0
- package/docs/cli/connectivity.mdx +38 -0
- package/docs/cli/create-zuplo-api.mdx +80 -0
- package/docs/cli/delete.mdx +79 -0
- package/docs/cli/deploy.mdx +156 -0
- package/docs/cli/deploy.partial.mdx +46 -0
- package/docs/cli/dev.mdx +115 -0
- package/docs/cli/docs.mdx +66 -0
- package/docs/cli/editor.mdx +50 -0
- package/docs/cli/global-options.mdx +19 -0
- package/docs/cli/init.mdx +74 -0
- package/docs/cli/link.mdx +74 -0
- package/docs/cli/list.mdx +55 -0
- package/docs/cli/mtls-certificate-create.mdx +94 -0
- package/docs/cli/mtls-certificate-delete.mdx +55 -0
- package/docs/cli/mtls-certificate-describe.mdx +55 -0
- package/docs/cli/mtls-certificate-disable.mdx +55 -0
- package/docs/cli/mtls-certificate-list.mdx +47 -0
- package/docs/cli/mtls-certificate-update.mdx +72 -0
- package/docs/cli/openapi-convert.mdx +111 -0
- package/docs/cli/openapi-merge.mdx +138 -0
- package/docs/cli/openapi-merge.partial.mdx +29 -0
- package/docs/cli/openapi-overlay.mdx +123 -0
- package/docs/cli/overview.mdx +78 -0
- package/docs/cli/project-create.mdx +43 -0
- package/docs/cli/source-migrate.mdx +18 -0
- package/docs/cli/source-upgrade.mdx +41 -0
- package/docs/cli/test.mdx +70 -0
- package/docs/cli/test.partial.mdx +7 -0
- package/docs/cli/tunnel-create.mdx +53 -0
- package/docs/cli/tunnel-create.partial.mdx +9 -0
- package/docs/cli/tunnel-delete.mdx +35 -0
- package/docs/cli/tunnel-delete.partial.mdx +9 -0
- package/docs/cli/tunnel-describe.mdx +45 -0
- package/docs/cli/tunnel-describe.partial.mdx +5 -0
- package/docs/cli/tunnel-list.mdx +35 -0
- package/docs/cli/tunnel-list.partial.mdx +9 -0
- package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
- package/docs/cli/tunnel-rotate-token.mdx +39 -0
- package/docs/cli/tunnel-services-describe.mdx +45 -0
- package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
- package/docs/cli/tunnel-services-update.mdx +48 -0
- package/docs/cli/variable-create.mdx +91 -0
- package/docs/cli/variable-create.partial.mdx +5 -0
- package/docs/cli/variable-update.mdx +75 -0
- package/docs/cli/variable-update.partial.mdx +5 -0
- package/docs/concepts/api-keys.md +146 -0
- package/docs/concepts/authentication.mdx +109 -0
- package/docs/concepts/how-zuplo-works.mdx +120 -0
- package/docs/concepts/project-structure.mdx +174 -0
- package/docs/concepts/rate-limiting.md +246 -0
- package/docs/concepts/request-lifecycle.mdx +56 -0
- package/docs/concepts/source-control-and-deployment.mdx +229 -0
- package/docs/conferences/conference-prize-terms.mdx +80 -0
- package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
- package/docs/dedicated/akamai/architecture.mdx +280 -0
- package/docs/dedicated/akamai/caching.mdx +212 -0
- package/docs/dedicated/akamai/cdn.mdx +156 -0
- package/docs/dedicated/architecture.mdx +208 -0
- package/docs/dedicated/custom-domains.mdx +31 -0
- package/docs/dedicated/federated-gateways.mdx +80 -0
- package/docs/dedicated/networking.mdx +69 -0
- package/docs/dedicated/overview.mdx +80 -0
- package/docs/dedicated/source-control.mdx +63 -0
- package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
- package/docs/dev-portal/introduction.mdx +65 -0
- package/docs/dev-portal/local-development.mdx +72 -0
- package/docs/dev-portal/migration.mdx +526 -0
- package/docs/dev-portal/node-modules.mdx +45 -0
- package/docs/dev-portal/updating.mdx +28 -0
- package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
- package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
- package/docs/dev-portal/zudoku/components/button.mdx +132 -0
- package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
- package/docs/dev-portal/zudoku/components/card.mdx +104 -0
- package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
- package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
- package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
- package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
- package/docs/dev-portal/zudoku/components/head.mdx +199 -0
- package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
- package/docs/dev-portal/zudoku/components/input.mdx +96 -0
- package/docs/dev-portal/zudoku/components/label.mdx +86 -0
- package/docs/dev-portal/zudoku/components/link.mdx +242 -0
- package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
- package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
- package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
- package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
- package/docs/dev-portal/zudoku/components/select.mdx +176 -0
- package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
- package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
- package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
- package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
- package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
- package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
- package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
- package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
- package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
- package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
- package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
- package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
- package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
- package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
- package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
- package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
- package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
- package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
- package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
- package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
- package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
- package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
- package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
- package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
- package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
- package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
- package/docs/dev-portal/zudoku/configuration/search.md +169 -0
- package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
- package/docs/dev-portal/zudoku/configuration/site.md +124 -0
- package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
- package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
- package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
- package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
- package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
- package/docs/dev-portal/zudoku/extending/events.md +124 -0
- package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
- package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
- package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
- package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
- package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
- package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
- package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
- package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
- package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
- package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
- package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
- package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
- package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
- package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
- package/docs/dev-portal/zudoku/plugins.md +5 -0
- package/docs/dev-portal/zudoku/writing.mdx +72 -0
- package/docs/errors/bad-request.mdx +39 -0
- package/docs/errors/build-error.mdx +45 -0
- package/docs/errors/fatal-project-error.mdx +39 -0
- package/docs/errors/gateway-timeout.mdx +33 -0
- package/docs/errors/get-head-body-error.mdx +41 -0
- package/docs/errors/main-mod-error.mdx +40 -0
- package/docs/errors/no-project-set.mdx +41 -0
- package/docs/errors/not-found.mdx +43 -0
- package/docs/errors/rate-limit-exceeded.mdx +31 -0
- package/docs/errors/schema-validation-failed.mdx +51 -0
- package/docs/errors/system-configuration-error.mdx +44 -0
- package/docs/errors/unauthorized.mdx +50 -0
- package/docs/errors/unknown-error.mdx +42 -0
- package/docs/errors.mdx +14 -0
- package/docs/guides/canary-routing-for-employees.mdx +385 -0
- package/docs/guides/geolocation-backend-routing.mdx +404 -0
- package/docs/guides/modify-openapi-paths.mdx +371 -0
- package/docs/guides/openapi-overlays.mdx +492 -0
- package/docs/guides/overview.mdx +12 -0
- package/docs/guides/user-based-backend-routing.mdx +437 -0
- package/docs/handlers/aws-lambda.mdx +201 -0
- package/docs/handlers/custom-handler.mdx +112 -0
- package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
- package/docs/handlers/mcp-server.mdx +730 -0
- package/docs/handlers/openapi.mdx +78 -0
- package/docs/handlers/redirect.mdx +115 -0
- package/docs/handlers/system-handlers.mdx +41 -0
- package/docs/handlers/url-forward.mdx +204 -0
- package/docs/handlers/url-rewrite.mdx +224 -0
- package/docs/handlers/websocket-handler.mdx +154 -0
- package/docs/home.mdx +6 -0
- package/docs/managed-edge/overview.md +78 -0
- package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
- package/docs/mcp-server/custom-tools.mdx +487 -0
- package/docs/mcp-server/graphql.mdx +241 -0
- package/docs/mcp-server/introduction.mdx +122 -0
- package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
- package/docs/mcp-server/prompts.mdx +283 -0
- package/docs/mcp-server/resources.mdx +288 -0
- package/docs/mcp-server/testing.mdx +53 -0
- package/docs/mcp-server/tools.mdx +306 -0
- package/docs/policies/_index.md +92 -0
- package/docs/policies/ab-test-inbound/intro.md +8 -0
- package/docs/policies/ab-test-inbound/policy.ts +14 -0
- package/docs/policies/ab-test-inbound/schema.json +27 -0
- package/docs/policies/ab-test-outbound/intro.md +8 -0
- package/docs/policies/ab-test-outbound/policy.ts +26 -0
- package/docs/policies/ab-test-outbound/schema.json +27 -0
- package/docs/policies/acl-policy-inbound/intro.md +5 -0
- package/docs/policies/acl-policy-inbound/policy.ts +32 -0
- package/docs/policies/acl-policy-inbound/schema.json +52 -0
- package/docs/policies/akamai-ai-firewall/schema.json +98 -0
- package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
- package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
- package/docs/policies/api-key-inbound/doc.md +77 -0
- package/docs/policies/api-key-inbound/intro.md +30 -0
- package/docs/policies/api-key-inbound/schema.json +84 -0
- package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
- package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
- package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
- package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
- package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
- package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
- package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
- package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
- package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
- package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
- package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
- package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
- package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
- package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
- package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
- package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
- package/docs/policies/audit-log-inbound/doc.md +78 -0
- package/docs/policies/audit-log-inbound/intro.md +10 -0
- package/docs/policies/audit-log-inbound/schema.json +81 -0
- package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
- package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/authzen-inbound/doc.md +24 -0
- package/docs/policies/authzen-inbound/intro.md +31 -0
- package/docs/policies/authzen-inbound/schema.json +126 -0
- package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
- package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
- package/docs/policies/basic-auth-inbound/intro.md +9 -0
- package/docs/policies/basic-auth-inbound/schema.json +99 -0
- package/docs/policies/bot-detection-inbound/intro.md +4 -0
- package/docs/policies/bot-detection-inbound/schema.json +56 -0
- package/docs/policies/brownout-inbound/doc.md +55 -0
- package/docs/policies/brownout-inbound/intro.md +12 -0
- package/docs/policies/brownout-inbound/schema.json +115 -0
- package/docs/policies/caching-inbound/doc.md +209 -0
- package/docs/policies/caching-inbound/intro.md +23 -0
- package/docs/policies/caching-inbound/schema.json +98 -0
- package/docs/policies/change-method-inbound/schema.json +56 -0
- package/docs/policies/clear-headers-inbound/schema.json +59 -0
- package/docs/policies/clear-headers-outbound/schema.json +59 -0
- package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
- package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
- package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
- package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
- package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
- package/docs/policies/composite-inbound/doc.md +69 -0
- package/docs/policies/composite-inbound/intro.md +15 -0
- package/docs/policies/composite-inbound/schema.json +59 -0
- package/docs/policies/composite-outbound/intro.md +6 -0
- package/docs/policies/composite-outbound/schema.json +59 -0
- package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
- package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
- package/docs/policies/custom-code-inbound/doc.md +267 -0
- package/docs/policies/custom-code-inbound/intro.md +2 -0
- package/docs/policies/custom-code-inbound/schema.json +48 -0
- package/docs/policies/custom-code-outbound/doc.md +235 -0
- package/docs/policies/custom-code-outbound/intro.md +2 -0
- package/docs/policies/custom-code-outbound/schema.json +43 -0
- package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
- package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
- package/docs/policies/geo-filter-inbound/doc.md +33 -0
- package/docs/policies/geo-filter-inbound/schema.json +108 -0
- package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
- package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
- package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
- package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
- package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
- package/docs/policies/hmac-auth-inbound/doc.md +30 -0
- package/docs/policies/hmac-auth-inbound/intro.md +10 -0
- package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
- package/docs/policies/hmac-auth-inbound/schema.json +53 -0
- package/docs/policies/http-deprecation-outbound/doc.md +73 -0
- package/docs/policies/http-deprecation-outbound/schema.json +83 -0
- package/docs/policies/ip-restriction-inbound/intro.md +8 -0
- package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
- package/docs/policies/ip-restriction-inbound/schema.json +58 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
- package/docs/policies/ldap-auth-inbound/schema.json +56 -0
- package/docs/policies/mock-api-inbound/schema.json +72 -0
- package/docs/policies/moesif-inbound/doc.md +44 -0
- package/docs/policies/moesif-inbound/intro.md +6 -0
- package/docs/policies/moesif-inbound/schema.json +68 -0
- package/docs/policies/monetization-inbound/doc.md +87 -0
- package/docs/policies/monetization-inbound/intro.md +6 -0
- package/docs/policies/monetization-inbound/schema.json +102 -0
- package/docs/policies/mtls-auth-inbound/intro.md +6 -0
- package/docs/policies/mtls-auth-inbound/schema.json +68 -0
- package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
- package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
- package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
- package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
- package/docs/policies/openfga-authz-inbound/doc.md +207 -0
- package/docs/policies/openfga-authz-inbound/intro.md +17 -0
- package/docs/policies/openfga-authz-inbound/schema.json +191 -0
- package/docs/policies/openmeter-inbound/doc.md +163 -0
- package/docs/policies/openmeter-inbound/intro.md +18 -0
- package/docs/policies/openmeter-inbound/schema.json +183 -0
- package/docs/policies/prompt-injection-outbound/doc.md +106 -0
- package/docs/policies/prompt-injection-outbound/intro.md +4 -0
- package/docs/policies/prompt-injection-outbound/schema.json +74 -0
- package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
- package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
- package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
- package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
- package/docs/policies/quota-inbound/doc.md +235 -0
- package/docs/policies/quota-inbound/intro.md +7 -0
- package/docs/policies/quota-inbound/schema.json +133 -0
- package/docs/policies/rate-limit-inbound/doc.md +78 -0
- package/docs/policies/rate-limit-inbound/intro.md +30 -0
- package/docs/policies/rate-limit-inbound/schema.json +134 -0
- package/docs/policies/rbac-policy-inbound/intro.md +3 -0
- package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
- package/docs/policies/rbac-policy-inbound/schema.json +52 -0
- package/docs/policies/readme-metrics-inbound/doc.md +1 -0
- package/docs/policies/readme-metrics-inbound/intro.md +3 -0
- package/docs/policies/readme-metrics-inbound/schema.json +84 -0
- package/docs/policies/remove-headers-inbound/schema.json +59 -0
- package/docs/policies/remove-headers-outbound/schema.json +59 -0
- package/docs/policies/remove-query-params-inbound/schema.json +59 -0
- package/docs/policies/replace-string-outbound/schema.json +69 -0
- package/docs/policies/request-size-limit-inbound/schema.json +60 -0
- package/docs/policies/request-validation-inbound/doc.md +72 -0
- package/docs/policies/request-validation-inbound/intro.md +24 -0
- package/docs/policies/request-validation-inbound/schema.json +98 -0
- package/docs/policies/require-origin-inbound/intro.md +12 -0
- package/docs/policies/require-origin-inbound/schema.json +65 -0
- package/docs/policies/secret-masking-outbound/doc.md +41 -0
- package/docs/policies/secret-masking-outbound/intro.md +13 -0
- package/docs/policies/secret-masking-outbound/schema.json +65 -0
- package/docs/policies/semantic-cache-inbound/doc.md +63 -0
- package/docs/policies/semantic-cache-inbound/intro.md +4 -0
- package/docs/policies/semantic-cache-inbound/schema.json +179 -0
- package/docs/policies/set-body-inbound/intro.md +7 -0
- package/docs/policies/set-body-inbound/schema.json +56 -0
- package/docs/policies/set-headers-inbound/doc.md +41 -0
- package/docs/policies/set-headers-inbound/intro.md +2 -0
- package/docs/policies/set-headers-inbound/schema.json +83 -0
- package/docs/policies/set-headers-outbound/schema.json +83 -0
- package/docs/policies/set-query-params-inbound/schema.json +83 -0
- package/docs/policies/set-status-outbound/schema.json +62 -0
- package/docs/policies/sleep-inbound/schema.json +56 -0
- package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
- package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
- package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
- package/docs/policies/transform-body-inbound/intro.md +8 -0
- package/docs/policies/transform-body-inbound/policy.ts +16 -0
- package/docs/policies/transform-body-inbound/schema.json +27 -0
- package/docs/policies/transform-body-outbound/intro.md +8 -0
- package/docs/policies/transform-body-outbound/policy.ts +19 -0
- package/docs/policies/transform-body-outbound/schema.json +27 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
- package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
- package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
- package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
- package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
- package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
- package/docs/policies/xml-to-json-outbound/doc.md +71 -0
- package/docs/policies/xml-to-json-outbound/intro.md +4 -0
- package/docs/policies/xml-to-json-outbound/schema.json +117 -0
- package/docs/programmable-api/audit-log.mdx +74 -0
- package/docs/programmable-api/background-dispatcher.mdx +124 -0
- package/docs/programmable-api/background-loader.mdx +104 -0
- package/docs/programmable-api/cache.mdx +186 -0
- package/docs/programmable-api/compatibility-dates.mdx +201 -0
- package/docs/programmable-api/console-logging.mdx +48 -0
- package/docs/programmable-api/context-data.mdx +127 -0
- package/docs/programmable-api/custom-cors-policy.mdx +64 -0
- package/docs/programmable-api/environment.mdx +328 -0
- package/docs/programmable-api/hooks.mdx +569 -0
- package/docs/programmable-api/http-problems.mdx +385 -0
- package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
- package/docs/programmable-api/logger.mdx +223 -0
- package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
- package/docs/programmable-api/node-modules.mdx +67 -0
- package/docs/programmable-api/not-found-handler.mdx +47 -0
- package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
- package/docs/programmable-api/overview.mdx +213 -0
- package/docs/programmable-api/problem-response-formatter.mdx +183 -0
- package/docs/programmable-api/request-user.mdx +289 -0
- package/docs/programmable-api/reusing-code.mdx +26 -0
- package/docs/programmable-api/route-raw.mdx +55 -0
- package/docs/programmable-api/runtime-behaviors.mdx +25 -0
- package/docs/programmable-api/runtime-errors.mdx +246 -0
- package/docs/programmable-api/runtime-extensions.mdx +340 -0
- package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
- package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
- package/docs/programmable-api/web-crypto-apis.mdx +219 -0
- package/docs/programmable-api/web-standard-apis.mdx +109 -0
- package/docs/programmable-api/zone-cache.mdx +131 -0
- package/docs/programmable-api/zp-body-removed.mdx +32 -0
- package/docs/programmable-api/zuplo-context.mdx +414 -0
- package/docs/programmable-api/zuplo-id-token.mdx +90 -0
- package/docs/programmable-api/zuplo-json.mdx +91 -0
- package/docs/programmable-api/zuplo-request.mdx +200 -0
- package/docs/sample-apis.mdx +78 -0
- package/docs/self-hosted/overview.md +60 -0
- package/package.json +6 -5
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Developer Portal Setup
|
|
3
|
+
sidebar_label: Developer Portal
|
|
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
|
+
The Developer Portal is the self-serve storefront for your monetized API.
|
|
16
|
+
Customers browse plans, subscribe, manage their API keys, and monitor usage —
|
|
17
|
+
all without contacting your team. The portal is built on
|
|
18
|
+
[Zudoku](https://zudoku.dev), Zuplo's open-source API documentation framework.
|
|
19
|
+
|
|
20
|
+
## What the portal provides
|
|
21
|
+
|
|
22
|
+
Once monetization is enabled, the Developer Portal gains these pages:
|
|
23
|
+
|
|
24
|
+
**Pricing page** — Displays all published plans with feature comparisons,
|
|
25
|
+
pricing details, and subscribe buttons. Unauthenticated visitors see plans and
|
|
26
|
+
pricing. Authenticated users see which plan they're currently on and get
|
|
27
|
+
upgrade/downgrade options.
|
|
28
|
+
|
|
29
|
+
**Subscription management** — Lists all of a customer's subscriptions (current
|
|
30
|
+
and past), shows the current billing period, and provides
|
|
31
|
+
cancel/upgrade/downgrade actions.
|
|
32
|
+
|
|
33
|
+
**Usage dashboard** — Real-time view of quota consumption for the current
|
|
34
|
+
billing period. Shows each metered feature's usage against its entitlement, with
|
|
35
|
+
visual progress indicators.
|
|
36
|
+
|
|
37
|
+
**API key management** — API keys are displayed within the context of their
|
|
38
|
+
subscription. Each subscription has its own key, making it clear which key
|
|
39
|
+
corresponds to which plan. Customers can regenerate keys from this page.
|
|
40
|
+
|
|
41
|
+
## Prerequisites
|
|
42
|
+
|
|
43
|
+
Before setting up monetization in the portal, ensure:
|
|
44
|
+
|
|
45
|
+
1. **Authentication is configured** — The Developer Portal requires
|
|
46
|
+
authentication so it can identify customers. Auth0, Clerk, or custom OpenID
|
|
47
|
+
Connect providers are supported.
|
|
48
|
+
2. **Meters, features, and plans are created** — At least one plan must be
|
|
49
|
+
published.
|
|
50
|
+
3. **Stripe is connected** — The billing provider must be linked for payment
|
|
51
|
+
processing.
|
|
52
|
+
|
|
53
|
+
## Enabling monetization in the portal
|
|
54
|
+
|
|
55
|
+
Add the monetization plugin to your Developer Portal configuration. Open
|
|
56
|
+
`docs/zudoku.config.tsx` in your project and add the plugin:
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
import { zuploMonetizationPlugin } from "@zuplo/zudoku-plugin-monetization";
|
|
60
|
+
|
|
61
|
+
const config: ZudokuConfig = {
|
|
62
|
+
// ... your existing config
|
|
63
|
+
plugins: [
|
|
64
|
+
zuploMonetizationPlugin(),
|
|
65
|
+
// ... any other plugins you have
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Save and deploy. Once the plugin is enabled, ensure:
|
|
71
|
+
|
|
72
|
+
1. Stripe is connected (see [Stripe Integration](./stripe-integration.md))
|
|
73
|
+
2. At least one plan is published
|
|
74
|
+
|
|
75
|
+
## Configuring the pricing page
|
|
76
|
+
|
|
77
|
+
### Plan display order
|
|
78
|
+
|
|
79
|
+
Control plan display order in the Zuplo Portal under **Services →
|
|
80
|
+
Monetization**. Plans can be reordered using drag-and-drop.
|
|
81
|
+
|
|
82
|
+
### Feature comparison matrix
|
|
83
|
+
|
|
84
|
+
The pricing page automatically generates a feature comparison table from your
|
|
85
|
+
plans' rate cards and features. Each plan column shows:
|
|
86
|
+
|
|
87
|
+
- Monthly price (or "Free" / "Custom" for special tiers)
|
|
88
|
+
- Included entitlements for each metered feature (e.g., "50,000 API Calls")
|
|
89
|
+
- Static feature availability (checkmark/cross)
|
|
90
|
+
- Overage pricing where applicable
|
|
91
|
+
|
|
92
|
+
### Highlighted plans
|
|
93
|
+
|
|
94
|
+
To highlight a plan as popular, set `popular` to `true` in the plan's metadata.
|
|
95
|
+
The pricing page displays a "Popular" badge on highlighted plans.
|
|
96
|
+
|
|
97
|
+
### Custom plan descriptions
|
|
98
|
+
|
|
99
|
+
Plans display their `name` and `description` fields on the pricing page. Set
|
|
100
|
+
these when creating or updating a plan via the API.
|
|
101
|
+
|
|
102
|
+
### Handling free plans
|
|
103
|
+
|
|
104
|
+
Free plans that don't require a payment method skip the Stripe Checkout flow
|
|
105
|
+
entirely. Whether a plan requires a payment method is controlled by the
|
|
106
|
+
`paymentMethodRequired` property on the plan itself.
|
|
107
|
+
|
|
108
|
+
## Usage dashboard
|
|
109
|
+
|
|
110
|
+
The usage dashboard shows real-time quota consumption for each metered feature
|
|
111
|
+
on the customer's active subscription.
|
|
112
|
+
|
|
113
|
+
Each meter displays:
|
|
114
|
+
|
|
115
|
+
- Current usage count
|
|
116
|
+
- Entitlement (quota limit)
|
|
117
|
+
- Usage percentage as a progress bar
|
|
118
|
+
- Billing period start and end dates
|
|
119
|
+
- Overage amount (if applicable)
|
|
120
|
+
|
|
121
|
+
The usage dashboard updates on each page load, showing current consumption
|
|
122
|
+
against entitlements for all metered features.
|
|
123
|
+
|
|
124
|
+
## Subscription management
|
|
125
|
+
|
|
126
|
+
The subscriptions page shows:
|
|
127
|
+
|
|
128
|
+
- **Active subscriptions** with plan name, status, current period, and API key
|
|
129
|
+
- **API keys** nested under their subscription for clarity
|
|
130
|
+
- **Quick actions**: Upgrade, Downgrade, Cancel, Manage Billing (opens Stripe
|
|
131
|
+
Customer Portal)
|
|
132
|
+
- **Past subscriptions** with their final status and date range
|
|
133
|
+
|
|
134
|
+
### API key display
|
|
135
|
+
|
|
136
|
+
API keys are displayed within the context of their subscription. This is a
|
|
137
|
+
deliberate design choice — in the previous version, keys and subscriptions were
|
|
138
|
+
shown separately, causing confusion about which key was associated with which
|
|
139
|
+
plan.
|
|
140
|
+
|
|
141
|
+
Each subscription shows:
|
|
142
|
+
|
|
143
|
+
- The API key value (click to reveal/copy)
|
|
144
|
+
- Key creation date
|
|
145
|
+
- Key status (active/revoked)
|
|
146
|
+
- A "Regenerate" button
|
|
147
|
+
|
|
148
|
+
When a customer regenerates a key, the old key is immediately revoked and a new
|
|
149
|
+
one is issued. The new key inherits the same plan entitlements.
|
|
150
|
+
|
|
151
|
+
## Theming and branding
|
|
152
|
+
|
|
153
|
+
The Developer Portal inherits your project's Zudoku theme. Monetization pages
|
|
154
|
+
use the same fonts, colors, and layout as the rest of your portal.
|
|
155
|
+
|
|
156
|
+
## Custom domain
|
|
157
|
+
|
|
158
|
+
The Developer Portal runs at `https://your-project.zuplo.dev/docs` by default.
|
|
159
|
+
For production, configure a custom domain:
|
|
160
|
+
|
|
161
|
+
1. Navigate to **Settings → Custom Domains** in the Zuplo Portal
|
|
162
|
+
2. Add your domain (e.g., `developers.your-company.com`)
|
|
163
|
+
3. Configure the DNS records as instructed
|
|
164
|
+
4. SSL is provisioned automatically
|
|
165
|
+
|
|
166
|
+
Your monetization pages, including the Stripe Checkout redirect flow, work
|
|
167
|
+
seamlessly with custom domains.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Features
|
|
3
|
+
sidebar_label: Features
|
|
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
|
+
Features describe what your API offers to customers. They represent the
|
|
16
|
+
capabilities in your API product - access to specific endpoints, usage
|
|
17
|
+
allowances, premium functionality, or any other aspect you want to track or
|
|
18
|
+
gate.
|
|
19
|
+
|
|
20
|
+
## Metered vs Static Features
|
|
21
|
+
|
|
22
|
+
Features come in two types:
|
|
23
|
+
|
|
24
|
+
- **Metered features** are linked to a meter and track consumption. Use these
|
|
25
|
+
for usage-based capabilities like API calls, tokens, or data transfer.
|
|
26
|
+
- **Static features** have no meter attached. Use these for boolean capabilities
|
|
27
|
+
like "access to premium endpoints" or "priority support".
|
|
28
|
+
|
|
29
|
+
## Feature Properties
|
|
30
|
+
|
|
31
|
+
| Property | Required | Description |
|
|
32
|
+
| ----------- | -------- | ---------------------------------------------------------------------- |
|
|
33
|
+
| `key` | Yes | Unique identifier (lowercase alphanumeric and underscores, 1-64 chars) |
|
|
34
|
+
| `name` | Yes | Human-readable display name |
|
|
35
|
+
| `meterSlug` | No | Links this feature to a meter for usage tracking |
|
|
36
|
+
| `metadata` | No | Custom key-value pairs for your own use |
|
|
37
|
+
|
|
38
|
+
:::note
|
|
39
|
+
|
|
40
|
+
Features cannot be updated after creation - they can only be archived. Plan your
|
|
41
|
+
feature structure carefully before creating them.
|
|
42
|
+
|
|
43
|
+
:::
|
|
44
|
+
|
|
45
|
+
## Creating a Feature
|
|
46
|
+
|
|
47
|
+
Create a metered feature linked to an API requests meter:
|
|
48
|
+
|
|
49
|
+
```shell
|
|
50
|
+
curl \
|
|
51
|
+
https://dev.zuplo.com/v3/metering/$BUCKET_ID/features \
|
|
52
|
+
--request POST \
|
|
53
|
+
--header "Authorization: Bearer $ZAPI_KEY" \
|
|
54
|
+
--header "Content-Type: application/json" \
|
|
55
|
+
--data @- << EOF
|
|
56
|
+
{
|
|
57
|
+
"key": "api_calls",
|
|
58
|
+
"name": "API Calls",
|
|
59
|
+
"meterSlug": "api_requests"
|
|
60
|
+
}
|
|
61
|
+
EOF
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The response includes the created feature:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
|
|
69
|
+
"key": "api_calls",
|
|
70
|
+
"name": "API Calls",
|
|
71
|
+
"meterSlug": "api_requests",
|
|
72
|
+
"createdAt": "2024-01-01T01:01:01.001Z",
|
|
73
|
+
"updatedAt": "2024-01-01T01:01:01.001Z"
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Creating a Static Feature
|
|
78
|
+
|
|
79
|
+
For features without usage tracking, omit the `meterSlug`:
|
|
80
|
+
|
|
81
|
+
```shell
|
|
82
|
+
curl \
|
|
83
|
+
https://dev.zuplo.com/v3/metering/$BUCKET_ID/features \
|
|
84
|
+
--request POST \
|
|
85
|
+
--header "Authorization: Bearer $ZAPI_KEY" \
|
|
86
|
+
--header "Content-Type: application/json" \
|
|
87
|
+
--data @- << EOF
|
|
88
|
+
{
|
|
89
|
+
"key": "priority_support",
|
|
90
|
+
"name": "Priority Support"
|
|
91
|
+
}
|
|
92
|
+
EOF
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## API Reference
|
|
96
|
+
|
|
97
|
+
For complete API operations (list, get, archive), see the
|
|
98
|
+
[Features API Reference](../../api/metering-features).
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: API Monetization with Zuplo
|
|
3
|
+
sidebar_label: Overview
|
|
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
|
+
Zuplo's API Monetization lets you charge for your API directly from your gateway
|
|
16
|
+
— no external metering services, no webhook spaghetti, no state sync headaches.
|
|
17
|
+
Define your pricing, connect Stripe, and start billing. Zuplo handles metering,
|
|
18
|
+
quota enforcement, and subscription management as a single integrated system.
|
|
19
|
+
|
|
20
|
+
## Why monetize at the gateway?
|
|
21
|
+
|
|
22
|
+
Most teams attempting API monetization cobble together three separate systems: a
|
|
23
|
+
metering service to count usage, a billing platform to charge customers, and
|
|
24
|
+
custom gateway logic to enforce limits. These systems inevitably drift apart. A
|
|
25
|
+
customer exceeds their quota but metering hasn't synced yet. A subscription
|
|
26
|
+
cancels in Stripe but the gateway still grants access. A webhook fails silently
|
|
27
|
+
and invoices come out wrong.
|
|
28
|
+
|
|
29
|
+
Zuplo eliminates this by making the gateway the single source of truth. Every
|
|
30
|
+
request that hits your API is metered, enforced, and billed through one system.
|
|
31
|
+
When a customer's quota runs out, they get a `429` immediately — not five
|
|
32
|
+
minutes later when a batch job catches up.
|
|
33
|
+
|
|
34
|
+
## Core concepts
|
|
35
|
+
|
|
36
|
+
Zuplo Monetization is built on four primitives:
|
|
37
|
+
|
|
38
|
+
**[Meters](./monetization/meters.mdx)** count things. Every API call, every
|
|
39
|
+
token consumed, every byte transferred. You define what to count and how to
|
|
40
|
+
aggregate it (count events or sum a value from the response).
|
|
41
|
+
|
|
42
|
+
**[Features](./monetization/features.mdx)** connect meters to your product
|
|
43
|
+
catalog. A metered feature like "API Calls" links to a meter and enables quota
|
|
44
|
+
tracking. A static feature like "Priority Support" is a simple on/off toggle —
|
|
45
|
+
the customer either has it or doesn't.
|
|
46
|
+
|
|
47
|
+
**[Plans](./monetization/plans.mdx)** are subscription tiers your customers
|
|
48
|
+
purchase. Each plan contains one or more phases with rate cards that define
|
|
49
|
+
pricing and entitlements. Plans support versioning, multiple currencies, and
|
|
50
|
+
configurable billing cadences (monthly, quarterly, annual).
|
|
51
|
+
|
|
52
|
+
**[Rate cards](./monetization/rate-cards.mdx)** are the pricing atoms within a
|
|
53
|
+
plan phase. Each rate card ties a feature to a price and specifies the
|
|
54
|
+
entitlement: how much the customer gets, whether the limit is hard (blocked at
|
|
55
|
+
quota) or soft (overage billing), and what
|
|
56
|
+
[pricing model](./monetization/pricing-models.mdx) applies (flat fee, per-unit,
|
|
57
|
+
tiered, volume, or package).
|
|
58
|
+
|
|
59
|
+
## Supported billing models
|
|
60
|
+
|
|
61
|
+
| Model | How it works | Example |
|
|
62
|
+
| ------------------------ | ------------------------------------------------------------------------------- | --------------------------------------------- |
|
|
63
|
+
| **Fixed monthly quotas** | Flat monthly price with included allowance. Hard limit at quota. | $99/mo for 10,000 requests |
|
|
64
|
+
| **Pay-as-you-go** | No upfront cost. Bill in arrears for actual usage. | $0.01 per request, billed monthly |
|
|
65
|
+
| **Quotas with overages** | Monthly price for base allowance. Overage billed per-unit in arrears. | $99/mo for 10K requests + $0.005/request over |
|
|
66
|
+
| **Credits / tokens** | Prepaid credit bundles that burn down with usage. Service stops when exhausted. | Buy 50,000 credits for $49 |
|
|
67
|
+
|
|
68
|
+
Plans can combine multiple billing models and support free tiers, free trials
|
|
69
|
+
with automatic conversion to paid, and multiple subscriptions per customer.
|
|
70
|
+
|
|
71
|
+
## What you get
|
|
72
|
+
|
|
73
|
+
- **Built-in metering** — Count requests, tokens, bytes, or any custom
|
|
74
|
+
dimension. No external metering service required.
|
|
75
|
+
- **Real-time quota enforcement** — Customers hitting their limit get a
|
|
76
|
+
`429 Too Many Requests` response instantly, not after a batch sync.
|
|
77
|
+
- **Stripe billing integration** — Subscriptions, invoicing, and payment
|
|
78
|
+
collection handled by Stripe. Zuplo keeps access state synchronized
|
|
79
|
+
automatically.
|
|
80
|
+
- **Self-serve Developer Portal** — Pricing page, plan selection, checkout,
|
|
81
|
+
subscription management, usage dashboards, and API key management built into
|
|
82
|
+
the Zudoku-powered portal.
|
|
83
|
+
- **Programmable everything** — Custom policies, webhooks, and the Zuplo
|
|
84
|
+
Developer API give you full control when the defaults aren't enough.
|
|
85
|
+
- **Trial and phase support** — Model free trials that auto-convert to paid
|
|
86
|
+
plans without writing transition logic.
|
|
87
|
+
|
|
88
|
+
## Getting started
|
|
89
|
+
|
|
90
|
+
Follow the [Quickstart Guide](./monetization/quickstart.md) to go from zero to a
|
|
91
|
+
monetized API in under 30 minutes. You'll create meters, define a plan with
|
|
92
|
+
pricing, wire up Stripe, and configure your gateway to enforce quotas.
|
|
93
|
+
|
|
94
|
+
## Documentation map
|
|
95
|
+
|
|
96
|
+
| Document | What it covers |
|
|
97
|
+
| ---------------------------------------------------------------------- | -------------------------------------------------------- |
|
|
98
|
+
| [Quickstart](./monetization/quickstart.md) | End-to-end setup in 30 minutes |
|
|
99
|
+
| [Meters](./monetization/meters.mdx) | How meters track usage dimensions |
|
|
100
|
+
| [Features](./monetization/features.mdx) | Connecting meters to your product catalog |
|
|
101
|
+
| [Plans](./monetization/plans.mdx) | Plan structure, phases, lifecycle, and publishing |
|
|
102
|
+
| [Rate Cards](./monetization/rate-cards.mdx) | Pricing and entitlements within plans |
|
|
103
|
+
| [Pricing Models](./monetization/pricing-models.mdx) | Flat, per-unit, tiered, volume, and package pricing |
|
|
104
|
+
| [Billing Models Guide](./monetization/billing-models.md) | Choosing the right pricing strategy for your business |
|
|
105
|
+
| [Stripe Integration](./monetization/stripe-integration.md) | Connecting Stripe and managing payments |
|
|
106
|
+
| [Developer Portal Setup](./monetization/developer-portal.md) | Configuring the self-serve portal for your customers |
|
|
107
|
+
| [Monetization Policy Reference](./monetization/monetization-policy.md) | Configuring the `MonetizationInboundPolicy` per-route |
|
|
108
|
+
| [API Access](./monetization/api-access.mdx) | Authentication, buckets, and API reference links |
|
|
109
|
+
| [Subscription Lifecycle](./monetization/subscription-lifecycle.md) | Managing trials, upgrades, downgrades, and cancellations |
|
|
110
|
+
| [Private Plans](./monetization/private-plans.md) | Invite-only plans for specific users |
|
|
111
|
+
| [Tax Collection](./monetization/tax-collection.md) | Enabling VAT, sales tax, or GST via Stripe Tax |
|
|
112
|
+
| [Plan Examples](./monetization/plan-examples.mdx) | Real-world plan configurations |
|
|
113
|
+
| [Troubleshooting](./monetization/troubleshooting.md) | Common issues, debugging, and FAQ |
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Meters
|
|
3
|
+
sidebar_label: Meters
|
|
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
|
+
Meters aggregate usage data from your API. They watch for specific event types,
|
|
16
|
+
extract numeric values, and sum them over configurable time windows.
|
|
17
|
+
|
|
18
|
+
## How Meters Work
|
|
19
|
+
|
|
20
|
+
A meter is configured with:
|
|
21
|
+
|
|
22
|
+
- **Event type** - Which events to process (e.g., `requests`, `tokens`)
|
|
23
|
+
- **Value property** - JSONPath to extract the numeric value from event data.
|
|
24
|
+
Events use `$.total` as the standard value property.
|
|
25
|
+
- **Aggregation** - How to combine values (typically `SUM`)
|
|
26
|
+
|
|
27
|
+
When events are ingested, the meter matches events by type, extracts the
|
|
28
|
+
specified value, and aggregates it per customer over time.
|
|
29
|
+
|
|
30
|
+
## Common Examples
|
|
31
|
+
|
|
32
|
+
### API Request Counting
|
|
33
|
+
|
|
34
|
+
Track the total number of API requests:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"slug": "requests",
|
|
39
|
+
"name": "API Requests",
|
|
40
|
+
"eventType": "requests",
|
|
41
|
+
"aggregation": "SUM",
|
|
42
|
+
"valueProperty": "$.total"
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Each event contains the subscription ID as the `subject` and a `total` field
|
|
47
|
+
with the quantity to record:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"type": "requests",
|
|
52
|
+
"subject": "sub_xxxxxxxx",
|
|
53
|
+
"source": "monetization-policy",
|
|
54
|
+
"data": {
|
|
55
|
+
"total": 1
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Token Usage
|
|
61
|
+
|
|
62
|
+
Track token consumption for AI applications:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"slug": "tokens",
|
|
67
|
+
"name": "Token Usage",
|
|
68
|
+
"eventType": "tokens",
|
|
69
|
+
"aggregation": "SUM",
|
|
70
|
+
"valueProperty": "$.total"
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Each event reports a fixed quantity per request. For example, if a meter is
|
|
75
|
+
configured to report 50 tokens per request:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"type": "tokens",
|
|
80
|
+
"subject": "sub_xxxxxxxx",
|
|
81
|
+
"source": "monetization-policy",
|
|
82
|
+
"data": {
|
|
83
|
+
"total": 50
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Data Transfer
|
|
89
|
+
|
|
90
|
+
Track bytes transferred:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"slug": "data_transfer",
|
|
95
|
+
"name": "Data Transfer (bytes)",
|
|
96
|
+
"eventType": "data_transfer",
|
|
97
|
+
"aggregation": "SUM",
|
|
98
|
+
"valueProperty": "$.total"
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Naming Consistency
|
|
103
|
+
|
|
104
|
+
The meter `eventType` must match the key used in three places:
|
|
105
|
+
|
|
106
|
+
1. The meter's `slug` and `eventType`
|
|
107
|
+
2. The key in the monetization policy's `meters` configuration
|
|
108
|
+
3. The `featureKey` on the plan's entitlement
|
|
109
|
+
|
|
110
|
+
If these don't match, usage is not tracked correctly against the subscription's
|
|
111
|
+
entitlements.
|
|
112
|
+
|
|
113
|
+
## Creating a Meter
|
|
114
|
+
|
|
115
|
+
```shell
|
|
116
|
+
curl \
|
|
117
|
+
https://dev.zuplo.com/v3/metering/$BUCKET_ID/meters \
|
|
118
|
+
--request POST \
|
|
119
|
+
--header "Authorization: Bearer $ZAPI_KEY" \
|
|
120
|
+
--header "Content-Type: application/json" \
|
|
121
|
+
--data @- << EOF
|
|
122
|
+
{
|
|
123
|
+
"slug": "requests",
|
|
124
|
+
"name": "API Requests",
|
|
125
|
+
"eventType": "requests",
|
|
126
|
+
"aggregation": "SUM",
|
|
127
|
+
"valueProperty": "$.total"
|
|
128
|
+
}
|
|
129
|
+
EOF
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## API Reference
|
|
133
|
+
|
|
134
|
+
For complete API operations (list, get, update, delete), see the
|
|
135
|
+
[Meters API Reference](../../api/metering-meters).
|