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,355 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quickstart — Monetize Your API
|
|
3
|
+
sidebar_label: Quickstart
|
|
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).
|
|
11
|
+
|
|
12
|
+
:::
|
|
13
|
+
|
|
14
|
+
This guide walks you through setting up API monetization from scratch.
|
|
15
|
+
|
|
16
|
+
## Outcomes
|
|
17
|
+
|
|
18
|
+
By the end of this quickstart, you have:
|
|
19
|
+
|
|
20
|
+
- **A pricing page** in your Developer Portal where customers can browse and
|
|
21
|
+
compare plans
|
|
22
|
+
- **Stripe-powered checkout** so customers can subscribe and pay directly
|
|
23
|
+
- **Plan-scoped API keys** that are automatically issued when a customer
|
|
24
|
+
subscribes
|
|
25
|
+
- **Usage metering** that tracks API calls per subscription in real time
|
|
26
|
+
- **Quota enforcement** that limits or bills for overages based on each
|
|
27
|
+
customer's plan
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
You'll set up two example plans (Developer and Pro) with tiered pricing,
|
|
32
|
+
included request quotas, and per-request overage billing.
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- A Zuplo account
|
|
37
|
+
- A [Stripe account](https://stripe.com) (sandbox mode is fine for setup)
|
|
38
|
+
|
|
39
|
+
## Step 1: Create a new project
|
|
40
|
+
|
|
41
|
+
:::caution
|
|
42
|
+
|
|
43
|
+
Use a fresh project for this guide. Since monetization is still in preview, this
|
|
44
|
+
keeps your existing work safe from any breaking changes.
|
|
45
|
+
|
|
46
|
+
:::
|
|
47
|
+
|
|
48
|
+
1. Go to [portal.zuplo.com](https://portal.zuplo.com) and sign in.
|
|
49
|
+
2. Click **New Project** in the top right corner.
|
|
50
|
+
3. Enter a **Project name** or use the randomly chosen name Zuplo provides.
|
|
51
|
+
4. Select **Starter Project (Recommended)** — it comes with endpoints ready to
|
|
52
|
+
monetize.
|
|
53
|
+
5. (Optional) Connect your project to source control by clicking the **Connect
|
|
54
|
+
to GitHub** button on the project page, or by following the
|
|
55
|
+
[GitHub setup guide](../source-control-setup-github.md). This isn't required
|
|
56
|
+
for monetization, but is recommended for managing your project long-term.
|
|
57
|
+
|
|
58
|
+
## Step 2: Enable the monetization plugin
|
|
59
|
+
|
|
60
|
+
Add the monetization plugin to your Developer Portal configuration.
|
|
61
|
+
|
|
62
|
+
1. In your project, navigate to the **Code** tab.
|
|
63
|
+
2. In the file tree, open `docs/zudoku.config.tsx`.
|
|
64
|
+
3. Add the monetization plugin import at the top of the file:
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
import { zuploMonetizationPlugin } from "@zuplo/zudoku-plugin-monetization";
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
4. Add the plugin to the `plugins` array in your config:
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
const config: ZudokuConfig = {
|
|
74
|
+
// ... your existing config
|
|
75
|
+
plugins: [
|
|
76
|
+
zuploMonetizationPlugin(),
|
|
77
|
+
// ... any other plugins
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
5. Save the file and wait for the environment to deploy.
|
|
83
|
+
|
|
84
|
+
## Step 3: Configure the Monetization Service
|
|
85
|
+
|
|
86
|
+
1. Navigate to the **Services** tab in your project.
|
|
87
|
+
2. Select the environment you want to configure (e.g., **Working Copy**).
|
|
88
|
+
3. Click **Configure** on the **Monetization Service** card.
|
|
89
|
+
|
|
90
|
+
## Step 4: Create a meter
|
|
91
|
+
|
|
92
|
+
Meters track what you want to measure — API calls, tokens processed, data
|
|
93
|
+
transferred, etc.
|
|
94
|
+
|
|
95
|
+
1. In the Monetization Service, click the **Meters** tab.
|
|
96
|
+
2. Click **Add Meter** and select **Blank Meter**.
|
|
97
|
+
3. Fill in the meter details:
|
|
98
|
+
- **Name**: `Requests`
|
|
99
|
+
- **Event**: `requests` — the type of event this meter listens for.
|
|
100
|
+
- **Description**: `API Requests`
|
|
101
|
+
- **Aggregation**: `SUM` — how values are combined (other options include
|
|
102
|
+
`COUNT`, `MAX`, etc.).
|
|
103
|
+
- **Value Property**: `$.total` — a JSONPath expression that extracts the
|
|
104
|
+
value from each event.
|
|
105
|
+
4. Click **Add Meter** to save.
|
|
106
|
+
|
|
107
|
+
## Step 5: Create features
|
|
108
|
+
|
|
109
|
+
Features define what your customers get access to. They can be tied to meters
|
|
110
|
+
(for usage-based features) or standalone (for boolean features like "Metadata
|
|
111
|
+
Support").
|
|
112
|
+
|
|
113
|
+
In the Monetization Service, click the **Features** tab, then click **Add
|
|
114
|
+
Feature** for each of the following:
|
|
115
|
+
|
|
116
|
+
| Name | Key | Linked Meter | Purpose |
|
|
117
|
+
| ---------------- | ------------------ | ------------ | ----------------------------- |
|
|
118
|
+
| API Requests | `requests` | Requests | Usage-based (linked to meter) |
|
|
119
|
+
| Monthly Fee | `monthly_fee` | — | Flat-rate billing |
|
|
120
|
+
| Metadata Support | `metadata_support` | — | Boolean on/off feature |
|
|
121
|
+
|
|
122
|
+
:::tip{title="Key Naming Conventions"}
|
|
123
|
+
|
|
124
|
+
When creating features that are metered, the key must match the key you set for
|
|
125
|
+
the associated meter. For example, if your Requests meter key is `requests`,
|
|
126
|
+
then your Requests feature key must also be `requests`.
|
|
127
|
+
|
|
128
|
+
:::
|
|
129
|
+
|
|
130
|
+
## Step 6: Create plans
|
|
131
|
+
|
|
132
|
+
Plans bring together your features with pricing and entitlements. Create two
|
|
133
|
+
plans to give your customers options.
|
|
134
|
+
|
|
135
|
+
### Create the Developer plan
|
|
136
|
+
|
|
137
|
+
1. In the **Plans** tab, click **Add Plan**.
|
|
138
|
+
2. Fill in the plan details:
|
|
139
|
+
- **Plan Name**: `Developer`
|
|
140
|
+
- **Key**: `developer`
|
|
141
|
+
3. Click **Create Draft**.
|
|
142
|
+
4. Configure the rate cards by selecting features from the **Add feature**
|
|
143
|
+
dropdown in the **Features & Rate Cards**:
|
|
144
|
+
|
|
145
|
+

|
|
146
|
+
|
|
147
|
+
Click on the **Monthly Fee** feature and set it up as shown below:
|
|
148
|
+
|
|
149
|
+
**Monthly Fee**:
|
|
150
|
+
|
|
151
|
+
| Setting | Value |
|
|
152
|
+
| --------------- | -------------- |
|
|
153
|
+
| Pricing Model | Flat fee |
|
|
154
|
+
| Billing Cadence | Monthly |
|
|
155
|
+
| Payment Term | In advance |
|
|
156
|
+
| Price | $9.99 |
|
|
157
|
+
| Entitlement | No entitlement |
|
|
158
|
+
|
|
159
|
+
Next, click **Add feature** again and choose the **API Requests** feature and
|
|
160
|
+
set it up as shown below:
|
|
161
|
+
|
|
162
|
+
**API Requests**:
|
|
163
|
+
|
|
164
|
+
| Setting | Value |
|
|
165
|
+
| --------------- | ------------------------------------------------------------------------------------------------- |
|
|
166
|
+
| Pricing Model | Tiered |
|
|
167
|
+
| Billing Cadence | Monthly |
|
|
168
|
+
| Price Mode | Graduated |
|
|
169
|
+
| Tier 1 | Click `+ add another tier` and set First Unit `0`, Last Unit `1000`, Unit Price $0, Flat Price $0 |
|
|
170
|
+
| Tier 2 | First Unit `1001`, to infinity, Unit Price $0.10, Flat Price $0 |
|
|
171
|
+
| Entitlement | Metered (track usage) |
|
|
172
|
+
| Usage Limit | `1000` |
|
|
173
|
+
| Soft limit | Enabled |
|
|
174
|
+
|
|
175
|
+
Your **Features & Rate Cards** section should now look like this:
|
|
176
|
+
|
|
177
|
+

|
|
178
|
+
|
|
179
|
+
5. Click **Save**.
|
|
180
|
+
|
|
181
|
+
### Create additional plans
|
|
182
|
+
|
|
183
|
+
You don't have to complete all the above steps again to create the next plan.
|
|
184
|
+
You can duplicate a plan you already created.
|
|
185
|
+
|
|
186
|
+
Click the **Pricing** tab in the left sidebar, then on the **...** context menu
|
|
187
|
+
on the right of the Developer Plan.
|
|
188
|
+
|
|
189
|
+

|
|
190
|
+
|
|
191
|
+
This will create a copy of the Developer plan that you can rename.
|
|
192
|
+
|
|
193
|
+
Using the values in the table below, set up a new plan named **Pro**.
|
|
194
|
+
|
|
195
|
+
The only structural differences are the pricing, request amounts, and the
|
|
196
|
+
addition of a **Metadata Support** rate card (set **Pricing Model** to `Free`
|
|
197
|
+
and **Entitlement** to `Boolean (on/off)`).
|
|
198
|
+
|
|
199
|
+
| Plan | Key | Monthly Fee | Included Requests | Overage Rate | Metadata Support |
|
|
200
|
+
| --------- | ----------- | ----------- | ----------------- | ------------ | ---------------- |
|
|
201
|
+
| Developer | `developer` | $9.99 | 1,000 | $0.10/req | No |
|
|
202
|
+
| Pro | `pro` | $19.99 | 5,000 | $0.05/req | Yes |
|
|
203
|
+
|
|
204
|
+
For the **API Requests** rate card on each plan, set **Tier 1** Last Unit to the
|
|
205
|
+
"Included Requests" value and **Tier 2** Unit Price to the "Overage Rate" value.
|
|
206
|
+
The **Usage Limit** should match the "Included Requests" value. Enable **Soft
|
|
207
|
+
limit** on all plans.
|
|
208
|
+
|
|
209
|
+

|
|
210
|
+
|
|
211
|
+
### Reorder your plans
|
|
212
|
+
|
|
213
|
+
The **Pricing Table** in the left sidebar determines how plans appear on the
|
|
214
|
+
pricing page. **Drag and drop** the plans using the handle on the top-left
|
|
215
|
+
corner of each card to reorder them as **Developer** and **Pro**.
|
|
216
|
+
|
|
217
|
+

|
|
218
|
+
|
|
219
|
+
### Publish your plans
|
|
220
|
+
|
|
221
|
+
Each plan starts as a draft. Publish each one before customers can subscribe.
|
|
222
|
+
|
|
223
|
+
1. On the **Pricing** tab, click the **...** context menu on the plan you want
|
|
224
|
+
to publish.
|
|
225
|
+
2. Select **Publish Plan**.
|
|
226
|
+
3. Repeat for all plans.
|
|
227
|
+
|
|
228
|
+
For more plan configurations (including trial periods and multiple tiers), see
|
|
229
|
+
[Plan Examples](./plan-examples.mdx).
|
|
230
|
+
|
|
231
|
+
## Step 7: Connect Stripe
|
|
232
|
+
|
|
233
|
+
For testing, use Stripe's sandbox mode so you can simulate payments without real
|
|
234
|
+
charges.
|
|
235
|
+
|
|
236
|
+
1. Go to your [Stripe Dashboard](https://dashboard.stripe.com) and make sure
|
|
237
|
+
you're in **sandbox mode** (toggle in the top-right corner).
|
|
238
|
+
2. Go to **Developers > API keys** and copy your **Secret key** (starts with
|
|
239
|
+
`sk_test_`).
|
|
240
|
+
3. In the Monetization Service, click **Payment Provider** in the left sidebar.
|
|
241
|
+
4. Click **Configure** on the Stripe card.
|
|
242
|
+
5. Enter a **Name** and paste your **Stripe API Key**, then click **Save**.
|
|
243
|
+
|
|
244
|
+
:::warning
|
|
245
|
+
|
|
246
|
+
Always use your Stripe **test** key (`sk_test_...`) while following this guide.
|
|
247
|
+
This creates a sandbox environment where you can safely test subscriptions and
|
|
248
|
+
payments without processing real transactions. When you're ready for production,
|
|
249
|
+
update to your live key (`sk_live_...`).
|
|
250
|
+
|
|
251
|
+
:::
|
|
252
|
+
|
|
253
|
+
## Step 8: Add the monetization policy
|
|
254
|
+
|
|
255
|
+
The monetization policy checks entitlements and tracks usage on every request.
|
|
256
|
+
|
|
257
|
+
### Add the policy to your routes
|
|
258
|
+
|
|
259
|
+
Click on the **Code** tab and select **policies.json** from the **config**
|
|
260
|
+
directory.
|
|
261
|
+
|
|
262
|
+
1. Click on **Create Policy > Create Inbound Policy**.
|
|
263
|
+
2. Select the **Monetization** policy from the list of policies, and click
|
|
264
|
+
**Continue**.
|
|
265
|
+
|
|
266
|
+

|
|
267
|
+
|
|
268
|
+
3. In the **Meters** configuration field, you can keep the default value of
|
|
269
|
+
`requests` set `1` to match the meter you created in _Step 4_. This field
|
|
270
|
+
maps the meter slug to the number of units each request consumes.
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"export": "MonetizationInboundPolicy",
|
|
275
|
+
"module": "$import(@zuplo/runtime)",
|
|
276
|
+
"options": {
|
|
277
|
+
"cacheTtlSeconds": 60,
|
|
278
|
+
"meters": {
|
|
279
|
+
"requests": 1
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
4. Click on **Create Policy**.
|
|
286
|
+
|
|
287
|
+
### Apply the policy to routes
|
|
288
|
+
|
|
289
|
+
Next, you need to apply the Monetization policy to some or all of your routes.
|
|
290
|
+
|
|
291
|
+
1. Click on the three-dot menu on the **monetization-inbound** policy.
|
|
292
|
+
2. Select **Apply Policy**.
|
|
293
|
+
3. Choose individual routes that you want to count towards the metered requests,
|
|
294
|
+
or click **Select All** to add the policy to every route in the project.
|
|
295
|
+
|
|
296
|
+

|
|
297
|
+
|
|
298
|
+
4. Click on **Apply**.
|
|
299
|
+
5. Click on **Save** in your project to publish the changes
|
|
300
|
+
|
|
301
|
+
:::note
|
|
302
|
+
|
|
303
|
+
The `MonetizationInboundPolicy` handles API key authentication internally. You
|
|
304
|
+
do not need a separate `api-key-auth` policy on monetized routes.
|
|
305
|
+
|
|
306
|
+
:::
|
|
307
|
+
|
|
308
|
+
## Step 9: Deploy and test
|
|
309
|
+
|
|
310
|
+
With the Monetization policy live on your API routes, you can now test the
|
|
311
|
+
end-to-end flow.
|
|
312
|
+
|
|
313
|
+
### Subscribe to a plan
|
|
314
|
+
|
|
315
|
+
1. Open the **Pricing** tab in your Developer Portal (you can get the URL for
|
|
316
|
+
this from the **Deployment URLs** dropdown in your project).
|
|
317
|
+
2. Click **Subscribe** on one of the available plans.
|
|
318
|
+
3. Enter payment information. Since you're using Stripe sandbox, use
|
|
319
|
+
[test card numbers](https://docs.stripe.com/testing) — no real charges are
|
|
320
|
+
made.
|
|
321
|
+
4. After the subscription is confirmed, you can see your usage dashboard and API
|
|
322
|
+
key.
|
|
323
|
+
|
|
324
|
+

|
|
325
|
+
|
|
326
|
+
### Test: Make API calls
|
|
327
|
+
|
|
328
|
+
Copy the API key from your subscription and make requests:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
curl --request GET \
|
|
332
|
+
--url https://<your-gateway-url>/todos \
|
|
333
|
+
--header 'Authorization: Bearer <your-api-key>'
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Head back to the Developer Portal to see your usage dashboard update with each
|
|
337
|
+
call. You should see the `API Requests` meter count increase toward your plan's
|
|
338
|
+
limit.
|
|
339
|
+
|
|
340
|
+

|
|
341
|
+
|
|
342
|
+
## Next steps
|
|
343
|
+
|
|
344
|
+
Now you have run through the process of setting up Monetization on an example
|
|
345
|
+
project, familiarize yourself with these other aspects and start integrating it
|
|
346
|
+
into your own project.
|
|
347
|
+
|
|
348
|
+
- [Billing Models](./billing-models.md) — Choose the right pricing strategy
|
|
349
|
+
- [Private Plans](./private-plans.md) — Invite-only plans for specific users
|
|
350
|
+
- [Tax Collection](./tax-collection.md) — Enable VAT, sales tax, or GST on
|
|
351
|
+
invoices
|
|
352
|
+
- [Monetization Policy Reference](./monetization-policy.md) — Advanced policy
|
|
353
|
+
configuration
|
|
354
|
+
- [Subscription Lifecycle](./subscription-lifecycle.md) — Manage trials,
|
|
355
|
+
upgrades, and cancellations
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Rate Cards
|
|
3
|
+
sidebar_label: Rate Cards
|
|
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
|
+
Rate cards define the pricing and entitlements for features within a plan. Each
|
|
16
|
+
rate card connects a feature to a price and optionally sets usage limits or
|
|
17
|
+
access controls. Rate cards are the building blocks that turn your product
|
|
18
|
+
catalog into a monetizable offering.
|
|
19
|
+
|
|
20
|
+
## What Rate Cards Define
|
|
21
|
+
|
|
22
|
+
A rate card consists of:
|
|
23
|
+
|
|
24
|
+
- **Key and Name** - Identifiers for the rate card (auto-filled from feature if
|
|
25
|
+
linked)
|
|
26
|
+
- **Feature** - Optional link to a feature from your product catalog
|
|
27
|
+
- **Price** - How much to charge (see [Pricing Models](./pricing-models.mdx))
|
|
28
|
+
- **Entitlement** - Optional usage limits or access controls
|
|
29
|
+
- **Billing Cadence** - How often to bill (monthly, one-time, etc.)
|
|
30
|
+
|
|
31
|
+
## Rate Card Types
|
|
32
|
+
|
|
33
|
+
### Flat Fee Rate Cards
|
|
34
|
+
|
|
35
|
+
Flat fee rate cards charge a fixed amount, either as a one-time charge or
|
|
36
|
+
recurring fee. Use these for:
|
|
37
|
+
|
|
38
|
+
- Setup fees or onboarding charges
|
|
39
|
+
- Monthly or annual subscription fees
|
|
40
|
+
- Access fees for premium features
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"type": "flat_fee",
|
|
45
|
+
"key": "platform_fee",
|
|
46
|
+
"name": "Platform Fee",
|
|
47
|
+
"billingCadence": "P1M",
|
|
48
|
+
"price": {
|
|
49
|
+
"type": "flat",
|
|
50
|
+
"amount": "99.00",
|
|
51
|
+
"paymentTerm": "in_advance"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
When `billingCadence` is set (e.g., `P1M` for monthly), the fee recurs each
|
|
57
|
+
billing period. When `billingCadence` is `null`, the fee is charged once per
|
|
58
|
+
subscription phase.
|
|
59
|
+
|
|
60
|
+
The `paymentTerm` field controls when the charge is collected:
|
|
61
|
+
|
|
62
|
+
- `in_advance` — Charged at the start of the billing period (most common for
|
|
63
|
+
flat fees)
|
|
64
|
+
- `in_arrears` — Charged at the end of the billing period
|
|
65
|
+
|
|
66
|
+
### Usage-Based Rate Cards
|
|
67
|
+
|
|
68
|
+
Usage-based rate cards charge based on metered consumption. These require a
|
|
69
|
+
feature linked to a meter. Use these for:
|
|
70
|
+
|
|
71
|
+
- Pay-per-request API pricing
|
|
72
|
+
- Token-based AI model pricing
|
|
73
|
+
- Data transfer charges
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"type": "usage_based",
|
|
78
|
+
"key": "api_calls",
|
|
79
|
+
"name": "API Calls",
|
|
80
|
+
"featureKey": "api_calls",
|
|
81
|
+
"billingCadence": "P1M",
|
|
82
|
+
"price": {
|
|
83
|
+
"type": "unit",
|
|
84
|
+
"amount": "0.001"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Usage-based rate cards support multiple pricing models. See
|
|
90
|
+
[Pricing Models](./pricing-models.mdx) for details on unit, tiered, package, and
|
|
91
|
+
dynamic pricing.
|
|
92
|
+
|
|
93
|
+
## Rate Cards With Features
|
|
94
|
+
|
|
95
|
+
When a rate card is linked to a feature via `featureKey`:
|
|
96
|
+
|
|
97
|
+
- The rate card's `key` and `name` are pre-filled from the feature
|
|
98
|
+
- You can define entitlements to control access or set usage limits
|
|
99
|
+
- For metered features, the rate card can track and bill based on usage
|
|
100
|
+
|
|
101
|
+
### Entitlement Types
|
|
102
|
+
|
|
103
|
+
Entitlements define what customers get access to:
|
|
104
|
+
|
|
105
|
+
| Type | Description |
|
|
106
|
+
| --------- | ---------------------------------------------- |
|
|
107
|
+
| `boolean` | Simple on/off access to a feature |
|
|
108
|
+
| `static` | Access with custom configuration (JSON) |
|
|
109
|
+
| `metered` | Access with usage tracking and optional limits |
|
|
110
|
+
|
|
111
|
+
#### Metered Entitlements
|
|
112
|
+
|
|
113
|
+
Metered entitlements are the most common for usage-based pricing. They can
|
|
114
|
+
include:
|
|
115
|
+
|
|
116
|
+
- **Usage limits** - Cap how much a customer can use
|
|
117
|
+
- **Soft limits** - Allow overage beyond the limit (with overage charges)
|
|
118
|
+
- **Initial grants** - Starting balance that resets each period
|
|
119
|
+
- **Overage preservation** - Whether overage carries over after reset
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"type": "usage_based",
|
|
124
|
+
"key": "api_calls",
|
|
125
|
+
"name": "API Calls",
|
|
126
|
+
"featureKey": "api_calls",
|
|
127
|
+
"billingCadence": "P1M",
|
|
128
|
+
"price": {
|
|
129
|
+
"type": "unit",
|
|
130
|
+
"amount": "0.001"
|
|
131
|
+
},
|
|
132
|
+
"entitlementTemplate": {
|
|
133
|
+
"type": "metered",
|
|
134
|
+
"issueAfterReset": 10000,
|
|
135
|
+
"isSoftLimit": false,
|
|
136
|
+
"preserveOverageAtReset": false,
|
|
137
|
+
"usagePeriod": "P1M"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
This example grants 10,000 API calls per billing period with a hard limit.
|
|
143
|
+
|
|
144
|
+
| Property | Description |
|
|
145
|
+
| ------------------------ | ------------------------------------------------------------------ |
|
|
146
|
+
| `issueAfterReset` | Number of units granted at the start of each usage period |
|
|
147
|
+
| `isSoftLimit` | If `true`, requests continue after quota (overage billing applies) |
|
|
148
|
+
| `preserveOverageAtReset` | If `true`, overage carries over to the next period |
|
|
149
|
+
| `usagePeriod` | ISO 8601 duration for the usage reset period (e.g., `P1M`) |
|
|
150
|
+
|
|
151
|
+
## Rate Cards Without Features
|
|
152
|
+
|
|
153
|
+
Rate cards without features can only use flat fee pricing. The `key` and `name`
|
|
154
|
+
must be manually specified and will appear on invoices. These are useful for:
|
|
155
|
+
|
|
156
|
+
- Platform fees unrelated to specific features
|
|
157
|
+
- Service charges
|
|
158
|
+
- Custom line items
|
|
159
|
+
|
|
160
|
+
## Free Items
|
|
161
|
+
|
|
162
|
+
You can offer free items in three ways:
|
|
163
|
+
|
|
164
|
+
1. **Omit the price** - No price means free, and no payment method is required
|
|
165
|
+
2. **Set price to $0** - Explicit free, but payment method may still be required
|
|
166
|
+
3. **Apply 100% discount** - Shows original value with discount applied
|
|
167
|
+
|
|
168
|
+
## Adding Rate Cards to Plans
|
|
169
|
+
|
|
170
|
+
Rate cards are added to plan phases. See [Plans](./plans.mdx) for a complete
|
|
171
|
+
example of creating a plan with trial and default phases using rate cards.
|