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.
Files changed (644) hide show
  1. package/README.md +9 -0
  2. package/docs/_index.md +44 -0
  3. package/docs/ai-gateway/apps.mdx +28 -0
  4. package/docs/ai-gateway/custom-providers.mdx +54 -0
  5. package/docs/ai-gateway/getting-started.mdx +224 -0
  6. package/docs/ai-gateway/guardrails.mdx +65 -0
  7. package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
  8. package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
  9. package/docs/ai-gateway/integrations/codex.mdx +78 -0
  10. package/docs/ai-gateway/integrations/goose.mdx +104 -0
  11. package/docs/ai-gateway/integrations/langchain.mdx +66 -0
  12. package/docs/ai-gateway/integrations/openai.mdx +99 -0
  13. package/docs/ai-gateway/introduction.mdx +85 -0
  14. package/docs/ai-gateway/managing-apps.mdx +46 -0
  15. package/docs/ai-gateway/managing-providers.mdx +66 -0
  16. package/docs/ai-gateway/managing-teams.mdx +63 -0
  17. package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
  18. package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
  19. package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
  20. package/docs/ai-gateway/providers.mdx +32 -0
  21. package/docs/ai-gateway/teams.mdx +38 -0
  22. package/docs/ai-gateway/universal-api.mdx +43 -0
  23. package/docs/ai-gateway/usage-limits.mdx +89 -0
  24. package/docs/api-management/introduction.md +127 -0
  25. package/docs/articles/accounts/audit-logs.mdx +227 -0
  26. package/docs/articles/accounts/billing.mdx +25 -0
  27. package/docs/articles/accounts/default-api-key.mdx +30 -0
  28. package/docs/articles/accounts/delete-account.mdx +36 -0
  29. package/docs/articles/accounts/enterprise-sso.mdx +116 -0
  30. package/docs/articles/accounts/managing-account-members.mdx +45 -0
  31. package/docs/articles/accounts/managing-project-members.mdx +37 -0
  32. package/docs/articles/accounts/members-and-roles.mdx +21 -0
  33. package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
  34. package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
  35. package/docs/articles/add-api-to-backstage.mdx +216 -0
  36. package/docs/articles/advanced-path-matching.mdx +139 -0
  37. package/docs/articles/api-key-administration.mdx +47 -0
  38. package/docs/articles/api-key-api.mdx +220 -0
  39. package/docs/articles/api-key-authentication.mdx +195 -0
  40. package/docs/articles/api-key-buckets.mdx +61 -0
  41. package/docs/articles/api-key-end-users.mdx +52 -0
  42. package/docs/articles/api-key-leak-detection.mdx +75 -0
  43. package/docs/articles/api-key-management.mdx +100 -0
  44. package/docs/articles/api-key-react-component.mdx +90 -0
  45. package/docs/articles/api-key-service-limits.mdx +14 -0
  46. package/docs/articles/archiving-requests-to-storage.mdx +119 -0
  47. package/docs/articles/branch-based-deployments.mdx +184 -0
  48. package/docs/articles/bypass-policy-for-testing.mdx +117 -0
  49. package/docs/articles/check-ip-address.mdx +17 -0
  50. package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
  51. package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
  52. package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
  53. package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
  54. package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
  55. package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
  56. package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
  57. package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
  58. package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
  59. package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
  60. package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
  61. package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
  62. package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
  63. package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
  64. package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
  65. package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
  66. package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
  67. package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
  68. package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
  69. package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
  70. package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
  71. package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
  72. package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
  73. package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
  74. package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
  75. package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
  76. package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
  77. package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
  78. package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
  79. package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
  80. package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
  81. package/docs/articles/composite-policy-reference.mdx +284 -0
  82. package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
  83. package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
  84. package/docs/articles/convert-urls-to-openapi.mdx +62 -0
  85. package/docs/articles/cors.mdx +447 -0
  86. package/docs/articles/custom-audit-log-policy.mdx +95 -0
  87. package/docs/articles/custom-ci-cd-azure.mdx +81 -0
  88. package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
  89. package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
  90. package/docs/articles/custom-ci-cd-github.mdx +99 -0
  91. package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
  92. package/docs/articles/custom-ci-cd.mdx +82 -0
  93. package/docs/articles/custom-code-patterns.md +418 -0
  94. package/docs/articles/custom-domains.mdx +258 -0
  95. package/docs/articles/custom-logging-example.mdx +139 -0
  96. package/docs/articles/ddos-protection.mdx +138 -0
  97. package/docs/articles/development-options.mdx +49 -0
  98. package/docs/articles/environment-variables.mdx +134 -0
  99. package/docs/articles/environments.mdx +143 -0
  100. package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
  101. package/docs/articles/github-deployment-testing.mdx +101 -0
  102. package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
  103. package/docs/articles/graphql-security.mdx +180 -0
  104. package/docs/articles/handling-form-data.mdx +61 -0
  105. package/docs/articles/health-checks.mdx +109 -0
  106. package/docs/articles/hosting-options.mdx +70 -0
  107. package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
  108. package/docs/articles/limits.mdx +98 -0
  109. package/docs/articles/local-development-debugging.mdx +44 -0
  110. package/docs/articles/local-development-env-variables.mdx +23 -0
  111. package/docs/articles/local-development-installing-packages.mdx +23 -0
  112. package/docs/articles/local-development-routes-designer.mdx +27 -0
  113. package/docs/articles/local-development-services.mdx +40 -0
  114. package/docs/articles/local-development-troubleshooting.mdx +56 -0
  115. package/docs/articles/local-development.mdx +81 -0
  116. package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
  117. package/docs/articles/log-plugin-datadog.mdx +84 -0
  118. package/docs/articles/log-plugin-dynatrace.mdx +75 -0
  119. package/docs/articles/log-plugin-gcp.mdx +75 -0
  120. package/docs/articles/log-plugin-loki.mdx +136 -0
  121. package/docs/articles/log-plugin-new-relic.mdx +84 -0
  122. package/docs/articles/log-plugin-splunk.mdx +104 -0
  123. package/docs/articles/log-plugin-sumo.mdx +73 -0
  124. package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
  125. package/docs/articles/log-request-response-data.mdx +398 -0
  126. package/docs/articles/logging.mdx +115 -0
  127. package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
  128. package/docs/articles/mcp-quickstart.mdx +135 -0
  129. package/docs/articles/metrics-plugins.mdx +371 -0
  130. package/docs/articles/migrate-from-apigee.md +408 -0
  131. package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
  132. package/docs/articles/migrate-from-azure-apim.md +292 -0
  133. package/docs/articles/migrate-from-kong.md +300 -0
  134. package/docs/articles/migration-overview.md +81 -0
  135. package/docs/articles/monetization/api-access.mdx +69 -0
  136. package/docs/articles/monetization/billing-models.md +520 -0
  137. package/docs/articles/monetization/developer-portal.md +167 -0
  138. package/docs/articles/monetization/features.mdx +98 -0
  139. package/docs/articles/monetization/index.mdx +113 -0
  140. package/docs/articles/monetization/meters.mdx +135 -0
  141. package/docs/articles/monetization/monetization-policy.md +314 -0
  142. package/docs/articles/monetization/plan-examples.mdx +366 -0
  143. package/docs/articles/monetization/plans.mdx +266 -0
  144. package/docs/articles/monetization/pricing-models.mdx +225 -0
  145. package/docs/articles/monetization/private-plans.md +154 -0
  146. package/docs/articles/monetization/quickstart.md +355 -0
  147. package/docs/articles/monetization/rate-cards.mdx +171 -0
  148. package/docs/articles/monetization/stripe-integration.md +195 -0
  149. package/docs/articles/monetization/subscription-lifecycle.md +298 -0
  150. package/docs/articles/monetization/tax-collection.md +166 -0
  151. package/docs/articles/monetization/troubleshooting.md +272 -0
  152. package/docs/articles/monetization-custom.mdx +71 -0
  153. package/docs/articles/monetization-integrations.mdx +104 -0
  154. package/docs/articles/monitoring-your-gateway.mdx +53 -0
  155. package/docs/articles/monorepo-deployment.mdx +350 -0
  156. package/docs/articles/multiple-auth-policies.mdx +81 -0
  157. package/docs/articles/non-standard-ports.mdx +30 -0
  158. package/docs/articles/oauth-authentication.mdx +54 -0
  159. package/docs/articles/openapi-server-urls.mdx +60 -0
  160. package/docs/articles/openapi.mdx +130 -0
  161. package/docs/articles/opentelemetry.mdx +250 -0
  162. package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
  163. package/docs/articles/performance-testing.mdx +304 -0
  164. package/docs/articles/plugin-akamai-api-security.mdx +76 -0
  165. package/docs/articles/plugin-azure-blob.mdx +73 -0
  166. package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
  167. package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
  168. package/docs/articles/policies.mdx +33 -0
  169. package/docs/articles/rename-or-move-project.mdx +39 -0
  170. package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
  171. package/docs/articles/routing.mdx +193 -0
  172. package/docs/articles/s3-signed-url-uploads.mdx +521 -0
  173. package/docs/articles/secure-tunnel.mdx +84 -0
  174. package/docs/articles/securing-backend-mtls.mdx +268 -0
  175. package/docs/articles/securing-your-backend.mdx +148 -0
  176. package/docs/articles/security.mdx +105 -0
  177. package/docs/articles/sharing-code-across-projects.mdx +412 -0
  178. package/docs/articles/source-control-setup-azure.mdx +13 -0
  179. package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
  180. package/docs/articles/source-control-setup-github.mdx +172 -0
  181. package/docs/articles/source-control-setup-gitlab.mdx +12 -0
  182. package/docs/articles/source-control.mdx +80 -0
  183. package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
  184. package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
  185. package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
  186. package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
  187. package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
  188. package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
  189. package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
  190. package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
  191. package/docs/articles/support.mdx +144 -0
  192. package/docs/articles/terraform.mdx +114 -0
  193. package/docs/articles/testing-graphql.mdx +34 -0
  194. package/docs/articles/testing.mdx +522 -0
  195. package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
  196. package/docs/articles/troubleshooting.md +302 -0
  197. package/docs/articles/tsconfig.mdx +105 -0
  198. package/docs/articles/tunnel-setup.mdx +195 -0
  199. package/docs/articles/tunnel-troubleshooting.mdx +50 -0
  200. package/docs/articles/update-zup-in-github-action.mdx +110 -0
  201. package/docs/articles/use-openapi-extension-data.mdx +79 -0
  202. package/docs/articles/users/multifactor-authentication.mdx +64 -0
  203. package/docs/articles/users/profile.mdx +13 -0
  204. package/docs/articles/versioning-on-zuplo.mdx +89 -0
  205. package/docs/articles/waf-ddos-akamai.md +133 -0
  206. package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
  207. package/docs/articles/waf-ddos-fastly.mdx +251 -0
  208. package/docs/articles/waf-ddos.mdx +140 -0
  209. package/docs/articles/zuplo-waf.mdx +156 -0
  210. package/docs/ask.mdx +3 -0
  211. package/docs/cli/authentication.mdx +56 -0
  212. package/docs/cli/connectivity.mdx +38 -0
  213. package/docs/cli/create-zuplo-api.mdx +80 -0
  214. package/docs/cli/delete.mdx +79 -0
  215. package/docs/cli/deploy.mdx +156 -0
  216. package/docs/cli/deploy.partial.mdx +46 -0
  217. package/docs/cli/dev.mdx +115 -0
  218. package/docs/cli/docs.mdx +66 -0
  219. package/docs/cli/editor.mdx +50 -0
  220. package/docs/cli/global-options.mdx +19 -0
  221. package/docs/cli/init.mdx +74 -0
  222. package/docs/cli/link.mdx +74 -0
  223. package/docs/cli/list.mdx +55 -0
  224. package/docs/cli/mtls-certificate-create.mdx +94 -0
  225. package/docs/cli/mtls-certificate-delete.mdx +55 -0
  226. package/docs/cli/mtls-certificate-describe.mdx +55 -0
  227. package/docs/cli/mtls-certificate-disable.mdx +55 -0
  228. package/docs/cli/mtls-certificate-list.mdx +47 -0
  229. package/docs/cli/mtls-certificate-update.mdx +72 -0
  230. package/docs/cli/openapi-convert.mdx +111 -0
  231. package/docs/cli/openapi-merge.mdx +138 -0
  232. package/docs/cli/openapi-merge.partial.mdx +29 -0
  233. package/docs/cli/openapi-overlay.mdx +123 -0
  234. package/docs/cli/overview.mdx +78 -0
  235. package/docs/cli/project-create.mdx +43 -0
  236. package/docs/cli/source-migrate.mdx +18 -0
  237. package/docs/cli/source-upgrade.mdx +41 -0
  238. package/docs/cli/test.mdx +70 -0
  239. package/docs/cli/test.partial.mdx +7 -0
  240. package/docs/cli/tunnel-create.mdx +53 -0
  241. package/docs/cli/tunnel-create.partial.mdx +9 -0
  242. package/docs/cli/tunnel-delete.mdx +35 -0
  243. package/docs/cli/tunnel-delete.partial.mdx +9 -0
  244. package/docs/cli/tunnel-describe.mdx +45 -0
  245. package/docs/cli/tunnel-describe.partial.mdx +5 -0
  246. package/docs/cli/tunnel-list.mdx +35 -0
  247. package/docs/cli/tunnel-list.partial.mdx +9 -0
  248. package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
  249. package/docs/cli/tunnel-rotate-token.mdx +39 -0
  250. package/docs/cli/tunnel-services-describe.mdx +45 -0
  251. package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
  252. package/docs/cli/tunnel-services-update.mdx +48 -0
  253. package/docs/cli/variable-create.mdx +91 -0
  254. package/docs/cli/variable-create.partial.mdx +5 -0
  255. package/docs/cli/variable-update.mdx +75 -0
  256. package/docs/cli/variable-update.partial.mdx +5 -0
  257. package/docs/concepts/api-keys.md +146 -0
  258. package/docs/concepts/authentication.mdx +109 -0
  259. package/docs/concepts/how-zuplo-works.mdx +120 -0
  260. package/docs/concepts/project-structure.mdx +174 -0
  261. package/docs/concepts/rate-limiting.md +246 -0
  262. package/docs/concepts/request-lifecycle.mdx +56 -0
  263. package/docs/concepts/source-control-and-deployment.mdx +229 -0
  264. package/docs/conferences/conference-prize-terms.mdx +80 -0
  265. package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
  266. package/docs/dedicated/akamai/architecture.mdx +280 -0
  267. package/docs/dedicated/akamai/caching.mdx +212 -0
  268. package/docs/dedicated/akamai/cdn.mdx +156 -0
  269. package/docs/dedicated/architecture.mdx +208 -0
  270. package/docs/dedicated/custom-domains.mdx +31 -0
  271. package/docs/dedicated/federated-gateways.mdx +80 -0
  272. package/docs/dedicated/networking.mdx +69 -0
  273. package/docs/dedicated/overview.mdx +80 -0
  274. package/docs/dedicated/source-control.mdx +63 -0
  275. package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
  276. package/docs/dev-portal/introduction.mdx +65 -0
  277. package/docs/dev-portal/local-development.mdx +72 -0
  278. package/docs/dev-portal/migration.mdx +526 -0
  279. package/docs/dev-portal/node-modules.mdx +45 -0
  280. package/docs/dev-portal/updating.mdx +28 -0
  281. package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
  282. package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
  283. package/docs/dev-portal/zudoku/components/button.mdx +132 -0
  284. package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
  285. package/docs/dev-portal/zudoku/components/card.mdx +104 -0
  286. package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
  287. package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
  288. package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
  289. package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
  290. package/docs/dev-portal/zudoku/components/head.mdx +199 -0
  291. package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
  292. package/docs/dev-portal/zudoku/components/input.mdx +96 -0
  293. package/docs/dev-portal/zudoku/components/label.mdx +86 -0
  294. package/docs/dev-portal/zudoku/components/link.mdx +242 -0
  295. package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
  296. package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
  297. package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
  298. package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
  299. package/docs/dev-portal/zudoku/components/select.mdx +176 -0
  300. package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
  301. package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
  302. package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
  303. package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
  304. package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
  305. package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
  306. package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
  307. package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
  308. package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
  309. package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
  310. package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
  311. package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
  312. package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
  313. package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
  314. package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
  315. package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
  316. package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
  317. package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
  318. package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
  319. package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
  320. package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
  321. package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
  322. package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
  323. package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
  324. package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
  325. package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
  326. package/docs/dev-portal/zudoku/configuration/search.md +169 -0
  327. package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
  328. package/docs/dev-portal/zudoku/configuration/site.md +124 -0
  329. package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
  330. package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
  331. package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
  332. package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
  333. package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
  334. package/docs/dev-portal/zudoku/extending/events.md +124 -0
  335. package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
  336. package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
  337. package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
  338. package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
  339. package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
  340. package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
  341. package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
  342. package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
  343. package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
  344. package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
  345. package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
  346. package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
  347. package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
  348. package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
  349. package/docs/dev-portal/zudoku/plugins.md +5 -0
  350. package/docs/dev-portal/zudoku/writing.mdx +72 -0
  351. package/docs/errors/bad-request.mdx +39 -0
  352. package/docs/errors/build-error.mdx +45 -0
  353. package/docs/errors/fatal-project-error.mdx +39 -0
  354. package/docs/errors/gateway-timeout.mdx +33 -0
  355. package/docs/errors/get-head-body-error.mdx +41 -0
  356. package/docs/errors/main-mod-error.mdx +40 -0
  357. package/docs/errors/no-project-set.mdx +41 -0
  358. package/docs/errors/not-found.mdx +43 -0
  359. package/docs/errors/rate-limit-exceeded.mdx +31 -0
  360. package/docs/errors/schema-validation-failed.mdx +51 -0
  361. package/docs/errors/system-configuration-error.mdx +44 -0
  362. package/docs/errors/unauthorized.mdx +50 -0
  363. package/docs/errors/unknown-error.mdx +42 -0
  364. package/docs/errors.mdx +14 -0
  365. package/docs/guides/canary-routing-for-employees.mdx +385 -0
  366. package/docs/guides/geolocation-backend-routing.mdx +404 -0
  367. package/docs/guides/modify-openapi-paths.mdx +371 -0
  368. package/docs/guides/openapi-overlays.mdx +492 -0
  369. package/docs/guides/overview.mdx +12 -0
  370. package/docs/guides/user-based-backend-routing.mdx +437 -0
  371. package/docs/handlers/aws-lambda.mdx +201 -0
  372. package/docs/handlers/custom-handler.mdx +112 -0
  373. package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
  374. package/docs/handlers/mcp-server.mdx +730 -0
  375. package/docs/handlers/openapi.mdx +78 -0
  376. package/docs/handlers/redirect.mdx +115 -0
  377. package/docs/handlers/system-handlers.mdx +41 -0
  378. package/docs/handlers/url-forward.mdx +204 -0
  379. package/docs/handlers/url-rewrite.mdx +224 -0
  380. package/docs/handlers/websocket-handler.mdx +154 -0
  381. package/docs/home.mdx +6 -0
  382. package/docs/managed-edge/overview.md +78 -0
  383. package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
  384. package/docs/mcp-server/custom-tools.mdx +487 -0
  385. package/docs/mcp-server/graphql.mdx +241 -0
  386. package/docs/mcp-server/introduction.mdx +122 -0
  387. package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
  388. package/docs/mcp-server/prompts.mdx +283 -0
  389. package/docs/mcp-server/resources.mdx +288 -0
  390. package/docs/mcp-server/testing.mdx +53 -0
  391. package/docs/mcp-server/tools.mdx +306 -0
  392. package/docs/policies/_index.md +92 -0
  393. package/docs/policies/ab-test-inbound/intro.md +8 -0
  394. package/docs/policies/ab-test-inbound/policy.ts +14 -0
  395. package/docs/policies/ab-test-inbound/schema.json +27 -0
  396. package/docs/policies/ab-test-outbound/intro.md +8 -0
  397. package/docs/policies/ab-test-outbound/policy.ts +26 -0
  398. package/docs/policies/ab-test-outbound/schema.json +27 -0
  399. package/docs/policies/acl-policy-inbound/intro.md +5 -0
  400. package/docs/policies/acl-policy-inbound/policy.ts +32 -0
  401. package/docs/policies/acl-policy-inbound/schema.json +52 -0
  402. package/docs/policies/akamai-ai-firewall/schema.json +98 -0
  403. package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
  404. package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
  405. package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
  406. package/docs/policies/api-key-inbound/doc.md +77 -0
  407. package/docs/policies/api-key-inbound/intro.md +30 -0
  408. package/docs/policies/api-key-inbound/schema.json +84 -0
  409. package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
  410. package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
  411. package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
  412. package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
  413. package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
  414. package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
  415. package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
  416. package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
  417. package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
  418. package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
  419. package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
  420. package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
  421. package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
  422. package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
  423. package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
  424. package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
  425. package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
  426. package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
  427. package/docs/policies/audit-log-inbound/doc.md +78 -0
  428. package/docs/policies/audit-log-inbound/intro.md +10 -0
  429. package/docs/policies/audit-log-inbound/schema.json +81 -0
  430. package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
  431. package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
  432. package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
  433. package/docs/policies/authzen-inbound/doc.md +24 -0
  434. package/docs/policies/authzen-inbound/intro.md +31 -0
  435. package/docs/policies/authzen-inbound/schema.json +126 -0
  436. package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
  437. package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
  438. package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
  439. package/docs/policies/basic-auth-inbound/intro.md +9 -0
  440. package/docs/policies/basic-auth-inbound/schema.json +99 -0
  441. package/docs/policies/bot-detection-inbound/intro.md +4 -0
  442. package/docs/policies/bot-detection-inbound/schema.json +56 -0
  443. package/docs/policies/brownout-inbound/doc.md +55 -0
  444. package/docs/policies/brownout-inbound/intro.md +12 -0
  445. package/docs/policies/brownout-inbound/schema.json +115 -0
  446. package/docs/policies/caching-inbound/doc.md +209 -0
  447. package/docs/policies/caching-inbound/intro.md +23 -0
  448. package/docs/policies/caching-inbound/schema.json +98 -0
  449. package/docs/policies/change-method-inbound/schema.json +56 -0
  450. package/docs/policies/clear-headers-inbound/schema.json +59 -0
  451. package/docs/policies/clear-headers-outbound/schema.json +59 -0
  452. package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
  453. package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
  454. package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
  455. package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
  456. package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
  457. package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
  458. package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
  459. package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
  460. package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
  461. package/docs/policies/composite-inbound/doc.md +69 -0
  462. package/docs/policies/composite-inbound/intro.md +15 -0
  463. package/docs/policies/composite-inbound/schema.json +59 -0
  464. package/docs/policies/composite-outbound/intro.md +6 -0
  465. package/docs/policies/composite-outbound/schema.json +59 -0
  466. package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
  467. package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
  468. package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
  469. package/docs/policies/custom-code-inbound/doc.md +267 -0
  470. package/docs/policies/custom-code-inbound/intro.md +2 -0
  471. package/docs/policies/custom-code-inbound/schema.json +48 -0
  472. package/docs/policies/custom-code-outbound/doc.md +235 -0
  473. package/docs/policies/custom-code-outbound/intro.md +2 -0
  474. package/docs/policies/custom-code-outbound/schema.json +43 -0
  475. package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
  476. package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
  477. package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
  478. package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
  479. package/docs/policies/geo-filter-inbound/doc.md +33 -0
  480. package/docs/policies/geo-filter-inbound/schema.json +108 -0
  481. package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
  482. package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
  483. package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
  484. package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
  485. package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
  486. package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
  487. package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
  488. package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
  489. package/docs/policies/hmac-auth-inbound/doc.md +30 -0
  490. package/docs/policies/hmac-auth-inbound/intro.md +10 -0
  491. package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
  492. package/docs/policies/hmac-auth-inbound/schema.json +53 -0
  493. package/docs/policies/http-deprecation-outbound/doc.md +73 -0
  494. package/docs/policies/http-deprecation-outbound/schema.json +83 -0
  495. package/docs/policies/ip-restriction-inbound/intro.md +8 -0
  496. package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
  497. package/docs/policies/ip-restriction-inbound/schema.json +58 -0
  498. package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
  499. package/docs/policies/ldap-auth-inbound/schema.json +56 -0
  500. package/docs/policies/mock-api-inbound/schema.json +72 -0
  501. package/docs/policies/moesif-inbound/doc.md +44 -0
  502. package/docs/policies/moesif-inbound/intro.md +6 -0
  503. package/docs/policies/moesif-inbound/schema.json +68 -0
  504. package/docs/policies/monetization-inbound/doc.md +87 -0
  505. package/docs/policies/monetization-inbound/intro.md +6 -0
  506. package/docs/policies/monetization-inbound/schema.json +102 -0
  507. package/docs/policies/mtls-auth-inbound/intro.md +6 -0
  508. package/docs/policies/mtls-auth-inbound/schema.json +68 -0
  509. package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
  510. package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
  511. package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
  512. package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
  513. package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
  514. package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
  515. package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
  516. package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
  517. package/docs/policies/openfga-authz-inbound/doc.md +207 -0
  518. package/docs/policies/openfga-authz-inbound/intro.md +17 -0
  519. package/docs/policies/openfga-authz-inbound/schema.json +191 -0
  520. package/docs/policies/openmeter-inbound/doc.md +163 -0
  521. package/docs/policies/openmeter-inbound/intro.md +18 -0
  522. package/docs/policies/openmeter-inbound/schema.json +183 -0
  523. package/docs/policies/prompt-injection-outbound/doc.md +106 -0
  524. package/docs/policies/prompt-injection-outbound/intro.md +4 -0
  525. package/docs/policies/prompt-injection-outbound/schema.json +74 -0
  526. package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
  527. package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
  528. package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
  529. package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
  530. package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
  531. package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
  532. package/docs/policies/quota-inbound/doc.md +235 -0
  533. package/docs/policies/quota-inbound/intro.md +7 -0
  534. package/docs/policies/quota-inbound/schema.json +133 -0
  535. package/docs/policies/rate-limit-inbound/doc.md +78 -0
  536. package/docs/policies/rate-limit-inbound/intro.md +30 -0
  537. package/docs/policies/rate-limit-inbound/schema.json +134 -0
  538. package/docs/policies/rbac-policy-inbound/intro.md +3 -0
  539. package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
  540. package/docs/policies/rbac-policy-inbound/schema.json +52 -0
  541. package/docs/policies/readme-metrics-inbound/doc.md +1 -0
  542. package/docs/policies/readme-metrics-inbound/intro.md +3 -0
  543. package/docs/policies/readme-metrics-inbound/schema.json +84 -0
  544. package/docs/policies/remove-headers-inbound/schema.json +59 -0
  545. package/docs/policies/remove-headers-outbound/schema.json +59 -0
  546. package/docs/policies/remove-query-params-inbound/schema.json +59 -0
  547. package/docs/policies/replace-string-outbound/schema.json +69 -0
  548. package/docs/policies/request-size-limit-inbound/schema.json +60 -0
  549. package/docs/policies/request-validation-inbound/doc.md +72 -0
  550. package/docs/policies/request-validation-inbound/intro.md +24 -0
  551. package/docs/policies/request-validation-inbound/schema.json +98 -0
  552. package/docs/policies/require-origin-inbound/intro.md +12 -0
  553. package/docs/policies/require-origin-inbound/schema.json +65 -0
  554. package/docs/policies/secret-masking-outbound/doc.md +41 -0
  555. package/docs/policies/secret-masking-outbound/intro.md +13 -0
  556. package/docs/policies/secret-masking-outbound/schema.json +65 -0
  557. package/docs/policies/semantic-cache-inbound/doc.md +63 -0
  558. package/docs/policies/semantic-cache-inbound/intro.md +4 -0
  559. package/docs/policies/semantic-cache-inbound/schema.json +179 -0
  560. package/docs/policies/set-body-inbound/intro.md +7 -0
  561. package/docs/policies/set-body-inbound/schema.json +56 -0
  562. package/docs/policies/set-headers-inbound/doc.md +41 -0
  563. package/docs/policies/set-headers-inbound/intro.md +2 -0
  564. package/docs/policies/set-headers-inbound/schema.json +83 -0
  565. package/docs/policies/set-headers-outbound/schema.json +83 -0
  566. package/docs/policies/set-query-params-inbound/schema.json +83 -0
  567. package/docs/policies/set-status-outbound/schema.json +62 -0
  568. package/docs/policies/sleep-inbound/schema.json +56 -0
  569. package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
  570. package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
  571. package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
  572. package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
  573. package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
  574. package/docs/policies/transform-body-inbound/intro.md +8 -0
  575. package/docs/policies/transform-body-inbound/policy.ts +16 -0
  576. package/docs/policies/transform-body-inbound/schema.json +27 -0
  577. package/docs/policies/transform-body-outbound/intro.md +8 -0
  578. package/docs/policies/transform-body-outbound/policy.ts +19 -0
  579. package/docs/policies/transform-body-outbound/schema.json +27 -0
  580. package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
  581. package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
  582. package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
  583. package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
  584. package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
  585. package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
  586. package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
  587. package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
  588. package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
  589. package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
  590. package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
  591. package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
  592. package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
  593. package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
  594. package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
  595. package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
  596. package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
  597. package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
  598. package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
  599. package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
  600. package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
  601. package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
  602. package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
  603. package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
  604. package/docs/policies/xml-to-json-outbound/doc.md +71 -0
  605. package/docs/policies/xml-to-json-outbound/intro.md +4 -0
  606. package/docs/policies/xml-to-json-outbound/schema.json +117 -0
  607. package/docs/programmable-api/audit-log.mdx +74 -0
  608. package/docs/programmable-api/background-dispatcher.mdx +124 -0
  609. package/docs/programmable-api/background-loader.mdx +104 -0
  610. package/docs/programmable-api/cache.mdx +186 -0
  611. package/docs/programmable-api/compatibility-dates.mdx +201 -0
  612. package/docs/programmable-api/console-logging.mdx +48 -0
  613. package/docs/programmable-api/context-data.mdx +127 -0
  614. package/docs/programmable-api/custom-cors-policy.mdx +64 -0
  615. package/docs/programmable-api/environment.mdx +328 -0
  616. package/docs/programmable-api/hooks.mdx +569 -0
  617. package/docs/programmable-api/http-problems.mdx +385 -0
  618. package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
  619. package/docs/programmable-api/logger.mdx +223 -0
  620. package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
  621. package/docs/programmable-api/node-modules.mdx +67 -0
  622. package/docs/programmable-api/not-found-handler.mdx +47 -0
  623. package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
  624. package/docs/programmable-api/overview.mdx +213 -0
  625. package/docs/programmable-api/problem-response-formatter.mdx +183 -0
  626. package/docs/programmable-api/request-user.mdx +289 -0
  627. package/docs/programmable-api/reusing-code.mdx +26 -0
  628. package/docs/programmable-api/route-raw.mdx +55 -0
  629. package/docs/programmable-api/runtime-behaviors.mdx +25 -0
  630. package/docs/programmable-api/runtime-errors.mdx +246 -0
  631. package/docs/programmable-api/runtime-extensions.mdx +340 -0
  632. package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
  633. package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
  634. package/docs/programmable-api/web-crypto-apis.mdx +219 -0
  635. package/docs/programmable-api/web-standard-apis.mdx +109 -0
  636. package/docs/programmable-api/zone-cache.mdx +131 -0
  637. package/docs/programmable-api/zp-body-removed.mdx +32 -0
  638. package/docs/programmable-api/zuplo-context.mdx +414 -0
  639. package/docs/programmable-api/zuplo-id-token.mdx +90 -0
  640. package/docs/programmable-api/zuplo-json.mdx +91 -0
  641. package/docs/programmable-api/zuplo-request.mdx +200 -0
  642. package/docs/sample-apis.mdx +78 -0
  643. package/docs/self-hosted/overview.md +60 -0
  644. package/package.json +6 -5
