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,380 @@
1
+ ---
2
+ title: Configuration File
3
+ sidebar_icon: file-json-2
4
+ description:
5
+ Learn how to configure your Dev Portal documentation site using the configuration file. Covers file
6
+ formats, options, examples, and best practices.
7
+ ---
8
+
9
+ Dev Portal uses a single file for configuration. It controls the structure, metadata, style, plugins,
10
+ and routing for your documentation.
11
+
12
+ You can find the file in the root directory of your project. It will start with `zudoku.config`. The
13
+ file can be in either JavaScript or TypeScript format and use a `.js`, `.mjs`, `.jsx`, `.ts`, or
14
+ `.tsx` file extension:
15
+
16
+ - `zudoku.config.ts`
17
+ - `zudoku.config.tsx`
18
+ - `zudoku.config.js`
19
+ - `zudoku.config.jsx`
20
+ - `zudoku.config.mjs`
21
+
22
+ When you create a project, a default configuration file is generated for you. This file is a good
23
+ starting point and can be customized to suit your needs.
24
+
25
+ :::note{title="Security Consideration"}
26
+
27
+ The Dev Portal configuration file runs on both client and server at runtime. Avoid including secrets
28
+ directly in your config as they may be exposed to the client.
29
+
30
+ :::
31
+
32
+ ## Example
33
+
34
+ Below is an example of the default Dev Portal configuration. You can edit this configuration to suit
35
+ your own needs.
36
+
37
+ ```ts title=zudoku.config.ts
38
+ import type { ZudokuConfig } from "zudoku";
39
+
40
+ const config: ZudokuConfig = {
41
+ navigation: [
42
+ {
43
+ type: "category",
44
+ label: "Documentation",
45
+ items: ["introduction", "example"],
46
+ },
47
+ { type: "link", to: "api", label: "API Reference" },
48
+ ],
49
+ redirects: [{ from: "/", to: "/docs/introduction" }],
50
+ apis: {
51
+ type: "file",
52
+ input: "./apis/openapi.yaml",
53
+ path: "/api",
54
+ },
55
+ docs: {
56
+ files: "/pages/**/*.{md,mdx}",
57
+ },
58
+ };
59
+
60
+ export default config;
61
+ ```
62
+
63
+ ## Configuration options
64
+
65
+ ### `apis`
66
+
67
+ There are multiple options for referencing your OpenAPI document. The example below uses a URL to an
68
+ OpenAPI document, but you can also use a local file path. For full details on the options available,
69
+ see the [API Reference](./api-reference.md).
70
+
71
+ ```ts
72
+ {
73
+ // ...
74
+ "apis": {
75
+ "type": "url",
76
+ "input": "https://rickandmorty.zuplo.io/openapi.json",
77
+ "path": "/api"
78
+ }
79
+ // ...
80
+ }
81
+ ```
82
+
83
+ ### `site`
84
+
85
+ Controls global page attributes across the site, including logos and the site title.
86
+
87
+ **Example:**
88
+
89
+ ```ts
90
+ {
91
+ // ...
92
+ "site": {
93
+ "title": "Our Documentation",
94
+ "logo": {
95
+ "src": {
96
+ "light": "/logos/zudoku-light.svg",
97
+ "dark": "/logos/zudoku-dark.svg"
98
+ },
99
+ "width": "99px"
100
+ }
101
+ }
102
+ // ...
103
+ }
104
+ ```
105
+
106
+ ### `navigation`
107
+
108
+ Defines navigation for both the top bar and the sidebar. Items can be categories, links or custom
109
+ pages.
110
+
111
+ ```ts
112
+ {
113
+ // ...
114
+ "navigation": [
115
+ { "type": "category", "label": "Docs", "items": ["introduction"] },
116
+ { "type": "link", "to": "api", "label": "API Reference" }
117
+ ]
118
+ // ...
119
+ }
120
+ ```
121
+
122
+ ### `theme`
123
+
124
+ Allows you to control the dark and light themes that persist across each MDX page, and the API
125
+ reference.
126
+
127
+ You can customize your theme as much as you want using
128
+ [ShadCDN UI theme variables](https://ui.shadcn.com/docs/theming#list-of-variables). In the example
129
+ below only the `primary` and `primaryForeground` variables are used but you can add any additional
130
+ variables from ShadCDN UI that you would like to change.
131
+
132
+ **Tip**: Use the
133
+ [ShadCDN UI Theme Generator](https://zippystarter.com/tools/shadcn-ui-theme-generator) to create a
134
+ great looking theme based off your primary color.
135
+
136
+ **Example:**
137
+
138
+ ```ts
139
+ {
140
+ // ...
141
+ "theme": {
142
+ "light": {
143
+ "primary": "316 100% 50%",
144
+ "primaryForeground": "360 100% 100%"
145
+ },
146
+ "dark": {
147
+ "primary": "316 100% 50%",
148
+ "primaryForeground": "360 100% 100%"
149
+ }
150
+ }
151
+ // ...
152
+ }
153
+ ```
154
+
155
+ ### `metadata`
156
+
157
+ Controls the site metadata for your documentation. All possible options are outlined in the example
158
+ below.
159
+
160
+ **Example:**
161
+
162
+ ```ts
163
+ {
164
+ // ...
165
+ "metadata": {
166
+ "title": "Example Website Title",
167
+ "description": "This is an example description for the website.",
168
+ "logo": "https://example.com/logo.png",
169
+ "favicon": "https://example.com/favicon.ico",
170
+ "generator": "Website Generator 1.0",
171
+ "applicationName": "Example App",
172
+ "referrer": "no-referrer",
173
+ "keywords": ["example", "website", "metadata", "SEO"],
174
+ "authors": ["John Doe", "Jane Smith"],
175
+ "creator": "John Doe",
176
+ "publisher": "Example Publisher Inc."
177
+ }
178
+ // ...
179
+ }
180
+ ```
181
+
182
+ ### `docs`
183
+
184
+ Configures where your non API reference documentation can be found in your folder structure. The
185
+ default is shown in the example below and you don't need to change it unless you want a different
186
+ structure in place, or to have it match an existing structure that you already have.
187
+
188
+ **Example:**
189
+
190
+ ```ts
191
+ {
192
+ // ...
193
+ "docs": {
194
+ "files": "/pages/**/*.{md,mdx}"
195
+ }
196
+ // ...
197
+ }
198
+ ```
199
+
200
+ ### `sitemap`
201
+
202
+ Controls the sitemap for your documentation. All possible options are outlined in the example below.
203
+
204
+ ```ts
205
+ {
206
+ // ...
207
+ "sitemap": {
208
+ // The base url for your site
209
+ // Required
210
+ "siteUrl": "https://example.com",
211
+ // The change frequency for the pages
212
+ // Defaults to daily
213
+ "changefreq": "daily",
214
+ // The priority for the pages
215
+ // Defaults to 0.7
216
+ "priority": 0.7,
217
+ // The output directory for the sitemap
218
+ // Defaults to undefined
219
+ "outDir": "sitemaps/",
220
+ // Whether to include the last modified date
221
+ // Defaults to true
222
+ "autoLastmod": true,
223
+ // The pages to exclude from the sitemap
224
+ // Can also be a function that returns an array of paths
225
+ // () => Promise<string[]>
226
+ "exclude": ["/404", "/private/page"]
227
+ }
228
+ // ...
229
+ }
230
+ ```
231
+
232
+ ### `redirects`
233
+
234
+ Implements any page redirects you want to use. This gives you control over the resource names in the
235
+ URL.
236
+
237
+ **Example:**
238
+
239
+ ```ts
240
+ {
241
+ // ...
242
+ "redirects": [
243
+ { "from": "/", "to": "/documentation/introduction" },
244
+ { "from": "/documentation", "to": "/documentation/introduction" }
245
+ ]
246
+ // ...
247
+ }
248
+ ```
249
+
250
+ ### `port`
251
+
252
+ The port on which the development server will run. Defaults to `3000`. This option can also be
253
+ passed to the CLI as `--port' (which takes precedence).
254
+
255
+ ```ts
256
+ {
257
+ "port": 9001
258
+ }
259
+ ```
260
+
261
+ If the port is already in use, the next available port will be used.
262
+
263
+ ### `basePath`
264
+
265
+ Sets the base path for your documentation site. This is useful when you want to host your
266
+ documentation under a specific path.
267
+
268
+ ```ts
269
+ {
270
+ basePath: "/docs",
271
+ // A page defined as `/intro` would result in: https://example.com/docs/intro
272
+ }
273
+ ```
274
+
275
+ ### `canonicalUrlOrigin`
276
+
277
+ Sets the canonical [origin URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/origin) for
278
+ your documentation site. This is used for SEO purposes and helps search engines understand the
279
+ preferred version of a page.
280
+
281
+ ```ts
282
+ {
283
+ basePath: '/docs',
284
+ canonicalUrlOrigin: "https://example.com",
285
+ // visiting the page `/intro` would result in:
286
+ // https://example.com/docs/intro
287
+ }
288
+ ```
289
+
290
+ This is the resulting HTML that will be added to the `<head>` of your pages:
291
+
292
+ ```html
293
+ <link rel="canonical" href="https://example.com/docs/intro" />
294
+ ```
295
+
296
+ ### `cdnUrl`
297
+
298
+ Configures the CDN URL for your documentation site's assets. You can provide either a string for a
299
+ single CDN URL or an object to specify different URLs for base and media assets.
300
+
301
+ ```ts
302
+ // Single CDN URL
303
+ {
304
+ cdnUrl: "https://cdn.example.com"
305
+ }
306
+
307
+ // Separate URLs for base and media assets
308
+ {
309
+ cdnUrl: {
310
+ base: "https://cdn.example.com",
311
+ media: "https://media.example.com"
312
+ }
313
+ }
314
+ ```
315
+
316
+ ### `https`
317
+
318
+ Enables HTTPS for the dev server. `key` and `cert` are required and `ca` is optional.
319
+
320
+ ```ts
321
+ {
322
+ "https": {
323
+ "key": "/path/to/key.pem",
324
+ "cert": "/path/to/cert.pem",
325
+ "ca": "/path/to/ca.pem"
326
+ }
327
+ }
328
+ ```
329
+
330
+ ### `enableStatusPages`
331
+
332
+ Enables static generation of status pages for your site. This results in several files (404.html,
333
+ 500.html, etc.) being generated in the `dist` directory. This is useful as many hosting providers
334
+ will serve these files automatically when a user visits a non-existent page or encounters an error.
335
+
336
+ This option is enabled by default, but you can disable it if you don't need these pages.
337
+
338
+ ```ts
339
+ {
340
+ enableStatusPages: false;
341
+ }
342
+ ```
343
+
344
+ ## Multiple Files
345
+
346
+ The configuration file is a standard JavaScript or TypeScript file, so you can split it into
347
+ multiple files if you prefer. This can be useful if you have a large configuration or want to keep
348
+ your code organized.
349
+
350
+ For example, if you wanted to move your navigation configuration to a separate file, you could
351
+ create a new file called `navigation.ts` and export the navigation configuration from there.
352
+
353
+ ```ts
354
+ // navigation.ts
355
+ import type { Navigation } from "zudoku";
356
+
357
+ export const navigation: Navigation = [
358
+ {
359
+ type: "category",
360
+ label: "Documentation",
361
+ items: ["example", "other-example"],
362
+ },
363
+ ];
364
+ ```
365
+
366
+ Then you can import the navigation configuration into your main configuration file.
367
+
368
+ ```ts title=zudoku.config.ts
369
+ // zudoku.config.ts
370
+ import type { ZudokuConfig } from "zudoku";
371
+ import { navigation } from "./navigation";
372
+
373
+ const config = {
374
+ // ...
375
+ navigation,
376
+ // ...
377
+ };
378
+
379
+ export default config;
380
+ ```
@@ -0,0 +1,149 @@
1
+ ---
2
+ title: Protected Routes
3
+ sidebar_icon: squares-subtract
4
+ description:
5
+ Learn how to protect specific routes in your documentation using authentication, including simple
6
+ array patterns, advanced authorization with reason codes, and custom callback functions.
7
+ ---
8
+
9
+ You can protect specific routes in your documentation by adding the `protectedRoutes` property to
10
+ your [Dev Portal configuration](./overview.md). This requires [authentication](./authentication.md) to
11
+ be configured. The property supports two formats: a simple array of path patterns, or an advanced
12
+ object format with custom authorization logic.
13
+
14
+ :::note{title="Client-side protection only"}
15
+
16
+ `protectedRoutes` are client-side only. Do not rely on `protectedRoutes` to hide sensitive
17
+ information.
18
+
19
+ We are working on an additional offering that secures this data server-side.
20
+
21
+ :::
22
+
23
+ ## Array Format
24
+
25
+ The simplest way to protect routes is to provide an array of path patterns. Users must be
26
+ authenticated to access these routes.
27
+
28
+ ```typescript title="zudoku.config.ts"
29
+ {
30
+ // ...
31
+ protectedRoutes: [
32
+ "/admin/*", // Protect all routes under /admin
33
+ "/settings", // Protect the settings page
34
+ "/api/*", // Protect all API-related routes
35
+ "/private/:id" // Protect dynamic routes with parameters
36
+ ],
37
+ // ...
38
+ }
39
+ ```
40
+
41
+ When a user tries to access a protected route, a login dialog will appear prompting them to sign in
42
+ or register. After logging in, they are automatically redirected back to the route they were trying
43
+ to access.
44
+
45
+ ## Object Format
46
+
47
+ For more complex authorization logic, you can provide a record mapping route patterns to custom
48
+ callback functions:
49
+
50
+ ```typescript title="zudoku.config.ts"
51
+ {
52
+ // ...
53
+ protectedRoutes: {
54
+ // Only allow authenticated users with admin role
55
+ "/admin/*": ({ auth }) =>
56
+ auth.isAuthenticated && auth.user?.role === "admin",
57
+
58
+ // Check if user has enterprise access
59
+ "/api/enterprise/*": ({ auth }) =>
60
+ auth.isAuthenticated && auth.user?.subscription === "enterprise",
61
+
62
+ // Allow access to beta features based on user attributes
63
+ "/beta/*": ({ auth }) =>
64
+ auth.isAuthenticated && auth.user?.betaAccess === true,
65
+ },
66
+ // ...
67
+ }
68
+ ```
69
+
70
+ ### Callback Parameters
71
+
72
+ The callback function receives an object with:
73
+
74
+ - `auth` - The current authentication state, including `isAuthenticated`, `isPending`, `profile`,
75
+ and more
76
+ - `context` - The Dev Portal context providing access to configuration and utilities
77
+ - `reasonCode` - An object containing the reason code constants `UNAUTHORIZED` and `FORBIDDEN` (see
78
+ [Reason Codes](#reason-codes))
79
+
80
+ ### Return Values
81
+
82
+ The callback can return a `boolean` or a reason code string:
83
+
84
+ | Return value | Behavior |
85
+ | ------------------------- | ------------------------------------------------- |
86
+ | `true` | Allow access to the route |
87
+ | `false` | Treated as `UNAUTHORIZED` - prompts login |
88
+ | `reasonCode.UNAUTHORIZED` | Show a login dialog prompting the user to sign in |
89
+ | `reasonCode.FORBIDDEN` | Show a 403 "Access Denied" page |
90
+
91
+ ## Reason Codes
92
+
93
+ Reason codes allow you to distinguish between users who need to sign in and users who are signed in
94
+ but lack permission. This is useful for building role-based or attribute-based access control.
95
+
96
+ - **`UNAUTHORIZED`** - The user is not authenticated. A login dialog is shown, and navigation to the
97
+ route is blocked until the user signs in.
98
+ - **`FORBIDDEN`** - The user is authenticated but does not have permission. A 403 "Access Denied"
99
+ page is displayed instead of the route content.
100
+
101
+ ```typescript title="zudoku.config.ts"
102
+ {
103
+ // ...
104
+ protectedRoutes: {
105
+ // Members-only page: unauthenticated users see a login prompt
106
+ "/only-members": ({ auth, reasonCode }) =>
107
+ auth.isAuthenticated ? true : reasonCode.UNAUTHORIZED,
108
+
109
+ // VIP page: unauthenticated users see a login prompt,
110
+ // authenticated users without permission see "Access Denied"
111
+ "/vip-lounge": ({ auth, reasonCode }) =>
112
+ !auth.isAuthenticated
113
+ ? reasonCode.UNAUTHORIZED
114
+ : auth.profile?.email?.endsWith("@example.com")
115
+ ? true
116
+ : reasonCode.FORBIDDEN,
117
+ },
118
+ // ...
119
+ }
120
+ ```
121
+
122
+ ## Navigation Blocking
123
+
124
+ When a user navigates to a route that returns `false` or `UNAUTHORIZED`, navigation is intercepted
125
+ before the page changes. The user stays on the current page while a login dialog is displayed. If
126
+ the user cancels, they remain on the current page. If they log in successfully, navigation
127
+ automatically proceeds to the protected route.
128
+
129
+ Routes that return `FORBIDDEN` do not block navigation — the user navigates to the route and sees
130
+ the "Access Denied" page.
131
+
132
+ ## Path Patterns
133
+
134
+ The path patterns follow the same syntax as [React Router](https://reactrouter.com):
135
+
136
+ - `:param` matches a URL segment up to the next `/`, `?`, or `#`
137
+ - `*` matches zero or more characters up to the next `/`, `?`, or `#`
138
+ - `/*` matches all characters after the pattern
139
+
140
+ For example:
141
+
142
+ - `/users/:id` matches `/users/123` or `/users/abc`
143
+ - `/docs/*` matches `/docs/getting-started` or `/docs/api/reference`
144
+ - `/settings` matches only the exact path `/settings`
145
+
146
+ ## Next Steps
147
+
148
+ - Learn about [authentication providers](./authentication.md#authentication-providers) supported by
149
+ Dev Portal - Configure [user data](./authentication.md#user-data) display
@@ -0,0 +1,169 @@
1
+ ---
2
+ title: Search
3
+ sidebar_icon: search-code
4
+ description:
5
+ Learn how to configure and customize search functionality in Zudoku, including setup instructions
6
+ for Pagefind and Inkeep providers, result transformation, and ranking options.
7
+ ---
8
+
9
+ Dev Portal offers search functionality that enhances user experience by enabling content discovery
10
+ across your site. When configured, a search bar will appear in the header, allowing users to quickly
11
+ find relevant information on any page.
12
+
13
+ We currently support three search providers:
14
+
15
+ - [Pagefind](https://pagefind.app/)
16
+ - [Algolia DocSearch](https://docsearch.algolia.com/)
17
+ - [Inkeep](https://inkeep.com/)
18
+
19
+ ## Pagefind
20
+
21
+ [Pagefind](https://pagefind.app/) is a lightweight, static search library that can be used to add
22
+ search to your Dev Portal site without any external services.
23
+
24
+ To enable pagefind search, configure the `search` option in your configuration:
25
+
26
+ ```typescript
27
+ {
28
+ search: {
29
+ type: "pagefind",
30
+ // Optional: Maximum number of sub results per page
31
+ maxSubResults: 3,
32
+ // Optional: Configure search result ranking (defaults shown below)
33
+ ranking: {
34
+ termFrequency: 0.8,
35
+ pageLength: 0.6,
36
+ termSimilarity: 1.2,
37
+ termSaturation: 1.2,
38
+ },
39
+ }
40
+ }
41
+ ```
42
+
43
+ ### Transforming/Filtering Search Results
44
+
45
+ You can transform or filter search results using the `transformResults` option. This function
46
+ receives the search result along with the current auth state and context, allowing you to:
47
+
48
+ - Filter results based on user permissions
49
+ - Modify result content
50
+ - Add custom results
51
+
52
+ The type of `result` is the same as
53
+ [the type returned by Pagefind's search API](https://github.com/Pagefind/pagefind/blob/03552d041d9533b09563f6c50466b25d394ece64/pagefind_web_js/types/index.d.ts#L123-L160).
54
+
55
+ ```typescript
56
+ {
57
+ search: {
58
+ type: "pagefind",
59
+ transformResults: ({ result, auth, context }) => {
60
+ // Return false to filter out the result
61
+ if (!auth.isAuthenticated) return false;
62
+
63
+ // Return true or undefined to keep the original result
64
+ if (result.url.includes("/private/")) return true;
65
+
66
+ // Return a modified result
67
+ return {
68
+ ...result,
69
+ title: `${result.title} (${context.meta.title})`
70
+ };
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ For more information about how Pagefind's ranking system works and how to customize it for your
77
+ content, see the [Pagefind ranking documentation](https://pagefind.app/docs/ranking/).
78
+
79
+ ## Algolia DocSearch
80
+
81
+ [Algolia DocSearch](https://docsearch.algolia.com/) is a free search solution for open-source
82
+ documentation sites. You can apply for the free DocSearch program or use your own Algolia account.
83
+
84
+ :::note
85
+
86
+ Algolia DocSearch is provided as a separate plugin package (`@zudoku/plugin-search-algolia`). We are
87
+ experimenting with external plugin packages as a distribution model for new integrations.
88
+
89
+ :::
90
+
91
+ ### Installation
92
+
93
+ ```bash
94
+ npm install @zudoku/plugin-search-algolia
95
+ ```
96
+
97
+ ### Configuration
98
+
99
+ Import the plugin and add it to the `plugins` array in your Dev Portal configuration:
100
+
101
+ ```typescript
102
+ import { algoliaSearchPlugin } from "@zudoku/plugin-search-algolia";
103
+
104
+ const config = {
105
+ plugins: [
106
+ algoliaSearchPlugin({
107
+ appId: "YOUR_APP_ID",
108
+ apiKey: "YOUR_SEARCH_API_KEY",
109
+ indices: ["YOUR_INDEX_NAME"],
110
+ }),
111
+ ],
112
+ };
113
+ ```
114
+
115
+ You can get your credentials by [applying for DocSearch](https://docsearch.algolia.com/apply/) or
116
+ creating an index through the [Algolia dashboard](https://www.algolia.com/dashboard).
117
+
118
+ Any additional [DocSearch options](https://docsearch.algolia.com/docs/api/) can be passed alongside
119
+ the required fields.
120
+
121
+ ## Inkeep
122
+
123
+ [Inkeep](https://inkeep.com/) is an AI-powered search and chat platform that can index your
124
+ documentation and provide intelligent search capabilities to your users.
125
+
126
+ ### Setting up Inkeep Integration
127
+
128
+ Before you can use Inkeep search in your Dev Portal site, you need to set up an Inkeep integration and
129
+ have your site indexed. Here's how to get started:
130
+
131
+ #### 1. Create an Inkeep Account
132
+
133
+ 1. Go to [Inkeep](https://inkeep.com/) and sign up for an account
134
+ 2. Navigate to the [Inkeep Portal](https://portal.inkeep.com/)
135
+
136
+ #### 2. Set up Site Indexing
137
+
138
+ 1. In the Inkeep Portal, create a new project or integration
139
+ 2. Configure your site URL so Inkeep can crawl and index your documentation
140
+ 3. Ensure your Dev Portal site is deployed and publicly accessible for indexing
141
+ 4. Wait for Inkeep to crawl and index your site content (this may take some time)
142
+
143
+ #### 3. Get Your Integration Credentials
144
+
145
+ To add Inkeep search to your site you will need to copy some variables from your
146
+ [Inkeep account setting](https://portal.inkeep.com/):
147
+
148
+ - API Key
149
+ - Integration ID
150
+ - Organization ID
151
+
152
+ #### 4. Configure Dev Portal
153
+ Once you have your credentials and your site is indexed, you can configure the `search` option in
154
+ your [Dev Portal Configuration](./overview.md):
155
+
156
+ ```typescript
157
+ {
158
+ // ...
159
+ search: {
160
+ type: "inkeep",
161
+ apiKey: "<your-api-key>",
162
+ integrationId: "<your-integration-id>",
163
+ organizationId: "<your-organization-id>",
164
+ primaryBrandColor: "#26D6FF",
165
+ organizationDisplayName: "Your Organization Name",
166
+ }
167
+ // ...
168
+ }
169
+ ```