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,212 @@
1
+ ---
2
+ title: Controlling Akamai CDN Caching
3
+ sidebar_label: CDN Caching
4
+ description:
5
+ How to control Akamai CDN caching behavior using response headers from your
6
+ Zuplo API Gateway.
7
+ ---
8
+
9
+ <!-- vale Vale.Spelling = NO -->
10
+
11
+ When running Zuplo on Akamai Connected Cloud, your API Gateway can control how
12
+ the Akamai CDN caches responses by setting the `Cache-Control` header. This
13
+ allows you to optimize caching behavior for different endpoints without
14
+ modifying Akamai Property Manager configurations.
15
+
16
+ ## How Akamai caching works
17
+
18
+ Akamai's CDN can cache responses at edge servers to reduce load to your Zuplo
19
+ API Gateway and improve response times for clients.
20
+
21
+ <Diagram type="sequence" height="h-[420px]">
22
+ <DiagramActor id="client" variant="yellow">
23
+ Client
24
+ </DiagramActor>
25
+ <DiagramActor id="cdn" variant="blue">
26
+ Akamai CDN
27
+ </DiagramActor>
28
+ <DiagramActor id="gateway" variant="zuplo">
29
+ Zuplo
30
+ </DiagramActor>
31
+ <DiagramActor id="backend" variant="green">
32
+ Backend
33
+ </DiagramActor>
34
+ <DiagramMessage from="client" to="cdn">
35
+ Request (cache miss)
36
+ </DiagramMessage>
37
+ <DiagramMessage from="cdn" to="gateway">
38
+ Forward request
39
+ </DiagramMessage>
40
+ <DiagramMessage from="gateway" to="backend">
41
+ Forward request
42
+ </DiagramMessage>
43
+ <DiagramMessage from="backend" to="gateway">
44
+ Response
45
+ </DiagramMessage>
46
+ <DiagramMessage from="gateway" to="cdn">
47
+ Response + Cache-Control headers
48
+ </DiagramMessage>
49
+ <DiagramMessage from="cdn" to="client">
50
+ Response (cached at edge)
51
+ </DiagramMessage>
52
+ </Diagram>
53
+
54
+ When a request arrives, Akamai checks if a cached response exists. On a cache
55
+ miss, the request goes to Zuplo, which can set cache headers on the response.
56
+ Akamai caches the response according to those headers and serves subsequent
57
+ requests directly from the edge cache.
58
+
59
+ The CDN determines caching behavior based on:
60
+
61
+ 1. **Akamai Property Manager settings** - Default caching rules configured in
62
+ your CDN property
63
+ 2. **Origin response headers** - Headers sent by Zuplo that can override or
64
+ influence default behavior
65
+
66
+ When your Akamai property is configured to "Honor origin Cache-Control and
67
+ Expires" headers, Zuplo can control caching behavior on a per-response basis.
68
+
69
+ For complete details on Akamai's caching behavior, see the
70
+ [Akamai caching documentation](https://techdocs.akamai.com/property-mgr/docs/caching-2).
71
+
72
+ ## Cache-Control header
73
+
74
+ The `Cache-Control` header controls caching for both the CDN and downstream
75
+ clients (browsers). Akamai honors the following directives when configured to
76
+ respect origin headers:
77
+
78
+ | Directive | Description |
79
+ | ----------------- | ----------------------------------------------------------- |
80
+ | `max-age` | Cache duration for browsers and downstream caches (seconds) |
81
+ | `s-maxage` | Cache duration for shared caches like CDNs (seconds) |
82
+ | `no-cache` | Revalidate with origin before serving cached content |
83
+ | `no-store` | Don't cache the response at all |
84
+ | `private` | Only allow browser caching, not CDN caching |
85
+ | `public` | Allow caching by CDNs and browsers |
86
+ | `must-revalidate` | Must revalidate after max-age expires |
87
+
88
+ ### Using s-maxage for CDN caching
89
+
90
+ The `s-maxage` directive is specifically for shared caches like CDNs. When both
91
+ `max-age` and `s-maxage` are present, Akamai uses `s-maxage` for edge caching
92
+ and forwards `max-age` to browsers:
93
+
94
+ ```
95
+ Cache-Control: public, max-age=60, s-maxage=3600
96
+ ```
97
+
98
+ This example caches content at the CDN for 1 hour while instructing browsers to
99
+ cache for only 1 minute.
100
+
101
+ ### Common Cache-Control patterns
102
+
103
+ | Scenario | Header Value |
104
+ | -------------------------- | ---------------------------------------------------- |
105
+ | CDN: 1 hour, Browser: none | `Cache-Control: public, s-maxage=3600, max-age=0` |
106
+ | CDN: 1 day, Browser: 5 min | `Cache-Control: public, s-maxage=86400, max-age=300` |
107
+ | No caching | `Cache-Control: no-store` |
108
+ | Browser only, no CDN | `Cache-Control: private, max-age=3600` |
109
+
110
+ ## Setting cache headers in Zuplo
111
+
112
+ ### Using the Set Headers policy
113
+
114
+ The simplest way to add cache headers is using the
115
+ [Set Headers Outbound Policy](../../policies/set-headers-outbound.mdx):
116
+
117
+ ```json title="config/policies.json"
118
+ {
119
+ "name": "cache-one-hour",
120
+ "policyType": "set-headers-outbound",
121
+ "handler": {
122
+ "export": "SetHeadersOutboundPolicy",
123
+ "module": "$import(@zuplo/runtime)",
124
+ "options": {
125
+ "headers": [
126
+ {
127
+ "name": "Cache-Control",
128
+ "value": "public, max-age=60, s-maxage=3600"
129
+ }
130
+ ]
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ This configuration caches responses at the CDN for 1 hour while allowing
137
+ browsers to cache for only 1 minute.
138
+
139
+ ### Using custom code
140
+
141
+ For dynamic cache control based on response content or status, use a custom
142
+ outbound policy:
143
+
144
+ ```typescript title="modules/cache-control.ts"
145
+ import { ZuploContext, ZuploRequest } from "@zuplo/runtime";
146
+
147
+ export default async function (
148
+ response: Response,
149
+ request: ZuploRequest,
150
+ context: ZuploContext,
151
+ ) {
152
+ const headers = new Headers(response.headers);
153
+
154
+ // Cache successful responses for 1 hour at CDN, 1 minute in browser
155
+ if (response.status >= 200 && response.status < 300) {
156
+ headers.set("Cache-Control", "public, max-age=60, s-maxage=3600");
157
+ }
158
+ // Don't cache error responses
159
+ else if (response.status >= 400) {
160
+ headers.set("Cache-Control", "no-store");
161
+ }
162
+
163
+ return new Response(response.body, {
164
+ status: response.status,
165
+ statusText: response.statusText,
166
+ headers,
167
+ });
168
+ }
169
+ ```
170
+
171
+ ## Downstream cacheability
172
+
173
+ By default, Akamai sends the smaller of the origin's `Cache-Control` max-age and
174
+ the remaining edge cache lifetime to clients. This ensures browsers don't cache
175
+ content longer than it remains valid at the edge.
176
+
177
+ You can control downstream (client) caching independently using Property Manager
178
+ settings or by setting explicit `max-age` values in your `Cache-Control` header.
179
+
180
+ For more information, see
181
+ [Akamai's downstream cacheability documentation](https://techdocs.akamai.com/property-mgr/docs/downstream-cacheability).
182
+
183
+ ## Best practices
184
+
185
+ 1. **Use s-maxage for CDN caching** - Separate CDN and browser cache durations
186
+ for better control
187
+ 2. **Don't cache authenticated responses** - Use `private` or `no-store` for
188
+ user-specific data
189
+ 3. **Set appropriate Vary headers** - If responses vary by header (like
190
+ `Accept-Language`), include a `Vary` header
191
+
192
+ ## Akamai Property Manager configuration
193
+
194
+ For Zuplo to control caching via headers, ensure your Akamai CDN property is
195
+ configured to honor origin headers:
196
+
197
+ 1. In Property Manager, navigate to your property's caching behavior
198
+ 2. Set **Caching Option** to "Honor origin Cache-Control and Expires"
199
+ 3. Enable the Cache-Control directives you want to honor (max-age, s-maxage,
200
+ etc.)
201
+ 4. Set a **Default Max-age** as a fallback when origin headers are missing
202
+
203
+ For detailed CDN setup instructions, see [Setting up Akamai CDNs](./cdn.mdx).
204
+
205
+ ## Related resources
206
+
207
+ - [Set Headers Policy](../../policies/set-headers-outbound.mdx) - Add headers to
208
+ responses
209
+ - [Caching Policy](../../policies/caching-inbound.mdx) - Zuplo's built-in
210
+ response caching
211
+ - [Akamai Caching Documentation](https://techdocs.akamai.com/property-mgr/docs/caching-2) -
212
+ Complete Akamai caching reference
@@ -0,0 +1,156 @@
1
+ ---
2
+ title: Setting up Akamai CDNs
3
+ sidebar_label: Akamai CDN
4
+ ---
5
+
6
+ <!-- vale Vale.Spelling["Edgescape","Maxage"] = NO -->
7
+
8
+ When running managed dedicated on the Akamai Cloud, you need to set up 2 CDNs,
9
+ one for your API endpoint deployments, and one for your developer portal.
10
+
11
+ This document outlines the configurations you need to add to your Akamai CDNs to
12
+ set them up to access your API gateway and developer portal.
13
+
14
+ All configurations in this guide were done on the Akamai Property Manager, see
15
+ the
16
+ [Akamai docs](https://techdocs.akamai.com/property-mgr/docs/know-your-around)
17
+ for more details.
18
+
19
+ ### Domains
20
+
21
+ Before you configure the CDN for your API Gateway and Developer Portal, you will
22
+ to decide how you would like your domains to be set up. Generally, you will
23
+ provision two types of domains - a static domain for production and wildcard
24
+ domains for preview environments.
25
+
26
+ For preview environments, you will use wildcard domains so that each environment
27
+ (normally each git branch) will have its own subdomain. For example, you might
28
+ use `*.api.example.com` for the API gateway and `*.dev.example.com` for the
29
+ developer portal. This will allow you to have URLs for each environment like
30
+ `https://my-environment-123.api.example.com` and
31
+ `https://my-environment-123.dev.example.com`.
32
+
33
+ For production, you will want to use friendly domains like `api.example.com` and
34
+ `developers.example.com`. Some customers also choose to host environments like
35
+ staging on custom domains as well. This is up to you, just let your Zuplo
36
+ account manager know how you would like to set up your domains.
37
+
38
+ The setup for both configurations is the same, but the domain name and
39
+ certificates will be different.
40
+
41
+ ### Prerequisites
42
+
43
+ 1. Provision the domains that you would like these CDNs to have and certificates
44
+ for those domains, according to the domain section.
45
+ 2. Request the Origin URLs for your API gateway and developer portal from your
46
+ Zuplo account manager.
47
+ 3. Let your Zuplo account manager know what hostnames/domains you will be using
48
+ in your CDNs.
49
+
50
+ ## API Gateway CDN
51
+
52
+ This section guides you on how to configure your API Gateway CDN.
53
+
54
+ Add the API gateway domain you provisioned to the Property Hostname for the API
55
+ Gateway CDN. See the Akamai docs on
56
+ [configuring HTTPS host names](https://techdocs.akamai.com/property-mgr/docs/serve-content-over-https).
57
+
58
+ An example of how you might configure your API Gateway CDN domains for your
59
+ preview environment and your production environment is below. Note that for your
60
+ development environment CDN, you would need the wildcard domain since many
61
+ development environments are named things like
62
+ "api-main-someuuid.your-account.zuplo.work".
63
+
64
+ ![Configure multiple host names](../../../public/media/managed-dedicated-akamai/multiple_hostname_domains.png)
65
+
66
+ In this example, the preview environment domain is the wildcard domain
67
+ `*.zuplo.apidemo.org`, and the production domain is `ftest.zuplo.apidemo.org`.
68
+
69
+ After configuring the CDN domains, make the following behavior changes:
70
+
71
+ 1. Create a Set Variable behavior with the following configurations (also shown
72
+ in the screenshot below):
73
+
74
+ a. Create a variable. This is called PMUSER_REPLACE_URL in the example below,
75
+ but you can name this anything. This is used for a URL REGEX replacement to
76
+ forward the proper host header to the Zuplo Origin.
77
+
78
+ b. The "Create Value From" field should be "Extract".
79
+
80
+ c. The "Get Data From" field should be "Request Header".
81
+
82
+ d. The "Header Name" field should be "Host".
83
+
84
+ e. The "Operation" field should be "Substitute (Regular Expression)".
85
+
86
+ f. The "Regex" field should be ^([^.]+)\..\*$.
87
+
88
+ g. The "Replacement" field should be something like
89
+ $1.your-account.zuplo.work. This is modeled off the origin URL. For example,
90
+ if the origin URL is "cname.your-account.zuplo.work", then the replacement
91
+ should be $1.your-account.zuplo.work.
92
+
93
+ h. Case Sensitive and Global Substitution should be set to "Off".
94
+
95
+ ![Set variable behavior](../../../public/media/managed-dedicated-akamai/regex-behaviour.png)
96
+
97
+ 2. Configure the Origin URL to point to the URL given to you by Zuplo for your
98
+ API gateway. Ensure that the Forward Host Header is configured to be a Custom
99
+ Value, and the value should be the variable you created in the previous step.
100
+ This would look something similar to below:
101
+ ![API gateway origin URL](../../../public/media/managed-dedicated-akamai/api_gateway_origin_url.png)
102
+
103
+ 3. Turn on Content Targeting (Edgescape) in the Geolocation rule in the Property
104
+ Manager Sidebar.
105
+ ![Geolocation](../../../public/media/managed-dedicated-akamai/geolocation.png)
106
+ 4. Enable all Allowed Methods rules (POST, OPTIONS, PUT, DELETE, PATCH) in the
107
+ Property Manager sidebar.
108
+
109
+ ## Developer Portal CDN
110
+
111
+ This section guides you on how to set up the Developer Portal CDN.
112
+
113
+ Add the Developer Portal gateway domain you provisioned to the Property Hostname
114
+ for the API Gateway CDN. See the Akamai docs on
115
+ [configuring HTTPS host names](https://techdocs.akamai.com/property-mgr/docs/serve-content-over-https).
116
+ This is done similarly to your API gateway CDN hostname configuration, but with
117
+ the domains you provisioned for your Developer Portal.
118
+
119
+ An example of how you might configure your Developer Portal CDN domains for your
120
+ preview environment and your production environment is below.
121
+
122
+ ![Configure multiple host names](../../../public/media/managed-dedicated-akamai/multiple_hostname_domains.png)
123
+
124
+ In this example, the preview environment domain is the wildcard domain
125
+ `*.zuplo.apidemo.org`, and the production domain is `ftest.zuplo.apidemo.org`.
126
+
127
+ Under the Default Rule page, add the following behaviors:
128
+
129
+ 1. Configure the origin URL to be the URL given to be the one given to you by
130
+ Zuplo for your Developer Portal. This will look similarly to how you
131
+ configured it for your API Gateway CDN. Take note that the Forward Host
132
+ header should also be set as the Origin Hostname.
133
+
134
+ 2. Modify Incoming Request Header behavior, with the following fields:
135
+ - Action: Add
136
+ - Select Header Name: Other
137
+ - Custom Header Name: `X-Forwarded-Host`
138
+ - Header Value: `\{\{builtin.AK_HOST\}\}`.
139
+
140
+ This should look like the picture below:
141
+
142
+ ![Dev portal CDN base path and incoming header behaviors](../../../public/media/managed-dedicated-akamai/default_rule_dev_portal_config.png)
143
+
144
+ 3. Caching, which should have the following configurations: Caching Option
145
+ should be set to "Honor origin Cache-Control and Expires", Force Validation
146
+ of stale objects should be set to "Always revalidate with origin", Default
147
+ Maxage should be set to 0 seconds, and all the Cache-Control header
148
+ directives should be enabled. This will look like below:
149
+
150
+ ![Dev portal caching behavior](../../../public/media/managed-dedicated-akamai/dev_portal_cdn_caching_behavior.png)
151
+
152
+ Congratulations, you've set up your Akamai CDN to serve your API Gateway and
153
+ Developer Portal! At this point, you should be able to test that these things
154
+ are working by either hitting an endpoint in your API gateway (e.g.,
155
+ mygateway.com/my/endpoint), or navigating to a page in your developer portal
156
+ (e.g., myportal.com/home).
@@ -0,0 +1,208 @@
1
+ ---
2
+ title: "Managed Dedicated: Architecture"
3
+ sidebar_label: Architecture
4
+ ---
5
+
6
+ Zuplo's managed dedicated instances are highly available, scalable, and secure.
7
+ With a managed dedicated instance of Zuplo, your API Gateway runs on isolated
8
+ instances and, when running on a cloud provider that supports it, a dedicated
9
+ VPC. This document outlines the components and architecture of a managed
10
+ dedicated instance of a Zuplo API Gateway.
11
+
12
+ ## Components
13
+
14
+ A managed dedicated instance of Zuplo consists of the following components:
15
+
16
+ - **API Gateway**: The API Gateway is the core component of Zuplo. It receives
17
+ incoming requests, routes them to the appropriate backend, and returns the
18
+ response to the client. The API Gateway handles authentication, authorization,
19
+ rate limiting, and other features.
20
+ - **Gateway Services**: Zuplo, being a highly distributed API Gateway, uses
21
+ services to facilitate features such as
22
+ [Rate Limiting](../articles/step-2-add-rate-limiting.mdx) and
23
+ [API Key Authentication](../articles/api-key-management.mdx).
24
+ - **Control Plane**: The Control Plane manages the configuration of the API
25
+ Gateway. It deploys new configurations, manages the lifecycle of the API
26
+ Gateway, and monitors its health.
27
+ - **Analytics and Logging**: Zuplo provides analytics and logging for your API
28
+ Gateway. This includes request/response logging, error logging, and analytics
29
+ on request volume, latency, and other metrics.
30
+ - **Developer Portal**: The Developer Portal is a web-based interface that
31
+ enables developers to interact with your API. It provides documentation,
32
+ testing tools, and other features to help developers integrate with your API.
33
+
34
+ ## Custom requirements
35
+
36
+ Customize a managed dedicated instance of Zuplo to meet your specific
37
+ requirements. Examples include:
38
+
39
+ - **Regions & Availability Zones** - Zuplo can deploy to multiple regions,
40
+ availability zones, or data centers to provide high availability and low
41
+ latency.
42
+ - **Developer Portal Hosting** - Zuplo manages the developer portal hosting from
43
+ a CDN. By default, the developer portal's static assets serve from a global
44
+ CDN. However, you can configure it to use only regional CDN locations if
45
+ required.
46
+ - **Networking** - Zuplo can deploy with a variety of network configurations. To
47
+ learn more, see [Networking](./networking.mdx).
48
+ - **Disabling Features** - Zuplo can disable unnecessary features for specific
49
+ use cases or those that don't meet security or compliance requirements. For
50
+ example, if you prefer custom analytics over the built-in API analytics, you
51
+ can disable the built-in analytics. When disabled, Zuplo stops collecting or
52
+ storing analytics data for the APIs.
53
+ - **Custom Logging & Monitoring** - Zuplo can integrate with your existing
54
+ logging and monitoring systems. Logs and other data go directly from the API
55
+ Gateway to your logging provider. Zuplo doesn't collect or store this data.
56
+
57
+ ## Security
58
+
59
+ All deployment models of Zuplo are secure and provide isolation between each
60
+ customer and environment. Managed dedicated instances of Zuplo add the ability
61
+ for you to customize the networking and connectivity to meet your specific
62
+ security requirements.
63
+
64
+ - **IAM Authorization**: Managed dedicated instances of Zuplo can use the IAM
65
+ capabilities to control traffic between the API Gateway and other services.
66
+ - **Encryption**: Zuplo encrypts data both in transit and at rest. TLS secures
67
+ all data sent to or from the API Gateway. Zuplo encrypts stored data at rest.
68
+ - **Access Control**: Zuplo provides robust authentication and access control
69
+ mechanisms. You control who has access to your API Gateway management
70
+ capabilities, what they can do, and what data they can access.
71
+ - **Audit Logs**: Zuplo provides detailed audit logs of all management
72
+ operations. You can see who did what, when they did it, and what data they
73
+ accessed. Additionally, Zuplo maintains internal audit logs of all activity
74
+ performed by the Zuplo team.
75
+
76
+ ## Architecture
77
+
78
+ The architecture of a managed dedicated instance of Zuplo provides you with all
79
+ the benefits of a SaaS platform while giving you the control and isolation of a
80
+ dedicated instance. The architecture is highly available, scalable, and secure.
81
+
82
+ The following diagram shows the high-level architecture of a managed dedicated
83
+ instance of Zuplo and how the components interact with each other.
84
+
85
+ <Diagram height="h-64">
86
+ <DiagramNode id="client">Client</DiagramNode>
87
+ <DiagramGroup id="dedicated-vpc" label="Dedicated VPC">
88
+ <DiagramNode id="gateway" variant="zuplo">
89
+ Zuplo API Gateway
90
+ </DiagramNode>
91
+ <DiagramNode id="services" variant="zuplo">
92
+ Gateway Services
93
+ </DiagramNode>
94
+ </DiagramGroup>
95
+ <DiagramGroup id="customer-vpc" label="Customer VPC">
96
+ <DiagramNode id="backend">Backend</DiagramNode>
97
+ </DiagramGroup>
98
+ <DiagramNode id="control" variant="zuplo">
99
+ Control Plane
100
+ </DiagramNode>
101
+ <DiagramEdge from="client" to="gateway" />
102
+ <DiagramEdge from="gateway" to="backend" />
103
+ <DiagramEdge from="gateway" to="services" fromSide="bottom" toSide="top" />
104
+ <DiagramEdge from="control" to="gateway" />
105
+ </Diagram>
106
+
107
+ ### Deployments
108
+
109
+ When you deploy to your managed dedicated instance of Zuplo, you upload your
110
+ source code and configuration files to the Control Plane. The Control Plane then
111
+ deploys your API Gateway to the appropriate infrastructure. The API Gateway
112
+ deploys to multiple nodes in multiple regions to provide high availability and
113
+ low latency. If you run in multiple regions, the Control Plane manages the
114
+ deployment to each region without any downtime.
115
+
116
+ If you use Zuplo's Developer Portal, the control plane also deploys the web
117
+ application that powers the Developer Portal. The Developer Portal hosts on a
118
+ CDN to provide low latency access to end-users. The CDN configuration can be
119
+ customized to meet your specific requirements.
120
+
121
+ <Diagram height="h-56">
122
+ <DiagramNode id="source">Source Control</DiagramNode>
123
+ <DiagramNode id="control" variant="zuplo">
124
+ Control Plane
125
+ </DiagramNode>
126
+ <DiagramNode id="gateway" variant="zuplo">
127
+ Zuplo API Gateway
128
+ </DiagramNode>
129
+ <DiagramNode id="portal" variant="zuplo">
130
+ Dev Portal
131
+ </DiagramNode>
132
+ <DiagramEdge from="source" to="control" label="Deploy" />
133
+ <DiagramEdge from="control" to="gateway" />
134
+ <DiagramEdge from="control" to="portal" />
135
+ </Diagram>
136
+
137
+ ### Multiple regions
138
+
139
+ It's common practice to deploy your API Gateway to multiple regions to provide
140
+ higher availability, lower latency, and meet regulatory requirements. Zuplo can
141
+ deploy your API Gateway to multiple regions and manage the deployment to each
142
+ region without any downtime.
143
+
144
+ When you deploy your API Gateway to multiple regions, Zuplo uses a global load
145
+ balancer to route traffic to the closest region. This provides low latency
146
+ access to your APIs for end-users around the world. The load balancer also
147
+ handles failover in case of an outage in one region.
148
+
149
+ <Diagram height="h-64">
150
+ <DiagramNode id="client">Client</DiagramNode>
151
+ <DiagramNode id="lb">Load Balancer</DiagramNode>
152
+ <DiagramNode id="region1" variant="zuplo">
153
+ API Gateway (Region 1)
154
+ </DiagramNode>
155
+ <DiagramNode id="region2" variant="zuplo">
156
+ API Gateway (Region 2)
157
+ </DiagramNode>
158
+ <DiagramNode id="region3" variant="zuplo">
159
+ API Gateway (Region 3)
160
+ </DiagramNode>
161
+ <DiagramEdge from="client" to="lb" />
162
+ <DiagramEdge from="lb" to="region1" />
163
+ <DiagramEdge from="lb" to="region2" />
164
+ <DiagramEdge from="lb" to="region3" />
165
+ </Diagram>
166
+
167
+ ### Instances
168
+
169
+ Customers running managed dedicated Zuplo typically have multiple instances of
170
+ Zuplo deployed. The most common case is to have a production instance and a
171
+ non-production instance. The non-production instance is used to deploy and test
172
+ changes to your API Gateway before deploying them to production. Each instance
173
+ can run many different deployments. A typical setup, the production instance
174
+ hosts only the production deployment, while the non-production instance hosts
175
+ many other deployments (for example staging, development, QA, or any feature
176
+ branch deployments).
177
+
178
+ Each instance operates in isolation and runs within its own VPC or network.
179
+
180
+ It's possible to have multiple instances depending on your requirements. For
181
+ example, some customers have separate instances for production, staging, and
182
+ development. For most customers, though, a single production and a single
183
+ development instance are sufficient.
184
+
185
+ During the onboarding process to Zuplo, an account manager will assist in
186
+ determining the configuration that best meets the requirements. The project will
187
+ be pre-configured with the agreed-upon number of instances, and rules will be
188
+ set up to determine where each environment gets deployed.
189
+
190
+ The most common setup is where your `main` branch deploys to production and all
191
+ other branches deploy to a non-production environment, but this is fully
192
+ customizable.
193
+
194
+ <Diagram height="h-56">
195
+ <DiagramNode id="source">Source Control</DiagramNode>
196
+ <DiagramNode id="control" variant="zuplo">
197
+ Control Plane
198
+ </DiagramNode>
199
+ <DiagramNode id="prod" variant="zuplo">
200
+ API Gateway (Production)
201
+ </DiagramNode>
202
+ <DiagramNode id="non-prod" variant="zuplo">
203
+ API Gateway (Non-Production)
204
+ </DiagramNode>
205
+ <DiagramEdge from="source" to="control" label="Deploy" />
206
+ <DiagramEdge from="control" to="prod" />
207
+ <DiagramEdge from="control" to="non-prod" />
208
+ </Diagram>
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "Managed Dedicated: Custom Domains"
3
+ sidebar_label: Custom Domains
4
+ ---
5
+
6
+ Configuration of custom domains with your managed dedicated instance of Zuplo
7
+ varies depending on how your
8
+ [instance networking is configured](./networking.mdx). For customers using their
9
+ Zuplo API Gateway as the ingress the bulk of the configuration is managed by
10
+ Zuplo. You will be provided an IP address or CNAME to point your DNS to.
11
+ Normally, Zuplo manages the SSL certificates in this type of configuration as
12
+ well.
13
+
14
+ Custom configurations are supported with Zuplo Managed Dedicated instances. For
15
+ example, you can use your own SSL certificates, or if you are using your own VPC
16
+ as the ingress, you can even use your own IP addresses.
17
+
18
+ For the full details on how to configure custom domains with your managed
19
+ dedicated instance of Zuplo, please contact your account manager.
20
+
21
+ ## Preview environments
22
+
23
+ By default, preview environments are deployed to a wildcard subdomain managed by
24
+ Zuplo. For example, if your account name is `acme`, the preview environment URLs
25
+ are hosted at `*.acme.zuplo.work`, so each environment will have a URL like
26
+ `https://my-environment-123.acme.zuplo.work`.
27
+
28
+ Some customer want to use their own domain for preview environments. For
29
+ example, `*.dev.acme.com`. This is supported with Zuplo Managed Dedicated
30
+ instances. Depending on your cloud provider, this may require you to create a
31
+ wildcard certificate for your domain.