@@ -0,0 +1,266 @@
1
+ ---
2
+ title: Plans
3
+ sidebar_label: Plans
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
+ Plans are subscription tiers that package features together. They represent the
16
+ rows on your pricing page - Free, Pro, Enterprise - each with different feature
17
+ access and usage limits. Plans define what customers get when they subscribe.
18
+
19
+ ## Plan Structure
20
+
21
+ Plans follow a hierarchical structure where each level defines a specific aspect
22
+ of your pricing:
23
+
24
+ <Diagram height="h-96">
25
+ <DiagramNode id="plan">Plan</DiagramNode>
26
+ <DiagramNode id="phase">Phase</DiagramNode>
27
+ <DiagramNode id="ratecard">Rate Card</DiagramNode>
28
+ <DiagramNode id="price">Price</DiagramNode>
29
+ <DiagramNode id="entitlement">Entitlement</DiagramNode>
30
+ <DiagramNode id="feature">Feature</DiagramNode>
31
+ <DiagramNode id="meter">Meter</DiagramNode>
32
+ <DiagramEdge from="plan" to="phase" />
33
+ <DiagramEdge from="phase" to="ratecard" />
34
+ <DiagramEdge from="ratecard" to="price" />
35
+ <DiagramEdge from="ratecard" to="entitlement" />
36
+ <DiagramEdge from="entitlement" to="feature" />
37
+ <DiagramEdge from="feature" to="meter" />
38
+ </Diagram>
39
+
40
+ | Entity | Description |
41
+ | --------------- | ----------------------------------------------------- |
42
+ | **Plan** | A subscription tier (e.g., Pro, Enterprise) |
43
+ | **Phase** | A time period within a plan (e.g., trial, default) |
44
+ | **Rate Card** | Pricing and entitlements for a feature within a phase |
45
+ | **Price** | The pricing model (flat, tiered, package, etc.) |
46
+ | **Entitlement** | Usage limits and access controls for customers |
47
+ | **Feature** | A capability that can be metered or toggled |
48
+ | **Meter** | Tracks usage data for metered features |
49
+
50
+ Plans contain **phases**, and each phase contains **rate cards** that define
51
+ pricing and entitlements. See [Rate Cards](./rate-cards.mdx) for details on
52
+ configuring pricing within plans.
53
+
54
+ :::note
55
+
56
+ Before creating a plan, you must first define the [Features](./features.mdx)
57
+ that will be included. Plans reference features by their `key`, so features must
58
+ exist before they can be added to rate cards.
59
+
60
+ :::
61
+
62
+ ## Plan Lifecycle
63
+
64
+ Plans move through a defined lifecycle:
65
+
66
+ 1. **Draft** - Initial state when created. Can be modified freely.
67
+ 2. **Active** - Published and available for subscriptions. Cannot be modified.
68
+ 3. **Archived** - No longer available for new subscriptions but existing
69
+ subscriptions continue.
70
+
71
+ ## Example: Pro Plan with Trial
72
+
73
+ This example creates a Pro plan with:
74
+
75
+ - A 1-week free trial phase with 1,000 API calls
76
+ - A default phase with $99/month subscription and 10,000 included API calls
77
+ - Overage pricing at $0.01 per additional call
78
+ - Static features for premium access
79
+
80
+ For step-by-step examples building plans from simple to complex, see
81
+ [Plan Examples](./plan-examples.mdx).
82
+
83
+ ```shell
84
+ curl \
85
+ https://dev.zuplo.com/v3/metering/$BUCKET_ID/plans \
86
+ --request POST \
87
+ --header "Authorization: Bearer $ZAPI_KEY" \
88
+ --header "Content-Type: application/json" \
89
+ --data @- << EOF
90
+ {
91
+ "key": "pro",
92
+ "name": "Pro Plan",
93
+ "description": "For growing teams with a 1-week free trial",
94
+ "currency": "USD",
95
+ "billingCadence": "P1M",
96
+ "phases": [
97
+ {
98
+ "key": "trial",
99
+ "name": "Trial",
100
+ "duration": "P1W",
101
+ "rateCards": [
102
+ {
103
+ "type": "flat_fee",
104
+ "key": "api_requests",
105
+ "name": "API Requests (Trial)",
106
+ "featureKey": "api_requests",
107
+ "billingCadence": null,
108
+ "price": null,
109
+ "entitlementTemplate": {
110
+ "type": "metered",
111
+ "issueAfterReset": 1000,
112
+ "isSoftLimit": false,
113
+ "usagePeriod": "P1W"
114
+ }
115
+ },
116
+ {
117
+ "type": "flat_fee",
118
+ "key": "priority_support",
119
+ "name": "Priority Support (Trial)",
120
+ "featureKey": "priority_support",
121
+ "billingCadence": null,
122
+ "price": null,
123
+ "entitlementTemplate": {
124
+ "type": "boolean",
125
+ "config": true
126
+ }
127
+ }
128
+ ]
129
+ },
130
+ {
131
+ "key": "default",
132
+ "name": "Default",
133
+ "duration": null,
134
+ "rateCards": [
135
+ {
136
+ "type": "usage_based",
137
+ "key": "api_requests",
138
+ "name": "API Requests",
139
+ "featureKey": "api_requests",
140
+ "billingCadence": "P1M",
141
+ "entitlementTemplate": {
142
+ "type": "metered",
143
+ "issueAfterReset": 10000,
144
+ "isSoftLimit": true,
145
+ "usagePeriod": "P1M"
146
+ },
147
+ "price": {
148
+ "type": "tiered",
149
+ "mode": "graduated",
150
+ "tiers": [
151
+ {
152
+ "upToAmount": "10000",
153
+ "flatPrice": { "type": "flat", "amount": "99.00" },
154
+ "unitPrice": null
155
+ },
156
+ {
157
+ "flatPrice": null,
158
+ "unitPrice": { "type": "unit", "amount": "0.01" }
159
+ }
160
+ ]
161
+ }
162
+ },
163
+ {
164
+ "type": "flat_fee",
165
+ "key": "priority_support",
166
+ "name": "Priority Support",
167
+ "featureKey": "priority_support",
168
+ "billingCadence": null,
169
+ "price": null,
170
+ "entitlementTemplate": {
171
+ "type": "boolean",
172
+ "config": true
173
+ }
174
+ }
175
+ ]
176
+ }
177
+ ]
178
+ }
179
+ EOF
180
+ ```
181
+
182
+ ### How This Plan Works
183
+
184
+ | Phase | Duration | API Requests | Cost |
185
+ | ------- | -------- | ------------------ | --------- |
186
+ | Trial | 1 week | 1,000 (hard limit) | Free |
187
+ | Default | Ongoing | 10,000 included | $99/month |
188
+
189
+ After the trial ends, customers automatically move to the default phase. In the
190
+ default phase, the first 10,000 API requests are included in the $99 monthly
191
+ fee. Additional requests are billed at $0.01 each (soft limit allows overage).
192
+
193
+ ## Plan Properties
194
+
195
+ | Property | Required | Description |
196
+ | ----------------- | -------- | ------------------------------------------------------------- |
197
+ | `key` | Yes | Unique identifier for the plan |
198
+ | `name` | Yes | Human-readable display name |
199
+ | `currency` | Yes | Three-letter ISO currency code (e.g., `USD`) |
200
+ | `billingCadence` | Yes | Billing period as ISO 8601 duration (e.g., `P1M` for monthly) |
201
+ | `phases` | Yes | Array of plan phases with rate cards |
202
+ | `description` | No | Detailed description of the plan |
203
+ | `metadata` | No | Custom key-value pairs for your own use |
204
+ | `proRatingConfig` | No | Proration settings (see below) |
205
+
206
+ ## Phase Properties
207
+
208
+ | Property | Required | Description |
209
+ | ----------- | -------- | --------------------------------------------------------------------- |
210
+ | `key` | Yes | Unique identifier for the phase within the plan |
211
+ | `name` | Yes | Human-readable display name |
212
+ | `duration` | No | ISO 8601 duration (e.g., `P1W` for 1 week). Omit for the final phase. |
213
+ | `rateCards` | Yes | Array of rate cards defining pricing and entitlements |
214
+
215
+ ## Proration
216
+
217
+ Plans support automatic proration when customers upgrade or downgrade
218
+ mid-billing-period. Enable proration with the `proRatingConfig` property:
219
+
220
+ ```json
221
+ {
222
+ "proRatingConfig": {
223
+ "enabled": true,
224
+ "mode": "max_consumption_based"
225
+ }
226
+ }
227
+ ```
228
+
229
+ When proration is enabled, charges are automatically adjusted based on the
230
+ portion of the billing period remaining at the time of the plan change.
231
+
232
+ ## Publishing a Plan
233
+
234
+ :::caution
235
+
236
+ Plans must be published before customers can subscribe to them. A newly created
237
+ plan starts in `draft` status and is not available for subscriptions until
238
+ published.
239
+
240
+ :::
241
+
242
+ Transition a draft plan to active status:
243
+
244
+ ```shell
245
+ curl \
246
+ https://dev.zuplo.com/v3/metering/$BUCKET_ID/plans/$PLAN_ID/publish \
247
+ --request POST \
248
+ --header "Authorization: Bearer $ZAPI_KEY"
249
+ ```
250
+
251
+ Once published, a plan cannot be modified. To make changes, you must create a
252
+ new version of the plan.
253
+
254
+ ## Common Billing Cadences
255
+
256
+ | Duration | Description |
257
+ | -------- | ----------- |
258
+ | `P1W` | Weekly |
259
+ | `P1M` | Monthly |
260
+ | `P3M` | Quarterly |
261
+ | `P1Y` | Yearly |
262
+
263
+ ## API Reference
264
+
265
+ For complete API operations (list, get, update, delete, archive), see the
266
+ [Plans API Reference](../../api/metering-plans).
@@ -0,0 +1,225 @@
1
+ ---
2
+ title: Pricing Models
3
+ sidebar_label: Pricing Models
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
+ Pricing models define how charges are calculated within a
16
+ [rate card](./rate-cards.mdx). Each model suits different business scenarios,
17
+ from simple flat fees to complex usage-based pricing.
18
+
19
+ ## Flat Fee Pricing
20
+
21
+ Flat fee pricing charges a fixed amount regardless of usage. Use `flat_fee` rate
22
+ cards for subscriptions, setup fees, or access charges.
23
+
24
+ ### Recurring Subscription
25
+
26
+ A monthly platform fee that recurs each billing period:
27
+
28
+ ```json
29
+ {
30
+ "type": "flat_fee",
31
+ "key": "platform_fee",
32
+ "name": "Platform Fee",
33
+ "billingCadence": "P1M",
34
+ "price": {
35
+ "type": "flat",
36
+ "amount": "99.00"
37
+ }
38
+ }
39
+ ```
40
+
41
+ ### One-Time Setup Fee
42
+
43
+ A setup fee charged once when the subscription starts (no `billingCadence`):
44
+
45
+ ```json
46
+ {
47
+ "type": "flat_fee",
48
+ "key": "setup_fee",
49
+ "name": "Setup Fee",
50
+ "price": {
51
+ "type": "flat",
52
+ "amount": "500.00"
53
+ }
54
+ }
55
+ ```
56
+
57
+ ## Per-Unit Pricing
58
+
59
+ Per-unit pricing charges a fixed amount for each unit of metered usage. Use
60
+ `usage_based` rate cards linked to a feature.
61
+
62
+ ```json
63
+ {
64
+ "type": "usage_based",
65
+ "featureKey": "api_calls",
66
+ "billingCadence": "P1M",
67
+ "price": {
68
+ "type": "unit",
69
+ "amount": "0.001"
70
+ },
71
+ "entitlementTemplate": {
72
+ "type": "metered",
73
+ "isSoftLimit": true
74
+ }
75
+ }
76
+ ```
77
+
78
+ **Example:** At $0.001 per unit, a customer using 100,000 API calls pays:
79
+
80
+ `100,000 × $0.001 = $100`
81
+
82
+ ## Tiered Pricing
83
+
84
+ Tiered pricing varies the price based on usage volume. There are two modes:
85
+
86
+ ### Graduated Pricing
87
+
88
+ Each unit is charged according to the tier it falls into:
89
+
90
+ ```json
91
+ {
92
+ "type": "usage_based",
93
+ "featureKey": "api_calls",
94
+ "billingCadence": "P1M",
95
+ "price": {
96
+ "type": "tiered",
97
+ "mode": "graduated",
98
+ "tiers": [
99
+ { "upToAmount": 1000, "unitPrice": { "amount": "0.10" } },
100
+ { "upToAmount": 10000, "unitPrice": { "amount": "0.05" } },
101
+ { "upToAmount": null, "unitPrice": { "amount": "0.01" } }
102
+ ]
103
+ },
104
+ "entitlementTemplate": {
105
+ "type": "metered",
106
+ "isSoftLimit": true
107
+ }
108
+ }
109
+ ```
110
+
111
+ | Tier | Units | Unit Price |
112
+ | ---- | -------------- | ---------- |
113
+ | 1 | 0 - 1,000 | $0.10 |
114
+ | 2 | 1,001 - 10,000 | $0.05 |
115
+ | 3 | 10,001+ | $0.01 |
116
+
117
+ **Example:** A customer using 15,000 units pays:
118
+
119
+ `(1,000 × $0.10) + (9,000 × $0.05) + (5,000 × $0.01) = $100 + $450 + $50 = $600`
120
+
121
+ ### Volume Pricing
122
+
123
+ All units are charged at the rate of the highest tier reached:
124
+
125
+ ```json
126
+ {
127
+ "type": "usage_based",
128
+ "featureKey": "api_calls",
129
+ "billingCadence": "P1M",
130
+ "price": {
131
+ "type": "tiered",
132
+ "mode": "volume",
133
+ "tiers": [
134
+ { "upToAmount": 1000, "unitPrice": { "amount": "0.10" } },
135
+ { "upToAmount": 10000, "unitPrice": { "amount": "0.05" } },
136
+ { "upToAmount": null, "unitPrice": { "amount": "0.01" } }
137
+ ]
138
+ },
139
+ "entitlementTemplate": {
140
+ "type": "metered",
141
+ "isSoftLimit": true
142
+ }
143
+ }
144
+ ```
145
+
146
+ **Example:** A customer using 15,000 units pays:
147
+
148
+ `15,000 × $0.01 = $150`
149
+
150
+ All units are charged at the tier 3 rate because usage exceeded 10,000.
151
+
152
+ ### Included Usage with Overage
153
+
154
+ Combine a flat fee for included usage with per-unit overage charges. This is a
155
+ common pattern for "X calls included, then $Y per additional call":
156
+
157
+ ```json
158
+ {
159
+ "type": "usage_based",
160
+ "featureKey": "api_calls",
161
+ "billingCadence": "P1M",
162
+ "price": {
163
+ "type": "tiered",
164
+ "mode": "graduated",
165
+ "tiers": [
166
+ { "upToAmount": 10000, "flatPrice": { "amount": "0" } },
167
+ { "upToAmount": null, "unitPrice": { "amount": "0.01" } }
168
+ ]
169
+ },
170
+ "entitlementTemplate": {
171
+ "type": "metered",
172
+ "issueAfterReset": 10000,
173
+ "isSoftLimit": true
174
+ }
175
+ }
176
+ ```
177
+
178
+ This grants 10,000 API calls included (via `issueAfterReset`), then charges
179
+ $0.01 per additional call.
180
+
181
+ ## Package Pricing
182
+
183
+ Package pricing sells usage in fixed bundles rather than individual units:
184
+
185
+ ```json
186
+ {
187
+ "type": "usage_based",
188
+ "featureKey": "api_calls",
189
+ "billingCadence": "P1M",
190
+ "price": {
191
+ "type": "package",
192
+ "amount": "10.00",
193
+ "quantityPerPackage": 1000
194
+ },
195
+ "entitlementTemplate": {
196
+ "type": "metered",
197
+ "isSoftLimit": true
198
+ }
199
+ }
200
+ ```
201
+
202
+ | Usage | Packages | Total |
203
+ | ----- | -------- | ----- |
204
+ | 0 | 0 | $0 |
205
+ | 500 | 1 | $10 |
206
+ | 1,000 | 1 | $10 |
207
+ | 1,001 | 2 | $20 |
208
+ | 5,500 | 6 | $60 |
209
+
210
+ Usage is rounded up to the next package.
211
+
212
+ ## Choosing a Pricing Model
213
+
214
+ | Model | Best For |
215
+ | ------------- | --------------------------------------------------------- |
216
+ | **Flat** | Subscriptions, setup fees, fixed-price features |
217
+ | **Per-Unit** | Simple usage billing where each unit has equal value |
218
+ | **Graduated** | Volume discounts while maintaining revenue on lower tiers |
219
+ | **Volume** | Aggressive volume discounts to incentivize high usage |
220
+ | **Package** | Simplified billing, encouraging bulk purchases |
221
+
222
+ ## Complete Example
223
+
224
+ See [Plan Examples](./plan-examples.mdx) for step-by-step examples showing how
225
+ to build plans with different pricing models.
@@ -0,0 +1,154 @@
1
+ ---
2
+ title: Private Plans — Invite-Only Subscriptions
3
+ sidebar_label: Private Plans
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
+ Private plans are hidden from the public pricing table and can only be accessed
16
+ by users you explicitly invite. Use private plans for custom enterprise pricing,
17
+ partner deals, or beta testing with specific users.
18
+
19
+ ## Prerequisites
20
+
21
+ Before creating private plans, complete the [Quickstart](./quickstart.md) guide
22
+ to set up meters, features, and at least one public plan.
23
+
24
+ ## Create a private plan
25
+
26
+ A plan becomes private when you set `"zuplo_private_plan": "true"` in the plan's
27
+ `metadata` field. You can create private plans through the API.
28
+
29
+ This example creates an invite-only Developer plan with 1,000 included requests
30
+ and $0.10/request overage:
31
+
32
+ ```bash
33
+ curl -X POST "https://dev.zuplo.com/v3/metering/${ZUPLO_BUCKET_ID}/plans" \
34
+ -H "Authorization: Bearer ${ZUPLO_API_KEY}" \
35
+ -H "Content-Type: application/json" \
36
+ -d '{
37
+ "billingCadence": "P1M",
38
+ "currency": "USD",
39
+ "description": "1000 requests per month with overages",
40
+ "key": "private_developer",
41
+ "metadata": {
42
+ "zuplo_private_plan": "true"
43
+ },
44
+ "name": "Private Developer",
45
+ "proRatingConfig": {
46
+ "enabled": true,
47
+ "mode": "max_consumption_based"
48
+ },
49
+ "phases": [
50
+ {
51
+ "duration": null,
52
+ "key": "default",
53
+ "name": "Default",
54
+ "rateCards": [
55
+ {
56
+ "billingCadence": "P1M",
57
+ "featureKey": "monthly_fee",
58
+ "key": "monthly_fee",
59
+ "name": "Monthly Fee",
60
+ "price": {
61
+ "amount": "9.99",
62
+ "paymentTerm": "in_advance",
63
+ "type": "flat"
64
+ },
65
+ "type": "flat_fee"
66
+ },
67
+ {
68
+ "billingCadence": "P1M",
69
+ "entitlementTemplate": {
70
+ "isSoftLimit": true,
71
+ "issueAfterReset": 1000,
72
+ "preserveOverageAtReset": false,
73
+ "type": "metered",
74
+ "usagePeriod": "P1M"
75
+ },
76
+ "featureKey": "api",
77
+ "key": "api",
78
+ "name": "api",
79
+ "price": {
80
+ "mode": "graduated",
81
+ "tiers": [
82
+ {
83
+ "flatPrice": {
84
+ "amount": "0",
85
+ "type": "flat"
86
+ },
87
+ "unitPrice": null,
88
+ "upToAmount": "155000"
89
+ },
90
+ {
91
+ "flatPrice": null,
92
+ "unitPrice": {
93
+ "amount": "0.10",
94
+ "type": "unit"
95
+ }
96
+ }
97
+ ],
98
+ "type": "tiered"
99
+ },
100
+ "type": "usage_based"
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }'
106
+ ```
107
+
108
+ Save the returned `id` — you need it to publish and invite users.
109
+
110
+ The key difference from a public plan is `metadata.zuplo_private_plan` set to
111
+ `"true"`. Everything else (rate cards, entitlements, pricing) works the same as
112
+ public plans.
113
+
114
+ ## Publish the plan
115
+
116
+ Like standard plans, private plans are created as drafts. Publish before users
117
+ can subscribe:
118
+
119
+ ```bash
120
+ curl -X POST "https://dev.zuplo.com/v3/metering/${ZUPLO_BUCKET_ID}/plans/${PLAN_ID}/publish" \
121
+ -H "Authorization: Bearer ${ZUPLO_API_KEY}" \
122
+ -H "Content-Type: application/json" \
123
+ -d '{}'
124
+ ```
125
+
126
+ ## Invite a user
127
+
128
+ After publishing, create an invite tied to the user's email address. The user
129
+ does not need to exist in Zuplo yet, but they must sign in with the invited
130
+ email to see the private plan.
131
+
132
+ ```bash
133
+ curl -X POST "https://dev.zuplo.com/v3/metering/${ZUPLO_BUCKET_ID}/plan-invites" \
134
+ -H "Authorization: Bearer ${ZUPLO_API_KEY}" \
135
+ -H "Content-Type: application/json" \
136
+ -d '{
137
+ "email": "user@example.com",
138
+ "planId": "${PLAN_ID}"
139
+ }'
140
+ ```
141
+
142
+ Once the invite is created, the invited user sees this plan on the Developer
143
+ Portal pricing page after logging in. Users who have not been invited do not see
144
+ the plan.
145
+
146
+ ## How it works
147
+
148
+ - Private plans do not appear on the public pricing table.
149
+ - Only users with a matching invite (by email) see the plan after signing in.
150
+ - A user can be invited to multiple private plans.
151
+ - Private plans support the same rate cards, entitlements, and billing features
152
+ as public plans.
153
+ - Subscriptions to private plans work identically to public plan subscriptions
154
+ (Stripe Checkout, API key provisioning, usage tracking).