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
package/README.md CHANGED
@@ -11,3 +11,12 @@ fast, secure and with game-changing Developer Experience.</p>
11
11
 
12
12
  This is a convenience package that bundles the Zuplo CLI and various packages
13
13
  for use with Zuplo.
14
+
15
+ ## Bundled Documentation
16
+
17
+ This package includes offline documentation and policy reference content in the
18
+ `docs/` directory. After installing, you can find it at:
19
+
20
+ ```
21
+ node_modules/zuplo/docs/
22
+ ```
package/docs/_index.md ADDED
@@ -0,0 +1,44 @@
1
+ # Zuplo Documentation
2
+
3
+ This bundle contains the Zuplo documentation for use by AI agents.
4
+
5
+ ## Contents
6
+
7
+ - `policies/` - Zuplo policy reference
8
+ - `_index.md` - Policy catalog with names and descriptions
9
+ - `{policy-id}/schema.json` - Policy configuration schema (handler export, module, options)
10
+ - `{policy-id}/intro.md` - Short policy description
11
+ - `{policy-id}/doc.md` - Full usage documentation with examples
12
+ - `articles/` - General documentation and how-to guides
13
+ - `ai-gateway/` - AI Gateway documentation
14
+ - `cli/` - Zuplo CLI reference
15
+ - `handlers/` - Request handler documentation
16
+ - `programmable-api/` - Programmable API reference (ZuploRequest, ZuploContext, etc.)
17
+ - `guides/` - Step-by-step tutorials
18
+ - `dev-portal/` - Developer Portal documentation
19
+ - `errors/` - Error reference pages
20
+ - `concepts/` - Core concepts
21
+ - `dedicated/` - Dedicated infrastructure documentation
22
+ - `mcp-server/` - MCP Server documentation
23
+
24
+ ## Configuring Policies
25
+
26
+ To configure a Zuplo policy:
27
+
28
+ 1. Read `policies/_index.md` to find the right policy
29
+ 2. Read the policy's `schema.json` for the handler export, module, and options schema
30
+ 3. Read the policy's `doc.md` for usage details and examples
31
+
32
+ Each policy is configured in `config/policies.json` with this structure:
33
+
34
+ ```json
35
+ {
36
+ "name": "my-policy",
37
+ "policyType": "<policy-id>",
38
+ "handler": {
39
+ "export": "<from schema.json>",
40
+ "module": "<from schema.json>",
41
+ "options": {}
42
+ }
43
+ }
44
+ ```
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: AI Gateway Apps
3
+ sidebar_label: Overview
4
+ ---
5
+
6
+ Apps in the Zuplo AI Gateway represent any app or integration that will call the
7
+ AI Gateway. For example, you might have a custom support chatbot on your
8
+ website - that chatbot would be an App in the AI Gateway. Each App has its own
9
+ API Key so that usage is tracked independently. Apps are owned by a specific
10
+ [team](./teams.mdx) and can access the AI Providers assigned to that team.
11
+
12
+ ## API Keys
13
+
14
+ Each App in the AI Gateway has its own API Key. This allows you to track usage
15
+ independently for each App. You can find the API Key for an App by navigating to
16
+ the **Apps** tab of your AI Gateway project in the
17
+ [Zuplo Portal](https://portal.zuplo.com). Select the App you want to view the
18
+ API Key for. With the App open you will see the API Key section at the top of
19
+ the app page.
20
+
21
+ **Additional Resources**
22
+
23
+ - [Creating & Editing Apps](./managing-apps.mdx) - How to add, remove, and set
24
+ roles for project members.
25
+ - [Creating & Editing Teams](./managing-teams.mdx) - How to create and edit
26
+ teams.
27
+ - [Role Permissions](../articles/accounts/roles-and-permissions.mdx) - Details
28
+ on the roles available at the account and project levels.
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Using Custom AI Providers
3
+ sidebar_label: Custom Providers
4
+ ---
5
+
6
+ Zuplo's AI Gateway supports the addition of custom AI providers. This allows
7
+ users to route their AI Gateway Apps to self hosted services and models,
8
+ providing an additional layer of control, security and governance when using
9
+ these models in production.
10
+
11
+ :::note
12
+
13
+ Please note that currently only OpenAI-compatible models are supported using
14
+ custom providers
15
+
16
+ :::
17
+
18
+ ## Adding a Custom AI Provider
19
+
20
+ To add a custom AI provider to your Zuplo AI Gateway, follow these steps:
21
+
22
+ <Stepper>
23
+
24
+ 1. Navigate to the **Settings** > **AI Providers** section of your AI Gateway
25
+ project in the [Zuplo Portal](https://portal.zuplo.com).
26
+
27
+ 1. Click on the **Add Provider** button.
28
+
29
+ 1. Select the **Custom** option from the Custom Providers section of the list
30
+
31
+ 1. Specify a label for the custom provider instance. You can change the label
32
+ later if required.
33
+
34
+ 1. Specify the API URL of the custom provider you are using.
35
+
36
+ 1. Enter the API Key for the selected provider (if there is no API key required,
37
+ you can leave this blank).
38
+
39
+ 1. Finally, add the available models that are hosted with your custom provider,
40
+ along with their type. Optionally, you can add a dollar cost for input and
41
+ output tokens if you wish to track this via the AI Gateway.
42
+
43
+ 1. Click **Create**.
44
+
45
+ </Stepper>
46
+
47
+ ## Modify, Update or Delete your Custom AI Provider
48
+
49
+ Existing providers can be modified, updated or deleted by navigating to the
50
+ **Settings** > **AI Providers** section and clicking the **Edit** or **Delete**
51
+ icon next to the custom provider you want to modify, update or delete.
52
+
53
+ Further information can be found in the
54
+ [Managing Providers](./managing-providers.mdx) guide.
@@ -0,0 +1,224 @@
1
+ ---
2
+ title: Zuplo AI Gateway Getting Started
3
+ sidebar_label: Getting Started
4
+ ---
5
+
6
+ This guide will walk you through setting up your first AI Gateway project, from
7
+ initial configuration to making your first LLM request through Zuplo.
8
+
9
+ ## Prerequisites
10
+
11
+ - A Zuplo account (sign up free at [zuplo.com](https://zuplo.com))
12
+ - API keys for at least one LLM provider (OpenAI, Anthropic, Google Gemini,
13
+ etc.)
14
+ - An application that needs to call LLM APIs
15
+
16
+ ## Step 1: Create an AI Gateway Project
17
+
18
+ 1. Log into your Zuplo account
19
+ 2. Navigate to **Projects**
20
+ 3. Click **New Project**
21
+ 4. Click **AI or MCP Gateway** at the bottom of the dialog
22
+ 5. Give your project a name (for example, "MyCompany AI Gateway")
23
+ 6. Click **Create Project**
24
+
25
+ Your AI Gateway project will be created in seconds. You'll notice the interface
26
+ includes Apps, Teams, and a setup guide to help you get started.
27
+
28
+ ## Step 2: Configure Providers
29
+
30
+ Providers are the LLM services (like OpenAI or Google Gemini) that your
31
+ applications will use. You'll configure these once as an administrator, and your
32
+ team members can use them without needing direct access to provider API keys.
33
+
34
+ ### Adding Your First Provider
35
+
36
+ 1. Click **Add Provider**
37
+ 2. Select your AI provider (for example, **OpenAI**)
38
+ 3. Enter a name for this provider configuration
39
+ 4. Paste your provider's API key
40
+ 5. Select which models you want to make available to your teams
41
+ 6. Click **Create**
42
+
43
+ ### Adding Additional Providers
44
+
45
+ Repeat the process above to add more providers. This allows your teams to switch
46
+ between providers (OpenAI, Gemini, etc.) without changing application code.
47
+
48
+ **Example providers you might add:**
49
+
50
+ - OpenAI (for GPT models)
51
+ - Google Gemini (for Gemini models)
52
+ - Additional providers as they become available
53
+
54
+ ## Step 3: Create a Team
55
+
56
+ Teams allow you to organize users and set hierarchical budget controls. Even if
57
+ you're starting solo, you'll need at least one team.
58
+
59
+ ### Creating Your Root Team
60
+
61
+ 1. Click **Create Team**
62
+ 2. Name your team (for example, "Root" or your company name)
63
+ 3. Choose an icon for easy identification
64
+ 4. Click **Create Team**
65
+ 5. Set organization-wide limits (optional) by selecting the **Usage & Limits**
66
+ tab:
67
+ - **Budget Limit**: Maximum spend per day (for example, $1,000)
68
+ - **Rate Limits**: Request limits if needed
69
+
70
+ ### Creating Sub-Teams (Optional)
71
+
72
+ For larger organizations, create sub-teams with their own budgets:
73
+
74
+ 1. From your root team, click **Create Sub-Team**
75
+ 2. Name the team (for example, "Engineering Team", "Credit Team")
76
+ 3. Choose an icon
77
+ 4. Set team-specific limits by clicking on **Settings**:
78
+ - Daily budgets that are equal to or less than the parent team's limit
79
+ - Example: If root is $1,000/day, a sub-team might be $500/day
80
+ 5. Click **Save Changes**
81
+
82
+ ## Step 4: Create Applications
83
+
84
+ Applications represent individual projects or services that will use the AI
85
+ Gateway. Each app gets its own unique URL and API key.
86
+
87
+ ### Creating Your First App
88
+
89
+ 1. Click **Apps** followed by **Create App**
90
+ 2. Configure your app:
91
+ - **App Name**: Descriptive name (for example, "Tennis Chat", "Customer
92
+ Support Bot")
93
+ - **Team**: Select which team owns this app
94
+ - **Provider**: Choose your LLM provider (for example, OpenAI)
95
+ - **Completions**: Select the model for chat completions (for example,
96
+ GPT-4o)
97
+ - **Embeddings**: Select the model for embeddings (optional)
98
+ 3. Set application-level budgets:
99
+ - **Daily Limit**: (for example, $1/day for a hackathon project)
100
+ - **Monthly Limit**: (for example, $10/month)
101
+ 4. Enable **Semantic Caching** (optional):
102
+ - Caches similar prompts to reduce costs and improve performance
103
+ - Best for applications with repeated queries
104
+ 5. Click **Create App**
105
+
106
+ ### Access Your App Credentials
107
+
108
+ After creating your application, you'll see:
109
+
110
+ - **API Key**: Your Zuplo-managed key. You'll need it to integrate with your
111
+ application.
112
+
113
+ ## Step 5: Integrate with Your Application
114
+
115
+ Now you'll update your application to use the Zuplo AI Gateway instead of
116
+ calling LLM providers directly.
117
+
118
+ In the examples below, we assume that you are using the official
119
+ [Node.js OpenAI SDK](https://platform.openai.com/docs/libraries/node-js-library)
120
+ and that you have executed `npm install openai`.
121
+
122
+ ### Before: Direct Provider Integration (sample.mjs)
123
+
124
+ ```javascript
125
+ import OpenAI from "openai";
126
+
127
+ // Old approach - directly calling OpenAI
128
+ const openai = new OpenAI({
129
+ apiKey: process.env.OPENAI_API_KEY,
130
+ });
131
+
132
+ const completion = await openai.chat.completions.create({
133
+ model: "gpt-4",
134
+ messages: [{ role: "user", content: "Hello!" }],
135
+ });
136
+
137
+ console.log(completion.choices[0].message.content);
138
+ ```
139
+
140
+ ### After: Using Zuplo AI Gateway (sample.mjs)
141
+
142
+ ```javascript
143
+ import OpenAI from "openai";
144
+
145
+ // New approach - using Zuplo AI Gateway
146
+ const openai = new OpenAI({
147
+ apiKey: process.env.ZUPLO_API_KEY,
148
+ baseURL: "https://your-ai-gateway-url.zuplo.app/v1",
149
+ });
150
+
151
+ const completion = await openai.chat.completions.create({
152
+ model: "gpt-4",
153
+ messages: [{ role: "user", content: "Hello!" }],
154
+ });
155
+
156
+ console.log(completion.choices[0].message.content);
157
+ ```
158
+
159
+ Run the example with `node sample.mjs`.
160
+
161
+ ### What Changed?
162
+
163
+ 1. **URL**: Replace your provider's URL with your Zuplo Gateway URL
164
+ 2. **API Key**: Use your Zuplo API key instead of the provider's key
165
+ 3. **Everything else stays the same**: The request format remains compatible
166
+ with OpenAI's API
167
+
168
+ ## Verify Your Setup
169
+
170
+ ### Make Your First Request
171
+
172
+ Send a test request through your gateway:
173
+
174
+ ```bash
175
+ curl https://your-ai-gateway-url.zuplo.app/v1/chat/completions \
176
+ -H "Authorization: Bearer YOUR_ZUPLO_API_KEY" \
177
+ -H "Content-Type: application/json" \
178
+ -d '{
179
+ "model": "gpt-4",
180
+ "messages": [{"role": "user", "content": "Hello, world!"}]
181
+ }'
182
+ ```
183
+
184
+ ### Check Your Dashboard
185
+
186
+ 1. Return to your AI Gateway project
187
+ 2. Click on your app
188
+ 3. Click on **Dashboard** to view:
189
+ - Request count
190
+ - Token usage
191
+ - Time to first byte
192
+ - Current spending
193
+
194
+ You should see your test request appear with token usage and performance
195
+ metrics.
196
+
197
+ ## Next Steps
198
+
199
+ Now that your AI Gateway is running, explore additional features:
200
+
201
+ ### Switch Providers Without Code Changes
202
+
203
+ 1. Go to your app settings
204
+ 2. Change the **Provider** dropdown (for example, from OpenAI to Gemini)
205
+ 3. Select a new model
206
+ 4. Click **Save Changes**
207
+
208
+ Your application will now use the new provider without any code changes.
209
+
210
+ ## Common Issues
211
+
212
+ **Issue**: "Authentication failed" error
213
+
214
+ - **Solution**: Verify you're using your Zuplo API key, not your provider's key
215
+
216
+ **Issue**: Budget limit reached immediately
217
+
218
+ - **Solution**: Check that sub-team limits don't exceed available budget from
219
+ parent team
220
+
221
+ **Issue**: Semantic caching not working
222
+
223
+ - **Solution**: Ensure caching is enabled in your application settings and
224
+ prompts are similar enough to match
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Zuplo AI Guardrails
3
+ sidebar_label: Overview
4
+ ---
5
+
6
+ The Zuplo AI Gateway supports guardrails to protect your AI-powered applications
7
+ from security threats, ensure compliance, and maintain quality in both requests
8
+ and responses flowing through the gateway.
9
+
10
+ ## Available Guardrail Policies
11
+
12
+ ### Akamai AI Firewall
13
+
14
+ The [Akamai AI Firewall](./policies/akamai-ai-firewall.mdx) provides
15
+ enterprise-grade security for AI applications, including:
16
+
17
+ - **Prompt injection defense** - Protects against attackers manipulating AI
18
+ models through deceptive inputs
19
+ - **Data loss prevention (DLP)** - Detects and blocks sensitive data leaks in
20
+ AI-generated responses and incoming requests
21
+ - **Toxic content filtering** - Flags hate speech, misinformation, and offensive
22
+ content
23
+ - **Adversarial AI security** - Protects against remote code execution, model
24
+ back doors, and data poisoning attacks
25
+
26
+ ## Observability & Tracing
27
+
28
+ Guardrails work alongside observability policies to provide visibility into AI
29
+ interactions:
30
+
31
+ - [Comet Opik Tracing](./policies/comet-opik-tracing.mdx) - Trace and monitor AI
32
+ interactions with Comet's Opik platform
33
+ - [Galileo Tracing](./policies/galileo-tracing.mdx) - Monitor AI quality and
34
+ performance with Galileo
35
+
36
+ ## How Guardrails Work
37
+
38
+ Guardrails are applied as policies on your AI Gateway routes. They inspect both
39
+ inbound requests (prompts sent to LLM providers) and outbound responses (content
40
+ returned from LLM providers) in real-time.
41
+
42
+ When a guardrail detects a policy violation:
43
+
44
+ 1. The request or response is blocked before reaching its destination
45
+ 2. An appropriate error response is returned to the caller
46
+ 3. The violation is logged for audit and monitoring purposes
47
+
48
+ ## Getting Started
49
+
50
+ To add guardrails to your AI Gateway:
51
+
52
+ 1. Navigate to the API Gateway project associated with your AI Gateway in the
53
+ [Zuplo Portal](https://portal.zuplo.com)
54
+ 2. Open the **Code** tab and select your `routes.oas.json` file
55
+ 3. Select the route for your AI Gateway endpoint
56
+ 4. Click **Add Policy** and search for the guardrail you want to add
57
+ 5. Configure the policy settings and click **OK**
58
+ 6. Save your changes to deploy
59
+
60
+ ## Custom Guardrails
61
+
62
+ You can build custom guardrails using Zuplo's programmable gateway. Create a
63
+ custom inbound or outbound policy that inspects request/response content and
64
+ applies your own rules. This allows you to implement organization-specific
65
+ content policies, regulatory compliance checks, or domain-specific validation.
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: AI SDK
3
+ sidebar_label: AI SDK
4
+ ---
5
+
6
+ The [AI SDK](https://ai-sdk.dev/) is a free open-source library that gives you
7
+ the tools you need to build AI-powered products. It's compatible with a large
8
+ selection of providers and models, and has a large selection of additional
9
+ community supported providers being added regularly.
10
+
11
+ ## Prerequisites
12
+
13
+ In order to use the AI Gateway with any AI SDK powered application you will need
14
+ to complete these steps first:
15
+
16
+ <Stepper>
17
+
18
+ 1. Create a [new provider](/ai-gateway/managing-providers) in the AI Gateway for
19
+ the provider you want to use with AI SDK
20
+
21
+ 2. [Set up a new team](/ai-gateway/managing-teams)
22
+
23
+ 3. Create a [new app](/ai-gateway/managing-apps) to use specifically with AI SDK
24
+ and assign it to the team you created
25
+
26
+ 4. Copy the API Key for the app you created, as well as the Gateway URL
27
+
28
+ </Stepper>
29
+
30
+ ## Configure the AI SDK
31
+
32
+ To route all AI SDK requests through Zuplo instead of directly to the API of the
33
+ chosen provider, you must set the API `baseUrl` in the SDK configuration to
34
+ point to the Gateway URL of your Zuplo AI Gateway.
35
+
36
+ Additionally, you will need to change the value of `apiKey` to the API key of
37
+ the app you have configured in Zuplo.
38
+
39
+ ### OpenAI
40
+
41
+ ```typescript
42
+ import { createOpenAI } from "@ai-sdk/openai";
43
+ import { generateText } from "ai";
44
+
45
+ const openai = createOpenAI({
46
+ apiKey: process.env.ZUPLO_AI_GATEWAY_API_KEY,
47
+ baseURL: "https://my-ai-gateway.zuplo.app/v1",
48
+ });
49
+
50
+ const { text } = await generateText({
51
+ model: openai.chat("gpt-4o"),
52
+ prompt: "Write a one-sentence bedtime story about a unicorn.",
53
+ });
54
+ ```
55
+
56
+ ### Anthropic
57
+
58
+ ```typescript
59
+ import { createAnthropic } from "@ai-sdk/anthropic";
60
+ import { generateText } from "ai";
61
+
62
+ const anthropic = createAnthropic({
63
+ apiKey: process.env.ZUPLO_AI_GATEWAY_API_KEY,
64
+ baseURL: "https://my-ai-gateway.zuplo.app/v1",
65
+ // Authorization header is also required
66
+ headers: {
67
+ Authorization: `Bearer ${process.env.ZUPLO_AI_GATEWAY_API_KEY}`,
68
+ },
69
+ });
70
+
71
+ const { text } = await generateText({
72
+ model: anthropic("claude-sonnet-4-5-20250929"),
73
+ prompt: "Write a one-sentence bedtime story about a unicorn.",
74
+ });
75
+ ```
76
+
77
+ ### Google
78
+
79
+ ```typescript
80
+ import { createGoogleGenerativeAI } from "@ai-sdk/google";
81
+ import { generateText } from "ai";
82
+
83
+ const google = createGoogleGenerativeAI({
84
+ apiKey: process.env.ZUPLO_AI_GATEWAY_API_KEY,
85
+ baseURL: "https://my-ai-gateway.zuplo.app/v1",
86
+ });
87
+
88
+ const { text } = await generateText({
89
+ model: google("gemini-2.5-flash"),
90
+ prompt: "Write a one-sentence bedtime story about a unicorn.",
91
+ });
92
+ ```
93
+
94
+ ### Mistral
95
+
96
+ ```typescript
97
+ import { createMistral } from "@ai-sdk/mistral";
98
+ import { generateText } from "ai";
99
+
100
+ const mistral = createMistral({
101
+ apiKey: process.env.ZUPLO_AI_GATEWAY_API_KEY,
102
+ baseURL: "https://my-ai-gateway.zuplo.app/v1",
103
+ });
104
+
105
+ const { text } = await generateText({
106
+ model: mistral("mistral-large-latest"),
107
+ prompt: "Write a one-sentence bedtime story about a unicorn.",
108
+ });
109
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: Claude Code
3
+ sidebar_label: Claude Code
4
+ ---
5
+
6
+ The Zuplo AI Gateway supports the [Anthropic](https://docs.claude.com/en/home)
7
+ `/v1/messages` API endpoint. This means that you can configure
8
+ [Claude Code](https://www.claude.com/product/claude-code) to work seamlessly via
9
+ the AI Gateway.
10
+
11
+ ## Claude Code Setup
12
+
13
+ <Stepper>
14
+
15
+ 1. Create a [new provider](/ai-gateway/managing-providers) in the AI Gateway for
16
+ Anthropic
17
+
18
+ 2. [Set up a new team](/ai-gateway/managing-teams)
19
+
20
+ 3. Create a [new app](/ai-gateway/managing-apps) to use with Claude Code and
21
+ assign it to the team you created
22
+
23
+ 4. Copy the API Key for the app you created, as well as the Gateway URL
24
+
25
+ 5. Add the API key and Gateway URL to your environment, or Claude Code settings,
26
+ using either approach below
27
+
28
+ </Stepper>
29
+
30
+ ### Environment
31
+
32
+ ```
33
+ ANTHROPIC_AUTH_TOKEN=<your-ai-gateway-app-api-key>
34
+ ANTHROPIC_BASE_URL=<your-ai-gateway-url>
35
+ ```
36
+
37
+ ### Using settings.json
38
+
39
+ ```json
40
+ {
41
+ "env": {
42
+ "ANTHROPIC_AUTH_TOKEN": "<your-ai-gateway-app-api-key>",
43
+ "ANTHROPIC_BASE_URL": "<your-ai-gateway-url>"
44
+ }
45
+ }
46
+ ```
47
+
48
+ Restart Claude and it will switch to using your new AI Gateway configuration and
49
+ all your Claude Code LLM requests will route through the AI Gateway.
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: Codex
3
+ sidebar_label: Codex
4
+ ---
5
+
6
+ [Codex](https://developers.openai.com/codex) is a coding agent developed by
7
+ OpenAI that you can run locally from your terminal and that can read, modify,
8
+ and run code on your machine, in the chosen directory. It’s open-source, and
9
+ built in Rust for speed and efficiency.
10
+
11
+ ## Prerequisites
12
+
13
+ In order to use the AI Gateway with Codex you will need to complete these steps
14
+ first:
15
+
16
+ <Stepper>
17
+
18
+ 1. Create a [new provider](/ai-gateway/managing-providers) in the AI Gateway for
19
+ the provider you want to use with Codex
20
+
21
+ 2. [Set up a new team](/ai-gateway/managing-teams)
22
+
23
+ 3. Create a [new app](/ai-gateway/managing-apps) to use specifically with Codex
24
+ and assign it to the team you created
25
+
26
+ 4. Copy the API Key for the app you created, as well as the Gateway URL
27
+
28
+ </Stepper>
29
+
30
+ ## Configure Codex CLI
31
+
32
+ There are two approaches you can take to using Codex with Zuplo's AI Gateway.
33
+
34
+ 1. **Route OpenAI through AI Gateway** - This would configure your OpenAI
35
+ provider in Codex to route requests through the AI Gateway rather than
36
+ directly to OpenAI
37
+
38
+ 2. **Create a Zuplo specific provider** - Use Zuplo as a provider that be
39
+ selected in the Codex configuration and work with any OpenAI compatible
40
+ models
41
+
42
+ Configuration steps for both options are below:
43
+
44
+ ### Route OpenAI through AI Gateway
45
+
46
+ Open the [Codex configuration](https://developers.openai.com/codex/local-config)
47
+ `~/.codex/config.toml` and modify the `model_providers.openai-chat-completions`
48
+ entry so that the `base_url` points to your AI Gateway URL, and your `env_key`
49
+ is set to the API Key of the app you created to use with Codex.
50
+
51
+ ```toml
52
+ [model_providers.openai-chat-completions]
53
+ name = "OpenAI using Chat Completions"
54
+ base_url = "https://<your-ai-gateway-url>/v1"
55
+ env_key = "ZUPLO_AI_GATEWAY_API_KEY"
56
+ ```
57
+
58
+ Save the file and reload Codex. Your OpenAI requests will now be routed through
59
+ the Zuplo AI Gateway.
60
+
61
+ ### Zuplo AI Gateway provider
62
+
63
+ To add a specific provider for the AI Gateway you can add an additional entry to
64
+ the Codex `config.toml` file.
65
+
66
+ ```toml
67
+ [model_providers.zuplo]
68
+ name = "Zuplo AI Gateway"
69
+ base_url = "https://<your-ai-gateway-url>/v1"
70
+ env_key = "ZUPLO_AI_GATEWAY_API_KEY"
71
+ ```
72
+
73
+ Save the file and reload Codex. Your Zuplo AI Gateway provider will now be
74
+ available and you can switch Codex over to use it at any time by running:
75
+
76
+ ```bash
77
+ codex --config model_provider="zuplo"
78
+ ```